Skip to content
GitLab
  • Menu
Projects Groups Snippets
  • /
  • Help
    • Help
    • Support
    • Community forum
    • Submit feedback
    • Contribute to GitLab
  • Sign in / Register
  • gnome-software gnome-software
  • Project information
    • Project information
    • Activity
    • Labels
    • Members
  • Repository
    • Repository
    • Files
    • Commits
    • Branches
    • Tags
    • Contributors
    • Graph
    • Compare
  • Issues 236
    • Issues 236
    • List
    • Boards
    • Service Desk
    • Milestones
  • Merge requests 6
    • Merge requests 6
  • CI/CD
    • CI/CD
    • Pipelines
    • Jobs
    • Schedules
  • Deployments
    • Deployments
    • Releases
  • Packages & Registries
    • Packages & Registries
    • Container Registry
  • Analytics
    • Analytics
    • Value stream
    • CI/CD
    • Repository
  • Wiki
    • Wiki
  • Activity
  • Graph
  • Create a new issue
  • Jobs
  • Commits
  • Issue Boards
Collapse sidebar
  • GNOME
  • gnome-softwaregnome-software
  • Issues
  • #1472
Closed
Open
Created Oct 01, 2021 by Philip Withnall@pwithnall🚫Maintainer0 of 8 tasks completed0/8 tasks

Rework threading model

Placeholder issue for efforts to rework the threading model for gnome-software.

Remaining vfuncs to port (as of !1423 (merged)):

Plugin \ Vfunc gs_plugin_adopt_app() gs_plugin_add_updates() gs_plugin_add_sources() gs_plugin_add_updates_historical() gs_plugin_add_categories() gs_plugin_add_recent() gs_plugin_update_cancel() gs_plugin_app_install() gs_plugin_app_remove() gs_plugin_update_app() gs_plugin_download_app() gs_plugin_download() gs_plugin_app_upgrade_download() gs_plugin_app_upgrade_trigger() gs_plugin_file_to_app() gs_plugin_url_to_app() gs_plugin_update() gs_plugin_add_langpacks()
appstream !1432 (merged) !1328 (merged) TODO
dpkg TODO
dummy TODO TODO !1328 (merged) TODO TODO TODO TODO TODO TODO TODO TODO
eos-updater TODO
fedora-langpacks TODO
flatpak TODO TODO TODO !1432 (merged) !1328 (merged) TODO TODO TODO TODO TODO TODO
fwupd TODO TODO TODO TODO TODO TODO TODO TODO
packagekit TODO TODO TODO TODO TODO TODO TODO TODO TODO TODO
systemd-updates TODO TODO TODO
rpm-ostree TODO TODO TODO TODO TODO TODO TODO TODO TODO
snap TODO TODO TODO TODO TODO TODO

Once these vfunc implementations are all ported, and the gs_plugin_*() g_module_symbol()-based code is all gone, there are some follow-up improvements which I want to make. It might make sense to split them out to follow-up issues when the time comes:

  • Refactor “vfunc not implemented” code to always return a (distinct) error and let the caller decide whether they care: !1266 (comment 1399606)
  • Improve logging and sysprof output for GsPluginJob instances. Probably add a global list of in-progress GsPluginJobs, with the aim of making it easier to debug which job is causing a problem, and to expose progress information for background jobs to the UI where needed.
  • Rework the webapps plugin to not use a worker thread (see discussion).
  • Go through each plugin and verify, simplify and document their locking models. For example, once this issue is fixed many plugins will be running entirely out of the main thread, and will no longer need internal locking.
  • Pull the appstream plugin (gs-plugin-appstream.c) into the core, as appstream is a core dependency of everything we do now (this has changed from when gnome-software was originally written), and all the other plugins depend on it.
  • Make the plugins independent from each other by dropping a lot of the remaining gs_plugin_add_rule() calls. This will allow the plugins to be run in parallel more, which will speed things up.
  • Parallelise GsPluginJobRefine (see the FIXME note in gs-plugin-job-refine.c).
  • Improve the plugin API documentation ($builddir/doc/api/html/api.html) now that the plugin vfuncs are defined on a class struct rather than just via a well-known name.
Edited Jul 14, 2022 by Philip Withnall
Assignee
Assign to
Time tracking