On 01/12/2014 01:57, Jon Pretty wrote:
> I think there are two sides to the enterprise-readiness coin. It's
> primarily the fact that Typesafe's commitment to Scala in the enterprise
> that Parser Combinators have been moved out of the standard library.
I know that things were split up - primarily because the documentation
which previously was all cross-linked is now a far less useful
archipelago, but I haven't seen any specifics of why the splits were
made - the 2.11.1 release notes have one vague paragraph on the subject.
> Here's the problem: enterprise-readiness demands a high level of stability.
> So Typesafe go to a huge effort to maintain binary compatibility between
> minor-version releases of Scala, with major versions on a roughly 18-month
> cycle, and two major versions supported concurrently. This means that you
> can carry on developing against a stable API for up to about 3 years,
> before you're forced to upgrade. If an API is to be removed, then there's
> also a promise to mark it as deprecated (meaning you get a warning during
> compilation) for a whole release cycle prior to its removal. This
> guarantees that if your code compiles without warnings in Scala 2.x, then
> it will compile (possibly with warnings) in Scala 2.(x + 1). This is
> designed to smooth the development process along as much as possible. It
> ensures there's always an 18-month window in which you can upgrade Scala
> whilst always working with a supported version. This is all entirely
> motivated by "enterprise readiness", and it's enabled, for example, (and
> this is from my own experience of the market) most banks operating out of
> London to adopt Scala. At least one of those banks has a team of over 200
> people working full time in Scala.
Except in the case of Parser Combinators the deprecation was added and
then removed, which is what started this thread in the first place.
> Meanwhile, people are finding bugs and adding features to libraries like
> Parser Combinators all the time. If these libraries are part of the Scala
> standard distribution, then progress becomes constrained by Scala's release
> cycle, so this was the motivation to move them out of the standard library
> and into separate projects, so that they could evolve more quickly.
> However, support and maintenance has to be prioritized, and the economics
> of the situation means that the Scala development team (which is capable,
> but small) has to choose which issues to devote time to, and which have to
> wait.
I understand the general principles and they seem reasonable, but they
need to be clearly communicated and I couldn't find anywhere where they
were. And there needs to be more than just general principles, the plans
for specific components need to be published somewhere.
This issue isn't just restricted to Parser Combinators. The various
SynchronizedXXX traits have been deprecated in 2.11.x yet the Scala
documentation still recommends their use and says nothing about the fact
that they are unreliable:
http://docs.scala-lang.org/overviews/collections/maps.html#synchronized-sets-and-maps
> But this is all open source development, so moving Parser Combinators out
> of the standard library makes it much easier for people who care to
> contribute. My speculation about the likely destiny of Parser Combinators,
> and the JSON library, is based on there being better libraries available
> now, which most people would probably prefer to use over Parser Combinators
> when starting a new project. But I might be wrong: As Jason says, there's
> no commitment to abandon them, and there's no great overhead in maintaining
> them as they are, so they will continue to exist for as long as there's
> sufficient effort put in to counterbalance the bitrot, and likewise they
> will gain features and bugs will get fixed if people see the value in
> putting that time in. If they are ultimately abandoned, it will be because
> the world will be satisfied with the alternative.
Are there any plans to fix them? The poor performance is one thing, but
the lack of thread-safety just seems like a bug.
> Anyway, apologies for the long response...
No, thank you for taking the time to write it,
--
Alan Burlison
--