@@ -14,7 +14,7 @@ the following GitHub organizations:
1414## Steering Committee
1515
1616The Crossplane Steering Committee oversees the overall health of the project. Its made
17- up of members that demonstrate a strong commitment to the project with views in the
17+ up of members that demonstrate a strong commitment to the project with views in the
1818interest of the broader Crossplane community. Their responsibilities include:
1919
2020* Own the overall charter, vision, and direction of the Crossplane project
@@ -113,7 +113,7 @@ getters will be elected to the open seats.
113113#### Maximum Representation
114114
115115When the initial steering committee terms expire, the maximum number of
116- steering committee members from any organization (or conglomerate, in the case of
116+ steering committee members from any organization (or conglomerate, in the case of
117117companies owning each other), will be limited to 2 in order to encourage diversity.
118118
119119If the results of an election result in greater than 2 members from a single
@@ -226,7 +226,7 @@ Beyond your contributions to the project, consider:
226226 substantial time (>25%) on Crossplane for the foreseeable future.
227227
228228If you are meeting these requirements, express interest to the repository’s
229- existing maintainers directly.
229+ existing maintainers directly.
230230
231231* We may ask you to do some PRs from our backlog.
232232* As you gain experience with the code base and our standards, we will ask you
@@ -241,10 +241,20 @@ existing maintainers directly.
241241 it is possible for new maintainers to be added in a shorter time period
242242 than this general guidance.
243243
244- The existing maintainer team will then add the new maintainer to the repo’s
245- [ OWNERS.md] ( OWNERS.md ) file, as well as the appropriate GitHub team that allows
246- maintainer permissions to the repo, including merging pull requests into
247- protected branches.
244+ To formalize the addition of the new maintainer, the existing maintainer team
245+ will then add them to the following locations:
246+
247+ * ` OWNERS.md ` file at the root of the repo
248+ * The appropriate GitHub team that allows maintainer permissions to the repo,
249+ including merging pull requests into protected branches.
250+ * CNCF maintainer lists
251+ * CNCF [ project
252+ maintainers] ( https://github.com/cncf/foundation/blob/main/project-maintainers.csv )
253+ list
254+ * ` [email protected] ` mailing list
255+ * See CNCF [ new maintainer
256+ guidance] ( https://github.com/cncf/foundation/blob/main/.github/pull_request_template.md )
257+ for further details
248258
249259#### Maintainers for New Repositories
250260
@@ -260,6 +270,9 @@ listed above, they should volunteer to be moved to emeritus status. In extreme
260270cases this can also occur by a vote of the maintainers per the voting process
261271below.
262272
273+ The emeritus maintainer should be removed from all locations specified in the
274+ [ becoming a maintainer] ( #becoming-a-maintainer ) section.
275+
263276## Organization Members
264277
265278Beyond the roles of the steering committee, and maintainers, outlined
@@ -298,6 +311,126 @@ process](https://github.com/crossplane/org/blob/main/processes/new-member.md)
298311outlined in the ` crossplane/org ` repository. New members should be asked to set
299312the visibility of their Crossplane organization membership to public.
300313
314+ ## Community Extension Projects
315+
316+ The [ ` crossplane-contrib ` ] ( https://github.com/crossplane-contrib ) organization
317+ serves as a vendor neutral home for community collaboration on crossplane
318+ related projects and extensions. We commonly refer to the repositories in this
319+ organization as ** "community extension projects"** which includes providers,
320+ functions and other crossplane extensions. As previously stated, this
321+ organization and all of its repositories, in addition to the ` crossplane `
322+ organization, are under the governance and policies defined in this document.
323+ They are effectively sub-projects of Crossplane and must follow all the same
324+ rules and policies.
325+
326+ ### Benefits of Becoming a Community Extension Project
327+
328+ It is entirely optional for a project in the greater Crossplane ecosystem to
329+ formally join the ` crossplane-contrib ` organization as a community extension
330+ project. The choice is up to the leadership team of each project. The benefits
331+ of becoming a community extension project are listed below:
332+
333+ * To have a neutral home for collaboration with strong open source governance
334+ and licensing
335+ * To attract more contributors and maintainers and increase the project’s long
336+ term sustainability
337+ * To make the project eligible for reference in the Crossplane documentation,
338+ website, and publishing to the community ` xpkg.crossplane.io ` registry
339+ * To contribute and participate more directly in the Crossplane community
340+
341+ ### Policies for Community Extension Projects
342+
343+ All community extension projects are expected to adhere to the following set of
344+ policies throughout their lifecycle:
345+
346+ * ** CNCF Policies:** Each community extension project is part of the Crossplane
347+ CNCF project and must abide by all [ CNCF
348+ policies] ( https://www.cncf.io/policies/ ) .
349+ * ** Project Health** : Similarly, all extensions are expected to adhere to the
350+ [ project health
351+ guidelines] ( https://contribute.cncf.io/maintainers/community/project-health/ )
352+ published by the CNCF. As each extension will have varying needs, the health
353+ guidelines are not a completely prescriptive one size fits all approach, but
354+ all extensions must be operating with the spirit of these health guidelines in
355+ mind.
356+ * The steering committee is responsible for monitoring the state of these
357+ projects and taking action as defined in the [ community extension project
358+ lifecycle] ( #community-extension-project-lifecycle ) section below, including
359+ potential archival of the extension project.
360+ * Community members are welcome to bring any of their concerns or observations
361+ about a community extension project to the steering committee for review.
362+ * ** Registry:** Build artifacts, e.g. Crossplane packages (opinionated OCI
363+ images), must be published to the ` crossplane-contrib ` org on GitHub Container
364+ Registry (` ghcr.io ` ), which will serve as a neutral community registry.
365+ ` ghcr.io ` is preferred because it is integrated into GitHub, where all of the
366+ source code lives, and will reduce long term maintenance.
367+ * Optionally, the maintainer team can publish to additional registries of
368+ their choosing.
369+ * ` xpkg.crossplane.io ` will be published as a consistent entry point for pulls
370+ from the ` ghcr.io/crossplane-contrib ` organization. ` xpkg.crossplane.io ` is
371+ a Scarf gateway to help the project learn about adoption patterns through
372+ anonymized usage metrics, as
373+ [ supported] ( https://contribute.cncf.io/resources/project-services/hosted-tools/ )
374+ by the CNCF.
375+ * ** Maintainer list:** The current list of maintainers must be kept up to date
376+ in the following places:
377+ * ` OWNERS.md ` file at the root of the repo
378+ * CNCF [ project
379+ maintainers] ( https://github.com/cncf/foundation/blob/main/project-maintainers.csv )
380+ list
381+ * ` [email protected] ` mailing list
382+ * ** API group** : New extension projects starting out in ` crossplane-contrib `
383+ should use the ` *.crossplane.io ` API group for their API resources. If the
384+ project was started in a different organization and contributed to
385+ ` crossplane-contrib ` , it can maintain a different API group to avoid breaking
386+ all uses of the extension.
387+
388+ ### Community Extension Project Lifecycle
389+
390+ To create a new community extension project, an issue must first be opened in
391+ the [ ` crossplane/org ` ] ( https://github.com/crossplane/org ) repository that
392+ defines the following criteria:
393+
394+ * Name of new extension
395+ * Purpose and intended scope of the extension
396+ * Initial maintainer team (GitHub usernames)
397+ * Description of the maintainer team's long term commitment to the extension
398+
399+ The steering committee will review the provided information and assess whether
400+ the proposed extension is a good fit for the project. The steering committee may
401+ provide feedback or ask for changes if they feel it is needed to improve the
402+ chance of long term success of the extension. If approved, a new repository will
403+ be created and the initial maintainers will be added.
404+
405+ Then, the day to day governance of the new extension repository follows the same
406+ policies defined in this document for [ repository
407+ governance] ( #repository-governance ) and [ community extension project
408+ policies] ( #policies-for-community-extension-projects ) . The maintainers operate in a
409+ fairly autonomous fashion to maintain the repo and ensure its health and
410+ success, and they can add/remove maintainers as defined.
411+
412+ #### Archival Policy
413+
414+ If a community extension project does not meet the policies defined in this
415+ document, the steering committee should seek a resolution with the maintainer
416+ team. Ideally, the maintainer team would be able to address the issues and bring
417+ the extension back into good health and compliance. If the issues cannot be
418+ resolved, the steering committee may decide to archive the repository. When a
419+ repository is archived, this status change should be made very clear to the
420+ community to reduce any potential confusion. Any references to the project from
421+ the Crossplane documentation and/or website will be removed at this time.
422+
423+ ### Public References to Community Extension Projects
424+
425+ Crossplane's public facing content, such as the [ crossplane.io
426+ website] ( https://www.crossplane.io/ ) and Crossplane
427+ [ documentation] ( https://docs.crossplane.io/ ) , should only reference or promote
428+ community extension projects that are in good health and compliance with all
429+ [ policies] ( #policies-for-community-extension-projects ) . For example, the docs
430+ site should not include guides for extensions that are private, owned by
431+ vendors, or archived. All public references by the project must be only for
432+ healthy and compliant community extension projects.
433+
301434## Updating the Governance
302435
303436This governance will likely be a living document and its policies will therefore
0 commit comments