Is Groovy Dead?


No, but it isn’t healthy, and I see no signs of the situation improving. For those who haven’t heard of it, Groovy is a scripting language designed to run on the JVM. It has (or had—see below) a Java-like syntax, but is freely typed liked Lisp, Perl, and Python, and has some features like closures that Java lacks. Groovy is the first language since Java to receive official blessing from Sun in the form of a Java Community Process standardization committee. Lots of people have been talking about it at conferences recently, and according to traffic on the developers’ list, four (4) books about it are now in the works.

I’ve been interested in language design for years, so earlier this year, I became HP’s semi-official representative on the committee. I was very excited, both because Groovy promised to remove the impedance mismatch that makes ported languages liked Jython awkward, and because of the chance to be in at the start of something that promised to be fairly widely used.

The excitement wore off as soon as my students and started trying to use Groovy. There’s very little documentation, and much of what exists is out of date. OK, that’s forgiveable; early days and all that. But then we discovered that the language itself is a seemingly random collection of various developers’ favorite features from other languages, all thrown together in the digital equivalent of Sunday stew. My favorite (and I use that word ironically) is that whitespace is sometimes significant: putting the opening curly brace of a block on a new line will completely change the meaning of a block of code, but only in some cases. And then there are the parenthesization rules: a method call with zero arguments must have them, method calls with exactly one argument can omit them, but with two or more arguments, they have to be there again.

I wouldn’t mind this if there was any sign that matters were going to improve. Instead, Groovy’s developers spent the summer throwing one feature after another into the mix, with very little discussion about how they all might interact, and no visible sign of quality control. The problem is that no-one is acting as BDFL (Benevolent Dictator For Life), in the way that Guido van Rossum does for Python. Consider this post, for example; in a single three-page post, Guido summarizes discussion about a contentious feature, and explains why he has decided that it ought to be done a certain way. He knew when he wrote this message that it was going to disappoint a lot of people, but he also knew that saying “No” is an important part of a language designer’s job. Groovy’s core developers seem to be so excited by the possibilities of what they could add to their language that they’re not willing to throw anything away, or leave anything out.

So, is Groovy dead? Not yet. Several other people have pointed out on its mailing lists that that it seems to have lost momentum over the summer. With luck, someone will step in who’s willing to break people’s hearts in order to get a useful, usable language out the door. As far as Hippo is concerned, though, we’re not going to take the chance: we’ll use Jython for scripting.