I'm wondering why some people release software as freeware, yet they don't release the source code. Why is that? I can think of some reasons, yet most of them don't make very much sense. Why would you want to keep the source closed but let the program be freely available (free of charge, not free as in freedom)?
Hmm, what comes to my mind is
- Because you want to retain some measure of control over the product
- Because you want to reserve the possibility / right to charge for the product in the future
- Because you're ashamed of your source code
- Because you want to make sure you are credited for the product, and it doesn't get stolen and re-used in other projects (of which there is always a risk when you publish the code)
One of my favorite productivity tools is freeware. I asked the author about the source one time, and he said he couldn't release it because it contains a lot of proprietary code that belongs to his employer. So I suppose that his employer doesn't mind it being used in a free tool, but that it's also being used in their commercial products and they don't want to give away the code to it.
One I don't see here yet - because the source code has value in itself, separate from the application as a whole.
If you have useful libraries that you've written, you're likely to use them even in projects that you intend to give away. That doesn't mean you're willing to give that library source code away. And without those libraries, the rest of the source code is probably worthless.
If you give away library source code that you've developed over a period of years, you're giving a competitive advantage away - very likely to your competitors.
One thing that I think is often relevant, though - that code probably includes libraries that have had time, effort and even emotions invested in them over a period of years. It would be like inviting thousands of people to read our diaries.
Good answer by Pekka, I'd add that exposing the source code may also increase your risk of exposing security vulnerabilities, which can be either an advantage or a disadvantage depending on who notices them :)
There have been 2 great answers so far but here are my reasons that I can see:
- It is more trouble than it is worth.
- They use the freemium model
- Don't feel they should
For #1, if the product is free and the person isn't seeing any profits from it, they may not feel like having to deal with hosting the source code and making sure that they update it whenever they make changes. Now, I know that it isn't that big of a hassel but who knows, it may be big enough to discourage some
For #2, if they use a freemium model, then releasing source will basically allow people to add in the features that they charge for and cost the developer money.
For #3, I think that it has been a tradition (of sorts) for Windows programs not to be open source (no facts to back me up so I could be wrong). Windows has been a closed-source platform so it isn't expected to release source for something that is free. The original question doesn't specifically mention Windows, but that is where I see the majority of free but not open source software.
I have several freeware apps for which I wont provide source code. The main reason is because they share large amounts of code with commercial applications. Consider something like a document viewer... that still needs the rendering system of its commercial cousin, a document creator. Another reason is some of the apps also use non-open sourced 3rd party components.
I provide open source code as sort of a community service idea, and as a portfolio idea.
If I was selling software directly - I don't, I'm employed in a position where the company sells the product, not me - I would more than happy to sell my software as closed source. Allowing competitors to look over my code and reduce my competitive advantage is not in my best interest, as a rule.
Put another way, I do not consider releasing software as open source to be a moral imperative.
Despite the general bad idea that security-through-obscurity is, in the malware removal field, its a constant cat and mouse game between those of us who write analysis/removal tools, and those writing cleverer and cleverer malware. Sometimes we release a tool freely to users to use, but try to obfuscate the tool's operation in order to make it more difficult for malware authors to defeat the defeat tool :)
This is obviously atypical for most software, but it's something I see all the time.