Why you shouldn't base your software off open-source projects

Updated on:

Note: This post is meant for people that build, or are interested in building software. If you don't care how software is made, you might want to skip this one.

Ok, so this title is a little inflammatory. Before getting into this, I should say that I am a huge fan of open-source software. This site is built on PHP, MySQL, and Apache. We also use all kinds of open-source libraries like JQuery. This post is not an argument against using open-source software, it's an argument against building new software based off an existing open-source project.

Let me explain what I mean. When starting a new software project, you basically have two choices. You can build the entire thing yourself from scratch, or you can take code from an existing open-source project and modify it to fit your needs. For example, there are a number of web applications based on the popular open-source blogging software Wordpress. Because Wordpress is open-source, developers can easily download the source code and use it as a starting point for new applications (rather than starting from scratch).

Why would you start with an open-source project?
There are plenty of good reasons to base your project off something like Wordpress. They already have many common elements built that every website needs. Whether you need the basics like a login system or even a full blown CMS, Wordpress definitely offers a solid starting point. You can skip past weeks of tedious development by starting with a working code base.

So if open-source software can save you so much time, what's wrong with it?

Problem #1 - It's harder to make changes
The reason that open-source software is easy to start with is because other developers have already written ridiculous amounts of code. This code may be very well written, but it's also probably completely alien to you and your developers. It also probably includes a lot of stuff that you don't need. It's easy to go into something like Wordpress and make minor changes, but it can be incredibly challenging to try to fundamentally alter how a large open-source project works.

So if you're building serious software (and not just a website about your cat), you may actually save time by starting from scratch. If you start with a clean slate, that means that all the code will make sense to you, and it means there won't be anything unnecessary complicating things.

Problem #2 - It stifles creativity
This is much more important than the first problem. One of the most difficult parts of the software design process is when you start with a blank canvas. It's also one of the most important parts. When you don't have anything built, that gives you ultimate creative freedom. Your project has no form or direction, which puts you in a position to create something truly inspired. When you're designing something from scratch, every decision you make will be based on what you think is right rather than standards set by someone else.

When you start with someone else's project, you're boxed into a corner before you even get started. Sure you have full access to the code so you can make whatever changes you want, but you're a lot less likely to get creative. Wordpress already has a login page, and you'll use that as your starting point. That means that whatever you end up with for your login page will be some altered version of what the Wordpress designers came up with. You never have an opportunity to truly create something for yourself. There's almost no way to design great software when you skip the "blank canvas" stage.

I'm sure many people will disagree with my opinion on this topic. It's certainly easier and safer to start with an open-source project, but I think that doing so dooms you to mediocrity (unless you rewrite tons of code in which case there was no point).

Just to clarifying, I'm totally fine with using open-source libraries and frameworks (JQuery, Rails, etc.). I just don't think that your core product should be a modified version of someone else's core project (normally). Also, I have no problem using Wordpress or Joomla to build a basic website or blog. My argument only applies to people trying to build real applications with functionality that goes way beyond the built-in features of any open-source project.

Sign up to receive updates in your inbox

We'll send you about two emails per month with tips on how to optimize your LACRM account, and grow your small business. Be the first to hear about product updates, and beta testing opportunities!