Is it Politically Incorrect to Criticize Open-Source Software?

Political correctness is one of the most virulent and pervasive social diseases of the modern era, one for which I have no time whatsoever. Take, for example, the self-evident phenomenon that programming is a male-dominated industry with one study finding in 2002 that:

Currently, [Computer Science] is a major that has a very low percentage of women. At top research universities, about 15 to 20 percent of majors are female,

Yet some zealots write off anything other than a 50-50 split as the product of sexism or oppression.

Of Listening and Maps

To me, it is blindingly obvious that men and women are wired differently. That’s not to say that there aren’t female programmers or that women should in any way be discouraged or steered away from programming. Quite the contrary: I’m a stalwart believer in meritocracy. Nor does such an observation predict the outcome of any one individual (alone or compared to another). But the fact remains that if you take 1000 men and women in otherwise equal circumstances, those who end up programmers will be disproportionately male.

The problem begins when one group should be given preferential treatment over another to cure the alleged imbalance. Let’s say that the faculties of Stanford, U. Washington and MIT got together and decided they would make it easier for female applicants to computer science courses to be accepted. This, to me, does two things:

  1. It reduces the overall quality of computer science graduates since, by definition, you’re not getting the pool of those with the most merit; and
  2. Female programmers could end up being viewed as somehow less qualified than their male counterparts by virtue of the perception that they had an easier ride.

But the point isn't whether this is true or not or what the reasons for it are if it is true. The point is can you even discuss it without being accused of committing some serious social transgression?

I hear you asking: what the heck does this have to do with open source software? Well, I’m glad you asked. In some ways, the situation is exactly the same.

Not Un-Delicious

Recently I posted Spring Batch or How Not to Design an API, which generally received positive feedback. Dave Syer left a comment (emphasis added):

As one of the authors of Spring Batch I also find this article a bit harsh, especially coming from someone who has has not been active on the forum and not raised any issues as far as I can tell in the Batch JIRA. Spring projects are community projects and we do care a lot about what people think. All of the issues above would benefit from discussion and clarification, but this is not the right forum, so I warmly invite interested parties to follow up on the Batch forum (http://forum.springsource.org?forumdisplay.php?f=41) or in JIRA (http://jira.springframework.org/browse/BATCH).

That comment got me thinking: what ethical responsibilities do we, as programmers, have with respect to open source software?

For the sake of completeness, I will point out that I have raised a few issues against Spring proper (not Spring Batch) 2.0.x and Spring Webflow, all raised on 18 April 2007. They are:

Issue Description Timeframe Resolution
SPR-3390 Better error handling from the <form:errors> tag n/a Unresolved
SPR-3389 Nicer handling of Java 5 enums by the Spring MVC form taglib. 1 week Fixed in 2.0.x
SPR-3388 <form:*> tag library assumes the value of a Java 5 enum property is the value of toString() 1 week Fixed in 2.0.x
SPR-3387 DataBinding error with Java 5 enums 21 months Fixed in 3.0.x

Are We There Yet?

These were all issues affecting what I was doing at the time (using Spring MVC and Webflow). The second and third issue were fixed in a useful time period. In fact, I was surprised how quickly they were resolved but I attribute that to the quality of the Spring and Spring Webflow projects in terms of the libraries themselves, the teams developing them and the technical leadership driving them.

Sadly, my experience has been that this is the exception rather than the norm.

Anyway, the key point from the above is that when you encounter issues such as these they need to be fixed in a usefully short time period or they are for all intents and purposes not fixed. Interestingly, the concept of usefully short time frames was one of the motivating factors behind Stackoverflow.

When you encounter a problem you can’t solve the immediate response is usually to go to google and look for an answer. You could ask a question on a forum but forums, well, suck. Even if they have a critical mass of an audience it may take a day or more to get a response.

This is not a usefully short time period.

It’s a Question of Hats

When you’re designing a technical solution or selecting a library or framework to solve a particular programming problem and you’re unfamiliar with some or all of the choices you go looking for reviews, tutorials and blog posts to get feedback while you try and ascertain the suitability of library or framework and identify any risks or shortcomings it has.

There is nothing worse than selecting a tool only to find out halfway through the process it has a massive problem. It’s too late to change, it’ll take too long for the development team to fix and you’re faced with a messy workaround.

This motivated me to write my previous post because that was exactly my situation.

What Dave implies is that I, as a user of Spring Batch and a blogger, have a responsibility to pursue these issues through “official” channels before—or instead of—posting any kind of public criticism. Or perhaps' it’s that I haven’t earned the right to be critical by virtue of being insufficiently community-minded?

So what do I, as a programmer and a blogger, owe any open source tool I use?

As I see it:

  • as a professional programmer I have a responsibility to my employer or client to get the job done first and foremost;
  • as a blogger—or any kind of writer really—I have an ethical responsibility to write with integrity. Particularly as a review, this means giving credit where credit is due but also being critical where justified; and
  • as an open source citizen I have a moral imperative to support such community-driven efforts.

So which hat should I wear?

Of these the first is arguably the most important. You have a duty of care to your employer and/or client that has legal standing and failure to act in the best interests of that party can be grounds for professional misconduct, breach of contract or worse.

Of Apples and Oranges

In one respect I can understand Dave’s displeasure. After all, he’s not getting paid for his involvement in Spring Batch (as far as I know). Having your work criticized at the best of times is usually hard but it sticks in the throat even more when you’re volunteering.

This brings us to the next interesting question: is open source software held to a different standard than commercial software?

Clearly I think it is as everyone’s favourite whipping boy, Microsoft, can surely attest. Is that fair? Should it be held to a different standard?

Some will argue that commercial software by virtue of funding that could amount to billions of dollars in some cases has such a huge advantage that open source software should be given a free pass or at least held to a lower standard. After all, it needs every advantage it can get right?

My opinion is that the opposite is true: the cost structure of most open source software is, well, zero. Put up a Website, register a domain name, host some forums and host a source control repository and, unless you’re wildly successful, you’re spending maybe $300 a year. Users debug your software for you. Programmers volunteer their time.

How can a commercial software vendor possibly compete with that after they pay for programmers, office space, hardware, internet connections, office staff, sales, marketing, accounting, compliance and so on? In some cases—most notably Windows—the vendor is so entrenched that it constitutes a virtual if not actual monopoly.

But in many other cases, such as databases, commercial vendors continue to exist because they produce a better product (than say MySQL). Oracle is expensive and that cost is certainly not justifiable in many business models. Nor is it’s feature set or performance benefit applicable in all circumstances. But whatever the case, Oracle is clearly better than MySQL and to argue otherwise is naive, ignorant or both.

So with so many advantages shouldn’t we hold open source to the same standard (if not a higher standard)?

Of Female Programmers and Open Source

And at last I return to the original point.

The danger of holding open source projects to a lower standard is that you will end up with a bunch of mediocre (if not outright terrible) projects. And to be perfectly blunt, this is exactly what has happened to a large number of Apache projects.

The documentation of many Apache projects is beyond woeful, even for (allegedly) mature and popular frameworks like log4j. I can understand this because it’s hard enough to get people to write documentation when it’s their job let alone when they’re volunteering. But it’s just not good enough.

Taken to extremes, a different standard has crossed the line from advocacy to pandering.

Let products—irrespective of their source—stand on their merits and let the chips fall where they may.

If you hold something to a higher standard you will get a better product.

Conclusion

Ultimately, after having given it some thought, I am unrepentantly unapologetic about my criticisms of Spring Batch. If I’d made some factual error, that’s one thing. That’s my opinion and you can do with that what you wish whether you agree with my opinion or not.

I post what I believe other developers would want to know and should know about Spring Batch before plunging in.

I say this all due respect to Dave and the other team members of Spring Batch. I really do appreciate their efforts but the problems I’ve raised are in some cases fundamental to the overall design. These are things that are not going to be fixed or changed in any kind of useful time frame if they are even fixed or changed at all.

Whether or not anyone has the right to criticize open source is an irrelevant distraction. The legitimacy and accuracy of those complaints is paramount.

8 comments:

Anonymous said...

Writing more blog posts will get your problems fixed quicker, no dobut.

Andrew said...

apache projects do have terrible documentation, absolutely appalling in many cases.

as for the problem of women in computing, there are 2 parts:
1. are there women with the requisite qualities for good programmers avoiding the field for some reason unrelated to the core field itself?
2. if so, how can we encourage them

now (1) is empirically true -- the ratio of women programmers has actually gone down over time, but the ratio of women entering technical subjects as a whole has risen. of couse, this doesn't necessarily prove the point -- it's still possible there is something genetic that predisposes women against computing, but it's unlikely given that they seem to do fine at natural sciences, maths, physics etc particularly compared to computing.

(2) gets into a more difficult area. given that women are avoiding the field, do we head down the uncomfortable road of +ve discrimination? that would lower standards for entry for one group, as per most other +ve discrimination programs.

however, +ve discrimination is not the only way to crack this problem as programs to get girls to enter maths subjects at schools have shown over the last 20 years.

Anonymous said...

Here's the way I see it:

The developers of the open source frameworks that you are using are not paid by you. They are offering something of (arguable) value to you...for free and they are often doing the development on their own free time out of some passion for the project. If you don't like a project, feel free not to use it. If you like a project but have some suggestions for how to improve the framework, great. Make a suggestion or better yet, get involved with the project and give back some of what you are taking.

But, to flame a project just because it doesn't fit YOUR specific needs is chickenshit. The title of your post says it all: "Spring Batch or how NOT to design an API". Yeah, I'm sure that backhanded compliment is going to have them jumping out of their chairs to address your issues with the framework ASAP.

It seems so easy to some to hurl insults at people tucked away comfortably behind their keyboards; I'd suggest you try walking into the office or cubicle of one of your co-workers and make a similar comment: "Joe's recent checkin...or how to write worthless, incomprehensible software". Let me know how that works out for you.

Andrew said...

>But, to flame a project just because it doesn't fit YOUR
>specific needs is chickenshit. The title of your post
>says it all: "Spring Batch or how NOT to design an API".

well, i'm nothing to do with spring batch. but i can say that if i was the architect of the system, i'd have found the "how not to design an API" post fantastically useful. although it's a bit indendiary, it actually contains significant content about what the author things is wrong with the API and how it can be fixed.

this type of critique is rare and valuable to a designer. most mature designers would shrug off the title and concentrate on the substance (if any) of criticism.

SNR said...

There are poets, authors, artists and musicians out there who, like open-source developers, do not do it for money but put their own time in because they want to. Yet its ok to criticise art but not software!?!

If there is an attack, which I agree with the others there isn't, its on the code not the coders and that can only lead to better code and better coders - its why its generally called constructive criticism when you provide suggestions on solutions rather than just pissing on someone's ideas.

Anonymous said...

except Spring (Interface21 generally) isn't a charity. They don't do this out of the goodness of their hearts. They make money off of service engagements, support, books, and partnerships with Accenture. To believe that Johnson et al are designing these 'products' because they just love to write code is absurd.

Criticisms should always be welcome. It's not the burden of the critic to sugar coat either. Speak your mind, enagage in debate, accept where you are wrong, reconcile at the end.

The Spring community is a group of loosely coupled independent consultants whose livelihoods depends on the success and popularity of Spring artifacts. If Spring Batch becomes unpopular, forthcoming books won't sell as much, less consulting gigs are in the pipleline, and folks have to retrain. Hence critics of Spring * will usually receive a viral response. Though in this case, the response from the Spring Batch team has actually been timid and productive compared to what I've seen from other Spring Components.

Josh Matthews said...

Your first argument about women in CS appears to circular. Please correct me if I'm wrong but you seem to be taking the results of a study which demonstrate that the ratio of men to women is much higher in CS than in other tech disciplines, and concluding that this is natural because women simply aren't as interested in CS as men. It would seem more productive to do what many universities are doing, and actually look into
1) why this is the case, and
2) how this can be changed.

Anonymous said...

From the articles I've read it seems that women find computer science educational programs to be overly competitive. Some universities are considering making their offerings more "supportive" and less competitive to attract more women.

I'm a little skeptical that this will be much benefit for anyone over the longer term.

Post a Comment