= Groups in Fedora

## What are the different types of groups?

Fedora has a few types of groups:

* Tracking groups
+
The tracking groups are primarily meant to indicate that people are contributors
in a certain part of the Fedora Project.
These group will allow new accounts to become CLA+1 which is the way of saying
that someone has signed the FPCA (which used to be called CLA, but the FPCA is
not a CLA, thus the rename) and is a member of one other group.
Being CLA+1 is the criteria the project has set to recognize someone has been
an active contributor.
With this trust comes a few "priviledges" such as:
+
--
- Access to the @fedoraproject.org email alias
- Access to fedorapeople.org
- Possibility to vote on some of the elections (including FESCo and the Council)
--
+
These groups are also the ones used when one wants to share the maintenance of
COPR projects with other people via a group.

* Shell groups
+
These groups are used when contributors gain access to some of the machines
in the Fedora Infrastructure.
For example, members of the sysadmin group are allowed to commit on the
infrastructure's git repository and this is allowed by giving write access to the
git repository to this group, on the file-system.

* pkgdb groups
+
These groups are meant to facilitate the collective maintenance of packages in
Fedora.
In other words, by giving commit access to the group on a package (or set of
packages), everyone in the group can commit to the package and thus the
maintenance of the package can be shared amongs the members of the group.


== How to request a group to be created?

The short answer is to open a ticket on the fedora-infrastructure issue tracker:
https://pagure.io/fedora-infrastructure/

It is unlikely you will need to create "shell" group, but you can ask for the
creation of a "tracking" or "pkgdb" group.


=== COPR groups

COPR supports giving access to project based on group membership. These groups
are regular `tracking` groups.


=== "pkgdb" groups name

In the days where pkgdb was an application in addition to a type of group, groups
meant to share the collaboration of packages had to end with `-sig`.
This is technically no longer a requirement today, however, it remains a standard
we try to maintain as it makes it easier to identify "pkgdb" group by their
names.

*When requesting a "pkgdb" group, please try to adhere to this standard.*


=== "pkgdb" groups and mailing list

"pkgdb" groups are created to maintain packages. They are meant to be CC'ed on
bugzilla tickets associated with these packages.
The tools syncing the information from dist-git to bugzilla uses the
"mailing list address" field in the group's settings.

This means that the email address associated with the group will be notified of
every bug reports opened against all the packages the group maintain, including
security sensitive reports.

In consequence, it is highly recommended that the email set in the "mailing list
address" in the group's settings in FAS be something that does not have publicly
accessible archives.

A simple answer to this is to create a new mailing list when creating the "pkgdb"
group. This list can then be made private and invite-only.

*When requesting a pkgdb group, please let us know if you need a new mailing list
to be created or not.*

== How to create a group?

. Log in to link:https://id.fedoraproject.org/ipa/ui[IPA interface]
. Click on the Groups tab
. Click on `+Add` button
. Fill in the Group name, description (optional)
. Tick the FAS group checkbox
. Click Add
. Click on the newly created group
. Add group sponsors (`<group_name> member managers` -> Users on the right) using `+Add` button
. Add members (if requested) using `+Add` button in `<group_name> members` -> Users

=== pkgdb groups
. Add group to `fedora-contributor` group. In group view click on `User groups` `+Add` button
. In case of "pkgdb" group you need to also create a mailing list. See xref:create_new_mailing_list.adoc[Creating a new mailing list] for details
. Create a group in dist-git. See xref:creating_groups_distgit.adoc[How to create a group in dist-git] for details
