Project Lifecycle
We use GitHub Custom Properties to indentify a Project’s Classification within our Community.
Custom Properties
Flagship-Project
This is a boolean. Where set to true
, this indicates the Project has Flagship Status - i.e. it’s popular or something we want to highlight.
Project-Status
There are four options to choose from:
- Active - the project is being actively maintained
- Archived - the project is not being maintained
- Graduated - the project has been superseded by official Sonatype Project
The fourth option is to leave this field unset. This means the project’s status has not yet been assessed and confirmed.
You can see a list of all Projects that have not yet been assessed for status by visiting here.
1 - Starting a New Project
You can share your idea for a new Project by starting a Discussion here.
Organization Admins can execute the below procedure to create new Project within the Sonatype Open Source Community.
New Project Proposal
Prerequisites
- Ensure you have defined a clear purpose for the new project
- Maintaniers of the project must have previously contributed to another Sonatype Open Source Project
Why?
Having contributed previously means you’ll have signed our CLA and understand our Community workflows.Creating the Project
Heads up!
This will cause a number of default files to be placed into your new repository.
It will also automatically inherit a number of Organization defined files that you do not need to redefine in your project.External Project Contributions
External contributors may propose an existing repository for migration into the Sonatype Open Source Community. Follow these steps to accept and onboard the repository:
1. Proposal Submission
- The external contributor should initiate a Project Proposal Discussion.
- Include the following details in the discussion:
- Public Repository URL
- A summary of the project’s purpose and goals
- Any existing contributors who intend to transition as maintainers
2. Initial Review
- Ensure the repository aligns with the Community’s goals and standards.
- Confirm that the repository has an open-source license compatible with the Sonatype Open Source Community licensing policy.
- Assess the project’s activity level, community engagement, and quality of documentation.
3. Feedback Period
- Allow a period for community members and Organization Admins to review and provide feedback on the proposal.
- A thorough review must be performed by Sonatype’s legal team.
- Address any concerns or required changes before proceeding.
4. Repository Transfer
Once the proposal is approved, the repository must be transferred to the Sonatype Community GitHub Organization.
The transfer process includes:
5. Assign Roles and Responsibilities
- Ensure that proposed maintainers meet the Maintainer Requirements.
- Assign the necessary roles and permissions to maintainers and contributors.
- Update the repository’s Code Owners and the respective GitHub Team.
- Publicly announce the inclusion of the project in the Community through appropriate channels.
- Update the Community Project List to reflect the new addition.
2 - Activating a Project
Projects within our Community may occasionally transition between states, such as moving from an unset or archived status to active. This process ensures projects are thoughtfully evaluated and meet the standards required for active maintenance.
Activating a Project
To activate a project, follow these steps:
1. Review the Project
Assess the project’s relevance, dependencies, and community interest. This includes:
- Consider recent issues, pull requests, or community engagement
- Review alignment with current Community goals, as applicable
- Confirm the project’s compliance with Community Project Standards
2. Assign Maintainer(s)
Ensure at least one maintainer is identified to oversee the project and handle ongoing contributions. This step is crucial for maintaining quality and responsiveness.
Maintainers MUST have previously contributed to another Sonatype Open Source Project. This ensures they are familiar with our Community workflows and have signed our CLA.
Assigning the initial maintainers for a project requires unanimous approval of the Community Admins.
Bring your friends
Additional maintainers may be added at this stage OR a later date with unanimous approval from the existing maintainers and support from at least one Community Admin.3. Update the Custom Property
Modify the Project-Status property using GitHub Custom Properties:
- Set to
Active
to indicate the project is actively maintained.
For projects previously archived:
- First, unarchive the repository via the GitHub interface.
4. Communicate the Change
- Announce the project’s activation in relevant Community channels.
- Update any associated documentation to reflect its active status.
Qualifying Projects
For a list of projects currently archived or unset, use the following links:
Activation is a deliberate process aimed at fostering robust and meaningful contributions. By ensuring thoughtful evaluation, we maintain the integrity and quality of our Community projects.
3 - Graduation Process
For some of our Community Projects, there comes a time where Sonatype officially supports the features or functions provided by a Community Project. In these situations we mark the Community Project as Graduated by following the below process.
Graduation Preparation
Project Graduation Proposal
For the sake of historical context and community insight, a GitHub Issue should be created to explain the reasoning and expectations for graduation. This is benefitial even in cases where community engagement is low.
Look here to see a great real-world example!
Project Graduation Notice
The Community Project should have it’s README
on it’s main branch updated to contain an appropriate Graduation Notice. An example might be:
> ℹ️ As of 7th November 2024, this community project has [graduated](https://contribute.sonatype.com/docs/project-lifecycle/) and is offered as part of Sonatype's commercial offerings - see [here](https://help.sonatype.com/en/configuring-blob-stores.html#google-cloud-blob-store) for full details.
>
> 🚧 This community project will receive no further updates or maintenance.
It’s good practice to be specific about when the project graduated, and where interested parties can head to find out more.
CI/CD Closure
Any existing CI/CD configuration should be removed and projects deprovisioned from CI/CD systems.
Project Properties
The project’s Custom Properties should be updated to reflect the Graduated status.
Open Issues
Any open issues should be closed with a notice of the graduation.
Graduating
Once the preparation steps are executed, the project should be marked as archived in GitHub.