= Teams and Internal Structure
:votelink: xref:Policies:voting.adoc

Alpine is organized into various teams.
Teams help with delegating work.
Delegating work requires people to be available and get the necessary permissions to do their work.
Teams also make it easier for people to join specific teams, rather than the entirety of the project and all that entails.
Finally, this organizational structure gives more transparency as to how work is divided, and aids collaboration with outside entities.
This section describes the status quo of how Alpine is organized.

[glossary]
== Glossary

[glossary]
Team:: A group of people with a specific purpose/scope that they tend to.
Team Member:: A registered member of a team, given access to that team's workspaces.
Developer:: Any Team Member is considered a fully fledged developer.
Team Administrators::
Team members that are allowed to vote in various organizational meetings and can appoint new team members.
Team Admins are marked in *bold* in official team listings.

[NOTE]
====
There is no distinction between technical and non-technical team members. Both are valued, and any useful distinctions are left to the discretion of individual teams.
====

== The Base team

The base team is the ultimate authority within Alpine.
For day-to-day operations, additional teams are established at the pleasure of the base team and given the authority necessary to conduct themselves.

The Base team consists of 3 elected members, guaranteeing a quorum.
Members of this team serve 3 year terms, staggered such that one member steps down per year.
Each year, an election is held through a project-wide {votelink}[Vote].

== Team Structure

=== Internal Organization
Teams organize themselves internally however they want.
However, all teams must have at least 1 admin, and at most 3.
This document does contain multiple recommendations, which, if followed, will make external relations easier.
Further, team administrators must follow the policies of other teams when working in their domain.

=== Creating a New Team
The base team needn't be involved in establishing every team - the project as a whole is permitted to self-govern in this respect.
An existing team member within the project may propose creating a new team.
In that scenario, the process will be the same as in <<_becoming_a_team_administrator>>.
If the vote passes, the new team is formed, with the sponsor member as the only administrator.

=== Dissolution of Teams
A team is dissolved if it has no more members.
If a team has no more administrators, one must be nominated, as in <<_becoming_a_team_administrator>>.
If the vote does not pass, the team is dissolved as well.

== Membership

=== Being a Member
Being in a team grants grants you the things you need to work on whatever the scope of the team is.
You should know your fellow team members well, and cooperate with them (and potentially other teams) to achieve tasks.
As a team, you may request various workspaces, such as a separate irc channel, git namespace, dedicated host, and more.
As a team, it is up to you how you manage yourselves internally, but the contents of this document should serve as guidelines.
However, all team members are expected to follow project-wide policies (all of which are in the governance document as well) and the https://alpinelinux.org/community/code-of-conduct.html[Code of Conduct].

=== Being a Team Administrator
As a team admin, you have more powers, and thus more responsibility.
Since you have the power to {votelink}[Vote] (e.g in nominating other team admins), you are expected to be present for meetings and voting sessions.
In the scenario that you must be absent for significant periods of time (more than a few days), you are expected to inform other team admins of that.

=== Becoming a Member
Team admins have the ability to add new members.
You should have already contributed to the team in question (whether technically or non-technically), and convinced a admin that you should be in a team (just asking can be enough, sometimes).
Technically, any admin may add or remove members, and teams may organize themselves however they wish internally.
However, we recommend that all the team admins of a given team perform an internal voting process, similar to that of {votelink}[project-wide voting].

=== Becoming a Team Administrator
The position of team admin involves a large amount of trust.
Team admins can vote on actions that will change the entirety of the project.
As such, the only way to become a team admin is by suggesting yourself to an existing admin, and having them call a {votelink}[Vote].

=== Removing a Member
Sometimes, members must be removed.
This can happen for a variety of reasons.
Teams are free to organize themselves as they see fit, but we recommend leaving purging team members as the last option on the table.
In the case that it must come to pass, we recommend that all the team admins of a given team perform an internal voting process, similar to that of {votelink}[project-wide voting].

=== Removing an Administrator
Team admins are members as well, but there is no higher in-team authority available to remove them.
In the scenario that this last resort is considered, this shall be done through a {votelink}[Vote]

[WARNING]
====
Removing members (and especially administrators) is an extreme measure.
In most cases, it is possible to solve issues through other means.
It is highly recommended that the removal of anyone from the project be strongly considered before it is suggested.
====
