Advertisement

The evil Open Source

Started by September 13, 2006 12:25 AM
57 comments, last by Null and Void 18 years, 2 months ago
Hello :-) I have a simple question for once. In open souce software such as GPLd software are you allowed to study the code and learn from it, possibly use concepts in future code you create without limititions(e.g don't gpl it, maybe even use in commercial application)? Also if that is the case how different must the code be? Some concepts can really only be coded in one rational or a very few ways. After all C++ isn't like the English language that can explain the beauty of a summer day in many different ways. Instead most programming languages are much smaller and "limited" to increase writability/readability.
AFAIK, the GPL only requires you to publish changes you made to the original software. I'm not sure about lifting pieces of code from there though.
GamesTopica.Net- http://www.gamestopica.net
Advertisement
the gpl allows you to USE the product in whatever way you want.
your product that USES an open lib-file (gpl) for example, can be private, commercial, doesnt need to be open source.

if you make CHANGES to the product itself (if you change the lib-file), you have to make the new product open-source and gpl it.

you MAY NOT COPY code inside the open product. this is not a lincense term, but its called "copyright".
of course, you may use concepts or what (if theres no patent on it).

what i can recommend is do the following:
take the original product/lib and change it, so that its usable for you.
then, open the source of that new product and gpl it.

then, in your project, you can USE the previous modified product/lib.
and then you can do with it whatever you like (commercial use e.g.).
Quote: Original post by Ranor
Hello :-)

I have a simple question for once. In open souce software such as GPLd software are you allowed to study the code and learn from it, possibly use concepts in future code you create without limititions(e.g don't gpl it, maybe even use in commercial application)?

Also if that is the case how different must the code be? Some concepts can really only be coded in one rational or a very few ways. After all C++ isn't like the English language that can explain the beauty of a summer day in many different ways. Instead most programming languages are much smaller and "limited" to increase writability/readability.


Yeah, well. If you copy-paste code, you could have problems (only if you happen to make millons of dollars out of that). On the other hand if you study the code in such a way that you get to understand what it is doing, then you close the code, and without copying you write your own, I don't think there's any problem there.

The only real problem here, as always, is money. If you happen to write code from the top of your own head and it happens to be simillar to the one written by some greedy bastard, and you happen to make money out of it and this greedy bastard notices that, he may try to sue you anyway.

Nobody is going to sue you if you don't have money (or nobody hates you).
[size="2"]I like the Walrus best.
Quote: Original post by Anonymous Poster
the gpl allows you to USE the product in whatever way you want.
your product that USES an open lib-file (gpl) for example, can be private, commercial, doesnt need to be open source.


This depends on what you mean by "uses". If your application links to a library that is licensed under the GPL, you must release your application under the GPL as well.
There are a lot of misconceptions about the GPL. The problem is the concept of derivative work. What is condidered a derivative work in the GPL terminology is not what is condidered a derivative work in copyright laws.

The GPL interpretation of derivative work is quite broad...
Modifying a GPL software is obviously making a derivative work.
Less obvious, but still true, is the fact that any software that is in whatever way linked with a GPL software is considered a derivative work. This is what makes people call GPL a 'viral' license: whatever it touches, must become GPL too. There are no workaround for this... for example one may think that putting the GPL code in a DLL will solve the problem, but if you read carefully the license you find that it doesn't work: your software is loading the DLL and using it, so you are creating a new software that is the combination of your and the GPL one, so you are somehow improving over the original GPL work, extending it and so creating a derivative work.

Learning from a GPL software and putting into practice what you learned is a totally different matter. The GPL covers the code, it has nothing to do with the design and the algorithms that the code is expressing. It's not a patent, so it cannot stop you from using what you learned reading the code.
Obviously if your own implementation is too similar, you're still modifying the original GPL code.
How different is different enough to consider your code different from the original GPL code? I guess that changing coding convention, indentation, variables and functions names is not enough. Even translating the code to another language is still considered a "work based on the Program".
Obviously (as the OP said) it's not always possible to implement an algorithm in a way that is different enough, but in my opinion that happens only for elementary algorithms. Chances are that such algorithms are not original anyway... What I mean is that you can find for example the quick sort implemented in exactly the same way in many GPL and non GPL softwares, but that doesn't mean that quick sort is GPL code.
Advertisement
Quote: Original post by will75
There are a lot of misconceptions about the GPL. The problem is the concept of derivative work. What is condidered a derivative work in the GPL terminology is not what is condidered a derivative work in copyright laws.

The GPL interpretation of derivative work is quite broad...
I disagree - and more to the point, I don't see how the GPL can be broader. Copyright is something enforced by law, and what constitutes a derivative work is up to the law and the courts to decide. The GPL can't place any restrictions above and beyond that.

Quote: Modifying a GPL software is obviously making a derivative work.
Less obvious, but still true, is the fact that any software that is in whatever way linked with a GPL software is considered a derivative work. This is what makes people call GPL a 'viral' license: whatever it touches, must become GPL too. There are no workaround for this... for example one may think that putting the GPL code in a DLL will solve the problem, but if you read carefully the license you find that it doesn't work: your software is loading the DLL and using it, so you are creating a new software that is the combination of your and the GPL one, so you are somehow improving over the original GPL work, extending it and so creating a derivative work.
Note that none of this is "broader". When it comes to closed source libraries, I'm not allowed to distribute it _at all_ without permission, whether it's linked to or not.

Also note that there's the LGPL, which allows dynamic linking.

As to the original question, copyright covers code, not ideas or algorithms. How similar something has to be before someone decides you've copied it is ultimately up to the courts to decide I presume - remember the same question could be asked of anything, such as a story or music (surely a mere chord sequence can't be considered a copyright violation, but at what point does something become a derivative work of a song?)

http://erebusrpg.sourceforge.net/ - Erebus, Open Source RPG for Windows/Linux/Android
http://conquests.sourceforge.net/ - Conquests, Open Source Civ-like Game for Windows/Linux

Quote: Original post by mdwh
Quote: Original post by will75
There are a lot of misconceptions about the GPL. The problem is the concept of derivative work. What is condidered a derivative work in the GPL terminology is not what is condidered a derivative work in copyright laws.

The GPL interpretation of derivative work is quite broad...

I disagree - and more to the point, I don't see how the GPL can be broader. Copyright is something enforced by law, and what constitutes a derivative work is up to the law and the courts to decide. The GPL can't place any restrictions above and beyond that.

Exactly... The problem with the GPL is that it still has not been tested enough in courts, so it's still not clear if the concept of derivative work expressed in the license is compatible with copyright laws.
See wikipedia for more informations about the issues with GPL and derivative works in general.

Quote: Original post by mdwh
Also note that there's the LGPL, which allows dynamic linking.

Yes, the LGPL is generally better, but it's still not without issues. The whole point of the LGPL is that if you use a LGPL library in your software, you must give your users a chance to replace the LGPL library with a newer or modified version (see point 6 of the license).

There are three ways of doing this:
1) release your source code;
2) provide precompiled objs/libs of your software;
3) link dynamically the LGPL library.

If you want to keep your code closed 1) is not an option.
Options 2) and 3) can be used only if the library you're linking doesn't rely heavily on inline code, templates or macros. In those cases in fact the binary of your software might easily get incompatible with newer versions of the library. For example if a new version of the LGPL library contains a modified versions of an inline function, you're binary code will continue to execute the old code (it has been expanded inside your code). The result might be a wrong behaviour in the software or even a crash. Whatever happens, the user is not able to succesfully replace the old library with a new one, so the LGPL is violated.

Notice that the LGPL might be undesirable for other reasons...

The size of your executable plus the LGPL DLL is generally larger than the size of your executable statically linked to the same library. If size matters for your project, dinamically linking the LGPL library can be problematic.

Using a LGPL library, you let everyone know which technologies you're using. Depending on your project and your businness this can be more or less acceptable.

Giving a chance to replace a component used by your software, you're giving a chance to easily modify the behaviour of your product. To what degree this is acceptable depends on the circumstances, but generally that's not a good thing.
Quote: Original post by will75

you must give your users a chance to replace the LGPL library with a newer or modified version (see point 6 of the license).

1) release your source code;
2) provide precompiled objs/libs of your software;
3) link dynamically the LGPL library.


Wait. As long as the interface of the library doesn't change I don't see why you would need to re-compile your program.

Quote: Original post by will75
Notice that the LGPL might be undesirable for other reasons...

The size of your executable plus the LGPL DLL is generally larger than the size of your executable statically linked to the same library. If size matters for your project, dinamically linking the LGPL library can be problematic.

Using a LGPL library, you let everyone know which technologies you're using. Depending on your project and your businness this can be more or less acceptable.

Giving a chance to replace a component used by your software, you're giving a chance to easily modify the behaviour of your product. To what degree this is acceptable depends on the circumstances, but generally that's not a good thing.


Everything goes mooth after you realise the time it would take to you to re-write those libraries yourself. Besides, lots of commercial titles have been released for Linux using LGPL libraries and nobody is complaining.
[size="2"]I like the Walrus best.
Although the thread has been a GPL/LGPL based discussion, I'm going to address another facet of the Original Post.

Quote: Original post by Ranor
I have a simple question for once. In open souce software such as GPLd software are you allowed to study the code and learn from it, possibly use concepts in future code you create without limititions(e.g don't gpl it, maybe even use in commercial application)?

GPL is not the only open source license. There are hundreds (thousands?) of other Open Source licenses out there.

Many licenses allow you to use it in any way you see fit, including incorporating it into your closed-source application, with (or possibly without) attribution. The BSD license allowed unlimited use with attribution, and many licenses are based on that one.

The OpenSource.org licenses list has a list of 60 "open source approved" licenses, many allow integration to commercial applications. Creative Commons also has a fairly simple license system that some people have adopted, which may or may not allow what you are talking about. I really love the Creative Commons licenses, since you just pick a simple yes or no to various questions, and the end result is easy for anybody to understand.

This topic is closed to new replies.

Advertisement