Six Years of Scala Development
Part II: Retrospective
For the last six years I had been deeply committed to improving every aspect of Scala. Looking back it has been quite a journey:
I proposed and implemented the deprecation of procedure syntax and abstract methods without return type, made
deprecated Scala’s JSON parser,
removed octal numbers,
deprecated view bounds,
() insertion in argument lists into a deprecation.
I got quite close to eliminating
raised the issue that got
cleaned up a lot
of code in the compiler backend,
implemented better compiler support for enums and annotations, and added support
for parameter names in class files (JEP-118).
In the period of time I was active (until end-2016), I have been the first- or second-most active external2 contributor to the main Scala repository (either ahead or behind of Andrew, depending on what is measured).
In numbers, my work amounted to more than 90 resolved issues, 140 merged pull requests which added 17k lines of code, removed 35kloc, with a negative total of more than -17kloc against the main Scala repository (scala/scala).3
Considering both paid and unpaid contributors in that period, this makes me 10th in lines added, 6th in lines deleted and 8th in committed changes as well as 4th in issues reported since Scala’s migration to Trac.
scala/scala, I proposed, implemented and presented a website
overhaul that merged the separate sites of
docs.scala-lang.org and the
into one coherent site with a responsive design that worked on all kinds
of devices and ran on a consistent, reproducible and updated technology stack.
I copy-edited, proof-read and updated substantial amounts of existing documentation (the frontpage, the tour, various guides and tutorials, the glossary etc.) and added new content where it was necessary (available platforms, IDE and editor support, tooling, FAQ etc.).
I bootstrapped the scala-android.org site in an effort to support the contributors behind Scala on Android and provide developers who wanted to use Scala on smartphones with a single point of entry to tools, documentation and support venues that was kept accurate and updated.
I implemented sbs, a tool that benefits both new users, experienced developers, library authors and library contributors:
- New users enjoy a seamless introduction to Scala without requiring any kind of manual software setup like installing a JDK, setting up SBT or downloading the Scala distribution.
- Experienced developers enjoy reproducible builds by having a tool that makes sure that the JDK dependency never drifts due to updates of the host system or differences between machines.
- Library contributors enjoy the assurance that their build process corresponds exactly to the configuration the library maintainer has specified.
I ported the
java.time package to Scala and Scala.js.
I also fixed bugs in Scala-Native’s handling of equality,
debugged its LLVM backend,
uncovered bugs in the linker,
ported an implementation of
java.util.regex to Scala-Native, and implemented
few additional collection classes to make
java.time work on native platforms.
I extended SBT’s TestNG plugin
with some basic Scala.js support,
ported many algorithms for arbitrary-precision arithmetic
to Scala, with the intention to provide a shared implementation of
BigDecimal that runs consistently on Scala, Scala.js and Scala-Native, and did
a lot of other stuff that I fail to remember.
i. e. not affiliated with EPFL, Typebend or ScalaCenter ↩
this does not take into account work done earlier than July 2011, for which detailed records have been lost during the migration from svn to git: example, example and most of the work on the