Software allows users to easily find, discover and install apps. It also keeps their OS, apps and devices up to date without them having to think about it, and gives them confidence that their system is up to date. It supports popular distributions, subject to those distributions maintaining their own distro-specific integration code.
The specific use cases that Software covers are documented in more detail.
A plugin system is used to access software from different sources. Plugins are provided for:
- Traditional package installation via PackageKit (e.g. Debian package, RPM).
- Next generation packages: Flatpak and Snap.
- Firmware updates.
- Ratings and reviews using ODRS.
Software supports showing metadata that closely matches the AppStream format.
Software runs as a background service to provide update notifications and be a search provider for GNOME Shell.
For questions about how to use Software, ask on Discourse.
Bug reports and merge requests should be filed on GNOME GitLab.
For development discussion, join us on
#gnome-software on irc.gnome.org.
Documentation for app developers and vendors
Specific documentation is available for application developers who wish to test how their applications appear in GNOME Software; and for distribution vendors who wish to customise how GNOME Software appears in their distribution:
Running a nightly build
A flatpak bundle of Software can be built on demand here by running the ‘flatpak bundle’ CI job. It is not fully functional, but is useful for development and testing of upcoming UI changes to Software. It may become more functional over time. It is not an official or supported release.
The CI job saves the bundle in its artifacts list as
This can be installed and run locally by downloading it and running:
$ flatpak install --bundle ./gnome-software-dev.flatpak $ flatpak run org.gnome.SoftwareDevel
Software uses a number of plugins and depending on your operating system you
may want to disable or enable certain ones. For example on Fedora Silverblue
you'd want to disable the packagekit plugin as it wouldn't work. See the list
meson_options.txt and use e.g.
-Dpackagekit=false in the
Build locally with:
$ meson --prefix $PWD/install build/ $ ninja -C build/ all install $ killall gnome-software # On Fedora, RHEL, etc: $ XDG_DATA_DIRS=install/share:$XDG_DATA_DIRS LD_LIBRARY_PATH=install/lib64/:$LD_LIBRARY_PATH ./install/bin/gnome-software # On Debian, Ubuntu, etc: $ XDG_DATA_DIRS=install/share:$XDG_DATA_DIRS LD_LIBRARY_PATH=install/lib/x86_64-linux-gnu/:$LD_LIBRARY_PATH ./install/bin/gnome-software
Default branch renamed to
The default development branch of gnome-software has been renamed to
update your local checkout, use:
git checkout master git branch -m master main git fetch git branch --unset-upstream git branch -u origin/main git symbolic-ref refs/remotes/origin/HEAD refs/remotes/origin/main
--verbose will give detailed logging information.
Software is maintained by several co-maintainers, as listed in
All changes to Software need to be reviewed by at least one co-maintainer (who
can’t review their own changes). Larger decisions need input from at least two