Stephen Ramsay    Home

Graham's Arc

I will admit to being a huge (read, fawning) fan of Paul Graham. I’ve never met him, but I think his essays are terrific (especially the ones on Lisp). He clearly has a ninth-degree black belt in programming, and yet he’s one of the most clear-headed prose writers I’ve read when it comes to dilating complicated technical subjects. I, personally, would have no idea how Lisp macros — the single most powerful and mind-bending concept I’ve encountered in programming — work without the benefit of his book On Lisp, which has been circulating freely as digital samizdat on the Web for many years. Since I aspire to be both a black belt programmer and a clear-headed writer, I tend to take what he says and does very seriously indeed.

I’m not alone, of course, and so when Graham announced that he was creating a new dialect of Lisp (called “Arc”), I and many others got very excited. We were all particularly intrigued by the statement of design philosophy that appeared on his home page a couple of years ago, and have been waiting with bated breath ever since.

Well, Arc is out. And with its release (more of a stable pre-release) came a torrent of criticism. In fact, the criticism began years ago (Arc is vaporware, etc.). I won’t rehearse the criticism here; I’ll just make the general point that people have a lot of damn gall.

As far as I can tell, Paul Graham’s reasons for writing Arc are the same as for any voluntary development project. He’d like to give himself the tool he wishes he had, he’d like to amuse himself intellectually, he’d like to explore various aspects of design, he’d like to play around with some ideas he’s had for years, and he’d also like to contribute something useful to the world. These seem to me excellent reasons for doing just about anything, and it’s nice that he’s chosen to throw in the last one.

There are several legitimate reasons to feel miffed about software. You might be frustrated with the release schedule or the number of bugs or the fact that such-and-such a feature isn’t implemented yet. You might find the community that supports it unhelpful or the authors arrogant and imperious toward their users. You might think the whole thing is wrong from the start.

If it’s a commercial piece of software for which you’ve paid money, I can understand angry charges and criticisms. But free (as in beer, as in freedom, as in range, whatever) software? What gives anyone the right to shoot their mouth of like this?

It’s not that people can’t have these opinions. It’s that they air them so freely and with so little charity. Graham would be well within his rights to take his toys and go home, after all. He wouldn’t be the first foss developer to do so. It seems like once a month some talented hacker writes a farewell letter in which he or she admits that the constant battering is starting to wear them down.

I’m not suggesting that people stop critiquing software and design philosophies. Nor am I suggesting that everyone suppress their natural frustrations. I’m merely suggesting that all such critiques and frustrations be firmly wound up in a gentle cloak of charity, good will, and constructiveness. It might be true that the developer can tell a jackass from a contributor, but he or she might not. And the consequences of beating up on people in this way is the suppression of the motives I outlined above. Do we really want a world in which people don’t play for love of the game, but only because they’re compelled to by some other force?

In that piece on design philosophy, Graham wrote, “The great languages have been the ones that good programmers designed for their own use– C, Smalltalk, Lisp.” I think he’s right about that, and I think we could probably generalize that sentiment to lots of areas of human endeavor. Fortunately for us, lots of people with that idea have drawn the perfectly humane conclusion that what’s useful to them might be useful to others. If drawing that conclusion brings you nothing but grief, there’s no loss in really making it something for your own use. After all, couldn’t you just work on the project for love of the game and keep it to yourself?

If I were Graham, I might be asking myself why I’m even bothering. And that bothers me.

blog comments powered by Disqus