The Scala Platform is shaped through Scala Platform proposals, documents that propose the inclusion of a library into the Platform to fulfill a concrete need. Proposals explain why such need is desirable and why the suggested library is the best fit for the Scala community.
If you want to submit a library proposal, follow these steps:
Open a Discourse discussion thread describing your idea to get feedback from the Community. Share this link in Gitter channels and with other developers whose feedback you consider important. Look for supporters and people that may be interesting in working with you.
After two weeks, you can officially submit the proposal. The SPP Process Lead will pick a reviewer and schedule a discussion for the next available Scala Platform meeting.
The reviewer presents the proposed idea. The Committee votes it.
The Committee selects and ranks other potential modules by widespread use and approachability. The Committee makes sure they all have maintainers willing to participate into the SPP process.
The Committee incubates the highest-ranked project per category, e.g. IO, JSON, property-based testing suite, unit testing framework, etc.
The Incubation process helps maintainers focus on preparing for the first stable release and building a community of developers that contribute in this process. After Maintainers get a feeling of how to work together and stabilise the codebase (if required), they ask for a review.
The incubation process lasts, at maximum, six months. The Committee will review an incubated project when both Mantainers and reviewer agree that the project is ready. Modules are merged when they:
- Have passed their incubation period;
- Have at least one committer cutting releases and maintaining them; and,
- Abide by the Code of Conduct.
If past the incubation time a module doesn't meet the requirements, the second highest-ranked project is incubated instead.
Modules are withdrawn from the Platform when they fall unmaintained.
After getting the approval from the Committee and passing the incubation period, the module lifetime begins. It is then merged in the next release of the Platform.
As this is the hardest phase of a module, the Scala Platform process provides policies and help managing the project. These policies enforce the Platform contract and make sure that modules abide by some minor common rules.