Scala in 2007 - 2013
One of the highights of this year’s Scala Days, for me, was Shadaj
Laddad’s talk on Fun Programming in Scala. His unabashed love
of programming reminds me why I started to learn it myself, at a later
age when I had saved up enough money to buy a C++ development
environment. Today anyone can download compilers for free, for any
programming language. To be honest, I’m jealous of kids who now get to learn Scala as a first language.
I was surprised and proud to see how enthusiastically Shadaj was using
giter8 to efficiently create new projects. When I made
giter8 I was mostly inspired by the automation, efficiency, and
evident pleasure that Ruby programmers took in automating mundane
tasks like making a new CRUD website.
I’d tried to do the same with Java tool-chains in the past, mostly
Maven’s archetypes, but found them to be over-architected, and
under-designed for creation and maintenance. To eliminate grunt work
for the end user you had to do about 10x the grunt work as an author,
not exactly a formula for success in the unmarket of free software.
Sprung
The other cool thing about giter8’s appearance in Shadaj’s talk is it
lifted my spirits a bit from what I’d been hearing about the morning’s
keynote, which I hadn’t seen. Apparently Rod Johnson, Spring Framework
author and recent dependency injected to the Typesafe board, had used
Dispatch (my first Scala software project and one of my proudest
creations) as an example of what not to do in Scala.
I wasn’t going to watch the talk myself or write about it. It was the
same old criticism of an old version of Dispatch, a programming style
argument that never interested me and was ultimately easier to leave
behind.
But after the videos were posted, inevitably, more of my colleagues
saw the talk, and talked about the talk. Friends spoke up for me, and
for Dispatch. I started to imagine that the criticism was very harsh,
that it was personal, that it was something I should worry about. So
yesterday, I watched Scala in 2018.
Johnson doesn’t speak in the sneering tone I’d imagined. There’s no
emotion, no blood at all. His criticism of Dispatch isn’t cutting,
it’s very general. Dispatch and libraries like it, he informs the
audience, simply should not exist.
I have to say I was surprised when finally watching the video just how
flatly Johnson ignores the fact that Dispatch was completely rewritten
over a year ago. There is no point in listing the differences; they
are many and self-evident. I invite you to watch the
“Dispatch” portion of the talk with the
Dispatch home page open in another window, and see for
yourself.
I’ve given a few talks and I know the work that goes into every
beat. It’s time consuming; many hours of work go into a one-hour talk
of any quality. So it’s astonishing to me that a fundamental error in
one of the longer chunks of the talk, and which is used to support one
of its primary themes, survived Johnson’s own review of his
notes. Whether Dispatch is, still, a wrapper for Apache HttpClient,
with dozens of symbols that cause right-thinking enterprise developers
to blush politely – these are facts you can check in ten seconds.
Further, you might expect a secondary review by someone more familiar
with the Scala community, when a keynote puts its critical focus on
that community. It’s how you avoid these kinds of blunders, and how
you later avoid having to say, “stop talking about my blunders and
instead please discuss my important message.” (We’ll get to that.)
But for the record, if anybody is weirdly still interested in the full
story of the Dispatch rewrite that I completed early last year, I
wrote a series of posts about it. If not, that’s great!
Neither am I.
The road to perdition
Johnson makes his thesis plain. In five years he hopes Scala is a
leading programming language for traditional enterprise apps. He
doesn’t have the same hope for startups. Or for front-end (web?)
programming. This stated goal is the motivation for his criticism of
some Scala libraries and of the ways that some people participate in
the Scala community. He projects a series of beliefs and behaviors
onto the community using the trusty myth list formula.
One must imagine all the hard core Scala programmers champing at the
bit, or champing like that doctor zombie in the B wing of the W.H.O.,
to debate these “myths”. But before tearing through the glass, it’s
important to ask yourself: do I want to be where Rod Johnson wants me
to want to be in five years? Do I want Scala to be less popular in
startups, more popular in traditional enterprise settings?
For me, debating how to get there would be like arguing over the fastest route to the gulag. If that’s where this bus is headed I don’t particularly care how it gets there, I just want off.
Luckily, that’s not where the bus is headed, at all. Johnson greatly
overreaches in discounting the use of Scala in startups, allowing only
that some startups may experience a “Twitter scenario” where they are
successful and have to scale.
Like many things in this talk that is purportedly about the next five
years, the “Twitter scenario” is from five years ago. Today there’s no
shortage of startups using Scala from the beginning, in New York and
elsewhere. You don’t have to look any further than the
list of sponsors for Scala Days to see some of
them. There’s no reason to think, and less reason to hope, that
Scala’s popularity in startups won’t continue.
Aside from that, if you value a healthy open source community for its
own sake, you might want that as a target. If you value projects that
do something creative, cool, beautiful, or clever, you might want to
list that. If you want Scala to be used as a teaching language in
public schools, you set it as a goal for 2018.
In other words, you might want some things for Scala that are outside your immediate career interests.
Alternative mythologies
Suffice to say that my hopes for Scala are very different from
Johnson’s, and so would produce a very different set of guidelines. Or
perhaps, none at all: it’s your day off, your computer, your
electricity – do what you want.
I’m not going through the whole values exercise here, so I’ll end
with this thought: when I escaped Java five years ago it
wasn’t entirely, or even mostly, about the language. I was stifled and
utterly uninspired by the Java Community – the same one Johnson
puts up as a stretch goal for Scala programmers.
I don’t feel there is a Java community so much as there is a Java
audience, in the sway of one “thought leader” after another, chasing
one magic bullet after another, always one enterprise software
purchase away from the ultimate salvation of not having to program.
But there are many programming language communities where individual
freedom of expression is prized, where experimenters are praised for
their successes and their failures, where we all thank our lucky stars
we live in an era where programming exists and we can do all we want
for free. For me Scala is one of these languages.
Having seen a few other talks that same morning, I don’t worry about
our future in the slightest.