Michael F. Collins, III

Fair Use Licensing and Open Development

My ultimate career goal is to build and sell my own software products and services, but I want to do it in a fashion where I can develop software openly and let others see the source code that goes into a product while still protecting my commercial interests and ownership. In this post, I look at the different options and how fair-code may help me to achieve my intended goals.

I’ve been developing software professionally for over thirty years now. I have done a lot of programming over that time and built a lot of applications. I just crossed fifty years of age on January 31st. In my wildest hopes, I dream of going at least another thirty years. But while I enjoy contributing to the success of others and building software that customers enjoy, my biggest hope and dream is that someday I’ll finally sit down and start productizing my ideas, maybe build a company around them, and end my career with a string of successful software products that people will love. I don’t know that I ever want to fully retire. I love doing what I do and I want to build things as long as I can.

My main struggle when it comes to working on my own software products is that I don’t want to do it in isolation. I don’t want to be alone on the journey. I love the collaborative aspect of developing software. I love the feedback loop and getting ideas from my team not just on how I can make the product, but how I can make the source code better.

As an independent application developer, if I go with the traditional model of commercial software development, I can share the built application. I can host a web application on a secret domain. I can publish mobile applications and give access to it using Apple’s TestFlight service. But as a creator, I don’t feel fully satisfied with this closed approach. I want to be proud of the finished product, but I also want to be proud of the source code for the product as that’s the best part of the product. The product is great, but I want people to see what went into the product. I also want peers to be able to see what I built and learn from what I have done to improve their own products, or to learn and grow by using my code as inspiration for their continuing journey.

But the modern market has only given us two real models for software development: open source and closed source. Open source software uses open licenses such as the MIT License or the Apache License which allow for open sharing of source code, but also allows for other developers to take others work and commercialize it. There’s also the dreadded GNU Public License which is viral and infects everything that it touches, making everything free and open, which isn’t a bad thing, it’s just hard to make money off of that.

On the other side of the market is closed source licensing. In this model, source code is tagged as proprietary and confidential and is kept as a trade secret. Disclosing the source code for the product is a bad thing and exposes trade secrets to others to steal. People get to pay money to use the product, but they never see the source code. People can provide feedback and input about the final product, but they don’t get to see how the sausage is made.

As an independent software producer, I ultimately want a business model where I can earn income from the products that I produce. This will help me to support myself and will ultimately help me continue to support my software as well as produce new products. As a software developer, programming is my art, how I express myself, and I want to share that part of me as well. I want people to appreciate the effort and creativity that went into my products. As someone who is interested in mentoring and growing others, I also want people to be able to use my source code to advance their skills. I don’t want people to steal my products or ideas and create competing products, but if I build a really cool control or implement a genius algorithm that can help someone else out with their product that doesn’t compete with mine, I’m not necessarily against that.

I was generally interested when I came across the Fair-code website. Fair-code defines a model where source code for commercial products can be shared, while protecting the economic and commercial rights of the original author. Software products can be developed in the open, but without having to give up the legal rights to solely be able to be compensated for the use of my products. Others can use my code for non-commercial use and internal business uses, but nobody else can sell my product. Individuals or companies can change my source code, and thus my product, for their own uses, but they can’t share those changes with others and make money off of them. Fair-code software licenses are being offered for many software products now:

The other trend that I’m seeing with some of these products is legally differentiating features that can be used under the fair-code license and enterprise features where the source code is still available, but they can’t be used under the fair-code license.

The logical argument against fair-code is that fair-code does allow individuals to take my source code and use it for non-commercial use. So, for example, if I create an iPhone application and sell it on the Apple App Store under a subscription license, someone that doesn’t want to pay me for the subscription can build the application themself and run it on their iPhone without paying me. Yes, they could do that, but will people, or the majority of people, really do that? If I build a mobile application that has a cloud backend required for the mobile application to work, is someone really going to spin up the Azure infrastructure and pay the fees to host the whole SaaS solution for their own personal use? Unlikely. It’s probably going to be cheaper for them to just pay my subscription fee and leverage the cloud services that all of my subscribers pay for. But it is a possibility.

I still have research to do on this topic, but fair-code sounds like a reasonable and useful approach to product development that achieves my goals. I want to be able to build products in the open and let people who are interested see what’s inside. I want to sell my products commercially to support myself and my family, and to provide me with the income to invest in new features and new products.

Last modified: March 11, 2025 9:13:49 pm MST

comments powered by Disqus