Scala Improvement Documents

The SID Library

Scala Improvement Documents (SIDs) are technical documents that describe the implementation and usage of a Scala feature or module. A SID is usually written when a new feature is added to Scala, either after or during the development process, and acts as a manual and guide to the new development.

The SIDs are available online in the SID Library. They can be in any of four states: draft, active, obsolete, or rejected.

  • draft SIDs are those which are currently being worked on: they may be referring to features that are not fully implemented, or whose specification is still being discussed.
     
  • active SIDs are currently in force: the documentation refers to features that are available and fully implemented.
     
  • obsolete SIDs have previously been active but are no longer relevant, for instance because the feature is no longer supported, or because they have been superseded by new SIDs. Their page explains the reason why they became obsolete.
     
  • rejected SIDs are SIDs that have been in draft and may have seen a preliminary implementation; however, the concept or the implementation were eventually judged not to be ready for inclusion in the language.

You can see the SIDs in those categories by following the links above, or you can see them all together here.
 

Submitting a new SID

If you are a Scala contributor, and are planning to add a new feature to the Scala language, you will probably interested in documenting your effort by writing a SID. Please refer to the Q&A below for more information on the submission procedure:
 

Q: Can I describe in a SID a new feature that I would like to see in Scala?
A SID is NOT a feature request. If you do not know how your proposal is to be implemented within the compiler or libraries, do not write a SID: it will be rejected. You can however discuss your proposal on one of our mailing lists, possibly on the scala-internals list.
 

Q: I know how to implement the feature, I have already started
In that case, writing a SID is the right thing to do! Before submitting it, however, you need to 1) discuss your effort on the scala-internals list, to see whether your new feature can be of general interest and can be included in the mainstream Scala distribution, and 2) you need to obtain Martin's general approval.
 

Q: Can I use a SID to describe my tool or framework, external to the Scala compiler?
Unlikely. SIDs are meant to document the core Scala language features and libraries that are included in the main distribution. If in doubt, or if you think your tool would make for a useful addition to the core distribution, please contact us via the mailing lists or via the contact form.

 

Q: Once given the go-ahead, how do I concretely submit a SID?
Very simple: create an account on scala-lang.org (if you don't have one) then proceed to this page. Upload the PDF file, and the source documents you used to create it (tex file, .doc,...). Add a title and an abstract, and click on 'save'. The document will be marked as 'draft' until the Scala core team has reviewed the document. You can also upload new revisions of the document at any time; the previous ones will remain available.

Copyright © 2010 École Polytechnique Fédérale de Lausanne (EPFL), Lausanne, Switzerland