At the risk of sounding like a raving lunatic, I decided to come up with a space-inspired taxonomy for characterizing OSS projects. I came up with this after kicking around GitHub over the weekend trying to make sense of some new projects. Recently there’s been a huge influx of corporate-sponsored OSS projects that are released with a lot of fanfare. While there’s a lot of good stuff happening in OSS land, it is also difficult to figure out which projects are truly “vibrant” open source projects and which are simply one engineer’s solo project. While GitHub makes it easy to track things like a network, number of forks, etc. These metrics are still something of a popularity contest. When a company puts 40 projects in a GitHub account, what I’d appreciate is some upfront statement: “There are our four major OSS projects, and the rest of the repositories with silly names are just small projects that plugin into our own infrastructure.”
As an exercise in lunacy, I decided to throw together a very flawed OSS project size/health/community analogy using space. You can classify OSS projects using the following classifications:
Comets: Periodic Celebrities / OSS Projects that Won’t Last
Some comets burn out, some comets show up every few months or years and make a lot of noise attracting attention and contributors but ultimately returning back to the desolate reaches of the Oort cloud for a few months. I’d name some OSS comets but then this post would attract a whole army of comment haters. If you find yourself attracting a community, losing a community, then attracting a new community, then losing it – you are in a dangerous orbit and you are a comet.
Asteroids: Where is everybody? Who’s running this project?
One person OSS projects. Projects that are not completely connected to a community. Projects that look substantial on radar, but then appear to be abandoned upon closer inspection. Projects not large enough to attract a community (or in this case an atmosphere). The majority of GitHub is comprised of a series of asteroid belts.
Think RubyGems, some RubyGems are so important they are moons of a planet (activesupport), or even planets in a system depending on your perspective (rails), but a lot of RubyGems are just one-person forks of someone else’s codebase floating around without a lot of discussion. If you’ve ever found yourself trying to contribute to an OSS project only to find no response, there’s a good chance that you’ve stumbled upon an asteroid.
If you work for a company that just dumps OSS projects out there but doesn’t provide much in the way of support, you are effectively generating more asteroids. Asteroids can be very useful to a consumer of OSS, but when you take on an asteroid, when you start mining that asteroid for minerals, you own the whole thing. If it breaks you have to fix it. Also, if your healthy project (your planet) depends on an asteroid, you better keep track of it, or it’s going to impact you at some later date.
Planets: OSS Projects with an Ecosystem
Tomcat is a planet, and on the Tomcat planet live thousands of developers. If something starts going wrong with Tomcat, the planet, a whole army of people show up to fix problems. If someone wants to do something drastic to the planet, there’s a whole community which consists of that planet and any associated moons that show up and register an opinion. Taking care of a planet is tough work because there are so many interested parties.
This is the ideal size and scope for an OSS project. Something large enough to attract a population, something large enough to sustain an atmosphere. Yes, your planet is going to go through seasons of activity and inactivity, but there will always be signs of life on your project (as long as you do things like monitor the climate and make the necessary adjustments).
Moons: Your planet’s plugins.
Plugins for larger projects are moons. Maybe. Moons can gain so much velocity that they need to be rocketed into separate planetary orbits. Maven plugins == moons. Gradle plugins == moons. Can’t think of anything more interesting to say about moons, so I’m moving on…
Systems: Substantial OSS Projects Revolving Around a Central Idea or Project
While Hadoop itself may have been a planet at one time, you can consider the entire Hadoop ecosystem to be it’s own system. Or, maybe Hadoop is a planet in the Map/Reduce system. Maybe Hadoop started out as a planet, it quickly aggregates many moons. It underwent a sort of ignition point and became a star itself?
This may be where the whole analogy breaks down because if Hadoop is a star, what then is Hive? A planet? You know what, I don’t know. It’s an analogy and it’s imperfect. Maybe HDFS is like a singularity that tunnels between dimensions.
Now I’m just being facetious. You get the gist.
Listen and you’ll hear Cosmic Background Radiation? That’s the constant bickering between proponents of BSD-style licenses and proponents of the GPL.
What is Dark Matter? Some people are convinced that OSS is dominated by corporate influence. This influence is often very visible, but it is also something that is difficult to keep of track of because it has a weak interaction with mailing lists.
What then is the Apache Software Foundation? The Apache Software Foundation is like the Federation. It spans many systems and dominates certain galaxies. Except they often have a hard time deciding where to go next because none of the ships have a captain. Sulu can stand up at any time and say, “Kirk I’m going to have to -1 that order.” (That was a joke ASF people… that was a joke.)
Here, watch a YouTube video of Carl Sagan…