I have always thought that Open Source is a good thing: people learn from source code developed from others. People can contribute to improve things and fix bugs. All these are really important elements of the Open Source hype.
One of the reasons for promoting Open Source is indeed the fact that it can be reasonable to assume that if you pay for a software you have the right to have both binaries and source code.
Open Source licenses have been developed in an historical context where developers (and researchers) were held hostage of Software companies selling software at high prices without giving the source code. Thus these licenses have been designed to protect the user from Software companies. This is, for instances, one of the roots that Stallman indicates of the GNU initiative.
Although the whole OS initiative tend to separate the issue of having both binaries and source code from business, OS users and investors often appreciate OS software because is free (free of charge, not in the sense of freedom). However it is indeed difficult to do business on OS source because if you get OS software you can redistribute it. Many claim that you can sell services based on OS software, but this is not always possible.
Anyway the actual OS licenses retain the authorship and few other rights to the source code developer. This makes perfectly sense (or not, I don't know really) in the case of a Software company, but what if the software developer is an hobbist? Is it right that code developed by people for free because they believe in OS ideas must see their software used by people making money on it?
I think that OS licenses are designed to protect only software user rights, not those of developers. This was completely correct when the Software was essentially developed by companies: they don't really need protection :). But nowadays we have many brilliant guys that contribute to OS for free and they have few chances to see their work remunerated.
Moreover often hackers aren't really good at evaluating the "commercial value" of a software: they look for challenge and glory. A small (but genial) piece of code is considered not worth of attention by many hackers whereas other people may find it really valuable.
Thus I think that we must find some way to change licenses in a way that protects both software makers and users.
Perhaps the real point about software is that having access to source code is a completely different dimension with respect to business. We can figure out commercial software released with source code, and non commercial code distributed only in binary form (I have examples of both situations).
When Microsoft released Rotor (a consistent drop of CLR source code) under the so-called "shared source license", I thought that this license could have been a good start. Of course Microsoft didn't released part of .NET source code under OS license: they sell software (really? I didn't know...), so they want to have commercial rights on that source code. As a result the Shared Source License has been designed to give all the rights over released source code assuming non-commercial use of the software.
I thought positive that SS license was designed to separate the issues of how to use source code from its commercial use. Thus I started to use a modified Shared Source license for my software.
Few months ago I released BDB#, a .NET wrapper (http://bdbsharp.sscli.net/
) for the Berkeley Database, under the modified SS License. After few months I've been contacted by a software company asking for commercial use of the library. They saw the library, they liked it, and they were ready to pay for it.
They offered some money for having a commercial license of the software, and asked me why I didn't put the library under some OS license. At that moment I realized that the SS License was a good starting point for finding an agreement for using the software:
- they had to do something for having a commercial license
- I couldn't ask too much for the library: SS license allows you to read the source code to make your own implementation
The license was regulating both actors involved. Of course I realized immediately that the company wasn't getting millions out of the use of BDB# so I granted the commercial use without asking for money (that they offered). However the commercial license requires that the company contributes to maintain the library. They liked the idea so they have accepted and BDB# has been greatly improved since then. They contributed to improve the library that they use, discussing several issues with me.
My take away from this experience is an important one: perhaps Shared Source is a good compromise between software makers and software users. Software makers cannot ask too much because users can see the software and go for their own implementation (if it is worth); software users can decide to make or to buy.
Of course this dynamic is similar to dual licensing: it is a well known technique for companies releasing software under OS license and under a commercial license. Companies look for the commercial version of the license because OS licenses tend to be too "Open" and some (like GPL) have a viral nature that isn't really appreciated by industries.
With Shared Source license you declare that you are interested in a dual licensing approach rather than relying on side effects of OS licenses.