The Scala Platform is a stable collection of libraries with widespread use and a low barrier to entry for beginners and intermediate users.
Through a collaborative and meritocratic development process, the Scala Platform provides a smooth and productive programming experience right from the start, both for learning purposes and production use.
The Platform consists of several independent modules that solve specific problems. Committers and developers of each module work together to develop and maintain them. For encouraging more contributions from companies and industrial users, modules have clear development workflows, that are both predictable and easy to follow. The Scala community sets the overall direction of the Platform.
A Platform module is a library of the Scala Platform. Platform modules should stress stability and usability alike, and enjoy widespread use in the Scala community. Modules should be of a nature that aids the goal of the Scala Platform and should have compatible licenses with the rest of the Platform modules.
The following document is a draft and it's open for discussion. For more information, check the public announcement of its pre-release.
The Scala Platform Process provides organizational support for a broad range of open source software projects. The mission of the process is to provide high-quality software for the good of the Scala community.
The following specification is inspired by the Apache process and the Rust release model. Other initiatives like the Haskell Platform and the Boost library are also prominent inspiration sources. The resulting document has been drafted by the Scala Center and improved by the Platform Committee members, that have helped shape the essence of the process with their curated feedback and suggestions.
The Scala Platform process sets concrete expectations for the stability and compatibility of the selected modules. Although the specified policies have strict compatibility requirements, it is impossible to guarantee that no future change will break any program.
The Scala Platform process provides concrete policies regarding:
- Security. A security issue in the specification or implementation may come to light whose resolution requires breaking compatibility. Modules maintainers’ reserve the right to address such security issues.
- Experimental behavior. There are some aspects of the modules that may be undefined or experimental. Programs that depend on such unspecified behavior may break in future releases.
- Specification errors. If it becomes necessary to address an inconsistency or incompleteness in the specification, resolving the issue could affect the meaning of existing programs. Modules maintainers’ reserve the right to address such issues, including updating the implementations. Except for security issues, no incompatible changes to the specification would be made.
- Bugs. If a compiler or library has a bug that violates the specification, a program that depends on the buggy behavior may break if the bug is fixed. Modules maintainers’ reserve the right to fix such bugs.
Needless to say that modules maintainers’ will update specification and libraries to avoid affecting existing code, whenever it’s possible. These same considerations apply to successive point releases and are later explained in the release and stability policies. Aside from compatibility, no guarantee can be made about the performance of a given program between different Platform releases.
The expectations are concretized in the Scala Platform policies.
The Scala Platform Committee is exclusively composed of members of the Scala community. Through a democratic process, they set the direction of the Platform, review proposals from the community, and decide on the modules that join the Platform.
The members of the Committee are dedicated developers with a long record of contributions to the Scala ecosystem, the development of the language and major open-source projects. They have been elected by the Scala Center to represent and serve with their experience the broad interest of the Scala community, not their personal or employers' viewpoints.
The Committee members are:
- Dale Wijnand (@dwijnand)
- Aleksandar Prokopec (@axel22)
- Lars Hupel (@larsrh)
- Marius Eriksen (@mariusae)
- Bill Venners (@bvenners)
- Konrad Malawski (@ktoso)
- Pathikrit Bhowmick (@pathikrit)
- Alexander Podkhalyuzin (@Alefas)
- Mathias Doenitz (@sirthias)
- Rex Kerr (@Ichoran)
- David Hall (@dlwh)
Along with the Committee members, the SPP Process lead manages the process, schedules meetings and helps bootstrap the Platform. The current Process Lead is Jorge Vicente Cantero (@jvican).