I've been thinking about what drives the core developers of successful open source projects, or in other words, what keeps the projects going. These are just my own thoughts, they may or may not be correct or applicable for any purpose, YMMV.
Being done by human beings, open source projects depend on those people being motivated. In general, people are motivated by similar things, and those, I think, are in open source projects distilled to the following top 4 motivators:
- ego / desire to control / having something to prove - people driven by these motivators will do things simply because they know they can do it better / best or their need to do it in their own way, regardless of what already exists and usually without looking around to see if something similar already exists. This correlates with the NIH syndrome.
- accidental resposibility - this is about projects which have begun for whatever reasons, but the author became, willingly nor not, "stuck" with them. The project may be made as a university course, or as a quick patch to satisfy a temporary need, or was a part of a bigger project but only this part was released because it was "generally useful", and the author(s) either don't have anything better to do than continue maintaining it, or are incapable of saying "no" to users' requests, or simply cannot let go.
- money - someone's paying for the development and / or support, or there is another way which keeps the money flowing and the developer(s) financially afloat. It might also be that the project is saving someone money, same difference. This is the simplest motivator.
- altruism / filling a niche / scratching an itch - someone says to himself: "well, this ought to exist, and I can make it, so I will". I have a feeling that this motivator eventually degrades to one of the above, but is distinct enough that I'll include it.
Practically all open source projects I use (excluding niche or unpopular ones) have a neat history following a path comprising of some of the above points. I.e. at some point in history, the majority of the developers might have been motivated by X, but then they became motivated by Y and Z.
I notice that for most, #3 is the "exit node." Once the project's core authors become motivated mostly by #3, the project either stops being open source, or gets aquired by a big industry player which may or may not pay lip service to open source, or the majority of the developers get employed or in other way financed by big players.
Here are some examples:
- Apache - began in the dawn of Internet, as a successor to the NCSA server, because there was either nothing else available or everything else sucked more or was expensive. So clearly it began as #4. My estimate is that it followed a path like #4 - #2 - #3, and I think this particular path is characteristic of most of the best open source projects.
- PHP - similar, but not the same: #4 - #1 - #3
- Linux - #1 - #4 - #3
- MySQL - #4 - #1 - #2 - #3
- Java and Go - #3 - #1 (of course, it might be the other way around ;) )
- OpenOffice / LibreOffice (from the beginning of its history as StarOffice) - #3 - #4 - #2 (an unusual path)
- OpenBSD - #4 - #1
- DragonflyBSD - #1 - #2
Do you agree?