I have to confess something. It might be controversial. Here goes. I don’t want to open source my projects. Before you start thinking I’m a Luddite let me explain where I’m coming from.
I’ve been writing, producing, and selling my music for the past 15 years. I haven’t made a ton of money (to be honest, I’ve barely made any) but I like having complete control over my creative output.
When I think of open source I think of throwing the code up on the web and losing all control of it. I don’t want to “open the kimono.” I want to hide the magic. I want to keep my software unseen. There are two distinct audiences experiencing my output: users and developers. I want to delight the former and, if there’s time, include the latter.
I am on the cusp pf releasing a new application that I have been coding non-stop for the past 3 months. I’ve had the idea for a year and only just made some serious progress on the program. If I were to release the code that I’ve been working on, I am concerned that someone who has not worked on this code as long and hard as I have will compile it and get it to the marketplace before I do.
I still have a week of debugging before I can submit it to the app store for approval. What if I introduce other contributors to my code and they change it into an application that I do not like? What kind of control do I have over my code once it’s been released on the internet?
If I’m being honest, the only real motivation in posting my code to github is to show that I can indeed code. Don’t misunderstand me, I see the benefits of getting more eyes on my code to extend the features and squash the bugs at a faster pace than I can manage by myself. I suppose I’m hesitant to be judged by other programmers.
The open source initiative lists the following popular licenses:
Why open source your software?
- More developers review your code
- Bugs are identified faster
- Bugs are fixed quicker
- Opportunities for new features are discovered
- Feedback from the developer community guides development
- New features can be added faster
- You don’t need to hire developers
- You don’t need to hire beta-testers
- You don’t need to hire debuggers
Misconceptions of Open Sourcing Software
When I first started thinking about open sourcing my software I was worried about it being trashed. During my review of the libgdx framework I learned that they use the Apache 2.0 license. The license allows them to share their code but it prevents contributors from deviating their code from its intended purpose.
Now that I understand that certain privileges of the original creator can be guarded I am a little more willing to consider releasing my source code to the public. I also understand that no one person can truly accomplish something great.
If you want to accomplish something in the world, idealism is not enough – you need to choose a method that works to achieve the goal.
Why use an Open Source Software License?
- Protect your intellectual property
- Solicit programming feedback from the programming community
- Explicitly state the rules in extending your code
Licensing my projects
I am considering a restrictive license on code that I do not want someone to make a clone of my service. I want to retain some to all of the rights for this piece of code and the services that I will monetize with it. I would use the Apache 2.0 open source software license.
Licenses I’d like to fork
On the other side of the table I have a very different view. If I find a project on github that I am very interested in, I hope to see that it has an MIT License. You can do anything with it. It is the least restrictive.
I would appreciate any feedback that someone wants to give me regarding how to control my code and make sure that someone else doesn’t take from me. I know that once I publish my code to the wider world, all of it will be exposed and I can never take it back.
I want a license that protects my work from being exploited by being repacked, re-branded, or re-purposed.