Before I gave up on becoming an educated man, I studied math. And to this day
it pisses me that noone has figured out how to make math interesting to the
math-averse. Here's a small attempt.

Let's consider the following scenario, based completely on things I know, not
things I do ;-)

Suppose that in a city called San Isidro, there is a house. Houses in San Isidro
pay a municipal tax, in exchange for the service of garbage collection, street
sweeping, tree trimming, and street lighting.

It's a very small tax, but let's say it's $100 a month because it's a nice,
easy to handle number.

Also, San Isidro is in a country called Argentina. In that country there are
several laws that affect the home owners:

You can't sell a house if you owe any taxes.

The owner has a 1% chance of wanting to sell the house each month.

Debts expire after 5 years.

If you are sued and you lose, you pay they other guy's lawyer fees.

Lawyer fees are capped to 25% of the money being disputed.

Lawyers are reluctant to help you sue someone if they get very little
money (defined as less than $2000)

The Steady State Theory says, in rough
terms that the universe has been and will be more or less as it currently is, because there
are parallel processes of creation and destruction.

So, galaxies exhaust but then there are new galaxies, and the thing, as a whole, remains
unchanged, in a way. Sure, it's not the same galaxy, and nothing that was in the old
galaxy remains, but if you avoid specifics, things are the same.

I feel the same thing happens in the free software universe. The two forces are reaction
and features.

Reaction is the creative force. Most, if not all, free software is reactive. It itches,
I scratch, scratching is reactive. There are many examples:

There is no free desktop! Let's create KDE!

KDE is not the right kind of free, sort of! Let's create GNOME!

KDE and GNOME are too heavy, bloated and whatever! Let's create XFCE!

XFCE is not as lean and mean as before! Let's create LXDE!

LXDE is (we'll find something) let's create WHATEVER-DE!

This even happens within a project:

Hey, we created KDE!

KDE 1.x has no object model and GNOME does, let's do KDE 2.0 on CORBA!

Hey, that sucked, let's do KDE 2.0 on DCOP and KParts!

Well, that's old an crufty, let's do KDE 3.0 cleaner!

KDE 3.x looks old, let's throw all the UI away and do KDE 4!

And I am sure those familiar with any software product that has lived
long enough to go through major rewrites and upheaval can do similar
lists.

However, sometimes, the complains just don't go away.

Netscape 4.x is slow and crufty! We rewrote it as Mozilla!

Mozilla (SeaMonkey) is slow and crufty! We rewrote it as Firefox!

Firefox is slow and crufty! We wrote Chrome using webkit!

And guess what people say about Chrome? It's slow.

So, the lesson there seems to me that writing a lightweight, generally useful,
web browser is impossible. Why? Because of features.

As projects age, they grow features. Like the strange ear and nose hair men start
growing in their 30s, features are a fact of the lifecycle. And with features come
code, because that's how you do features.

And code is a liability, as (I hope) you all know. The more code you have, the
more expensive it is to add things, and to be swift about improving your
application. Most successful projects die, or grow senescent, hobbled by the weight
of their features.

So how does a project stay young? I can think of a few ways.

It may have a benign (or evil, for that matter) dictator, with the right
amount of hostility towards features (Linux). It may be so exquisitely
modular that features don't couple with each other (emacs). It may
reinvent itself every 5 years and throw everything away (KDE). It
may have a very clear focus on one feature and a culture around it
(Bacula).

And for each of those mechanisms, there are incountable examples of projects
with too annoying dictators, projects overengineered to absurdity,
stalled rewrites that never release and absolute focus on a feature noone
cared about.

In Nikola my static site/blog generator,
the Tag pages used to just be a big list of titles linking to the posts in the tag.
Now they can (optionally) look just like the blog does, but filtered.
Check it out.

Minor tweaks still needed (like, mentioning the tag somewhere in the title),
but the basic functionality (filtering, pagination, layout, etc) is complete.

To enable it in your site, just use master from git and enable
TAG_PAGES_ARE_INDEXES = True in your conf.py.

I found a camera today at home, and then it hit me: this was the camera
we took to Istanbul, dropped on the floor, never worked again, and I
never found after we came back! And it still had the SD card in it!

So, here are the pictures (not even filtered), so family can see them.