Brian's Waste of Time

Tue, 23 Nov 2004

ApacheCon 2004 Thoughts

I'm long overdue in writing up my thoughts on ApacheCon 2004. It was a very good conference, though it wasn't really a conference. More so than last year, my first ApacheCon, it was a gathering of friends and acquaintances.

What I take away from ApacheCon, this year, I take from series of conversations, between individuals and groups. Two thoughts with pithy comments, and one thought with no particular accompanying comment. The first stretches back to JavaOne (the Thirsty Bear, really)....

David, who, when I lamented that no one seemed to know the right way to go on something, and the lack of agreement was creating lethargy, pointed out to me that picking a direction when none is obvious, doing it, trusting it, and convincing others to take action and make decisions is what leadership is all about. Oh yeah, duh =) This conversation actually occured at JavaOne, and it was a quick smack to the face then. It's been rumbling around in my noggin since, and a number of conversations at ApacheCon brought it back to my forethought.

The first thing that brought it back were a series of independent conversations on the same topic between variously, Erin, Santiago, Ted, and myself. They tended to look at the direction development was going, and looked at the problem of languages, platforms, and people. The conversations ranged from language features and feels to the pointlessness of language, to MDA, to human language (which, imho, programming languages are simply a variant thereof), to attitudes and realities of building systems. May delve into the ideas later, as I am far from convinced I walked away with the right ideas. That said, those conversations brought me back to David's comment. I have opinions about what is right. I may not know the end-state, but there are definate thnigs which seem right to me.

The way we *talk* about programming and building systems (the two are converging, thank you), the language we use to implement those (I talk Ruby, and cron, and Java, and SQL, and multicast, and TCP, and files, and functions, and components, etc) does have a massively profound effect upon what happens in those. Language and thought are closely entwined, the exact relationship is subject of too many academic papers for me to dive into while blogging -- people have said more, and more intelligently, than I can rehash here easily -- but I hold that to be true.

The attitude towards building systems matters -- it should be fun, or it should be automated -- and not automated by $20 / hour to India -- automated by $500 to Newegg. This resonates with the common feeling (which I feel too) that Ruby is fun, that *nix is fun, that open source is fun. Fun is playing, and playing is learning -- especially for geeks. Geeks love to learn, and if they find somehting fun, it is usually because it is stretching their brain. Make note of fun things -- they make you smarter (yes, that means that for a lot of fairly smart people, Doom makes them smarter, somehow).

So to take a cue from Nike, and Paul Graham's most recent essay, go do something about it.

The second pithy comment came from Craig, who asked why bother to do something if it isn't going to be ambitious. This goes back to my reinventing the wheel thoughts from months back. Dwelling on it, there are different ways of reinventing wheels. One way sets out to duplicate the Michelin but in pink. Another way looks at the Michelin, and decides it won't work very well on a tricycle. Another way looks at the Michelin and says "this is crap, I could get 300,000 miles to a set of tires, with better traction, and less road noise by..." Finally, someone looks at a Michelin and creates a log with uneven edges, but that is easier to test.

The first wheel reinvention is masturbation. The second wheel reinvention is pragmatic. The third wheel invention is ambitious. The last is ego. Ambition is in the interesting one, as it is the one that changes the world. Craig was talking about pouring effort into open source projects, ones for which you aren't really recompensed by classical means, or where you could, much mroe easily, and knowing it, be better recompensed for doing something else. Ambition changes the world, for the better. Lots of Apache projects have had this kind of ambition, and have realized it, which is why it resonates with ApacheCon.

These first two ideas are heady things, but the third underlies them. ApacheCon filled me, again, with the importance of humility. The first two can start you down the path to the dark side ;-) But humility, in the classic sense (that being the antithesis of love for thyself), allows these things to actually happen, and really, really happen big. I observed, a while back but just held the thought for a long while, that open source in the Java community is extremely different from open source in the rest of the Unix tradition. Classically, an open source project is someone's. Postfix is Wietse's, linux is Linus's, qmail is DJB's, reiserfs is Hans's, etc. This isn't always true, but is more often then not. In the world of Java though, the opposite holds true. Most Java projects, even those with a strong and identifable leader, are a team's. Tomcat, log4j, JBoss, Hibernate, Eclipse, AspectJ, Groovy, Cocoon, etc. The most successful projects are associated with a team, not a person.

This isn't because of some inherent altruism in Java programmers. It is because, I suspect, open source came to Java mostly through Jakarta. Whether you like it or not, most open source Java projects use Jakarta as a template. Apache has long held humility to be a core value. Heck, there raged recently arguments to remove all @author tags, it is taken to such an extreme. This grew out of the BSD branch of open sourced, but came to fruition at Apache. You don't get involved with Apache to get famous, you do it to accomplish things. The people who have been involved with Apache for a long time seem to adopt this, or drift (or flame) away. So ApacheCon certainly resonates with this idea.

There were also some great sessions that somehow managed to be attended despite all this =)

0 writebacks [/src/apache] permanent link