Monday, 10 December 2007

Use the source, Luke

The difference between proprietary software and commercial software is subtle. Proprietary software is essentially software that is usually for sale but which the user is not allowed to reverse engineer or modify for any honest purpose. These restrictions are usually laid out in pages of legalese that you either click-through and never read, or you read and die before you finish. Commercial software is software that is usually for sale.

Why do people consciously choose to close their software to the users in this manner? I think there are three reasons:

  • The code really sucks.

  • Trade secrets.

  • Everyone else does it.

I feel that only the first is a legitimate reason. If the only thing preventing you from distributing your source code is a trade secret, then you are on thin ice anyway. Even so, I'm on the fence about trade secrets. If the code really does suck, then distributing the source could really harm your reputation, which isn't worth it. Providing good service and support is the best you can do for your customers in this instance, atleast until you can rewrite it.

The trick is to notice that not all commercial software has to be proprietary. The restrictions do not have to be so onerous that you are afraid to look at an error message for fear of knowing what file it originated from. For my customers, I want them to feel that the software helps them, not restricts them. Open source software is geared towards giving the user of the software the freedom to atleast look at and modify the source.

The license of licenses, the GPL, goes a bit further. It lets you reuse it for any purpose, providing you make your modifications available. This opens up the possibility that someone may compete with you using your own software. This has happened, for example, with Redhat and CentOS (thank you for choosing unique names, it makes analyzing the trends so much easier!) Is that a problem for Redhat? I'm not sure, but their revenues have doubled in the last couple of years. They surely aren't dying and they must be having a good time.

But Redhat is a bit different aren't they? They don't provide a single piece of software, they provide a union of TONS of software. What about the really small guys? I'll just use the term uISV, for Micro-ISV.

Compared to their huge, monolithic counterparts, I think uISVs are different in one very important way: they genuinely care about software and solving hard problems for their customers. And I think here is where having the source available for the users can be important. If one of your customers needs to port your software to the Xbox 360, but you have neither the expertise or the economical inclination to do so, your customer should be allowed the right to do this. Even further, they should be encouraged to submit their changes back to you. Perhaps through some discount-on-next-version incentive program or just simply because then they don't have to maintain their patches.

So my license would allow the customer to:

  • Use the software

  • Modify the software for their own purposes

  • Submit their modifications back to me, if they feel it is beneficial to them

I would specifically prohibit the redistribution of my software in source or binary form because I'm not sure whats in it for me.

I think the above would work for 99% of paying customers. It extends the software support spectrum just a little bit more, which makes it more useful for them, which gives you (possibly) happier customers.

See Up the tata without a tutu by Joel Spolsky for another discussion of this subject. I don't know where he gets these titles from.


Slobodan Blazeski said...

You forget about software that is end user only, like games, players, browsers and tons of small programs like pdf ducument repairer etc that are not ment to be customized at all. They either work or not. If you plan to sell them, giving away the source will destroy every copy protection scheme you had in mind. And copy protection does make most people to buy your software. The hardened crackers and pirates will find their way but Aunt Margie will think twice about downloading password generator after last time her pc got infected with virus and destroyed all her data after visiting
At the world of applications aimed toward non-developer very few people (if any) have the expertise to fix the software, they are just interested to break your copy protection scheme and deliver warez. No matter how much I dislike airplane driving at GTA San Andreas I wouldn't sit learning how does their code work just to fix their physics scripts.
Beside that nice post. This scheme would work under certain conditions. If I buy code from some Joe Small having the source code would make a huge difference.

Sohail Somani said...

Yes, I am thinking more about software for software developers which is why I made the references I did. I agree that the consumer market wouldn't care much about having the source available if something didn't satisfy them.

As for copy protection, I once read that you should design the copy protection for your paying customers, because the non-paying customers will break it anyway!

GTA was too addictive for me, I put it in a box and deliberately forgot where I put it :-) And yes, I bought it!