Because one of the things that we do at Mystech involves software design, the question of licensing is one that has come up quite often. It’s an argument that can still start a flame war in a lot of locales on the internet with evangelists on all sides. The bottom line, for us, is that different licenses work for different programs. So, when do we use different licenses? It really came down to support.
Open Source, to us, means we want it to be community supported. We release the code out into the open and let others contribute to it. We handled the base code, but it’s probably an unfinished product when we release it. We may not adhere to our own coding standards and the software was likely something that someone in our organization was doing as part of a hobby or as part of a side project to clear their mind. In other words, we have not invested a lot of money into this product. It doesn’t mean that it won’t work and the above may not always hold true regarding the finish, but it does mean that we’re not dedicating resources beyond “hobby time” to improving the programs. These types of programs can be home or business focused and the ideas can come from anywhere.
Commercial software, on the other hand, is fully supported software that adheres to all of our coding standards and has money and development resources invested in it. We’ll continue to resolve bugs and we have two support models: one time purchase or support agreement that version upgrades fall under. We’re very up-front about which products qualify for which categories and this is where we make some of our money back. It lets us put food on our employees’ tables and keeps us doing what we love doing. Most of the time, commercial software is written to fill a specific niche in the marketplace we’ve recognized and is geared toward business.
Free software has similarities to both. It is software that is fully developed and works well, but it may have some of our commercial code tied up in it. It may also be something that we developed to meet a specific need and we don’t feel is marketable or feel that the support model for it would be too widespread. This happens most often when a program is written for a specific need and to support it would mean it would need to be rewritten to be more general purpose. Most likely though, it was a program that will eventually be rolled up in a commercial product. We want people to benefit from being able to use it, but we don’t want to give up our proprietary code under the open source model. We also don’t want to support these under a commercial model. Consider this a hybrid model.
There are opponents and proponents of every licensing model and you can see from the above that even in our own organization we didn’t agree on a single one. Licensing is also fluid. I’ve given very broad characteristics in the licensing above but you can look at any number of licenses to see that each one means different things to different people. This is evidenced by the sheer number of open source licenses. But the above generalizations work for us. What licensing models do you use in your organization?