Three Cheers for Norbert Sudhaus!

It was at the 1972 Olympic Games in Munich that 22-year-old German student Norbert Südhaus had his Warholian 15 minutes of fame -- or infamy, rather. As a prank, he snuck into the stadium (security was much more lax back then) just before the winner of the marathon, the American Frank Shorter, was set to arrive to run his victory lap. As described in Wikipedia:

As Shorter was nearing the stadium, German student Norbert Südhaus entered the stadium wearing a West German track uniform, joined the race and ran the last kilometre. Thinking he was the winner, the crowd began cheering him before officials realized the hoax and Südhaus was escorted off the track by security. Arriving 35 seconds later, Shorter was perplexed to see someone ahead of him and to hear the boos and catcalls that were meant for Südhaus.

Now, like most people, I have never been in the exact position that Frank Shorter was in that day, but even so, how hard is it to imagine how he would feel about this? Understand that it is not just that he ran the race on that day and happened to win. No, what he achieved that day was the culmination of years of hard work and dedication. Yet, this moment, that was supposed to be a jewel in his life, was ruined by this immature prankster, Südhaus.

I think that it is safe to say that, when we describe this incident, everybody sympathizes with Shorter and nobody sympathizes with Südhaus. In fact, we would likely feel deep suspicion of anybody who did not feel that way. If anybody started saying that Shorter was a villain and that Südhaus was treated unfairly, we would start thinking: Holy cow! WTF is wrong with this guy?

Well, that's how we would react if we were convinced that the person was serious. (But how could he be?) Surely if anybody was expressing any support for Norbert Südhaus, it would just be tongue-in-cheek.

All of that just seems obvious. However, there is another point about this scenario to be considered: none of the preceding has anything to do with how likable a guy Frank Shorter was (or is) or any of that. It is simply not relevant. Shorter won the race and he earned his moment of glory.

Now, most likely, Frank Shorter is a nice guy and a very admirable individual -- but that said, I actually don't know for sure. But more importantly...

I don't care!

Whether Shorter is a nice guy or a jerk, whether he holds the appropriate politically correct views or does not... none of that matters. He ran the race and won and his achievement must be recognized. Well, surely it was, for the most part. I assume that, once the confusion was cleared up, he did receive the rightful applause from the crowd. And, doubtless, when he went back to his home town in America, he received a hero's welcome. Of course he did. He achieved what he achieved and had earned that.

Well, finally, what all of this is about is elementary sportsmanship -- really, basic decency. Not just sporting achievements either.

Accomplishments must be acknowledged.

Well, the astute reader, knowing the situation I find myself in with my efforts to resuscitate this JavaCC project, may sense where I'm going with this. I feel it's a delicate matter to take on this subject because I have this fear that I will sound like a whiner or something like that. Nonetheless, I feel that certain things must be said. The lack of any sense of basic sportsmanship that predominates in this open source software field is absolutely striking. I don't really understand it either. But I see it, even if I'm maybe supposed to pretend that I cannot see it. Finally, I feel like I have to get a few things off my chest.

My Very Own Frank Shorter Moment(s)

In my work on JavaCC, there have been various significant technical milestones that could be perfectly well thought of as Frank Shorter moments. When I implemented the INJECT directive back in 2008, when the project was still called FreeCC, in retrospect this was quite something. I had unified the JavaCC and JJTree tools as a single tool and I had solved this major problem that made JJTree (the automatic tree-building component of the legacy JavaCC package) so problematic to use.

Just as Frank Shorter deserved acclaim for what he achieved on that day in 1972 (and the Norbert Südhaus incident aside, surely did) I think I deserved some recognition from the JavaCC "community" for solving cleanly this whole problem of having to post-edit the generated XXXNode files in JJTree. Unfortunately, very few people got any benefit from my work. This was because the gatekeepers, the nothingburger artists, sitting on the canonical JavaCC project decided to pretend -- month after month and year after year, eventually decade after decade -- that the work I had done simply did not exist.

More recently, I achieved another such technical milestone. As I reported here a few months ago, I finally fixed that longstanding bug of nested syntactic lookahead not working. Just as Frank Shorter, properly understood, did not achieve what he achieved on that one day, but it was the culmination of years of hard work, so it was with this bugfix. In fact, truth told, I did not consciously set out to fix that bug. What happened was that, after yet another cycle of code cleanup and refactoring, I just suddenly saw that this longstanding bug was trivially fixable! This, by the way, is something that nothingburger artists never really understand, that real software development is a process of constant creative destruction, and what frequently happens is that, after a round of cleanup, certain features that had not previously occurred to you, just suddenly suggest themselves! And this happens by taking a very aggressive, fearless attitude towards the codebase. The fearful attitude of the gatekeepers, terrified of touching the code, simply cannot produce any meaningful progress.

The Norbert Südhaus Fan Club

Nested syntactic lookahead working properly is a game changer because it means thatall sorts of elegant solutions to parsing problems that should have worked but, due to that bug, never did, now do work.

It struck me (and I guess still does) as borderline incredible that anybody would continue to use the legacy JavaCC tool, in which this is broken, in preference to my version, where it is fixed -- at least, if they knew my version exists! (Ay, there's the rub!) I also reasoned that no ethical person, in good conscience, could continue to advocate the use of the broken, obsolete legacy JavaCC tool. (I see I was dead wrong about this!)

So, what I am calling out in no uncertain terms is this absolutely unsporting refusal to acknowledge the work I did. Again, as I pointed out above, it has nothing to do with liking me or thinking I'm a nice guy or any of that. I did the work and an honest, ethical person surely must acknowledge that!

Hopefully, I have made my point on that, but amazingly, it even goes beyond that. What is truly extraordinary about this situation in which I find myself, in this second run at resuscitating that crufty old JavaCC, that has effectively been abandoned for 20 years, is that there are actually people who believe (or they say they believe it...) that I am doing something terribly wrong. They think that I, Jon Revusky, am victimizing the likes of Sreeni Viswanadha or his mini-me, Francis André, or any of the other nothingburger artist gatekeepers sitting on that old nothingburger of a project.

Somehow, it does not occur to them that it is these gatekeepers who are victimizing not just me, but everybody who stands to benefit from the project being actively developed! Moreover, they believe apparently that these kinds of people have some sort of unquestionable right to sit endlessly on some well-known open source project, doing nothing meaningful for years and eventually decades -- and if somebody actually decides to pick up the thing and do something with it, it is those people who are doing something wrong!

Well, for crying out loud! Sun Microsystems open-sourced the code in June of 2003 and in 17 years, the people sitting on the project have put out all these releases (from a 2.x to a 7.x) and none of that incorporates a single new feature or any sort of new idea! (Is this anything more or less than just a total FRAUD?) In any case...

Was the intention of this operation of open-sourcing the code to open it up to further development or to enable a bunch of gatekeepers to sit on the thing and not only do nothing themselves but actively prevent anybody else from doing anything?

How could anybody believe this? Yet they maintain this position even though they are the ones who stand to benefit directly from my work! Over the last few months, I have fixed bugs that are over twenty years old!

How despicable of me!

And, actually, the above is, if anything, an overly generous characterization of the situation. Not only do these gatekeepers do nothing themselves, but they do not even do the most minimal maintenance level work. For example, the legacy JavaCC project only supports a 10-year-old version of the Java language (JDK 7) and this is only because somebody donated the incremental work for this. I had some private correspondence with the person who donated that patch and he told me that it took something like a year for them even to look at his patch. In any case, keeping the existing tool up to date with the evolution of the Java language would be a minimum baseline of project activity such that, if they decline to do even that, it is effectively abandonware.

I am quite satisfied that the stance of these people, by and large, is about as absurd as the notion that Frank Shorter was the one victimizing Norbert Südhaus!

Poor Norbert!

Not long after fixing the nested syntactic lookahead bug, I wrote to Theo Norvell, who had been the maintainer of the JavaCC FAQ for at least a decade, and still regularly answers JavaCC-related questions on StackOverflow telling him that I had fixed this longstanding bug issue. I had a vague feeling that Theo did not like me very much (not clear why, since I never did anything to him) but I still thought he had enough of a sporting mentality that he would write back a congratulatory note.

Well, I was wrong. (It is an unfortunate fact that I just never manage to underestimate any of these people.) Well, what is one to expect from card-carrying members of the Norbert Südhaus fan club? Norvell did not write me back any such congratulatory note -- or any note at all. I also see that he continued to answer questions on Stackoverflow about JavaCC, never mentioning that there was a more advanced, fixed version -- i.e. my work.

That was my second-last email to Norvell. I later wrote him again (sometimes it is downright impossible to abstain from scratching an itch) and simply expressed how I felt about his behavior. Here is a key extract:

This whole approach that you seem to be taking, which is basically to pretend... (I know that is not terribly flattering but I can't find another word...) to pretend month after month, year after year that the real work in a space does not even exist.

snip...

I'll make this very brief. The point is this: what kind of person do people who behave like this come off as? At least to a discerning observer. (Granted, you can always hope that there are very few discerning observers out there!) But to the discerning observer, you just end up coming across as... well, not really a very good person, somewhat mean-spirited and ungenerous. And it's fundamentally very dishonest behavior. Obviously, my main problem with it is that it's outrageously unjust towards me, but properly understood, it's not really about me specifically. Again, you can do what you want, but you can't affect being surprised when I resent it. Right?

This message also received no response. (This time, that did not surprise me. I can be very slow, but eventually I do learn the lesson.)

Of course, I have no certainty about Norvell's views on any of this, since he declines to answer my emails. However, I suspect that he is one of these people who believes that I have somehow mistreated the people in the legacy JavaCC project.

To believe that I have mistreated Sreeni and the rest of the nothingburger artists who make up that "community" is about akin to believing that Frank Shorter somehow mistreated Norbert Südhaus. After all, we all know that Norbert was the rightful winner of the 1972 Olympic Marathon! (If Frank Shorter gets openly indignant about this, that just shows what a bad guy he is!)

So, there it is.

Three Cheers for Norbert Südhaus! Hip Hip Hooray!