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