aboutsummaryrefslogtreecommitdiffstats
path: root/workflow.md
blob: 4a8ae0290a2b867bee3e692f7f85f3bb26bb0062 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
# Technical Steering Committee Workflow

## Introduction

The Alpine Linux Technical Steering Committee (TSC) is responsible for

* setting the technical direction and guidelines for the project
* approving changes that either
    * have a significant impact to Alpine Linux users
    * affect a number of packages, or
    * are potentially controversial
* maintaining a technical roadmap
* coordinating the work delegated to various technical Special Interest Groups
  (SIGs), and
* technical matters which are not in the scope of any particular SIG.

The [Alpine Linux Council](https://gitlab.alpinelinux.org/alpine/council)
appoints the members of the TSC. The TSC defines what SIGs exist, has
representation in each SIG, and appoints the leader of each SIG.

This document is the authoritative description on how the TSC operates.

## Raising Issues to the Committee

Anyone in the Alpine Linux community can raise an issue to the TSC by creating
an issue for the [TSC GitLab
project](https://gitlab.alpinelinux.org/alpine/tsc). The issue will eventually
be handled in an upcoming TSC meeting.

## Meeting Practices

The TSC convenes every second week to handle the [open
issues](https://gitlab.alpinelinux.org/alpine/tsc/-/issues). Each meeting is
scheduled to last 45 minutes and takes place via a video conferencing system.
The starting time of sequential meetings alternates between Monday at 16:00 and
Thursday 15:15 UTC. The meetings are not recorded.

Between the meetings, the members are encouraged to comment the open issues in
GitLab, especially the issues that are on the agenda of the next meeting. In
this way, the meeting time can be used more effectively.

### Officials and Minutes

Each meeting has two officials: the *Chair* and the *Scribe*.

The selection of the officials is based on weekday-specific schedules. These
schedules are based on the round-robin method, where the ordering is based on
the names of the participating members. Each TSC member participates in at
least one weekday-specific schedule, depending on his availability.

The Scribe of the meeting is selected according to the weekday-specific
schedule. The Chair of the meeting shall be the member who was to act as the
Scribe in the previous meeting held on the same weekday according to the
schedule. When unable to carry out the duties, a selected official shall
arrange another TSC member as his substitute. If neither the selected official
nor his substitute shows up, the TSC elects a substitute.

The responsibilities of the Chair include:

* prioritizing and tagging the open issues before the meeting
* sending out a meeting invitation to the other members by e-mail at least 7
  days prior to the meeting
* chairing the meeting
* organizing a vote if consensus cannot be reached
* ensuring a common understanding of what was decided after each item handled,
  and
* verifying the correctness of the meeting minutes.

The Scribe is responsible for:

* writing the meeting minutes, accurately recording what was decided, including
  who shall implement the decision
* pushing the minutes to the [GitLab
  repository](https://gitlab.alpinelinux.org/alpine/tsc/-/tree/master/minutes)
  within 3 days of the meeting, and
* updating the status of the handled issues by writing comments about the TSC's
  position when necessary.

Members who were present in the meeting may suggest revisions to the minutes by
opening merge requests. Unless having been resolved earlier, these merge
requests shall be handled as the first agenda item in the next meeting.

### Quorum and Voting

Each TSC meeting begins by determining if there is a quorum. More than half of
the appointed members must be present in order to make any decision. Naturally,
the meeting can be held without a quorum to discuss open issues, but any
decision must be postponed to the next meeting.

If the Chair knows in advance that there will be no quorum, he is expected to
cancel the meeting by e-mail. When unable to attend a meeting due to an
exceptional schedule, a member is expected to notify the Chair at least 3 days
in advance.

When making decisions, the TSC attempts to achieve a consensus by thoroughly
discussing the matter. If no consensus can be reached, the Chair organizes a
vote. The opinion of the majority becomes the TSC's position. When determining
the majority, the members who refrained from voting are considered absent.

In case of a tie, the issue is escalated to the Council. If all Council members
participated in the TSC vote, the decision gets immediately made based on their
votes without a deferral to the next Council meeting.

If there are more than two options to vote for, it is up to the Chair to decide
whether to use sequential elimination, multi-option voting, two-round system,
or other procedures. However, no decision can be made without

* the backing of a simple majority of those who cast their votes, or
* a tie-break by the Council when half of the votes supported the decision.

### Agenda

On the [agenda board](https://gitlab.alpinelinux.org/alpine/tsc/-/boards/697),
the open issues are arranged into columns according to `agenda` tags. The
issues in each column are arranged in a priority order such that the topmost
issue is considered the most important. When prioritizing the issues, the Chair
pays attention to the importance, the urgency, and the age of the issues.

The issues tagged with `agenda:scheduled` are expected to be handled in the
next meeting in their priority order. At most 3 items can have this tag
attached at the same time. At his discretion, the Chair may also request status
updates on any issue with an `agenda:follow-up` tag. Hence, each meeting
follows this agenda:

1. Opening of the meeting
1. Confirming the meeting officials
1. Determining if a quorum is present
1. Closing any merge requests related to the last meeting minutes
1. Status update on selected `agenda:follow-up` issues
1. First `agenda:scheduled` issue
1. Second `agenda:scheduled` issue
1. Third `agenda:scheduled` issue
1. Closing of the meeting

The `agenda` tags are expected to be up-to-date when the Chair sends out the
invitation. If there are good reasons, the Chair may revise them afterwards.
Only in exceptional cases the Chair would revise the agenda less than 3 days
prior to the meeting.

At least 10 minutes must be reserved for each `agenda:scheduled` item. When one
item is finished and there is less than 10 minutes time left, the Chair closes
the meeting, deferring the remaining items to a future meeting.

## Changes to This Workflow

Any proposed change to this document shall be submitted as a merge request,
which is handled as a TSC agenda item according to the normal procedure.