openSUSE:Package group guidelines

Jump to: navigation, search
The Group: line in .spec files is a freeform text field that can be used to declare categories or enable other means of sorting and filtering by a suitable metadata reader. The use of the Group: field altogether has seen a decline as packagers are not anymore interested in making Linux distributions a curated catalog of software as was the case around 1999/2000.

Historically, the Group: field value specified exactly one category out of a hierarchially-ordered tree of many categories such as:

  • Amusements
    • Games
      • 3D
    • Teachings
  • Productivity
    • Graphics
      • CAD (3D)
      • 2D

A category is written down as the path into this tree using slashes as separators, in other words, Template:Amusements/Games/3D for a 3D game, or Template:Amusements/Games for a less-specific kind of game.

Because a package may fit into multiple categories, a 2019 proposal was made to move away from the hierarchial system and instead use a tag system as a base, wherein the Group: field is a space-separated list of keywords that characterize the package. This way, the kate package for example may be associated with the keywords kde and editor and the gedit package with gnome and editor, such that a user browsing the software catalog can filter either by kde or gnome (depending on preference), or by editor (if it does not matter which UI) to discover packages he might be interested in. The reader is hereby referred to the sites of freshcode.club and stackexchange.com as example of practical uses of such a tag system.

Classic hierarchial group system

There used to be times when the Group: field was checked by the rpmlint build software for conformity with specific values. This has been abolished (again) in September 2019. New groups can be created by just starting to make use of them in .spec files.

Amusement

  • Amusements/Games/3D/Other
  • Amusements/Games/3D/Race
  • Amusements/Games/3D/Shoot
  • Amusements/Games/3D/Simulation
  • Amusements/Games/Action/Arcade
  • Amusements/Games/Action/Breakout
  • Amusements/Games/Action/Other
  • Amusements/Games/Action/Race
  • Amusements/Games/Action/Shoot
  • Amusements/Games/Board/Card
  • Amusements/Games/Board/Chess
  • Amusements/Games/Board/Other
  • Amusements/Games/Board/Pool
  • Amusements/Games/Board/Puzzle
  • Amusements/Games/Logic
  • Amusements/Games/Other
  • Amusements/Games/RPG
  • Amusements/Games/Strategy/Other
  • Amusements/Games/Strategy/Real Time
  • Amusements/Games/Strategy/Turn Based

Teaching

Teaching contains things that are educational. So most of the applications in this group are useful in schools, but not necessarily universities.

  • Amusements/Teaching/Language
  • Amusements/Teaching/Mathematics
  • Amusements/Teaching/Other

Toys

Contains things that entertain users but are not real games.

  • Amusements/Toys/Background
  • Amusements/Toys/Clocks
  • Amusements/Toys/Graphics
  • Amusements/Toys/Other
  • Amusements/Toys/Screensavers

Development

This section has been created to help software developers. Normal users should never need to select packages from this group manually. The librariesTemplate:Which must be installed to run applications, but they are installed automatically due to dependencies.

Languages

The following groups are intended for tools that are useful or even necessary for developing in a particular programming language. This is the right place for compilers, interpreters, and programming language–dependent tools.

  • Development/Languages/C and C++
  • Development/Languages/Fortran
  • Development/Languages/Go
  • Development/Languages/Haskell
  • Development/Languages/Java
  • Development/Languages/Lua
  • Development/Languages/NodeJS
  • Development/Languages/OCaml
  • Development/Languages/Other
  • Development/Languages/Perl
  • Development/Languages/PHP
  • Development/Languages/Python
  • Development/Languages/Ruby
  • Development/Languages/Rust
  • Development/Languages/Scheme
  • Development/Languages/Tcl

Libraries

The following groups are intended for packages that allow developing with a library. They are primarily sorted by programming language. However, there are also special groups for KDE, GNOME, and YaST libraries. Here, developers should find all available libraries that can be used in more projects.

If a library can be attributed to a specific RPM topic, use it. For example, the ntl library focuses on specific aspects of number theory, and so under Productivity/Scientific/Math, while a general-purpose library like libHX is in the fallback group Development/Libraries/C and C++. For packages that fall inbetween two groups, pick the one that is less abstract, e.g. pick Math over Libs/C++.

The -devel subpackage is generally put into the group Development/Libraries/(Subgroup), depending on language. The subpackage providing the shared libraries located are generally marked as System/Libraries. Note that some packages also having programming as a topic use Development/Languages/(Subgroup) instead — and that they are not as consistently used as one could wish.

Development/Languages/Perl *.spec -> 29
Development/Libraries/Perl *.spec -> 1127
Development/Languages/Python *.spec -> 1190
Development/Libraries/Python *.spec -> 404

A potential -doc subpackage is put into the group Documentation/(Subgroup).

  • Development/Libraries/C and C++
  • Development/Libraries/Cross
  • Development/Libraries/GNOME
  • Development/Libraries/Haskell
  • Development/Libraries/Java
  • Development/Libraries/KDE
  • Development/Libraries/Other
  • Development/Libraries/Parallel
  • Development/Libraries/Perl
  • Development/Libraries/PHP
  • Development/Libraries/Python
  • Development/Libraries/Rust
  • Development/Libraries/Tcl
  • Development/Libraries/X11
  • Development/Libraries/YaST

Sources

  • Development/Sources is intended for binary and noarch packages containing sources. It is the right place for kernel sources and kernel module sources.

Tools

Groups from this section contain tools useful for developing that are not connected to a particular programming language.

  • Development/Tools/Building
  • Development/Tools/Debuggers
  • Development/Tools/Doc Generators
  • Development/Tools/GUI Builders
  • Development/Tools/IDE
  • Development/Tools/Navigators
  • Development/Tools/Other
  • Development/Tools/Version Control

Documentation

The Documentation section is intended for all packages with documentation that is put in an extra package.

  • Documentation/Howto: a particular kind of documentation ("to accomplish X, do Y,Z")
  • Documentation/HTML: the documentation consists of mostly HTML-formatted files
  • Documentation/Man: the documentation consists of mostly roff/troff/nroff-formatted files, or have the particular written style of a program manual page ("option X allows to set Y")
  • Documentation/Other: anything else
  • Documentation/SUSE: documentation pertaining to the SUSE/openSUSE Linux distribution

Hardware

The Hardware section contains tools supporting a special hardware.

  • Hardware/Camera
  • Hardware/Fax
  • Hardware/ISDN
  • Hardware/Joystick
  • Hardware/Mobile
  • Hardware/Modem
  • Hardware/Other
  • Hardware/Palm
  • Hardware/Printing
  • Hardware/Psion
  • Hardware/Radio
  • Hardware/Scanner
  • Hardware/TV
  • Hardware/UPS
  • Hardware/Wifi

Meta packages

  • Metapackages: this group contains packages with should normally not end up on any installation source. They contain files which should end up on the media itself, like README.txt, License files, documentation or DOS utilitiesTemplate:Wtf.
If you install such a package, you will find a new directory /CD1 in your root directory, containing the files which should end on the first installation media or the installation source. The package can install additional files in /usr/share/<packagename>. If the package contains multiple themes, they go to /usr/share/<packagename>/themes/<name> for example.

Multimedia

The groups "Multimedia/*" came in from jpackage. See Productivity/Multimedia/* instead.

Productivity

The Productivity section is huge and is intended for the packages most important to the average user: the applications used to produce something.

  • Productivity/Archiving/Backup
  • Productivity/Archiving/Compression
  • Productivity/Clustering/Computing
  • Productivity/Clustering/HA
  • Productivity/Databases/Clients
  • Productivity/Databases/Servers
  • Productivity/Databases/Tools

File utilities

Groups within this section are intended for tools for basic operations with files. These are packages like file, findutils and file managers like mc, nautilus or ytree.

  • Productivity/File utilities

Graphics

  • Productivity/Graphics/3D Editors
  • Productivity/Graphics/Bitmap Editors
  • Productivity/Graphics/CAD
  • Productivity/Graphics/Convertors (Converters?)
  • Productivity/Graphics/Other
  • Productivity/Graphics/Vector Editors
  • Productivity/Graphics/Viewers
  • Productivity/Graphics/Visualization/Graph
  • Productivity/Graphics/Visualization/Other
  • Productivity/Graphics/Visualization/Raytracers

Hamradio

Groups from this section are intended for Linux ham radio (Amateur radio, often AX.25) applications and related utilities.

  • Productivity/Hamradio/Fax
  • Productivity/Hamradio/Logging
  • Productivity/Hamradio/Morse
  • Productivity/Hamradio/Other
  • Productivity/Hamradio/Packet
  • Productivity/Hamradio/Psk31
  • Productivity/Hamradio/Satellite

Multimedia

  • Productivity/Multimedia/CD/Grabbers
  • Productivity/Multimedia/CD/Players
  • Productivity/Multimedia/CD/Record
  • Productivity/Multimedia/Other
  • Productivity/Multimedia/Sound/Editors and Convertors
  • Productivity/Multimedia/Sound/Midi
  • Productivity/Multimedia/Sound/Mixers
  • Productivity/Multimedia/Sound/Players
  • Productivity/Multimedia/Sound/Utilities
  • Productivity/Multimedia/Sound/Visualization
  • Productivity/Multimedia/Video/Editors and Convertors
  • Productivity/Multimedia/Video/Players

Networking

Groups from this section are intended for packages providing various networking services and related tools.

  • Productivity/Networking/AOLInstantMessenger
  • Productivity/Networking/Archie
  • Productivity/Networking/Boot/Clients
  • Productivity/Networking/Boot/Servers
  • Productivity/Networking/Boot/Utilities
  • Productivity/Networking/Diagnostic
  • Productivity/Networking/DNS/Servers
  • Productivity/Networking/DNS/Utilities
  • Productivity/Networking/Email/Clients
  • Productivity/Networking/Email/Mailinglists
  • Productivity/Networking/Email/Servers
  • Productivity/Networking/Email/Utilities
  • Productivity/Networking/File-Sharing
  • Productivity/Networking/Ftp/Clients
  • Productivity/Networking/Ftp/Servers
  • Productivity/Networking/ICQ
  • Productivity/Networking/Instant Messenger
  • Productivity/Networking/IRC
  • Productivity/Networking/LDAP/Clients
  • Productivity/Networking/LDAP/Servers
  • Productivity/Networking/LDAP/Utilities
  • Productivity/Networking/Napster
  • Productivity/Networking/News/Clients
  • Productivity/Networking/News/Servers
  • Productivity/Networking/News/Utilities
  • Productivity/Networking/NFS
  • Productivity/Networking/NIS
  • Productivity/Networking/Novell
  • Productivity/Networking/Other
  • Productivity/Networking/PPP
  • Productivity/Networking/Radius/Clients
  • Productivity/Networking/Radius/Servers
  • Productivity/Networking/Routing
  • Productivity/Networking/Samba
  • Productivity/Networking/Security
  • Productivity/Networking/SSH
  • Productivity/Networking/System
  • Productivity/Networking/Talk/Clients
  • Productivity/Networking/Talk/Servers
  • Productivity/Networking/Web/Browsers
  • Productivity/Networking/Web/Frontends
  • Productivity/Networking/Web/Proxy
  • Productivity/Networking/Web/Servers
  • Productivity/Networking/Web/Utilities

Office

  • Productivity/Office/Dictionary
  • Productivity/Office/Finance
  • Productivity/Office/Management
  • Productivity/Office/Organizers
  • Productivity/Office/Other
  • Productivity/Office/Spreadsheets
  • Productivity/Office/Suite
  • Productivity/Office/Word Processor
  • Productivity/Other

Publishing

Groups from this section are intended for packages used to publish information. The applications from this group usually need more experienced users than similar applications from the Office section.

  • Productivity/Publishing/DocBook
  • Productivity/Publishing/HTML/Editors
  • Productivity/Publishing/HTML/Tools
  • Productivity/Publishing/Other
  • Productivity/Publishing/PDF
  • Productivity/Publishing/Presentation
  • Productivity/Publishing/PS
  • Productivity/Publishing/SGML
  • Productivity/Publishing/TeX/Base
  • Productivity/Publishing/TeX/Fonts
  • Productivity/Publishing/TeX/Frontends
  • Productivity/Publishing/TeX/Utilities
  • Productivity/Publishing/Texinfo
  • Productivity/Publishing/Troff
  • Productivity/Publishing/Word
  • Productivity/Publishing/XML

Scientific applications

If it matters in university or similar education paths, this definitely seems like the place for it, though of course you won't necessarily be needing the understanding of the inner algorithms to use the software — or these example RPM groups.

  • Productivity/Scientific/Astronomy
  • Productivity/Scientific/Chemistry
  • Productivity/Scientific/Electronics
  • Productivity/Scientific/Math
  • Productivity/Scientific/Other
  • Productivity/Scientific/Physics

Security

Groups from this section are intended for security related stuff like virus scanners, safe password generators, utilities for encrypting, decrypting, signing data, and permission settings (e.g. the permissions package).

  • Productivity/Security
  • Productivity/Telephony/Clients
  • Productivity/Telephony/H323/Clients
  • Productivity/Telephony/H323/Servers
  • Productivity/Telephony/H323/Utilities
  • Productivity/Telephony/Servers
  • Productivity/Telephony/SIP/Clients
  • Productivity/Telephony/SIP/Servers
  • Productivity/Telephony/SIP/Utilities
  • Productivity/Telephony/Utilities
  • Productivity/Text/Convertors
  • Productivity/Text/Editors
  • Productivity/Text/Spell
  • Productivity/Text/Utilities

System

The packages in the System subgroups make up the base of the operating system. They are important for the system administrator and the normal user should not need to know much about them. They only make an environment in which to run applications from other groups, like * Productivity or * Amusement.

  • System/Base is intended for the base system tools. It includes packages like eject, systemd, man, sed, sudo, tar and ulimit.
  • System/Benchmark is intended for packages providing benchmarks and various test suites.
  • System/Boot is intended for tools related to system booting. It contains packages with boot loaders, image builders, boot splash themes, memory test, etc.
  • System/Console is intended for console-specific packages like fbset, gpm, kbd and vlock.
  • System/Daemons is intended for the base system daemons. These are packages like at(d), autofs, nscd, powersave or syslogd.
  • System/Fhs is intended for packages creating the base directory structure according to FHS (File Hierarchy System). These are packages like filesystem, aaa_base or devs.
  • System/Filesystems is intended for file system–related tools. These are packages like * quota, * dosfstools, * reiserfs, * reaidtools, and * xfstools.
  • System/Kernel contains kernel binaries and kernel-related tools like module-init-tools. The packages with kernel sources and kernel modules sources are in the group Development/Sources.
  • System/Libraries is intended for packages providing the part of libraries necessary to run applications. Packages in this group should already be installed automatically because of a dependency. Therefore, this group ought to be never used for the main Group: line of a .spec file (since the libraries ought to be in a subpackage, see SLPP). Neither users nor developers should need to search for packages in this group. This means that these must not provide any application — such packages must be in the section Productivity.
  • System/Localization contains language specific subpackages which are split off a main package. In openSUSE 10.3 and up, this is done automatically using the %lang_package macro in the specfile.
  • System/Management is intended for various GUI, text, or web-based tools used to manage the system. However, the YaST modules have their own group, System/YaST.
  • System/Monitoring is intended for tools monitoring the system directly or by analyzing logs.
  • System/Packages: for packages related to package management, like alien, deb, or rpm.
  • System/Shells
  • System/Sound Daemons: intended for sound daemons despite they can be primary developed for a special usage. For example, there are sound daemons for GNOME esound or WindowMaker wsndsrv.

Emulators

Groups of this section are intended for emulators of various operating systems. Packages like dosemu, wine (but that's not an emulator), vmware or atai800 are found here.

  • System/Emulators/Other
  • System/Emulators/PC

GUI

Groups from this section contain window managers and related tools. Some window managers have their own specific variants or ports of applications, but this group is not for applications or libraries. Such packages should be put in sections like Productivity, Development, or Amusements.

  • System/GUI/GNOME
  • System/GUI/KDE
  • System/GUI/LXDE
  • System/GUI/Other
  • System/GUI/XFCE

Internationalization (I18N)

Groups from this section are intended for packages providing special support for entering, displaying or working with Chinese, Japanese, and Korean langauges.

  • System/I18n/Chinese
  • System/I18n/Japanese
  • System/I18n/Korean

X11

Groups from the X11 section are intended for the base graphical system, and this also includes X11 successors currently (Wayland, Mir, etc.). Window managers go into System/GUI.

  • System/X11/Displaymanagers
  • System/X11/Fonts
  • System/X11/Icons
  • System/X11/Servers/XF86_3
  • System/X11/Servers/XF86_4
  • System/X11/Terminals
  • System/X11/Utilities

YaST

  • System/YaST

The System/YaST group is intended for all YaST-related packages. All YaST modules especially should be put in this group.