The tide of opensource

20 years ago it took a whole team to make games like Command & Conquer. Today I could get the gameplay for something like that working in a few weeks. The reason I'm more productive is that I have better tools.

I imagine it as a rising tide of tools and opensource libraries:


Poking out of this ocean is your commercial product:

The amount of work you have to do to make something is based on the distance between your tools and how much functionality you need for your application.

The ocean is always rising. You used to be able to make money selling C compilers. Now commercial C compilers are mostly underwater - sunk by their opensource equivalents.

This metaphor asks a really interesting question for startups - how far above the ocean is your product? How long before an opensource solution will sink you?

If you aim too low, it'll be trivial for any bored engineer to copy your product. Dropbox has this problem, and as a result they face competition from Microsoft, Google, Apple and Amazon. They've had to scramble to diversify their product offering to survive.

If you aim too high you'll run out of money before you launch. Or you'll have to teach the user so many foreign ideas that they'll get confused before they find the value your product provides:

wave confusing

Its also really interesting to note how uneven the opensource landscape is:

  • When engineers make stuff in their spare time, we usually want to work on technically interesting projects. So, there's a lot of algorithms and databases and not a lot of accounting tools.
  • Most opensource projects are started & run by a single person scratching their own itch, so there's lots of tools for programmers but not many tools for other professionals.
  • Most programmers aren't very good at user interaction design. As a result the UI on tools like The Gimp and Blender usually lags behind their commercial competitors.

So have a think next time you look at a project:

  • How far above water is it? How hard would it be for someone else to implement?
  • What pieces is the opensource world missing which would make this project super easy to create?