A profitable alternative to open source
How about selling software with source code included?
I think Joel does this with Fogbugz & certain open source licensing allows you to do this. (GNU maybe?)
Joel has to do this with FogBUGZ. It is written in ASP, so can only be distrubuted as source code.
Speaking of which, I always wondered if there's a serious performance hit between calling a compile binary (eg. written in C/C++) as opposed to running scripts whose interpreter is already loaded (either because it's loaded as a module when the www server starts, or it's compiled inside the www server itself)?
We sell our source code as an (expensive) option. Then we make a fortune charging extra support to the companies that break our code.
"We sell our source code as an (expensive) option. Then we make a fortune charging extra support to the companies that break our code."
Playing with the source code of a commercial app is like buying a car and then fiddling with the engine to get it to work because it skips a beat every now and then or something. Thank god software is the only thing that comes "severely" tainted with bugs in some cases.
I remember that when Bell Northern sold a packet switched data network to the Federal Reserve Bank, the Feds got a copy of the source code; but they (the customers) weren't allowed to change the source code (doing so would void their support contract).
Alternatively, you could write in the contract that the source code is kept with an escrow, in case the company goes under, or, in a one-man shop, you get run over by a car. Combined with showing your customers that you are using well-known tools to develop (ie. they won't have much trouble hiring a company to take over in case of trouble), that should solve the issue.
The Sleepycat model might work pretty well. The code is freely available. Apps linking against it can't be distributed unless the source code is made freely and easily available. If you don't want to do that, you pay Sleepycat for a license. The license cost isn't that bad, in that it is cheaper than paying somebody to write and support a high availability, reliable ISAM storage engine for you. For me, with a software package that was only lightly distributed, distributing the source was a lot more practical.
" you could write in the contract that the source code is kept with an escrow, in case the company goes under"
Your suggestion is more about breaking the tradition of distributing open source software free of charge than taking issue with the idea of distributing source code, of course, because surely you know that there is nothing in any of the various licenses that prevents open source software from being sold. It has simply been distributed free or for the cost of media like CDs for long enough that free of charge is often associated with free software.
If you can help it, place as much of your application into meaningful and reusable DLLs. Offer your users to use it. If you properly engineer your software you should be able to separate the business logic from the utility libraries, that way you could decide what you want to license/show-source and to whom. You may license the utility libraries (say in a POS software, the printer library) to printer makers so they can study it. You may want to license the business logic to VARs. You may want to make available the docs for the DLLs (and info on the scripting engine) to the power users. By making this arrangement you get some of these customization needs/need to see requests met without everyone seeing everything for no apparant good reason. You should make it easy for the end users to build the end library by itself using Visual C++ without any problem and plug in any updates they've made. Use some kind of plug-in architecture. However there should be a mechanism for to your software to report to your head office that the application in question is no longer "kosher" and all warantees are null and void (if the customization warants it). You may also want to write a license that makes it easy for you to buy the innovations made available by your user base so that any cool updates made to your software has a chance of making it back into the original software.
In response to the original question "How about selling software with source code included?"
Fred, yes, sometimes scripts can run faster than compiled programs because the interpreter is already loaded. Run time vs startup time is something to consider as well - in unix, if the executable is already running as another process, new instances of it will share the code segments and merely create their own stack and heap.
"It sounds like the idea of people making software because they enjoy doing so and distributing it gratis is quite disturbing to you"
Open Source is not a software distribution method, its simply a licencing model.
The Great Code C++ Beautifier works under this model. I use it all the time, and I keep thinking it would be good to get the source code for a nominal fee ($19) to upgrade it a bit for some of the newer C++ features.
Fog Creek Home