"use strict";(self.webpackChunkwebsite=self.webpackChunkwebsite||[]).push([[2010],{3905:function(e,t,a){a.d(t,{Zo:function(){return l},kt:function(){return u}});var r=a(7294);function n(e,t,a){return t in e?Object.defineProperty(e,t,{value:a,enumerable:!0,configurable:!0,writable:!0}):e[t]=a,e}function o(e,t){var a=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),a.push.apply(a,r)}return a}function i(e){for(var t=1;t<arguments.length;t++){var a=null!=arguments[t]?arguments[t]:{};t%2?o(Object(a),!0).forEach((function(t){n(e,t,a[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(a)):o(Object(a)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(a,t))}))}return e}function s(e,t){if(null==e)return{};var a,r,n=function(e,t){if(null==e)return{};var a,r,n={},o=Object.keys(e);for(r=0;r<o.length;r++)a=o[r],t.indexOf(a)>=0||(n[a]=e[a]);return n}(e,t);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(r=0;r<o.length;r++)a=o[r],t.indexOf(a)>=0||Object.prototype.propertyIsEnumerable.call(e,a)&&(n[a]=e[a])}return n}var p=r.createContext({}),m=function(e){var t=r.useContext(p),a=t;return e&&(a="function"==typeof e?e(t):i(i({},t),e)),a},l=function(e){var t=m(e.components);return r.createElement(p.Provider,{value:t},e.children)},c={inlineCode:"code",wrapper:function(e){var t=e.children;return r.createElement(r.Fragment,{},t)}},h=r.forwardRef((function(e,t){var a=e.components,n=e.mdxType,o=e.originalType,p=e.parentName,l=s(e,["components","mdxType","originalType","parentName"]),h=m(a),u=n,d=h["".concat(p,".").concat(u)]||h[u]||c[u]||o;return a?r.createElement(d,i(i({ref:t},l),{},{components:a})):r.createElement(d,i({ref:t},l))}));function u(e,t){var a=arguments,n=t&&t.mdxType;if("string"==typeof e||n){var o=a.length,i=new Array(o);i[0]=h;var s={};for(var p in t)hasOwnProperty.call(t,p)&&(s[p]=t[p]);s.originalType=e,s.mdxType="string"==typeof e?e:n,i[1]=s;for(var m=2;m<o;m++)i[m]=a[m];return r.createElement.apply(null,i)}return r.createElement.apply(null,a)}h.displayName="MDXCreateElement"},4425:function(e,t,a){a.r(t),a.d(t,{assets:function(){return l},contentTitle:function(){return p},default:function(){return u},frontMatter:function(){return s},metadata:function(){return m},toc:function(){return c}});var r=a(7462),n=a(3366),o=(a(7294),a(3905)),i=["components"],s={title:"Bylaws"},p=void 0,m={unversionedId:"community/Bylaws",id:"community/Bylaws",title:"Bylaws",description:"\x3c!--",source:"@site/docs/community/Bylaws.md",sourceDirName:"community",slug:"/community/Bylaws",permalink:"/docs/next/community/Bylaws",editUrl:"https://github.com/apache/submarine/edit/master/website/docs/community/Bylaws.md",tags:[],version:"current",frontMatter:{title:"Bylaws"},sidebar:"docs",previous:{title:"Apache Submarine Community",permalink:"/docs/next/community/"},next:{title:"Guide for Apache Submarine Committers",permalink:"/docs/next/community/HowToCommit"}},l={},c=[],h={toc:c};function u(e){var t=e.components,a=(0,n.Z)(e,i);return(0,o.kt)("wrapper",(0,r.Z)({},h,a,{components:t,mdxType:"MDXLayout"}),(0,o.kt)("p",null,"This document defines the bylaws under which the Apache Submarine project operates. It defines the roles and responsibilities of the project, who may vote, how voting works, how conflicts are resolved, etc."),(0,o.kt)("p",null,"Submarine is a project of the ",(0,o.kt)("a",{parentName:"p",href:"https://www.apache.org/foundation/"},"Apache Software Foundation"),". The foundation holds the trademark on the name \u201cSubmarine\u201d and copyright on Apache code including the code in the Submarine codebase. The ",(0,o.kt)("a",{parentName:"p",href:"https://www.apache.org/foundation/faq.html"},"foundation FAQ")," explains the operation and background of the foundation."),(0,o.kt)("p",null,"Submarine is typical of Apache projects in that it operates under a set of principles, known collectively as the \u201cApache Way\u201d. If you are new to Apache development, please refer to the ",(0,o.kt)("a",{parentName:"p",href:"http://incubator.apache.org"},"Incubator project")," for more information on how Apache projects operate."),(0,o.kt)("h1",{id:"roles-and-responsibilities"},"Roles and Responsibilities"),(0,o.kt)("p",null,"Apache projects define a set of roles with associated rights and responsibilities. These roles govern what tasks an individual may perform within the project. The roles are defined in the following sections"),(0,o.kt)("ul",null,(0,o.kt)("li",{parentName:"ul"},(0,o.kt)("p",{parentName:"li"},(0,o.kt)("strong",{parentName:"p"},"Users")),(0,o.kt)("p",{parentName:"li"},"The most important participants in the project are people who use our software. The majority of our developers start out as users and guide their development efforts from the user\u2019s perspective."),(0,o.kt)("p",{parentName:"li"},"Users contribute to the Apache projects by providing feedback to developers in the form of bug reports and feature suggestions. As well, users participate in the Apache community by helping other users on mailing lists and user support forums.")),(0,o.kt)("li",{parentName:"ul"},(0,o.kt)("p",{parentName:"li"},(0,o.kt)("strong",{parentName:"p"},"Contributors")),(0,o.kt)("p",{parentName:"li"},"All of the volunteers who are contributing time, code, documentation, or resources to the Submarine Project. A contributor that makes sustained, welcome contributions to the project may be invited to become a Committer, though the exact timing of such invitations depends on many factors.")),(0,o.kt)("li",{parentName:"ul"},(0,o.kt)("p",{parentName:"li"},(0,o.kt)("strong",{parentName:"p"},"Committers")),(0,o.kt)("p",{parentName:"li"},"The project\u2019s Committers are responsible for the project\u2019s technical management. Committers have access to all subproject subversion repositories. Committers may cast binding votes on any technical discussion regarding any subproject."),(0,o.kt)("p",{parentName:"li"},"Committer access is by invitation only and must be approved by consensus approval of the active PMC members. A Committer is considered emeritus by their own declaration or by not contributing in any form to the project for over six months. An emeritus committer may request reinstatement of commit access from the PMC. Such reinstatement is subject to consensus approval of active PMC members."),(0,o.kt)("p",{parentName:"li"},"Significant, pervasive features are often developed in a speculative branch of the repository. The PMC may grant commit rights on the branch to its consistent contributors, while the initiative is active. Branch committers are responsible for shepherding their feature into an active release and do not cast binding votes or vetoes in the project."),(0,o.kt)("p",{parentName:"li"},"All Apache committers are required to have a signed Contributor License Agreement (CLA) on file with the Apache Software Foundation. There is a ",(0,o.kt)("a",{parentName:"p",href:"https://www.apache.org/dev/committers.html"},"Committer FAQ")," which provides more details on the requirements for Committers"),(0,o.kt)("p",{parentName:"li"},"A committer who makes a sustained contribution to the project may be invited to become a member of the PMC. The form of contribution is not limited to code. It can also include code review, helping out users on the mailing lists, documentation, testing, etc.")),(0,o.kt)("li",{parentName:"ul"},(0,o.kt)("p",{parentName:"li"},(0,o.kt)("strong",{parentName:"p"},"Release Manager")),(0,o.kt)("p",{parentName:"li"},"A Release Manager (RM) is a committer who volunteers to produce a Release Candidate according to ",(0,o.kt)("a",{parentName:"p",href:"https://github.com/apache/submarine/blob/master/dev-support/cicd/HowToRelease.md"},"HowToRelease"),". The RM shall publish a Release Plan on the ",(0,o.kt)("em",{parentName:"p"},"common-dev@")," list stating the branch from which they intend to make a Release Candidate, at least one week before they do so. The RM is responsible for building consensus around the content of the Release Candidate, in order to achieve a successful Product Release vote.")),(0,o.kt)("li",{parentName:"ul"},(0,o.kt)("p",{parentName:"li"},(0,o.kt)("strong",{parentName:"p"},"Project Management Committee")),(0,o.kt)("p",{parentName:"li"},"The Project Management Committee (PMC) for Apache Submarine was created by the Apache Board in October 2019 when Submarine moved out of Hadoop and became a top level project at Apache. The PMC is responsible to the board and the ASF for the management and oversight of the Apache Submarine codebase. The responsibilities of the PMC include"),(0,o.kt)("ul",{parentName:"li"},(0,o.kt)("li",{parentName:"ul"},"Deciding what is distributed as products of the Apache Submarine project. In particular all releases must be approved by the PMC"),(0,o.kt)("li",{parentName:"ul"},"Maintaining the project\u2019s shared resources, including the codebase repository, mailing lists, websites."),(0,o.kt)("li",{parentName:"ul"},"Speaking on behalf of the project."),(0,o.kt)("li",{parentName:"ul"},"Resolving license disputes regarding products of the project"),(0,o.kt)("li",{parentName:"ul"},"Nominating new PMC members and committers"),(0,o.kt)("li",{parentName:"ul"},"Maintaining these bylaws and other guidelines of the project")),(0,o.kt)("p",{parentName:"li"},"Membership of the PMC is by invitation only and must be approved by a consensus approval of active PMC members. A PMC member is considered \u201cemeritus\u201d by their own declaration or by not contributing in any form to the project for over six months. An emeritus member may request reinstatement to the PMC. Such reinstatement is subject to consensus approval of the active PMC members."),(0,o.kt)("p",{parentName:"li"},"The chair of the PMC is appointed by the ASF board. The chair is an office holder of the Apache Software Foundation (Vice President, Apache Submarine) and has primary responsibility to the board for the management of the projects within the scope of the Submarine PMC. The chair reports to the board quarterly on developments within the Submarine project."),(0,o.kt)("p",{parentName:"li"},"The chair of the PMC is rotated annually. When the chair is rotated or if the current chair of the PMC resigns, the PMC votes to recommend a new chair using Single Transferable Vote (STV) voting. See ",(0,o.kt)("a",{parentName:"p",href:"https://wiki.apache.org/general/BoardVoting"},"https://wiki.apache.org/general/BoardVoting")," for specifics. The decision must be ratified by the Apache board."))),(0,o.kt)("h1",{id:"decision-making"},"Decision Making"),(0,o.kt)("p",null,"Within the Submarine project, different types of decisions require different forms of approval. For example, the previous section describes several decisions which require \u201cconsensus approval\u201d approval. This section defines how voting is performed, the types of approvals, and which types of decision require which type of approval."),(0,o.kt)("ul",null,(0,o.kt)("li",{parentName:"ul"},(0,o.kt)("p",{parentName:"li"},(0,o.kt)("strong",{parentName:"p"},"Voting")),(0,o.kt)("p",{parentName:"li"},"Decisions regarding the project are made by votes on the primary project development mailing list (",(0,o.kt)("a",{parentName:"p",href:"mailto:dev@submarine.apache.org"},"dev@submarine.apache.org"),"). Where necessary, PMC voting may take place on the private Submarine PMC mailing list. Votes are clearly indicated by subject line starting with ","[","VOTE","]",". Votes may contain multiple items for approval and these should be clearly separated. Voting is carried out by replying to the vote mail. Voting may take four flavors"),(0,o.kt)("ul",{parentName:"li"},(0,o.kt)("li",{parentName:"ul"},(0,o.kt)("strong",{parentName:"li"},"+1")," \u201cYes,\u201d \u201cAgree,\u201d or \u201cthe action should be performed.\u201d In general, this vote also indicates a willingness on the behalf of the voter in \u201cmaking it happen\u201d"),(0,o.kt)("li",{parentName:"ul"},(0,o.kt)("strong",{parentName:"li"},"+0")," This vote indicates a willingness for the action under consideration to go ahead. The voter, however will not be able to help."),(0,o.kt)("li",{parentName:"ul"},(0,o.kt)("strong",{parentName:"li"},"-","0")," This vote indicates that the voter does not, in general, agree with the proposed action but is not concerned enough to prevent the action going ahead."),(0,o.kt)("li",{parentName:"ul"},(0,o.kt)("strong",{parentName:"li"},"-","1")," This is a negative vote. On issues where consensus is required, this vote counts as a ",(0,o.kt)("strong",{parentName:"li"},"veto"),". All vetoes must contain an explanation of why the veto is appropriate. Vetoes with no explanation are void. It may also be appropriate for a -1 vote to include an alternative course of action.")),(0,o.kt)("p",{parentName:"li"},"All participants in the Submarine project are encouraged to show their agreement with or against a particular action by voting. For technical decisions, only the votes of active committers are binding. Non binding votes are still useful for those with binding votes to understand the perception of an action in the wider Submarine community. For PMC decisions, only the votes of PMC members are binding."),(0,o.kt)("p",{parentName:"li"},"Voting can also be applied to changes made to the Submarine codebase. These typically take the form of a veto (-1) in reply to the commit message sent when the commit is made.")),(0,o.kt)("li",{parentName:"ul"},(0,o.kt)("p",{parentName:"li"},(0,o.kt)("strong",{parentName:"p"},"Approvals")),(0,o.kt)("p",{parentName:"li"},"These are the types of approvals that can be sought. Different actions require different types of approvals"),(0,o.kt)("ul",{parentName:"li"},(0,o.kt)("li",{parentName:"ul"},(0,o.kt)("strong",{parentName:"li"},"Consensus Approval -")," Consensus approval requires 3 binding +1 votes and no binding vetoes."),(0,o.kt)("li",{parentName:"ul"},(0,o.kt)("strong",{parentName:"li"},"Lazy Consensus -")," Lazy consensus requires no -1 votes (\u2018silence gives assent\u2019)."),(0,o.kt)("li",{parentName:"ul"},(0,o.kt)("strong",{parentName:"li"},"Lazy Majority -")," A lazy majority vote requires 3 binding +1 votes and more binding +1 votes than -1 votes."),(0,o.kt)("li",{parentName:"ul"},(0,o.kt)("strong",{parentName:"li"},"Lazy 2\u20443 Majority -")," Lazy 2\u20443 majority votes requires at least 3 votes and twice as many +1 votes as -1 votes."))),(0,o.kt)("li",{parentName:"ul"},(0,o.kt)("p",{parentName:"li"},(0,o.kt)("strong",{parentName:"p"},"Vetoes")),(0,o.kt)("p",{parentName:"li"},"A valid, binding veto cannot be overruled. If a veto is cast, it must be accompanied by a valid reason explaining the reasons for the veto. The validity of a veto, if challenged, can be confirmed by anyone who has a binding vote. This does not necessarily signify agreement with the veto - merely that the veto is valid."),(0,o.kt)("p",{parentName:"li"},"If you disagree with a valid veto, you must lobby the person casting the veto to withdraw their veto. If a veto is not withdrawn, any action that has been vetoed must be reversed in a timely manner.")),(0,o.kt)("li",{parentName:"ul"},(0,o.kt)("p",{parentName:"li"},(0,o.kt)("strong",{parentName:"p"},"Actions")),(0,o.kt)("p",{parentName:"li"},"This section describes the various actions which are undertaken within the project, the corresponding approval required for that action and those who have binding votes over the action."),(0,o.kt)("ul",{parentName:"li"},(0,o.kt)("li",{parentName:"ul"},(0,o.kt)("p",{parentName:"li"},(0,o.kt)("strong",{parentName:"p"},"Code Change")),(0,o.kt)("p",{parentName:"li"},"A change made to a codebase of the project and committed by a committer. This includes source code, documentation, website content, etc."),(0,o.kt)("p",{parentName:"li"},"Consensus approval of active committers, but with a minimum of one +1. The code can be committed after the first +1, unless the code change represents a merge from a branch, in which case three +1s are required.")),(0,o.kt)("li",{parentName:"ul"},(0,o.kt)("p",{parentName:"li"},(0,o.kt)("strong",{parentName:"p"},"Product Release")),(0,o.kt)("p",{parentName:"li"},"When a release of one of the project\u2019s products is ready, a vote is required to accept the release as an official release of the project."),(0,o.kt)("p",{parentName:"li"},"Lazy Majority of active PMC members")),(0,o.kt)("li",{parentName:"ul"},(0,o.kt)("p",{parentName:"li"},(0,o.kt)("strong",{parentName:"p"},"Adoption of New Codebase")),(0,o.kt)("p",{parentName:"li"},"When the codebase for an existing, released product is to be replaced with an alternative codebase. If such a vote fails to gain approval, the existing code base will continue."),(0,o.kt)("p",{parentName:"li"},"This also covers the creation of new sub-projects within the project"),(0,o.kt)("p",{parentName:"li"},"Lazy 2\u20443 majority of PMC members")),(0,o.kt)("li",{parentName:"ul"},(0,o.kt)("p",{parentName:"li"},(0,o.kt)("strong",{parentName:"p"},"New Branch Committer")),(0,o.kt)("p",{parentName:"li"},"When a branch committer is proposed for the PMC"),(0,o.kt)("p",{parentName:"li"},"Lazy consensus of active PMC members")),(0,o.kt)("li",{parentName:"ul"},(0,o.kt)("p",{parentName:"li"},(0,o.kt)("strong",{parentName:"p"},"New Committer")),(0,o.kt)("p",{parentName:"li"},"When a new committer is proposed for the project"),(0,o.kt)("p",{parentName:"li"},"Consensus approval of active PMC members")),(0,o.kt)("li",{parentName:"ul"},(0,o.kt)("p",{parentName:"li"},(0,o.kt)("strong",{parentName:"p"},"New PMC Member")),(0,o.kt)("p",{parentName:"li"},"When a committer is proposed for the PMC"),(0,o.kt)("p",{parentName:"li"},"Consensus approval of active PMC members")),(0,o.kt)("li",{parentName:"ul"},(0,o.kt)("p",{parentName:"li"},(0,o.kt)("strong",{parentName:"p"},"Branch Committer Removal")),(0,o.kt)("p",{parentName:"li"},"When removal of commit privileges is sought ",(0,o.kt)("strong",{parentName:"p"},"or")," when the branch is merged to the mainline"),(0,o.kt)("p",{parentName:"li"},"Lazy 2\u20443 majority of active PMC members")),(0,o.kt)("li",{parentName:"ul"},(0,o.kt)("p",{parentName:"li"},(0,o.kt)("strong",{parentName:"p"},"Committer Removal")),(0,o.kt)("p",{parentName:"li"},"When removal of commit privileges is sought. Note: Such actions will also be referred to the ASF board by the PMC chair"),(0,o.kt)("p",{parentName:"li"},"Lazy 2\u20443 majority of active PMC members (excluding the committer in question if a member of the PMC).")),(0,o.kt)("li",{parentName:"ul"},(0,o.kt)("p",{parentName:"li"},(0,o.kt)("strong",{parentName:"p"},"PMC Member Removal")),(0,o.kt)("p",{parentName:"li"},"When removal of a PMC member is sought. Note: Such actions will also be referred to the ASF board by the PMC chair."),(0,o.kt)("p",{parentName:"li"},"Lazy 2\u20443 majority of active PMC members (excluding the member in question)")),(0,o.kt)("li",{parentName:"ul"},(0,o.kt)("p",{parentName:"li"},(0,o.kt)("strong",{parentName:"p"},"Modifying Bylaws")),(0,o.kt)("p",{parentName:"li"},"Modifying this document."),(0,o.kt)("p",{parentName:"li"},"Lazy majority of active PMC members")))),(0,o.kt)("li",{parentName:"ul"},(0,o.kt)("p",{parentName:"li"},(0,o.kt)("strong",{parentName:"p"},"Voting Timeframes")),(0,o.kt)("p",{parentName:"li"},"Votes are open for a period of 7 days to allow all active voters time to consider the vote. Votes relating to code changes are not subject to a strict timetable but should be made as timely as possible."),(0,o.kt)("ul",{parentName:"li"},(0,o.kt)("li",{parentName:"ul"},(0,o.kt)("p",{parentName:"li"},(0,o.kt)("strong",{parentName:"p"},"Product Release - Vote Timeframe")),(0,o.kt)("p",{parentName:"li"},"Release votes, alone, run for a period of 5 days. All other votes are subject to the above timeframe of 7 days."))))))}u.isMDXComponent=!0}}]);