Close Encounters of the Apache Kind

Originally published at: https://www.freemarker.es/2020/10/01/close-encounters-of-the-apache-kind/

When one looks at the list of people involved in any ASF (Apache Software Foundation) project, you typically see this very international group of people – Americans (of course), French, Germans, Brazilians… you name it…

Multiculturalism! Computer nerds of the world unite!

Yeah, that sounds like a beautiful thing. However, unfortunately, the deeper truth is that pretty much all these people share the same "nationality": they are all total flaming assholes!

Recently, I had a run-in with one of these people. One Dawid Weiss. His nominal nationality is that he is Polish, but... as I say above...

This is how this came about. Weiss is a "committer" on the Apache Lucene project. Some days ago, I ran across a ticket that Weiss had filed in the project's JIRA issue tracker. The title of the ticket was (and is) Consider switching to javacc21.

Naturally, when I saw that, I was quite pleased. People out there were starting to come across the project. Maybe we finally are turning the corner! Also, it would be highly useful for our credibility (well, perceived credibility anyway) if a well-known, highly visible project like Apache Lucene would switch from the legacy tool over to JavaCC21. Of course, it should be a no-brainer for them to do so, since JavaCC21 is, as Weiss himself pointed out in his ticket actively maintained (unlike the legacy JavaCC project) and the list of features is impressive (Weiss's words there). Moreover, the legacy tool is broken in very fundamental ways (see here, for example) and these things have been largely fixed in JavaCC21. So, upgrading should be a no-brainer -- once you are aware that the better verseion exists! (Ay, there's the rub.) Switching should be a no-brainer, not just for Apache Lucene, but for any project that uses the obsolete legacy JavaCC tool.

So, I came across the ticket, and figured that it made perfect sense for me to write a note to this Dawid Weiss, to help him move things along. I also figured that Weiss would be pretty happy that I got in touch with him, and since this mini-project (switching over to JavaCC21) is surely extremely moderate in scale, the whole thing could get done quite quickly.

Based on the situation I outlined, one would think that this would just just get done very quickly, and I daresay that it would in a project with any healthy culture. But I had forgotten the sheer toxic culture of stupidity and arrogance that dominates that whole ASF scene. (Well, actually I hadn't exactly forgotten that. More precisely, I had forgotten the sheer extent of it, I guess.)

The conversation with Weiss devolved very quickly. Well, let me explain first that my stance on this, from the very start, was that I was willing to bend over backwards to help Weiss (or the Lucene people generally) start using JavaCC21. This is because we are at a juncture at which we are desperate to get some big-name users. In a year or so, when JavaCC21 is better established, I anticipate that if anybody proposes that I come into their project to get JavaCC21 working for them, I will just laugh at them. (Well, I would probably be more polite than that, but nonetheless...)

I mean, fundamentally, it does get ridiculous. It's as if you offer somebody free beer. You give them a bottle. You give them a glass, and now they sit there with their arms crossed in the full expectation that you pour the beer into the glass for them! (And assuming that you do this, they're the ones doing you a favor!) It is ridiculous. Obviously! But I actually anticipated that this would be his position. (Based on prior experience, I have very low expectations when it comes to people who are associated with ASF.)

Not long into the email exchange, Weiss quite literally said to me that I was free to submit a patch and surely somebody will look at it. And he added: maybe even me!

Maybe... (Because Weiss is such an important busy guy whose time is so valuable and my time presumably is worthless...)

Really, this whole idea that if I get this working for them and submit a patch, surely somebody will look at it... Well, c'mon. I know perfectly well that if I submit a patch, there is a likelihood of 80% or 90% (or probably even higher) that it will just sit there and never get reviewed. Most of the projects hosted on apache.org are in such a dysfunctional, stagnant state that this is just par for the course.

Again, to be clear, I was willing to come in and do this for them, even though the very idea is kind of outrageous already, but obviously, I'm not going to do any work for some project that I don't even have any particular interest in, if there is not a VERY clear commitment on the part of whoever is proposing that I do this, that they will review it quickly and merge the work forthwith!

But no, this Weiss was proposing that I spend my time getting this working for them, provide a patch, and then maybe somebody will look at it. Somebody... Maybe...

As I say above, I had forgotten what these people are like -- well, not actually forgotten, but the memory had faded -- so I was very taken aback by this. I said to Weiss: "Dude, this is your project. How can you propose that I do any work on your project and then maybe somebody will look at it! Like, do you have any idea of how ridiculous that is???!!!! (Apparently not.)

I also provided for him a little factoid. The JIRA issue that he filed
contained two links to websites under my control (i.e. I can look at the webserver logs). I told him (quite truthfully, of course) that those links on the JIRA ticket had generated a total of 3 (count with me, one... two... three...) clicks. From two distinct IP's. One in Washington State, USA, and the other in London, England. This, in a period of two weeks. I suggested to him that this is not an index of how healthy your project is. In short, he had filed the issue of "maybe we should use JavaCC21" and two people were interested enough to click on the links to see what he was talking about. To put that in perspective, look here at a list of all the people ostensibly involved in that Lucene thing.

In his third and final message to me, Weiss affected that he believed that I thought that Lucene was his personal project. He said to me (and this is a word for word quote):

"I do appreciate you contacting me but I think you have a misconception somewhere - Lucene is not "my" project."

Somehow, that line really pushed me over the limit and infuriated me. This Weiss character may not be any genius, but there is no way that he honestly believed that I thought that Lucene was "his" personal project. The above sentence was the first sentence of his last message to me and the first sentence of my response (which is the last message in the correspondence) was:

Dawid, have you ever noticed that modern English does not have separate single and plural forms for "you" or "your"?

Quite obviously, Weiss knew perfectly well that when I said "your project", I just meant a collective "you". The point, of course, was that Weiss is a "committer" on the project...

So, this Weiss was trying to manipulate the conversation to represent that I had some fundamental "misconception" about the situation, that I thought that Lucene was his personal project. Of course, that is ridiculous. I understand perfectly well the situation with these Apache projects. I understand that Weiss is a "committer" on the project, which means that he does have the power to commit code.

But that kind of thing is very symptomatic when you talk to certain kinds of people. They are always trying to manipulate the situation to represent that you said things that you never said. And when it is that blatant, it gets very very tiresome.

No, my position was perfectly sensible: if he was proposing that I submit a patch, it made perfect sense for me to think that he was undertaking that he was going to use it. Okay, presumably, he would review it first, but really... any patch I submit would work and be of pretty high quality. Anybody could take that to the bank. I mean, think about it... a patch that is submitted by the author of the JavaCC21 tool itself! This is like you want to switch to ANTLR and your idea is Terence Parr (the main ANTLR guy) is going to come in and do it all for you! On your project!

Well, the bottom line was that I was willing to do it, but there had to be the clear understanding that if I did this for them, that I wouldn't be just wasting my damned time! Because obviously, if the situation is "submit a patch and maybe.... somebody.... will look at it", we cannot proceed on that basis. It was like: "Dude, you're the person who filed the ticket... you're a committer on this project..."

Well, obviously, the whole thing had devolved to the point that any exchange with these kinds of people is bound to reach -- at least if one has a minimum of self-respect. Weiss was implicitly saying to me that my time had no value. He was proposing basically that I waste my time (at least at an 80 to 90 percent probability level). Also, he affected that he thought that I had some misconception, thinking that Lucene was his personal project. Well, I was fed up by now and, in my response, I pretty much called him out as a liar, which most people would say I shouldn't have done...

Actually, probably most people would say that I should not write this blog post either. But, finally, I do write this and say openly what most people will not say openly. To be absolutely clear, it's not even really about this Dawid Weiss character specifically. It's about this whole culture that he is part of and his behavior in this instance embodies that.

You see, in retrospect, I suspect that Weiss was not even consciously insulting me. You see, these kinds of people are so immersed in that kind of ASF culture that they don't really understand how offensive this is. "You're free to submit a patch and maybe somebody will look at it." Well, to be clear: if (a) Weiss was not a committer on the project himself and (b) he was not addressing the main author of JavaCC21 and (c) I actually had some pre-existing interest in Lucene myself... then maybe his behavior would not be quite as egregious. But given the combination of all those three factors, the whole thing is truly outrageous. I'm supposed to do their work for them and maybe somebody will look at it. I cannot conceive of behaving this way myself. It's just completely unhinged from reality.

But a key aspect here is that surely I am not the only person to get into this kind of surreal situation with these sorts of people. In fact, I reckon that this kind of thing happens every day -- except that 99 times in a hundred, say, the person on the receiving of this shit never openly complains about it as I am doing here.

So I've decided to be the one person in a hundred who openly complains about it.

I'm putting this note on the FreeMarker blog I have set up, partly because I haven't had much to say here for a while. But there is another reason that is FreeMarker related, some things I want to make clear.

FreeMarker related thoughts

Around 2014 or thereabouts (maybe 2015) I signed some piece of paper (that I don't think I even really read, at most glanced through it) basically giving away FreeMarker to ASF. I really regret having done this and I am actually quite bitter about it. But I only have myself to blame. It was a moment of extreme moral and characterological weakness on my part. I should have told Daniel Dekany and Attila Szegedi: "No fucking way!"

But the thing is that I had drifted away from the thing. I myself had not written a line of code in FreeMarker (or anywhere else) for at least 4 years. So, I reasoned that if I myself was no longer actively involved and the "community consensus" was to donate all this to Apache, then I had no real standing to get in the way of that decision -- whether it was right or wrong, which admittedly, remained to be seen.

Now, here we are some years later, and this FreeMarker thing, which I felt such ego-identification with, is just another nothingburger project on ASF. Yep, another great victory for the Apache Way!

Just from my own self-interest, that was a terrible thing to do because, now that I want to re-activate my open source efforts, having given away FreeMarker, it is very hard for me to get much visibility for my work. The particularly ironic aspect of this is that surely the main reason that people get involved in ASF is to get visibility for their work! (A kind of Faustian pact with the devil, really...)

But aside from that, the so-called "Apache Way" etctera is a fraud of a very high order. Totally shameless. And I really think that we should all do our best in this life not to aid and abet frauds. The fact is that the only way that ASF can really have anything of any quality to offer is by people donating their work to them. Practically nothing of any value is ever developed inside ASF using the so-called "Apache Way". So, even if I believed at the time that this all belonged to a chapter of my life that was now over, I still should never have agreed to this. But certainly, if I had intended to continue with FreeMarker myself at that point, that would have meant participating in this farce of the so-called "incubator", in which we are trained to run our project following the "Apache Way", I would have declined to participate in such a farce, and thus refused to donate the work. But since I thought I was never going to be involved again, I signed off on this.

Since then, I have changed my mind. I now fully intend to revive FreeMarker (outside of ASF of course). At least, I want to see whether it is possible to do so, given the huge visibility advantage that "Apache FreeMarker" will have. (Of course, any version I put out will have a huge quality advantage, but I don't know if that will be enough to offset that. But I intend to try.)

My position, by the way is that the real FreeMarker project is my project and yes, "Apache FreeMarker" will exist, but, moving forward, the two things will have roughly the same relationship that the regular Olympics has with the Special Olympics.

As for whatever I supposedly agreed to back in 2014, I am hereby retracting that -- whatever precisely it was. I don't even really know what I signed and, in any case, I do not at all feel morally or ethically bound by it. I am no lawyer, but I think that any "contract" which involves me giving somebody something in return for absolutely nothing is bound to be of very dubious legality. I doubt it can be enforced and I have no idea in what jurisdiction they would try to enforce it. Anything I hear from ASF in this regard is bound to be just a big bluff and I will treat it accordingly. (I don't anticipate hearing anything from them anyway.)

You know, I just reread what I wrote above and, though I stand by everything I said, of course, it somehow maybe skirts around what is the central takeaway point here. I mean, people could read this and think that the main issue is just me being thin-skinned, or something like that. Now, there could well be something to that. Probably I am over-sensitized at this point to these sorts of ridiculous situations.

But that is not really the main point!

No, the main point is this: I was actually willing to do the work for these guys! Granted, that’s already ridiculous. I shouldn’t have to. But okay, at this juncture, I was willing to do it. Anything to get the ball rolling…

BUT… as I describe, the situation became so obnoxious that it just became impossible. And I am pretty sure that it is not a one-off case. I’m sure it’s not just just this particular guy Weiss. It’s such a chronic social malaise they have going there.

So, maybe the real real takeaway point here is that if this was a normal software project, just normal people there on github or sourceforge, the whole thing would probably be done by now. It’s surely trivial. Lucene’s usage of JavaCC is totally bread-and-butter. They don’t use automatic tree building (no JJTree) and they have 4 grammars that are about 400 lines each. That’s it. So the whole thing is such a big nothing that it’s probably easier just to do it than to even talk about it.

But these sorts of people are so insufferably arrogant, so damned obnoxious, that the end result is that they couldn’t get this minor bit of work done even when somebody like me is willing just to do it for them!

It makes me think of the proverbial millionaire who is just so unpleasant, so obnoxious, that he literally can’t even get laid in a whorehouse!

Oh, and here is another addendum. The issue that was filed is now marked as “resolved”. The resolution is “Won’t fix.”"

So, in other words, they resolve that they will continue to use the legacy JavaCC tool indefinitely in the full knowledge that it is fundamentally broken!

Yeah, man! That’ll show that uppity Revusky guy!

Yeah, right on! Who the hell does that guy think he is anyway?

Yeah guys, you win.

And your grand prize is…