Tuesday, July 03, 2007

T.H.O. Part ][

Malcolm Sparks had this to say:
I think that we a few more people with that T.H.O. attitude to prevent open-source libraries from stagnating. It is a good thing that the incumbent 'standard' library gets regularly challenged by contenders. Without continual selection and reselection, evolution dies and progress stops.

The argument that we only need just one of anything is really unhealthy. It leads to mediocrity: I present J2EE as a perfect example. One of everything you could possibly want, put it all together and what do you have? Crap.

I think you might have misunderstood me or I didn't make myself clear. My point is if you have want to do something better, then do it in the open source community. Go at it and have all the fun you want. I think the open source community needs and thrives on forward thinkers. At least there, you will have feedback, tons of people testing, and a chance for your idea to mature. But, I believe doing that on a corporate project is risky and prone to maintenance nightmares. Why? Because generally they have not gone under the same scrutiny an open source project has.

When I learn some new technique or have some crazy idea, I write it in my spare time. If I like it, I'll publish it on my site. Now, there's a lot of things that I did (like LazyCollections) that I would never do on a real project. Why? Well, LazyCollections was a chance for me to play around and try things out. I thought the experiment might be a helpful learning exercise to other people. But, the code is generally hard to understand for most developers.

I have empathy for the people that will have to maintain my code. Generally, this means I don't code things that I can, but what can be easily tested and maintained. It's not dumbing down the code or the design. Simple designs don't need tricks. They just need thought and lots of it. Simple designs are not easy and generally not the first solutions you come to. They are hard work.

1 comment:

Malcolm Sparks said...

Yes, I really misunderstood your point before, sorry about that. I totally agree with everything you said.

In the open-source community innovations are pulled rather than pushed. Open-source projects survive because they are found and deemed valuable by users of the software, rather than the authors.

99% of ideas, source code and innovations turn out to be rubbish. That's OK because the remaining 1% turn out to be really useful.

Despite this 'fact', no corporation, however large, can justify throwing 99% of its software development activity away. Only the open-source community is large and cost-effective enough to provide this necessary abundance. Open-source developers are necessarily better than paid corporate developers, but that you only see the success stories, not the failures.

You can make the same argument about those wonderful cathedrals in Europe: we can't know whether their architects were particularly insightful- we just see the cathedrals that stayed up for hundreds of years; we just see the ideas that worked - the ideas that didn't are lost to history.

Contrast that with software development in corporations large enough to mandate common 'platforms', where ideas are pushed from the centre.

You're dead right: the 'push' model of software re-use is really horrible: 99% of the time you are forced to use shoddy sub-standard libraries (often inferior to their open-source counterparts), that should have died. Even worse, you might inherit the maintenance responsibility for these zombies. And too often you can't argue about it because use of the holy platform has become mandated by inviolable company policy.

But one think I'm still confused by: what does THO stand for?