Sirsha.com

Sometimes I like to think about...  stuff... .. .
Welcome to Sirsha.com Sign in | Join | Help
in Search

Sirsha Development Resources Blog

because everyone always wants more documentation...

GPL and Pet Projects

A couple days ago, Roy Osherove returned from a week of silence to announce his new Regular Expression tool: The Regulator. It wasn't long before someone pointed out that the Sharp Develop text control he used for syntax highlighting was licensed under the GPL. However, the ComponentOne menus, etc, he used were not GPL. This isn't allowed under that license. Luckily, SyncFusion donated a replacement for the text control and the Regulator is back.

This brings up some issues that all developers need to keep in mind when coding our pet projects, especially if we are going to release the to the public, whether free or not. The GPL, in my opinion, is neither messianic nor satanic, it is a tool to be used appropriately, just like every other tool. Some people have held the license up as that which will save us all from the oppression of The Man. Others have called it every name in the book, railing against it as if it were Satan himself, coming to destroy us all.

Viral”? I say yes, but not in the way that some people at Microsoft have used the word. “Viral Marketing” is a term used to describe the way some advertising is passed from person to person, via email, etc, in ways free of the control of the person or company the advertising originated from. Basically, it works like this: Mary Jane gets/sees a cool ad/product and says “OMG! You have to see this!” and sends the link/email/whatever to all of her friends. Some of them do the same. The ad spreads, not exactly like a virus, but that is what they call it. Programs licensed under the GPL spread in a similar way, with a life of their own, free from the constraints of the person who wrote the original code EXCEPT for one constraint: this code is GPL'd, if you use this code in your program, your program must be GPL'd. This is only a problem when proprietary code in with GPL'd code or if you want to use GPL code but not share your code with the world.

That last condition is what the GPL tries to prevent: building a closed, commercial product based on work that someone else did and released under the GPL. Theoretically, if SharpDevelop were not under the GPL, someone could take the source code, make a few improvements, change a few things, and release it as a commercial product. “It's just like SharpDevelop, but completely bug-free!” I don't know that anyone would buy it, but you get the picture.

“But I don't want to share my code; I want to sell my product and keep it closed. GPL is keeping me from doing that.” This, in almost every case, isn't true. Almost every piece of code released under the GPL has a commercial equivalent and I would dare say that the commercial equivalent is usually superior. I see no reason a developer should expect to avoid paying for components if they are going to sell their finished product. Some people even pay for components and give away their product. I have a feeling Roy would have raised the money to purchase the component that SyncFusion donated and he would have still released the Regulator for free.

One of the biggest problems faced by the GPL is that people have believed the lies they've heard about it. Putting a GPL'd component on a disk beside a proprietary component does not mean the latter is suddenly “infected” by the GPL. Nor can the GPL “infect” code at all. Is the ComponentOne tool set now GPL because someone momentarily released then in a program with GPL components? Absolutely not. They simply invalidated the license and forced the program to be taken down and changed.

I don't think I would ever release anything under the GPL, it is too restrictive for my tastes. But, like all tools, there is a time and place to use it. And, like everything dealing with contracts, lawyers, etc, it should be read and understood before being used.

Published Saturday, October 25, 2003 6:38 PM by sjh

Comments

No Comments
New Comments to this post are disabled
Powered by Community Server, by Telligent Systems