You can not select more than 25 topics Topics must start with a chinese character,a letter or number, can include dashes ('-') and can be up to 35 characters long.

governance.md 17 kB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347
  1. # MindSpore Open Governance
  2. ## Overview
  3. MindSpore is embracing open governance to build a truly open source ecosystem
  4. and developer friendly atmosphere. The governance model adopted here is heavily
  5. influenced by the [onnx governance](https://github.com/onnx/onnx/blob/master/community/readme.md)
  6. which drew reference from the [kubernetes governance](https://github.com/kubernetes/community/blob/master/governance.md).
  7. *For similar structures some of the same wordings from onnx governance are
  8. borrowed to adhere to the originally construed meaning.*
  9. MindSpore open governance adopts three types of governance structures: Technical
  10. Steering Committee, Special Interest Groups (SIGs) and Working Groups (WG).
  11. MindSpore also defines two roles for development: *Contributor* and *Approver*.
  12. *Contributors* are the developers who have contributed code which got merged and
  13. *Approvers* are those who have the right to merge code. *Contributors* can vote
  14. and run for the *Approver* role. The Technical Steering Committee charters
  15. SIGs/WGs and appoints SIG/WG chairs. Every piece of MindSpore belongs to some
  16. SIG. Contributors and Approvers participate in one or more SIGs.
  17. The effort is bootstrapped with an initial Technical Steering Committee and set
  18. of SIGs with the first elections to occur after 1 year.
  19. ## Principles
  20. The MindSpore community adheres to the following principles:
  21. * __Open__: MindSpore is open source. See repository guidelines and CLA, below.
  22. * __Welcoming and respectful__: See Code of Conduct, below.
  23. * __Transparent and accessible__: Work and collaboration should be done in public. See SIG governance, below.
  24. * __Merit__: Ideas and contributions are accepted according to their technical merit and alignment with project objectives, scope and design principles.
  25. * __Speed__: Contributing the time and effort to ensure fast decision-making is key to ensuring that the specifications produced is aligned to the fast iteration of machine learning technologies.
  26. ## Community Roles
  27. ### Contributors
  28. Contributors are the developers who have contributed code and got merged. They
  29. can have issues and PRs assigned to them. They also have voting privileges.
  30. Contributors can be active in many ways including but not limited to:
  31. * Authoring or reviewing PRs, but do not have right to merge
  32. * Filing or commenting on issues
  33. * Contributing to SIG, WG, or community discussions (e.g. IRC, meetings, email discussion forums, Stack Overflow, etc)
  34. * Creator of content, promoting and advocating the MindSpore community.
  35. The first group of Contributors will be appointed and more Contributors will be
  36. added accordingly.
  37. ### Approvers
  38. Approvers are *Contributors* who have the right to merge code. Approvers are
  39. responsible for reviewing contributions for acceptance by considering not just
  40. code quality but also holistic impact of the contribution including
  41. compatibility, performance, and interactions with other areas.
  42. Approvers need to be active *Contributors* for at least 3 months and will be
  43. selected in a voting process within a SIG/WG by all the related *Contributors*.
  44. The first group of Approvers will be appointed for an one-year term.
  45. After the first year all the Approvers need to be qualified through open
  46. elections.
  47. ### Community Partners
  48. Community Partners are organizations (include but not limited to companies,
  49. universities, research institutes, industrial associations, open source
  50. foundations/communities/projects, etc.) that support MindSpore in one or more
  51. of the following ways:
  52. * Having employees participate in SIGs, Working Groups, or the Technical Steering Committee
  53. * Hosting a workshop or meetup for MindSpore
  54. * Providing resources for building or hosting MindSpore assets
  55. * Doing media or PR activities to promote MindSpore
  56. * Shipping a product that supports MindSpore
  57. * Collaborating in open source development with MindSpore
  58. Community Partners do not have any voting rights, except via their employees
  59. who are *Contributors*. Affiliates and subsidiaries are considered as separate
  60. organizations. Being a Community Partner does not by itself confer any
  61. compliance or certification to the Community Partner's products.
  62. ### Community Manager
  63. Community manager is the people who help run day to day MindSpore governance
  64. operations. The role is appointed by the Technical Steering Committee and does
  65. not have any code or voting related privileges by its own right. The role does
  66. not have a term limit and its duration depends only upon the governance charter
  67. approved by the Technical Steering Committee.
  68. ## Organizational Structure
  69. The MindSpore community is organized in the following manner, with all
  70. governance and execution being planned and coordinated as follows:
  71. * **Technical Steering Committee** is made up of a set number of people whose charter it is to define and iterate on the vision, goals, and governance process of the MindSpore community.
  72. * **Special Interest Groups (SIGs)** are persistent groups that are responsible
  73. for specific parts of the project. SIGs must have open and transparent
  74. proceedings. Anyone is welcomed to participate and contribute provided they
  75. follow the [Code of Conduct](code-of-conduct_en.md). The purpose of a SIG is to
  76. develop a set of goals to be achieved over a set period of time, and then to
  77. gather input, drive consensus and closure, implement code contributions, and
  78. other related activities to achieve the goal. SIGs are also responsible for
  79. ongoing maintenance of the code in their areas.
  80. * **Working Groups** are groups that are formed to address issues that cross SIG boundaries. Working groups do not own any feature code ownership or other long term artifacts. Working groups can report back and act through involved SIGs.
  81. ## Language
  82. The working language in MindSpore community is English, this applies to things
  83. like code notation, documentation, ISSUE, PR and so forth. International
  84. language support for documentation translation and localized presentations are
  85. highly encouraged. An i18n WG could be formed to address multi-lang support.
  86. ### Technical Steering Committee
  87. #### Role
  88. The Technical Steering Committee has a set of rights and responsibilities
  89. including the following:
  90. * Define, evolve, and defend the vision, values, mission, and scope of the community.
  91. * Define, evolve, and defend a [Code of Conduct](code-of-conduct_en.md), which must include a neutral and unbiased process for resolving conflicts.
  92. * Define and evolve project governance structures and policies, including how members become Contributors, approvers, SIG chairs, etc.
  93. * Charter and refine policy for defining new community groups (Special Interest Groups, Working Groups, and any future possible defined structure), and establish transparency and accountability policies for such groups.
  94. * Decide, for the purpose of elections, who is a member of standing of the MindSpore community, and what privileges that entails.
  95. * Decide which functional areas and scope are part of the MindSpore community, including accepting new or pruning old SIGs and Working Groups.
  96. * Decide how and when official releases of MindSpore artifacts are made and what they include.
  97. * Declare releases when quality/feature/other requirements are met.
  98. * Control access to, establish processes regarding, and provide a final escalation path for any MindSpore repository, which currently includes all repositories under the MindSpore organizations
  99. * Control and delegate access to and establish processes regarding other project resources/assets, including artifact repositories, build and test infrastructure, web sites and their domains, blogs, social-media accounts, etc.
  100. * Define any certification process.
  101. * Manage the MindSpore brand and any outbound marketing.
  102. * Make decisions by majority vote if consensus cannot be reached.
  103. #### Structure
  104. The Technical Steering Committee (TSC) consists of representatives from the
  105. community. The first group of TSC members will consist of representatives from
  106. the founding members. The chairperson of the TSC will be appointed for the first
  107. term. No single member entity may have more than 1 representative. TSC chair and
  108. members all serve 1 year terms.
  109. TSC Chair is the chairperson of the Technical Steering Committee that fulfills
  110. the duties include hosting TSC meetings, organizing elections and participating
  111. promotion related publicities. TSC Chair is a member of the sitting TSC and has
  112. the same voting right as any other TSC member.
  113. After the initial term, TSC members will elect the new TSC Chair for the next
  114. term. The TSC member seat itself will constitute representative from the same
  115. founding member entity, unless alterations occurs to that membership which
  116. leads to either new TSC member appointed by the newly TSC-approved member entity,
  117. or the vacancy of the seat if the TSC votes to shrink the size of the committee.
  118. Additionally, TSC might create new Contributor representative seats which could be
  119. open for any *Contributor* in the community to be elected into the seat via a
  120. community vote. Only Contributors may vote, but would be restricted to no more
  121. than one representative elected per member entity.
  122. If a representative of the Technical Steering Committee changes affiliations,
  123. by default the original member entity should appoint a new TSC representative.
  124. If the employment change results in a single member entity having more than one
  125. representative, then one of them must resign. If the
  126. founding member entity fails to appoint a new TSC representative, the TSC will
  127. decide the new seat. Elections will be held for the seat which is elected.
  128. A Technical Steering Committee representative can be removed due to
  129. [Code of Conduct](code-of-conduct_en.md) violations by a super majority vote in
  130. the TSC.
  131. #### Decision
  132. The Technical Steering Committee (TSC) requires quorum of the member to be
  133. present for any type of decision making process. An official TSC decision will
  134. be carried through by a majority vote (i.e more than half of the TSC vote yes).
  135. During the first year of the TSC term, in order to ensure the smooth progress
  136. of the community, if TSC meeting does not get quorum in live attendance, then
  137. an email quorum voting procedure will be initiated. If email voting does not get
  138. quorum in a week, then the motion will be treated as approved if there is no
  139. outstanding objection from any of the TSC member.
  140. ### SIG - Special Interest Groups
  141. #### Role
  142. The MindSpore project is organized primarily into Special Interest Groups, or
  143. SIGs. Each SIG is comprised of individuals from multiple companies and
  144. organizations, with a common purpose of advancing the project with respect to a
  145. specific topic.
  146. Our goal is to enable a distributed decision structure and code ownership,
  147. as well as providing focused forums for getting work done, making decisions,
  148. and on-boarding new Contributors. Every identifiable part of the project
  149. (e.g., repository, subdirectory, API, test, issue, PR, IRC) is intended to be
  150. owned by some SIG. At the time of inception of this organizational structure,
  151. the following SIGs will be present:
  152. | SIG name | Responsibilities |
  153. | :------- | :--------------- |
  154. | FrontEnd | This SIG is responsible for the development of MindSpore front-end expression. |
  155. | Compiler | This SIG is responsible for the development of MindSpore high level graph compilation. |
  156. | Executor | This SIG is responsible for the development of MindSpore back-end support for pipeline. |
  157. | ModelZoo | This SIG is responsible for the development of MindSpore modelzoo and additional ops. |
  158. | Data | This SIG is responsible for the development of MindSpore data processing and data format transformation. |
  159. | GraphEngine | This SIG is responsible for the development of MindSpore graph engine for Ascend AI processor. |
  160. | Visualization | This SIG is responsible for the development of MindSpore visualization tools. |
  161. | Security | This SIG is responsible for the development of MindSpore security related tools. |
  162. | AKG | This SIG is responsible for the development of MindSpore auto kernel generator. |
  163. | DX | This SIG is responsible for improving the experience of those who upstream contribute or develop applications for MindSpore community. |
  164. #### Structure
  165. SIGs must have at least one, and may have up to two SIG chairs at any given
  166. time. SIG chairs are intended to be organizers and facilitators, responsible for
  167. the operation of the SIG and for communication and coordination with the other
  168. SIGs, the Technical Steering Committee, and the broader community. All SIG
  169. chairs are appointed by the Technical Steering Committee. If there are more
  170. than two *Contributors* being considered for a particular SIG, the Technical
  171. Steering Committee will vote on and resolve who the chairs would be. Candidates
  172. need to be *Approvers*.
  173. Each SIG must have a charter that specifies its scope (topics, sub-systems,
  174. code repos and directories), responsibilities, and areas of authority. Charters
  175. are submitted to the MindSpore community via PR for review and approval by the
  176. Technical Steering Committee who will be looking to ensure the scope of the SIG
  177. as represented in the charter is reasonable. All SIGs are expected to follow
  178. the standards established by the Technical Steering Committee for how
  179. *Contributors* are roles of authority/leadership are selected/granted, how
  180. decisions are made, and how conflicts are resolved.
  181. A primary reason that SIGs exist is as forums for collaboration. Much work in a
  182. SIG should stay local within that SIG. However, SIGs must communicate in the
  183. open, ensure other SIGs and community members can find meeting notes,
  184. discussions, designs, and decisions, and periodically communicate a high-level
  185. summary of the SIG's work to the community. SIGs are also responsible to:
  186. * Meet regularly, at least monthly
  187. * Keep up-to-date meeting notes, linked from the SIG's page in the community repo
  188. * Announce meeting agenda and minutes after each meeting, on the `mindspore-discuss` mailing list and/or IRC or slack or other channel.
  189. * Ensure the SIG's decision making is archived (i.e on IRC meeting log)
  190. * Report activity in overall MindSpore community meetings
  191. * Participate in release planning meetings, retrospective, etc (if relevant)
  192. * Actively triage issues, PRs, test failures, etc. related to code and tests owned by the SIG
  193. * Use the above forums as the primary means of working, communicating, and collaborating, as opposed to private emails and meetings
  194. #### Decision making
  195. When it is time to formalize the work-product from a SIG, votes are taken from
  196. every *Contributor* who participates in the SIG. The list of active
  197. *Contributors* is determined by the one (or two) SIG leads to ensure that only
  198. those who have actively participated in the SIG can vote. At this time there is
  199. no restrictions on how many *Contributors* from any one member entity can
  200. participate (and hence vote). The Technical Steering Committee will monitor how
  201. the community behaves and apply constraints if needed in the future.
  202. While most work shouldn’t require expensive coordination with other SIGs, there
  203. will be efforts (features, refactoring, etc.) that cross SIG boundaries. In this
  204. case, it is expected that the SIGs coordinate with each other and come to
  205. mutually agreed solutions. In some cases, it may make sense to form a Working
  206. Group for joint work. Cross-SIG coordination will naturally require more time
  207. and implies a certain amount of overhead. This is intentional to encourage
  208. changes to be well encapsulated whenever possible.
  209. ### WG - Working Groups
  210. Working Groups (WGs) are primarily used to facilitate topics of discussion that
  211. cross SIG lines, or are topics which are short-lived and require a limited set
  212. of decisions to be agreed upon. Working groups:
  213. * do not own feature code that will be included in a certain release (document not applied here)
  214. * have a clear goal measured through specific deliverables
  215. * could choose to be retired after most of the goals are achieved
  216. Working Groups can create glue code, specifications, recommendations, or
  217. implementations for submission to the relevant SIGs for approval and acceptance.
  218. At time of inception of this organizational structure, the following WGs will be
  219. present initially:
  220. * Doc
  221. * Infra
  222. Working Groups are formed by submitting a proposal via PR to the Technical
  223. Steering Committee. The proposal should cover:
  224. * what is the exact problem being worked on
  225. * what is the exit criteria
  226. * who are the chairs (up to 2)
  227. * what are the meeting and discussion mechanics
  228. ## Repository Guidelines
  229. All repositories under the MindSpore org:
  230. * Must adopt the MindSpore [Code of Conduct](code-of-conduct_en.md).
  231. * All code projects use the Apache 2.0 license. Documentation repositories must use the Creative Commons License version 4.0.
  232. * Must adopt the MindSpore CI bot
  233. * Repository must be approved by the Technical Steering Committee
  234. Repositories can be removed when they are inactive by archiving them.
  235. ## CLA
  236. All Contributors must either sign the [MindSpore ICLA](https://www.mindspore.cn/icla),
  237. or download and sign the [MindSpore CCLA](CCLA.pdf) and sent a scan
  238. copy to <contact@mindspore.cn>. The Technical Steering Committee will update the
  239. CLA to reflect the MindSpore organization/ownership as needed.