Scripting the process for tracking incompatible apps in major releases as a forum topic

Continuing the discussion from Any apps not compatible with Nextcloud 26?:

@tflidd how would we start to script this process so it can happen via cron once a new version number of Nextcloud (27) is added to the appstore?

  • Use discourse api
  • No longer copy-pasting the same template by hand.
  • pasting in the github links from the appstore.

Thanks for any ideas! This is an important task that should no longer rely on volunteers to create. :heart:

definitely a good idea to automate (parts) of this task.

  • Maybe best starting point would be to parse application metadata from the app store… This would provide a current state at some time… I’m not sure if there is a way to collect the data “from outside” but the data must be available for Nextcloud employees.
  • Next step would be to link Github issues… sounds little harder as issues are not standardized so could be hard to automatically collect the issues… may remain manual step forever…

I tried a little around Store REST API — nextcloudappstore 2.0.0 documentation and it looks promising… but for some reason I only see few apps, maybe anonymous requests are limited… maybe I miss something:

# windows powershell
$x = curl https://apps.nextcloud.com/api/v1/platform/9.0.0/apps.json -useb
$x.Content|ConvertFrom-Json|%{$_|select id,website,issueTracker}

result:

id            website                                                             issueTracker
--            -------                                                             ------------
ojsxc         https://www.jsxc.org                                                http://github.com/jsxc/jsxc/issues
workin2gether                                                                     https://github.com/Patt92/Workin2Gether/issues
files_opds                                                                        https://github.com/Yetangitu/owncloud-apps/issues/
bookmarks     https://github.com/nextcloud/bookmarks                              https://github.com/nextcloud/bookmarks/issues
audioplayer   https://rello.github.io/audioplayer                                 https://github.com/rello/audioplayer/issues
zenodo        https://github.com/nextcloud/zenodo                                 https://github.com/nextcloud/zenodo/issues
spreedme                                                                          https://github.com/strukturag/nextcloud-spreedme/issues
music         https://github.com/owncloud/music                                   https://github.com/owncloud/music/issues
piwik         http://sualko.github.io/cloud_piwik/                                https://github.com/sualko/cloud_piwik/issues
zimbradrive   https://github.com/ZeXtras/zimbra-drive.git                         https://github.com/ZeXtras/zimbra-drive/issues
metadata      https://github.com/gino0631/nextcloud-metadata                      https://github.com/gino0631/nextcloud-metadata/issues
files_reader  https://github.com/Yetangitu/owncloud-apps/tree/master/files_reader https://github.com/Yetangitu/owncloud-apps/issues
contacts      https://github.com/nextcloud/contacts#readme                        https://github.com/nextcloud/contacts/issues
flowupload    https://github.com/e-alfred/flowupload                              https://github.com/e-alfred/flowupload/issues
weather       https://github.com/nextcloud/weather                                https://github.com/nextcloud/weather/issues
orcid         https://github.com/nextcloud/orcid                                  https://github.com/nextcloud/orcid/issues
keeweb        https://github.com/jhass/nextcloud-keeweb                           https://github.com/jhass/nextcloud-keeweb/issues
apporder                                                                          https://github.com/juliushaertl/apporder/issues
w2g2          https://github.com/newroco/W2G2                                     https://github.com/newroco/W2G2/issues
gpxmotion     https://gitlab.com/eneiluj/gpxmotion-oc                             https://gitlab.com/eneiluj/gpxmotion-oc/issues
calendar      https://github.com/nextcloud/calendar/                              https://github.com/nextcloud/calendar/issues
quicknotes    https://github.com/matiasdelellis/quicknotes                        https://github.com/matiasdelellis/quicknotes/issues
ownpad                                                                            https://github.com/otetard/ownpad/issues
ocsms         https://github.com/nextcloud/ocsms                                  https://github.com/nextcloud/ocsms/issues
richdocuments https://collaboraoffice.com/                                        https://github.com/nextcloud/richdocuments/issues
gpxedit       https://gitlab.com/eneiluj/gpxedit-oc                               https://gitlab.com/eneiluj/gpxedit-oc/issues
notes         https://github.com/nextcloud/notes                                  https://github.com/nextcloud/notes/issues
checksum      https://github.com/westberliner/checksum/                           https://github.com/westberliner/checksum/issues
nextant       https://github.com/nextcloud/nextant/wiki                           https://github.com/nextcloud/nextant/issues
phonetrack    https://gitlab.com/eneiluj/phonetrack-oc                            https://gitlab.com/eneiluj/phonetrack-oc/issues
gpxpod        https://github.com/julien-nc/gpxpod                                 https://github.com/julien-nc/gpxpod/issues

from here I can extend with supported versions

$x.Content|ConvertFrom-Json|%{$_|select id,website,issueTracker,@{n='version';e={$_.releases[-1].version}},@{n='compatible';e={$_.releases[-1].platformVersionSpec}} }

(which is little surprising in regards of compatible"platformVersions" )… it looks this API is incomplete and/or outdated…

id           : richdocuments
website      : https://collaboraoffice.com/
issueTracker : https://github.com/nextcloud/richdocuments/issues
version      : 1.1.14
compatible   : >=9.0.0 <12.0.0

id           : gpxedit
website      : https://gitlab.com/eneiluj/gpxedit-oc
issueTracker : https://gitlab.com/eneiluj/gpxedit-oc/issues
version      : 0.0.2
compatible   : >=9.0.0 <12.0.0

id           : notes
website      : https://github.com/nextcloud/notes
issueTracker : https://github.com/nextcloud/notes/issues
version      : 2.3.2
compatible   : >=9.0.0 <14.0.0

UPDATE: in fact I missed somethng… you need to use right “platform/{version}”

# windows powershell
$x = curl https://apps.nextcloud.com/api/v1/platform/26.0.0/apps.json -useb
$x.Content|ConvertFrom-Json|%{$_|select id,website,issueTracker,@{n='version';e={$_.releases[-1].version}},@{n='compatible';e={$_.releases[-1].platformVersionSpec}} }

this gives much more apps and expected results…

id           : google_synchronization
website      : https://github.com/MarcelRobitaille/nextcloud_google_synchronization
issueTracker : https://github.com/MarcelRobitaille/nextcloud_google_synchronization/issues
version      : 1.0.9
compatible   : >=22.0.0 <27.0.0

id           : richdocuments
website      : https://collaboraoffice.com/
issueTracker : https://github.com/nextcloud/richdocuments/issues
version      : 8.0.0
compatible   : >=26.0.0 <27.0.0

id           : libresign
website      : https://github.com/LibreSign/libresign
issueTracker : https://github.com/LibreSign/libresign/issues
version      : 7.0.0
compatible   : >=26.0.0 <27.0.0

id           : recognize
website      : https://github.com/marcelklehr/recognize
issueTracker : https://github.com/marcelklehr/recognize/issues
version      : 3.0.1
compatible   : >=25.0.0 <27.0.0

I currently have a script that uses the appstore API. Using the discourse API to push an update on a regular basis, that shouldn’t be too difficult.

Do we need the submitted bug reports? For the apps on github, there is perhaps a github-API and if we name the issues the same way, e.g. Support NC version xy, when we are at that points, we could even open an issue ourselves, but we don’t want to spam repos either.

On the DIscourse side, this has been in on-going development… one day we may well have full integration possible between the forum and Github issues.
On the Github side, this would be best handled within github itself, by linking to either a pull request such as the current “Developer Changes for 26” or creating a meta issue: Apps Not Yet Compatible with Nextcloud 26. It would be up to the employees on the server repo to decide whether such an idea would be considered “spam”, but it could certainly help other repos on knowing when the next major release is expected.

what is about simple listing of the apps with their min/max compatible versions?
it’s easy updeteable and provides good overview… Links to individual Github issues could be added as posts in the thread…

This simple list of apps is what tflidd is mentioning above via script.