FreeMarker Blog

The official weblog of the FreeMarker project

Sunday, March 05, 2006

Musings about Competition, Ego, Open Source and specifically, the Webwork/Struts Merger

Recently I read an interesting article in the New York Times about upper middle class parents from Asian countries who moved to the U.S. specifically so that their children could avoid the rigors of the highly competitive education system in their home countries. There is the feeling that that kind of pressure cooker system robs children of their childhood and teen years. They want their kids to get an education of course, but they also want them to have a normal childhood.

The article had one ironic aspect, though. The Asians in the article were settling in areas that were known to have schools that were much more academically demanding than average. (These, by the way, were typically New York neighborhoods that historically, have been predominantly Jewish but now are becoming increasingly Asian.) The schools in these areas are much more competitive and demanding academically than the norm in the United States, but I infer that they are still a romp in the park compared to the schools these kids would attend in Japan, Korea, or Taiwan, say.

Just how extreme the situation can be is, apparently, no joke. I remember reading elsewhere that the teen/youth suicide rate in Japan was alarmingly high. This is widely believed to be a side effect of subjecting young people to those kinds of extreme competitive pressures.

There are liberal or progressive theories of educational reform that decry the role of competition; alternative schools have been set up that abolish tests and grades. Certainly, if an educational system could abolish competition for grades and be based instead on instilling in students a genuine love of learning for its own sake, this would be a wonderful thing.

The problem is: how do you foster excellence in a non-competitive environment? If nobody set up competitions like the Olympic Games and so on, would anybody have ever bothered to run a mile in less than 4 minutes -- if they were running for the pure joy of running? Maybe that's not a great example, because I don't know how much of a loss that would be. However, the point stands that competitive situations are structured that way because they motivate people to give it their all.

Now, getting back towards the topic at hand, it seems clear to me that the open-source software world is inherently competitive in nature. Software projects compete to provide the most compelling solution in their problem space. I believe that the competition can (and should) be one of good-natured rivalry, but the logic and structure of this is that it is a competition. It is very largely a healthy competitive spirit that motivates people to excel.

Ego is good?

In a related vein, people will recall that in the film Wall Street, Gordon Gecko famously proclaimed: "Greed is good". This was not an original idea. It is a re-expression of the belief that private vices can lead to public good. The magnate's desire to accumulate wealth is a basic motor that creates wealth for the society as a whole. I realize that there are a lot of caveats to this and I am reluctant to similarly proclaim: "Ego is good." But the reader will have got the idea, I guess.

Sanctimonious political correctness aside, I believe that everybody reading this knows, in their heart of hearts, that a driving force in open-source software development (and in countless other human endeavors) is ego. Narcissism even, if you will. When Muhammad Ali proclaimed "I am the Greatest" he was being outrageously egotistical and narcissistic but at least he was not being a bloody hypocrite about it. I think that was actually refreshing for a lot of people. (Of course, that kind of strutting display has become much more typical in sports, and is probably now just tiresome.)

I would not attempt to deny that ego has been a factor in my work on FreeMarker and in other things that I have done. But that should not be a great revelation. I would say in passing that if a fellow open-source developer told me that ego was not at all a factor in what he did, this would cause me to distrust him; I would assume that he was being less than honest, possibly with himself.

I mean, look, you have to have at least a healthy ego to believe that you have something to offer in a field, that other people have presented a solution but you can improve on it. It takes some belief in oneself to go to the habitual places like usenet groups, javalobby and theserverside and such to announce your work to an audience of software development professionals. People who do this obviously have an ego.

But here is a point about this: when you do this, you must believe that your work is competitive with the state of the art in its space. If there is some other tool that is so unambiguously superior to mine that everybody who uses my tool would be better off using that other tool, I am just wasting people's time. Ego must be tempered by realism; otherwise, it is just narcissistic behavior. If the developers of a tool do not have something to offer that is competitive in its space, that really should lead to a crisis, a moment of reckoning.

The Struts/Webwork Merger

It seems that such a moment of reckoning did occur with Apache Struts. In December 2005, it was announced that the Webwork and Struts community were "merging". What this amounted to was that the the Webwork 2.2 codebase would be used as the starting point for the next generation of Struts, Struts Action Framework 2.

This whole thing came as quite a surprise to me. Not that it really affects me that much, as I don't actually use either tool. My only relationship to the whole thing is that FreeMarker is used quite extensively in Webwork 2.2. The Webwork lead developer, Patrick Lightbody, was a regular on the FreeMarker mailing lists in the latter half of 2005. (He no longer is. He left our community announcing in a huff that he was unsubscribing from our lists. This is clearly somewhat connected with the merger with Struts though it's a bit murky...)

Now, one amazing aspect of this whole thing is that the Struts developers were simply admitting that their product, their community's work, was inferior. While I have misgivings, on which I shall elaborate below, about this "merger", I must give credit where credit is due. The main Struts developers were simply willing to swallow their pride and accept that Webwork was better. Thus, for reasons I outlined above, it simply did not make any sense to continue to promote Struts Classic when people would simply be better off using Webwork.

Yes, the open-source world is competitive by nature, and the Struts people were admitting that they had lost the competition. For the Struts developers to recognize that their users would be better served by migrating to the heretofore competing project is quite admirable.

But now for what I see as the negative aspects...

First of all, Webwork being rechristed Struts TI or Struts something or other is a step that seems designed to mislead the casual observer about what actually happened. Any casual observer would surely assume that this product was the continuation of the Struts 1.x codebase and thus, built on the work of the Struts community. However, this is not the case. There was, de facto, a technically-based competition between the Struts community and the webwork community to produce a better framework. The Webwork people won the competition. The Struts people conceded defeat.

Now, competition is a brutal thing. When I started off this article mentioning the pressures put on these Asian schoolkids, it was not, in my mind, a totally off-topic meandering. Competition is brutal because for somebody to win, somebody else has to lose. And it's humiliating to lose, to the extent that some percentage of those kids actually take their own lives. Since competition is something so inherently hard, we tend to want to find mechanisms to soften things. An athlete who is gracious when he wins and when he loses is admired. This is a mark of maturity certainly, but don't believe that when a highly competitive champion athlete competes and loses, he sleeps well that night. Do not believe that when he smiles and congratulates the winner, that he is not hiding the hurt and shame he feels inside.

I suspect that Niall (the Struts developer with whom I have been having some dialogue on this blog) may now want to jump in and say that my paradigm is wrong, that actually, in this case, everybody won. I would hope though that you don't say this, Niall, because I'm not having any of it. Patrick Lightbody even wrote a blog entry stating "Struts really sucks" and if that's not throwing down the gauntlet, what is? No, there was a technically based competition and you (I mean, the Struts people here) have conceded defeat.

Now, competition is an ugly business, but if you are going to have a competition, it has to be clear who won and who lost. Because let's face it: otherwise, why would anybody bother? So here is what is probably the central objection I have:

This Struts/Webwork merger is designed in such a way as to create a maximum of confusion about who won and who lost.

Actually, the more you look at it, the more ass backwards the whole thing seems. As of this writing, Webwork is one of the projects in the so-called Apache incubator. Webwork's "champion and "mentors" are the principal Struts developers. I ask you: How can Don Brown and Ted Husted or any other of the principal Struts developers be the "mentors" of the Webwork people? They accepted that the Webwork people had actually won the technical competition.

Do I sign up for tennis lessons with a teacher who I just defeated 6-0, 6-0 in a tennis match?

One of the "exit criteria" by which Webwork will be admitted as an Apache project is demonstrating that they "get" the "Apache way". Well, presumably the Struts project was being run in accordance with this "Apache way" yet the Webwork people defeated them in a technically based competition to produce the better framework. So isn't this ass-backwards? If you have a meritocracy where you judge by results, obviously Ted Husted and Don Brown should be trying to learn the "Webwork way" or the "OpenSymphony way" because that is the way that has proven more effective at developing a good framework.

Now, I lurk on the Struts-devel mailing list, mostly just to see if templating issues come up. Some of what I see does amaze me. In this mail Patrick is debating what is basically a second-order project management issue, whether to use email notifications or do things with an RSS feed. (Note that I actually don't have an opinion about this.) One Sean Schofield responded here lecturing Patrick about how mailing lists are "the Apache way" and so on.

The fact is that, given that the Struts people lost the technical competition with Webwork, the only sensible thing is for them to defer to Patrick and the other Webwork people on these issues. If I defeat Joe Blow 6-0, 6-0 in the tennis match, Joe Blow, if he has any sense should not be lecturing me about the "Joe Blow Way" to hit a backhand. That Patrick is able to restrain himself when somebody is lecturing him about "the Apache Way" in this spot shows that he is somebody quite characterologically different from me. I simply would not take such shit from people.

What happens now?

I really don't know. Deep down, Patrick and the other Webwork people must know how absurd the whole situation is. They accept an absurd situation because they want more visibility for their work. I understand. But somehow, I do not think this collaboration is going to work out well. Or, at the very least, I see some rough sailing ahead. I mean, when you set up a situation based on premises that are so divergent from reality -- the people who won the technical competition accepting the people they defeated as their "mentors" -- something maybe has to give at some point. But I don't know for sure either. As Mark Twain (I think it was he) said, making predictions is a perilous business, especially about the future. (Predicting the past is a better bet.)

Well, in closing, one does have to hand it to the Struts people, and ASF in general. You know, it is almost as if, in early 1945, the Germans had managed to convince the allies to unconditionally surrender.


At Wed May 10, 02:06:00 AM GMT+2, Blogger Preston L. Bannister said...

Your analogy is a bit broken as "won" and "lost" have a bit different meaning between competition and collaboration. In school you are not generally meant to share work with other students. Between open-source projects you can share as much as you like.

Unless absolutely none of the ideas or experience from the Struts community made it's way into WebWorks, you have to see the end result as a sum of the two projects and communities.

(Wandered by because of the Freemarker plugin for Eclipse, BTW.)

At Sun May 14, 11:03:00 PM GMT+2, Blogger Jonathan Revusky said...

Preston, I don't think the analogy is broken. At least certainly not for the reason you offer....

Your claim that in school, you don't share work with other students is quite iffy. Although the educational system is, broadly speaking, a competitive meritocracy, there is a lot of collaboration within that. Students collaborate on group projects. They form study groups and thus help one another and so on. Actually, the specific case in which students must not share work is when they are in the 2 or 3 hours of a final examination.

I don't know where you studied and what the culture was, but as I recall, students help one another quite a bit. This does not contradict the fact that there really is a competition for merit in which the better students get into prestigious professions like medicine and law (and also within that, there is a competition to get into the better law school, like Harvard Law vs. Podunk U.).

Similarly, in a regular marketplace, firms are clearly in competition, offering different competing products. However, there is also significant collaboration between firms in the same space. Car companies frequently cooperate in joint ventures. Tech companies often get together and hash out open standards so that their products can interoperate. So, we see that, in these cases, there is a mix of cooperation and collaboration.

(Even in pure competitive sports, bicycle racing comes to mind, things like the Tour de France, in which there is a mix of competitive and collaborative behavior.)

The open source world is not a regular market with products that people pay for. However, it is a marketplace of ideas, and yes, there clearly is a competitive logic and structure to this. I think it is disingenuous to claim otherwise.

As for your comments about "unless absolutely none of the ideas or experience from the Struts community made its way into Webwork..." well, that is, to all intents and purposes the case. The current version of Webwork is simply being relabelled as "Struts Action 2".

Struts Action 2 is the work of the Webwork community, not the Struts community. Period. Nonetheless, the casual observer will naturally think that this work was done by the Struts community, i.e. by the same people who created and developed (or in reality failed to develop) Struts 1.x. There is, I think, an intention for people to draw this (false) conclusion.

For the reasons I outlined, I consider the entire situation quite unhealthy and undesirable.

Interestingly, Preston, in 2 entire months, you are the first person to actually write a comment about this blog entry. Now, I don't really know how many people read it. However, I tend to think plenty of people, by now, have read it. Probably some of them are bothered by what I say. However, none of them had ever bothered to write any rebuttal. I took this to mean that the basic argument I developed was quite solid. If people could really sink their teeth into it, they would.


Post a Comment

Links to this post:

Create a Link

<< Home