It would be great if a license could not be changed to add more restrictions later. Get tired of seeing people build a product in open source and then turn and force everyone into a new license when the see a profit in it. Too many people have contributed their time to the project and untold others have spent the time integrating it into their product to have the floor yanked out from under them.
Because I have "issues" with GPL, but I'm willing to learn why people pick GPL over other licences.
"Copyrighted, Unrestricted" means that you retain the copyright of the code/program/article, which leaves you with the right to determine who is allowed to copy it, and under which conditions. "Unrestricted" means for the time being, you allow everybody to use the code in compiled or source form, but retain the right to impose restrictions, and to change your policy in the future.
Typical restrictions would be:
- Copyright notice must remain present
- Modifications/Dereived work clearly marked as such, while retaining the copyrtight notice
- control of distribution channels (e.g. since I retain he copyright of the articles here, Codeproject just cant take them and sell them on a CD)
- Exclusion of certain uses/users
With simple terms you can make pretty sure that your code is usable by most people, without them selling it off as their own work.
GPL, on the other hand, is a much more complex licence. My biggest gripe with it is that people slap a "GPL" on their code, without understanding what it means. Second, but that's a question of taste, GPL is to much associated with religous fanatism.
"Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:
Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer.
Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution.
The name of the author may not be used to endorse or promote products derived from this software without specific prior written permission.
THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
...should be free, without restrictions. I believe that if you want people to use your code but pay for the privilege, then you're welcome to post the code on your own web site. Using CP to promote your code, if you insist on profiting from it, either financially or otherwise, is wrong in my opinion. Having said that, I see nothing wrong with specifying in the header, a request that it might be nice to let the author know what use the code was...
As far as I'm concerned, this site is one for mutual co-operation and being as most of us work for commercial organisations, it's obvious that some code will end up in commercial applications. Is this wrong and anyway, what constitutes code that can be copyrighted unless it makes no use of any external functions? For example, while I might write a function consisting of many calls to Win32, MFC, etc., can I really claim the copyright? I'm guessing that if I unwrapped all the external functions I'd used, I'd probably find that the code I'd written, was pretty insignificant compared to the wealth of code that "my" code actually relied upon.
"Oh, I'm sick of doing Japanese stuff! In jail we had to be in this dumb kabuki play about the 47 Ronin, and I wanted to be Oshi, but they made me Ori!"
Which MOS is that? Do you know if the Army has an equivlent?
When I joined the army I wanted programming, but wound up getting
"Petrolium Labratory Specialist"
You try to impress people with 'hydrocarbons' and 'knowlege of petrolium laboritory testing and operations'
With an ASVAB score of 93, I should have gotten more...
I'm 4067 Data Systems I'm sure the army has an equivilent but i have no idea what it would be. I thought all army people had guarenteed contracts I just got lucky i picked Data systems and got to be a programmer. Oh well when you're ready to reenlist maybe you should try the few and the proud.
I read recently that when a big company was bought out (it might have been a telcom, not sure), the buyer discovered they had to spend millions of dollars relicensing the software because the license wasn't transferable.
The software license was purchased. Requiring someone else to re-purchase the license just seems wrong. Because I feel strongly about this, if you buy a license to use MyXaml in a commercial app, the license specifically says that you may transfer it to another entity.
What do you all feel about restrictions on transfer of license?
Marc Clifton wrote: Because I feel strongly about this, if you buy a license to use MyXaml in a commercial app, the license specifically says that you may transfer it to another entity.
IMO, you have to be careful defining the word "entity", and you still have to place use limitations in the license... What is an "entity"? A single person, or an entire company (like a corporation, which is a legal entity)? I could see a single developer buying a license and the selling (transfering) it to a whole business entity.
I do not mind a transfer of license, but the license wording specifies the limitations on use. I always liked Borland's old "No Nonsense" license policy; it works like a book (IIRC): that one book can only be read by one person at any time. So you could install Turbo C++ on your home machine and your work machine, so you could bring work home, but the two of them could not be used at the same time. So even if the license was transfered to an entire company, it could not be used by all of its developers at the same time (at least, not legally).
Software should be used like a book. By anyone, at any place, but only by one person at any given time.
We had a similar discussion today at the company: an extern suggested to make a distinction between "PC bound" and a "floating licence" (the latter requiring a licence server).
We are in a lucky position that our product does require a hardware (and the price range and distribution market justify a dongle). So I see a PC bound licence as a reasonable obstacle for "pure" software. But making a floating license more expensive "because it allows wider use" is as sick as selling me a CD I can't play in my CD player.
What about automation? Timed scripts at work say that perform various functions with the software while you are at home using the same software.
What happens if you run a few instances of Virtual PC and load the software into each instance? It is still one person at one place running the software.
And really the book analogy only covers a subset of applications. How does the analogy apply to IIS or Apache or SQL Server where you need CALs or per CPU licenses?
I get what you guys are saying. I just think the legal definition has to be tightened up a lot and that there is a need for other licensing types. We can't just apply "Software should be used like a book" to all software.
The intent is good but intent gets abused in court.
Michael Dunn wrote: "except the sod who voted this a 1, NO SOUP FOR YOU"
I know that that definition is outdated, but you could fix it up a little. But anyway it's suitable to "Mom Software" only, i.e. a typical end user desktop application. For Server Software, the "like a book" isn't applicable.
You could replace "one person" by "one person and on one PC".
Yes, PC, not CPU. He bought a box with software, and a box with a TV to use it. He's already confused enough how many of what thingies he needs to make the software work, so keep the number of thingies out of the price of the software.
Even if it involves an Application Server, Terminal Services, etc., it should look like a book to the end user.
And I don't think you can put this down in legalese. But the intent of "modern" software licencing strays far from the book path, and this is ugly.
Well, I tried to bring this issue up a few times, and each time it seemed like no one was ready to discuss it intelligently.
Glad to see that it finally happened.
Now, my thoughts on this, for the few of you that would actually care, is that you, as the author and the person that actually DID all of the work, are the one to specify how it gets used. You should also be the one to specify if and how your work is to be acknowledged if/when it is used.
For example, if someone wrote a really nice image processing routine, they might be upset if someone used it with security camera software that followed around certain targets based on the color of their skin. Or if you wrote a pretty-damn-good spam-detection routine that nabbed 99% of all spam, you might be upset if a spam-tool author used it in their product to help their users author messages that are more likely to get through.
Also, if you use certain code in commercial products (as I do), you might want to prevent competitors from using it in their product. At the very least, most would want to be credited for your hard(?) work (even the GPL does this).
Some people would consider reasons like that reason enough not to share their code. But I believe in sharing, and once the licensing issue gets resolved here, I plan to start doing so again. (But until then I stick with my "Free Source Code License", which specifies how the code is to be used and how I am to be acknowledged if the code is used.)
When I use someone else's code, I contact them to ask if  I can use their code, and  how they would like to be credited, and I then  follow through. (They also get free licenses for the products.) I use myself as a metric for what I expect of others, so I would expect others to do the same (though this sets me up for disappointment more often than not).
Marc Clifton wrote: I would prefer if this were stated directly in the code.
As would I. But when I last mentioned something like that, I got replies of not "buying into the spirit of The Code Project", or some other similar crap.
What people seemed to miss was that authors were doing that already. Hell, even some contest winners here had their own license or license restrictions on their submissions (like GPL)! I found it quite odd that my suggesting having authors place their own restrictions on their own code was against the "spirit of The Code Project", yet it was OK for someone who did exactly that to win a contest here...!
WillemM wrote: I have tried to use many open-source components.
I know of several high-end GUI components for .NET. they are expensive closed source products. Their documentation is terrible. It's incomplete, inaccurate, and unless you use the designers, it's impossible to figure out how to use their product programmatically. I have wasted countless hours trying to get even the most simplest things working.
So, commercial components suffer the same plight. And you have to pick and choose based on support, both open source and closed.