xref: /aosp_15_r20/external/wayland-protocols/freedesktop.org/GOVERNANCE.md (revision 6c119a463dd5c45dd05bbe67429293292dde15ee)
1*6c119a46SAndroid Build Coastguard Worker# wayland-protocols governance
2*6c119a46SAndroid Build Coastguard Worker
3*6c119a46SAndroid Build Coastguard WorkerThis document governs the maintenance of wayland-protocols and serves to outline
4*6c119a46SAndroid Build Coastguard Workerthe broader process for standardization of protocol extensions in the Wayland
5*6c119a46SAndroid Build Coastguard Workerecosystem.
6*6c119a46SAndroid Build Coastguard Worker
7*6c119a46SAndroid Build Coastguard Worker## 1. Membership
8*6c119a46SAndroid Build Coastguard Worker
9*6c119a46SAndroid Build Coastguard WorkerMembership in wayland-protocols is offered to stakeholders in the Wayland
10*6c119a46SAndroid Build Coastguard Workerecosystem who have an interest in participating in protocol extension
11*6c119a46SAndroid Build Coastguard Workerstandardization.
12*6c119a46SAndroid Build Coastguard Worker
13*6c119a46SAndroid Build Coastguard Worker### 1.1. Membership requirements
14*6c119a46SAndroid Build Coastguard Worker
15*6c119a46SAndroid Build Coastguard Worker1. Membership is extended to projects, rather than individuals.
16*6c119a46SAndroid Build Coastguard Worker2. Members represent general-purpose projects with a stake in multiple Wayland
17*6c119a46SAndroid Build Coastguard Worker   protocols (e.g. compositors, GUI toolkits, etc), rather than special-purpose
18*6c119a46SAndroid Build Coastguard Worker   applications with a stake in only one or two.
19*6c119a46SAndroid Build Coastguard Worker3. Each project must provide one or two named individuals as points-of-contact
20*6c119a46SAndroid Build Coastguard Worker   for that project who can be reached to discuss protocol-related matters.
21*6c119a46SAndroid Build Coastguard Worker4. During a vote, if two points-of-contact for the same member disagree, the
22*6c119a46SAndroid Build Coastguard Worker   member's vote is considered blank.
23*6c119a46SAndroid Build Coastguard Worker
24*6c119a46SAndroid Build Coastguard Worker### 1.2. Becoming a member
25*6c119a46SAndroid Build Coastguard Worker
26*6c119a46SAndroid Build Coastguard Worker1. New members who meet the criteria outlined in 1.1 are established by
27*6c119a46SAndroid Build Coastguard Worker   invitation from an existing member. Projects hoping to join should reach out
28*6c119a46SAndroid Build Coastguard Worker   to an existing member asking for this invitation.
29*6c119a46SAndroid Build Coastguard Worker2. New members shall write to the wayland-devel mailing list stating their
30*6c119a46SAndroid Build Coastguard Worker   intention of joining and their sponsor.
31*6c119a46SAndroid Build Coastguard Worker3. The sponsor shall respond acknowledging their sponsorship of the membership.
32*6c119a46SAndroid Build Coastguard Worker4. A 14 day discussion period for comments from wayland-protocols members will
33*6c119a46SAndroid Build Coastguard Worker   be held.
34*6c119a46SAndroid Build Coastguard Worker5. At the conclusion of the discussion period, the new membership is established
35*6c119a46SAndroid Build Coastguard Worker   unless their application was NACKed by a 1/2 majority of all existing members.
36*6c119a46SAndroid Build Coastguard Worker
37*6c119a46SAndroid Build Coastguard Worker### 1.3. Ceasing membership
38*6c119a46SAndroid Build Coastguard Worker
39*6c119a46SAndroid Build Coastguard Worker1. A member may step down by writing their intention to do so to the
40*6c119a46SAndroid Build Coastguard Worker   wayland-devel mailing list.
41*6c119a46SAndroid Build Coastguard Worker2. A removal vote may be called for by an existing member by posting to the
42*6c119a46SAndroid Build Coastguard Worker   wayland-devel mailing list. This begins a 14 day voting & discussion
43*6c119a46SAndroid Build Coastguard Worker   period.
44*6c119a46SAndroid Build Coastguard Worker3. At the conclusion of the voting period, the member is removed if the votes
45*6c119a46SAndroid Build Coastguard Worker   total 2/3rds of all current members.
46*6c119a46SAndroid Build Coastguard Worker4. Removed members are not eligible to apply for membership again for a period
47*6c119a46SAndroid Build Coastguard Worker   of 1 year.
48*6c119a46SAndroid Build Coastguard Worker5. Following a failed vote, the member who called for the vote cannot
49*6c119a46SAndroid Build Coastguard Worker   call for a re-vote or propose any other removal for 90 days.
50*6c119a46SAndroid Build Coastguard Worker
51*6c119a46SAndroid Build Coastguard Worker## 2. Protocols
52*6c119a46SAndroid Build Coastguard Worker
53*6c119a46SAndroid Build Coastguard Worker### 2.1. Protocol namespaces
54*6c119a46SAndroid Build Coastguard Worker
55*6c119a46SAndroid Build Coastguard Worker1. Namespaces are implemented in practice by prefixing each interface name in a
56*6c119a46SAndroid Build Coastguard Worker   protocol definition (XML) with the namespace name, and an underscore (e.g.
57*6c119a46SAndroid Build Coastguard Worker   "xdg_wm_base").
58*6c119a46SAndroid Build Coastguard Worker2. Protocols in a namespace may optionally use the namespace followed by a dash
59*6c119a46SAndroid Build Coastguard Worker   in the name (e.g. "xdg-shell").
60*6c119a46SAndroid Build Coastguard Worker3. The "xdg" namespace is established for protocols letting clients
61*6c119a46SAndroid Build Coastguard Worker   configure its surfaces as "windows", allowing clients to affect how they
62*6c119a46SAndroid Build Coastguard Worker   are managed.
63*6c119a46SAndroid Build Coastguard Worker4. The "wp" namespace is established for protocols generally useful to Wayland
64*6c119a46SAndroid Build Coastguard Worker   implementations (i.e. "plumbing" protocols).
65*6c119a46SAndroid Build Coastguard Worker5. The "ext" namespace is established as a general catch-all for protocols that
66*6c119a46SAndroid Build Coastguard Worker   fit into no other namespace.
67*6c119a46SAndroid Build Coastguard Worker
68*6c119a46SAndroid Build Coastguard Worker### 2.2. Protocol inclusion requirements
69*6c119a46SAndroid Build Coastguard Worker
70*6c119a46SAndroid Build Coastguard Worker1. All protocols found in the "xdg" and "wp" namespaces at the time of writing
71*6c119a46SAndroid Build Coastguard Worker   are grandfathered into their respective namespace without further discussion.
72*6c119a46SAndroid Build Coastguard Worker2. Protocols in the "xdg" and "wp" namespace are eligible for inclusion only if
73*6c119a46SAndroid Build Coastguard Worker   ACKed by at least 3 members.
74*6c119a46SAndroid Build Coastguard Worker3. Protocols in the "xdg" and "wp" namespace are ineligible for inclusion if
75*6c119a46SAndroid Build Coastguard Worker   if NACKed by any member.
76*6c119a46SAndroid Build Coastguard Worker4. Protocols in the "xdg" and "wp" namespaces must have at least 3 open-source
77*6c119a46SAndroid Build Coastguard Worker   implementations (either 1 client + 2 servers, or 2 clients + 1 server) to be
78*6c119a46SAndroid Build Coastguard Worker   eligible for inclusion.
79*6c119a46SAndroid Build Coastguard Worker5. Protocols in the "ext" namespace are eligible for inclusion only if ACKed by
80*6c119a46SAndroid Build Coastguard Worker   at least one other member.
81*6c119a46SAndroid Build Coastguard Worker6. Protocols in the "ext" namespace must have at least one open-source client &
82*6c119a46SAndroid Build Coastguard Worker   one open-source server implementation to be eligible for inclusion.
83*6c119a46SAndroid Build Coastguard Worker7. "Open-source" is defined as distributed with an Open Source Initiative
84*6c119a46SAndroid Build Coastguard Worker   approved license.
85*6c119a46SAndroid Build Coastguard Worker
86*6c119a46SAndroid Build Coastguard Worker### 2.3. Introducing new protocols
87*6c119a46SAndroid Build Coastguard Worker
88*6c119a46SAndroid Build Coastguard Worker1. A new protocol may be proposed by submitting a merge request to the
89*6c119a46SAndroid Build Coastguard Worker   wayland-protocols Gitlab repository.
90*6c119a46SAndroid Build Coastguard Worker2. Protocol proposal posts must include justification for their inclusion in
91*6c119a46SAndroid Build Coastguard Worker   their namespace per the requirements outlined in section 2.2.
92*6c119a46SAndroid Build Coastguard Worker3. An indefinite discussion period for comments from wayland-protocols members
93*6c119a46SAndroid Build Coastguard Worker   will be held, with a minimum duration of 30 days. Protocols which require a
94*6c119a46SAndroid Build Coastguard Worker   certain level of implementation status, ACKs from members, and so on, should
95*6c119a46SAndroid Build Coastguard Worker   use this time to acquire them.
96*6c119a46SAndroid Build Coastguard Worker4. When the proposed protocol meets all requirements for inclusion per section
97*6c119a46SAndroid Build Coastguard Worker   2.2, and the minimum discussion period has elapsed, the sponsoring member may
98*6c119a46SAndroid Build Coastguard Worker   merge their changes in the wayland-protocol repository.
99*6c119a46SAndroid Build Coastguard Worker5. Amendments to existing protocols may be proposed by the same process, with
100*6c119a46SAndroid Build Coastguard Worker   no minimum discussion period.
101*6c119a46SAndroid Build Coastguard Worker6. Declaring a protocol stable may be proposed by the same process, with the
102*6c119a46SAndroid Build Coastguard Worker   regular 30 day minimum discussion period.
103*6c119a46SAndroid Build Coastguard Worker
104*6c119a46SAndroid Build Coastguard Worker## 3. Protocol adoption documentation
105*6c119a46SAndroid Build Coastguard Worker
106*6c119a46SAndroid Build Coastguard Worker### 3.1. Adoption website
107*6c119a46SAndroid Build Coastguard Worker
108*6c119a46SAndroid Build Coastguard Worker1. This section is informational.
109*6c119a46SAndroid Build Coastguard Worker2. A website will be made available for interested parties to browse the
110*6c119a46SAndroid Build Coastguard Worker   implementation status of protocols included in wayland-protocols.
111*6c119a46SAndroid Build Coastguard Worker3. A statement from each member of wayland-protocols will be included on the
112*6c119a46SAndroid Build Coastguard Worker   site.
113*6c119a46SAndroid Build Coastguard Worker4. Each protocol will be listed along with its approval status from each member.
114*6c119a46SAndroid Build Coastguard Worker5. The approval statuses are:
115*6c119a46SAndroid Build Coastguard Worker   1. NACK, or "negative acknowledgement", meaning that the member is opposed to
116*6c119a46SAndroid Build Coastguard Worker      the protocol in principle.
117*6c119a46SAndroid Build Coastguard Worker   2. NOPP, or "no opposition", meaning that the member is not opposed to the
118*6c119a46SAndroid Build Coastguard Worker      protocol in principle, but does not provide an implementation.
119*6c119a46SAndroid Build Coastguard Worker   3. ACK, or "acknowledged", meaning that the member supports the protocol in
120*6c119a46SAndroid Build Coastguard Worker      principle, but does not provide an implementation.
121*6c119a46SAndroid Build Coastguard Worker   4. IMPL, or "implemented", meaning that the member supports the protocol and
122*6c119a46SAndroid Build Coastguard Worker      provides an implementation.
123*6c119a46SAndroid Build Coastguard Worker6. Each member may write a short statement expanding on the rationale for their
124*6c119a46SAndroid Build Coastguard Worker   approval status, which will be included on the site.
125*6c119a46SAndroid Build Coastguard Worker7. A supplementary list of implementations will also be provided on the site,
126*6c119a46SAndroid Build Coastguard Worker   which may include implementations supported by non-members.
127*6c119a46SAndroid Build Coastguard Worker
128*6c119a46SAndroid Build Coastguard Worker### 3.2. Changes to the adoption website
129*6c119a46SAndroid Build Coastguard Worker
130*6c119a46SAndroid Build Coastguard Worker1. This section is informational.
131*6c119a46SAndroid Build Coastguard Worker2. A new protocol is added to the website by the sponsoring member at the
132*6c119a46SAndroid Build Coastguard Worker   conclusion of the discussion period (section 2.3.3).
133*6c119a46SAndroid Build Coastguard Worker3. During the discussion period (section 2.3.3), interested parties may express
134*6c119a46SAndroid Build Coastguard Worker   their approval status on the Gitlab merge request. The default approval
135*6c119a46SAndroid Build Coastguard Worker   status for members who do not participate in the discussion is "NOPP".
136*6c119a46SAndroid Build Coastguard Worker4. Members may change their acknowledgement status or support statement at any
137*6c119a46SAndroid Build Coastguard Worker   time after the discussion period (section 2.3.3) has closed by simply merging
138*6c119a46SAndroid Build Coastguard Worker   their update in the wayland-protocols repository.
139*6c119a46SAndroid Build Coastguard Worker
140*6c119a46SAndroid Build Coastguard Worker## 4. Amending this document
141*6c119a46SAndroid Build Coastguard Worker
142*6c119a46SAndroid Build Coastguard Worker1. An amendment to this document may be proposed any member by
143*6c119a46SAndroid Build Coastguard Worker   submitting a merge request on Gitlab.
144*6c119a46SAndroid Build Coastguard Worker2. A 30 day discussion period for comments from wayland-protocols members will
145*6c119a46SAndroid Build Coastguard Worker   be held.
146*6c119a46SAndroid Build Coastguard Worker3. At the conclusion of the discussion period, an amendment will become
147*6c119a46SAndroid Build Coastguard Worker   effective if it's ACKed by at least 2/3rds of all wayland-protocols members,
148*6c119a46SAndroid Build Coastguard Worker   and NACKed by none. The sponsoring member may merge their change to the
149*6c119a46SAndroid Build Coastguard Worker   wayland-protocols repository at this point.
150