KDE.org/applications: Difference between revisions

From KDE Community Wiki
No edit summary
No edit summary
 
(8 intermediate revisions by 3 users not shown)
Line 1: Line 1:
The [http://kde.org/applications kde.org/applications] site is the main way of advertising our Applications, a primary output from KDE.
The [http://kde.org/applications kde.org/applications] site is the main way of advertising our Applications, a primary output from KDE.


The frontend is [https://invent.kde.org/jriddell/kde-org-applications kde-org-applications] some PHP (which works with KDE.org) to read that metadata.  The [https://invent.kde.org/jriddell/kde-org-applications/blob/master/.htaccess .htaccess] does clever things to make the URLs look nice while just passing them to the PHP files that make the index and app pages.
The frontend is [https://invent.kde.org/websites/kde-org-applications kde-org-applications] some PHP (which works with KDE.org) to read that metadata.  The [https://invent.kde.org/websites/kde-org-applications/blob/master/static/.htaccess .htaccess] does clever things to make the URLs look nice while just passing them to the PHP files that make the index and app pages.


The backend is [https://invent.kde.org/jriddell/kde-applications-appstream kde-applications-appstream] a set of Ruby scripts to generate the metadata.
The backend is [https://invent.kde.org/websites/kde-org-applications-extractor kde-applications-appstream-extractor] a set of Ruby scripts to generate the metadata.


The main Ruby script in turn uses [https://projects.kde.org/api/doc/ projects.kde.org] which is a JSON API to list KDE projects. You update this by editing [https://cgit.kde.org/sysadmin/repo-metadata.git/tree/projects repo-metadata] json files.
The main Ruby script in turn uses [https://projects.kde.org/api/doc/ projects.kde.org] which is a JSON API to list KDE projects. You update this by editing [https://invent.kde.org/sysadmin/repo-metadata/-/tree/master/projects-invent repo-metadata] json files.


The script then uses [https://cgit.kde.org/sysadmin/ci-tooling.git/ KDE's CI Tooling] Python scripts to download the output for each project from [https://build.kde.org/ KDE CI]. See [https://community.kde.org/Infrastructure/Continuous_Integration_System KDE CI docs] for how to add projects here.
The script then uses [https://invent.kde.org/sysadmin/ci-tooling KDE's CI Tooling] Python scripts to download the output for each project from [https://build.kde.org/ KDE CI]. See [https://community.kde.org/Infrastructure/Continuous_Integration_System KDE CI docs] for how to add projects here.


If it does not find anything in KDE CI (and whyever not?) then it downloads the project source from Git.
If it does not find anything in KDE CI (and whyever not?) then it downloads the project source from Git.


Using the CI output or Git for each project the script then looks for Appstream metadata (org.kde.foo.appstream.xml) files and Desktop metadata (org.kde.foo.desktop) files to feed it with meta data.  This is where you need to edit your app meta data to keep it up to date.  You can add screenshots into [https://cgit.kde.org/websites/product-screenshots.git/ product-screenshots] (beware this site only updates after an hour or so).   
Using the CI output or Git for each project the script then looks for Appstream metadata (org.kde.foo.appstream.xml) files and Desktop metadata (org.kde.foo.desktop) files to feed it with meta data.  This is where you need to edit your app meta data to keep it up to date.  You can add screenshots into [https://invent.kde.org/websites/product-screenshots product-screenshots] (beware this site only updates after an hour or so).   


To add AppStream metadata to your projects see our [https://community.kde.org/Guidelines_and_HOWTOs/AppStream AppStream Guide]. As well as being used for kde.org/applications it will also be used in Discover and every other app installer by distros and container packages such as Snaps Flatpaks and Appimage.
To add AppStream metadata to your projects see our [https://community.kde.org/Guidelines_and_HOWTOs/AppStream AppStream Guide]. As well as being used for kde.org/applications it will also be used in Discover and every other app installer by distros and container packages such as Snaps Flatpaks and Appimage.
kde-applications-appstream also has a list of unmaintained apps it needs to list, this needs manually updated as most unmaintained apps never got on kde.org so never should be listed but those which have been there should have their links not disappear.


Any questions ask Jonathan Riddell
Any questions ask Jonathan Riddell
=== Troubleshooting===
If your favourite app does not appear on the page it could be because:
* There is no appdata.xml file in the repo
* appdata.xml is not valid (use appstreamcli validate to check)
* There is no icon for it in breeze-icons theme
* It is marked as unmaintained in unmaintained.json
* It is marked as unmaintained in repo-metadata
* It is in playground or kdereview in repo-metadata
See the [https://binary-factory.kde.org/view/Websites/job/Website_apps-kde-org binary-factory job] for build logs you can grep.
=== Version Numbers ===
Still to be added is into on the version numbers and dates but it needs running
[https://invent.kde.org/jriddell/appstream-metainfo-release-update appstream-metainfo-release-update] by the release manager before doing the release to add it to the appstream file.
=== App Foo is Unmaintained ===
If an app is unmaintained then it should be moved to unmaintained in [https://invent.kde.org/sysadmin/repo-metadata repo-metadata]. But do check with all possible contributors before moving it as it makes the translations disappear and they can't be recovered.  You can also just mark it unmaintained in [https://invent.kde.org/websites/kde-org-applications-extractor/blob/master/unmaintained.json unmaintained.json] and if it has no git repo in KDE any more then also add it to [https://invent.kde.org/websites/kde-org-applications-extractor/blob/master/unmaintained-no-repo.json unmaintained-no-repo.json]

Latest revision as of 12:50, 7 January 2022

The kde.org/applications site is the main way of advertising our Applications, a primary output from KDE.

The frontend is kde-org-applications some PHP (which works with KDE.org) to read that metadata. The .htaccess does clever things to make the URLs look nice while just passing them to the PHP files that make the index and app pages.

The backend is kde-applications-appstream-extractor a set of Ruby scripts to generate the metadata.

The main Ruby script in turn uses projects.kde.org which is a JSON API to list KDE projects. You update this by editing repo-metadata json files.

The script then uses KDE's CI Tooling Python scripts to download the output for each project from KDE CI. See KDE CI docs for how to add projects here.

If it does not find anything in KDE CI (and whyever not?) then it downloads the project source from Git.

Using the CI output or Git for each project the script then looks for Appstream metadata (org.kde.foo.appstream.xml) files and Desktop metadata (org.kde.foo.desktop) files to feed it with meta data. This is where you need to edit your app meta data to keep it up to date. You can add screenshots into product-screenshots (beware this site only updates after an hour or so).

To add AppStream metadata to your projects see our AppStream Guide. As well as being used for kde.org/applications it will also be used in Discover and every other app installer by distros and container packages such as Snaps Flatpaks and Appimage.

kde-applications-appstream also has a list of unmaintained apps it needs to list, this needs manually updated as most unmaintained apps never got on kde.org so never should be listed but those which have been there should have their links not disappear.

Any questions ask Jonathan Riddell

Troubleshooting

If your favourite app does not appear on the page it could be because:

  • There is no appdata.xml file in the repo
  • appdata.xml is not valid (use appstreamcli validate to check)
  • There is no icon for it in breeze-icons theme
  • It is marked as unmaintained in unmaintained.json
  • It is marked as unmaintained in repo-metadata
  • It is in playground or kdereview in repo-metadata

See the binary-factory job for build logs you can grep.

Version Numbers

Still to be added is into on the version numbers and dates but it needs running appstream-metainfo-release-update by the release manager before doing the release to add it to the appstream file.

App Foo is Unmaintained

If an app is unmaintained then it should be moved to unmaintained in repo-metadata. But do check with all possible contributors before moving it as it makes the translations disappear and they can't be recovered. You can also just mark it unmaintained in unmaintained.json and if it has no git repo in KDE any more then also add it to unmaintained-no-repo.json