Description
This is a vague ticket written at the request of @jvican (https://gitter.im/scala/center?at=5a95acdbe4d1c63604a0e5bb)
Obviously I'm not the final arbiter of what constitutes good documentation. These are just things that I feel are lacking in the current documentation. From my perspective the documentation has improved a lot over the last year or so - recently, someone even qualified the documentation as "so good". I'm really happy about that, and I'm thankful for the hard work many have put in to it.
But I do believe there is still a ton of work still to do.
Tour
In general the tour does a reasonable job of giving an overview of the language. However, when I would be asked what sets scala apart as a language, to me it would be HKTs, implicits (and the type-class pattern they enable), pattern matches, for comprehensions, sealed types ((G)ADTs), and type members. That's where scala shines when compared to languages close to scala. Things that are (at least somewhat) standard, but also things that scala does and are nice are type parameters, first class functions, immutable references (val
s), tuples and mixins.
These are things I would expect to see in a tour of scala. In the current tour, missing are HKTs, (G)ADTs, type members and tuples.
val
s, first class functions and mixing in traits are part of "basics" (should they be?) implicits are split between two tour parts and a FAQ entry, and are still rather incomplete. Type parameters/generics/parametreric polymorphism are sort of "Generic classes", but obviously not just classes.
Meanwhile, regex extractors have their own section, while from my perspective they are a neat party trick to go along with extractor objects (which could be part of the pattern matching section or track itself). Compound types (http://docs.scala-lang.org/tour/compound-types.html) link at the bottom to abstract types (http://docs.scala-lang.org/tour/abstract-types.html) which seems to be an isolated mini-track on its own, together with traits and self-types. AFAICT it's only reachable from here.
Guides
The guides feel ad-hoc and haphazard to me. The collection of guides feels incoherent - just a few things someone pointed a magnifying glass at and worked out.
In my ideal world, guides would consist of in-depth language guides, like a less formal, more elaborate human readable language spec on the one hand and programming guides, which deal with patterns and best practices on the other. A good example of the first kind of guide is IMO http://docs.scala-lang.org/overviews/core/value-classes.html. A good example of the second kind is IMO http://docs.scala-lang.org/overviews/core/binary-compatibility-for-library-authors.html
A good example of neither are the first two listed guides: http://docs.scala-lang.org/overviews/collections/introduction.html and http://docs.scala-lang.org/overviews/core/architecture-of-scala-collections.html, the first of which would IMO make for an excellent stand-alone blog post/article, and the second is a library usage guide, which should IMO either be part of the scaladoc of the scala.collection
package, or also be a stand-along blog post/article linked from the scaladoc.
FAQ
The FAQ shouldn't (have to) exist, and if it does exist, entries should be short and consist mostly of links that tie individual guides and/or articles together.