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.