Just installed it a couple of days ago, so I wrote a little about it.
I often see and read about cooperation in free software. I read about how multiple competing projects are counterproductive, about how cooperation would make things go faster...
You know, that's all wrong. I am not saying cooperation doesn't have its place, it does! It's just that not everything works better with cooperation.
I will just talk about what I know, and what I know is very little, so sorry if the examples are too tightly focused, but I am a small picture guy.
Example I: KDE and GNOME
For the GNOME fans: If cooperation were more in vogue in 1996, your object of affection wouldn't exist, so that's it for you.
For the KDE fans, the case is a little harder to make, because we assume that we would be better along if GNOME hadn't existed (I had even said that a few times).
Although it is not possible to prove one thing or the other, since history is not an experimental science, allow me to point out that KDE's goals were much smaller, its scope immensely less ambitious. It was meant to be about 20 small programs, not a multimillion-LOC thing.
GNOME was part of the incentive to move into the larger stage. Think of it as an arms race.
Let's face it, some things were developed just because GNOME had them, or even because they didn't have them yet ;-)
I assume GNOME guys can say similar things, it should be even more obvious in their case, since the project was started because of KDE (Miguel once said something like KDE convinced him that it was possible to do)
So, cooperation would have been detrimental. It's not that cooperation hurts development, but that competition fuels ambition, and ambition fuels development.
Example 2: Mad scientist syndrome
Once upon a time, Rasterman had started developing what he called 'themes' for Gtk+.
You know, I had read some of his code when he started hacking fvwm, and while I respect his graphic skills (although his taste is horrid to me ), his coding skills... well, let's say that I don't hold mine in high esteem, but his code... well, I suppose it was good in some efficiency sense... I hope it was, else it was unforgivable.
Also, I was convinced that Qt was way better than Gtk+ in any conceivable sense, so I thought... how is he doing it?
It turns out that he was replacing the drawing code for the widgets with what would later be known as the "pixmap engine". The drawing code read a config file, loaded pixmaps and pasted them over the place the widget would be.
Mind you: that scheme is hideous for many reasons, and simple badly designed (you can't change your colours in any reasonable way, for example). But... I had troubles.
You see, we are talking Qt 1.x at the time. Under the non-free-software license. I couldn't touch Qt, so I couldn't modify the drawing code.
So, how could I show Qt was better? By doing an evil hack (TM), of course. I intercepted the drawing events in the application class.
I held lists of widgets at creation, I diverted the expose events off the toolkit code, I subclassed the application class, I overrode the compiled code with LD_PRELOAD, I used almost every evil hackery I could find, and you know what? It worked. I had a screenshot to show, too.
In fact, in 36 hours I had a more advanced theming engine than Rasterman's, by some measures (I had themed way more widgets).
I showed it to some KDE guys, Kalle showed it to some Trolls, they got so nauseated by it, I still think it partly convinced them to add styles in Qt 2.x, so I wouldn't have them look at it again (It used, after all, only the public APIs).
So, where is the connection between that story and cooperation? Oh, grasshoper, the connection is that there wasn't any connection.
Had I been a cooperative sort, I would have shown the ideas to someone and been laughed at. Or I would have contacted some of the Trolls (I knew a few of them back then) and would have been convinced that it was a bad idea (it was :-)
The only reason why I coded for 36 straight hours was because I really really really was pissed off that Rasterman could hack Gtk+ and I couldn't do the same thing to Qt.
So, cooperation drives to the average. Cooperation begets bland. And while bland is good for you, if everything was bland, free software would suck immensely. Free software is not a tool for a goal, at least not for some of those writing it, it is a toy, in the good sense, something that is useful for itself, in itself, even if it does nothing. So are jewels, you know.
While a project can not be developed by a single person, a design almost certainly MUST, specially if it's a new or strange one. And some stuff really has to be done in solitude, or it won't be done.
 I really don't like the guy (old story don't ask), but hey, why would he lie about that?
 My taste is horrid to me, too.
 I never said my opinions were ver rational
 And I mean evil. Evil as in mordor-code, evil as in a design so hideous I still remember it :-)
Ok, noone will bother, but you can listen to me speaking about KDE in a Linux event last year, in Ogg Format, in spanish.
I just ran into this by googling for my name :-)
It is the first time I like the way my voice sounds in a recording, too.
Ok, here it goes. If you are not fluent in Qt programming the following entry will make no sense whatsoever :-)
If you set the contents of a QTextBrowser, and the content is HTML, it will call its QMimeSourceFactory's data() method to get MimeObjects representing, for example, images in the HTML.
So far so good.
However, I am mistified by this: While it's doing that, you can change the contents, and it will go along it's merry way, except that old data() calls are still in progress.
In other words, it acts as if it's multithreaded. Usually, in Qt, this is because someone is calling QApp::processEvents, and then you have multiple functions running and yielding to each other in the Qt event loop.
That is surely what's happeneing, but... how the hell does one stop the old data() calls????
The processEvents call is not made by me, it's done internally by some method in the QTextBrowser.... so, right now, in KRsN, sometimes you are downloading images for old stuff you saw minutes ago!
Ok, so teaser number 3 was a long time ago ;-)
I just added web browsing capabilities to it. Now, if you follow a link, it will open in KRsN's window.
If you have KDE, it will soon open in an embedded konqy, but if you have Qt, it still displays pages quite nicely, as shown here.
Except for the stylesheet, and some missing images, it looks almost ok!