GPL violation

SNL

New Member
Sorry for dragging this into the public, but I've been trying by email for two months now without ever getting an answer. I've even offered to visit your office in person without getting any reaction.

What I was trying to contact you about it to speak about one of the gray zones of the GPL - the Eraser DLL and your ideas about its usage. According to the GPL FAQs, dynamic linking of monodirectional main functions is a gray zone. Linux distributors like Novell see this kind of linking as not combining things one piece, while on your source page, you post a different opinion. Here's your exact requirement:
Please notice that any application using the Eraser library must be licensed under GNU GPL. Yes, this is intentional.
And here's the the important part of the GPL:
Activities other than copying, distribution and modification are not covered by this License; they are outside its scope. The act of running the Program is not restricted

We've got two different things here - on the one hand distribution, on the other hand usage, both contradicting between download/installation license and source code page license. Someone may add support for your library without distributing it, which, according to the GPL (visible to any who installs it) would be fine, with your addition (not visible to everyone), it would be not.
I strongly urge you to either remove the restriction, which, while not violating the scope of the GPL, violates its expressed idea on unrestricted usage; or add the restriction to the download package as well, so that every user of your software will at least notice the restriction - otherwise, you have a case of two valid yet conflicting usage terms!


Well, what I was trying to ask you about was actually usage of the Eraser library from Spybot-S&Ds file removal routines, as that was requested by some of our users. We would not distribute your library and would only call the main function of the library, thus wouldn't be under the GPL scope, but would still fit into its terms of dynamic linking if we would. Here's an excerpt from the GPL FAQ about this case:
If the program dynamically links plug-ins, and they make function calls to each other and share data structures, we believe they form a single program, which must be treated as an extension of both the main program and the plug-ins. In order to use the GPL-covered plug-ins, the main program must be released under the GPL or a GPL-compatible free software license, and that the terms of the GPL must be followed when the main program is distributed for use with these plug-ins.

If the program dynamically links plug-ins, but the communication between them is limited to invoking the `main' function of the plug-in with some options and waiting for it to return, that is a borderline case.
Now you probably understand why I'm insisting on your declaration in the case mentioned first: if a user just downloads and installs Eraser, we would be fine. If a user would by chance look into your Source page, it would be a violation. Personally, I didn't see the Source page before writing code to support the Eraser library, so I as the author of Spybot-S&D would just fall under the GPL, allowed to use the code as intended. But if you told me I was a liar and did see it before, we would have a draw.

I could also just go ahead and write a proxy library under the GNU GPL. This library would fullfil your requirement of being under the GPL as well, while I would not put any usage restrictions that would go beyond the GPL on it, so I would be allowed to use that. Still want to talk with you about it though, since that's what the GPL, in part 10, says would be best ;)

And sorry for bringing your license conflicts into the public, I would have preferred to simply discuss this with you by email, or even in person (hey, we're both working in the same town even!), but you weren't answering ;)
 
Hi SNL

Spybot is a great program ! I personally have used it for years now and I really appreciate your work !

I am sorry you are having a problem contacting Garrett, I am sure he is not ignoring you but he doesn’t check back here much nowadays, I believe he is busy at work etc.

Have you tried to phone him ?

Speaking personally and not on behalf of Eraser I couldn’t imagine there being a problem with Spybot using Eraser code at all. They are both free programs after all, but I do understand your concern.

Are you aware that Eraser V6 is under construction ? You may want to hang on a while and incorporate the new code into Spybot. If you contact a member here called Joel he will be able to discuss things in more detail with you.

Anyway I am sure Garrett will notice your thread soon and contact you.

Thanks again for Spybot, it really is a great program (especially the Halloween version).
 
Hi Overwriter,

Thanks for your answer :)

We've recommended Eraser for years, need to give back the praise!
And we wouldn't intend to offer something that would really "compete" in any way with the Heidi.ie Eraser. You might have noticed that the first 1.5 release even didn't have any "shredder" any more - we removed it to focus more on the main purpose, malware removal, to make the user interface simpler to use, and reduce memory consumption. Many people complained that they're now missing it (brought it back shortly in the HE, but it'll never make 2.0), and we of course recommend Eraser to them ;-)
The point where Eraser would be nice is just in malware and usage tracks file removal. I guess it was requested by users especially for the later. So usage would be completely transparent - when Spybot-S&D would fix anything on its results list, it calls a delete method in tools.dll, which already has a dozen methods available to get rid of files locked by various malware methods; and if Eraser would already be installed and the library found, it could be used as the last step to actually get rid of any files, no user interaction at all required.

Btw, to share my Eraser-related work, I've added the headers I translated to Pascal here on my blog. As I said, I would only use the most basic calls really, so it's far from complete, but might give other Pascal developers a start ;-)
 
Hi SNL. :)


Thank you for your kind words regarding Eraser.
SNL said:
if Eraser would already be installed and the library found, it could be used as the last step to actually get rid of any files, no user interaction at all required.

Did you know that Eraser V6 is going to be modular ? What I mean is that the whole new design of Eraser will be “plug-in” based, meaning that anyone can write their own plug in for Eraser and share it on Source Forge.

I was just wondering if there could be a Spybot plug-in (perhaps written by yourself) that could bring the two programs together. If Spybot users wish to have all the options Eraser has regarding file overwriting then they could download the Spybot plug-in or perhaps this could be installed when they install Spybot ? Actually Eraser used to install another program called DBAN when you installed Eraser so perhaps Spybot could have an option in the Spybot installer to install Eraser ?

I don’t want to belittle the importance of overwriting patterns particularly as I am an Eraser moderator but wouldn’t Spybot users be very secure even if you had a single random overwrite for their usage files ? Actually for the paranoid perhaps a triple pass but that should be all they need, in which case you wouldn’t really need Eraser.

I would however like to see the two programs develop together, both are essential on any computer in my opinion.

Thanks.
:wink:
 
Hi,

Have PM'd you my mobile number.

I have no issues using eraser in Spybot.

I believe the 'public' view would favour the incorporation of Eraser into such a product.

However if Spybot becomes a commercial product then we have an issue.
Basically we need to honour the spirit of the GPL.

Contact me by phone and we can discuss more. I am glad you posted the message as I would have sought the views of the Eraser helpers/users anyway. Once we have agreed a path we can put a reply on the forum.

The restrictions in the license are there to stop the mass proliferation of Eraser.dll in an uncontrolled manner.

Garrett
 
Either way we still need t clarify the license.

I believe the issue we have at hand here is the term "usage". To "use" a program can be in developers terms, link; to endusers terms, execute. So far "linking" to a GPLed library makes your program GPL. So I'd have to check with someone with a tad more legal expertise.

Of course if Garrett grants you an exception to the GPL, it wouldn't really affect you. But we need to clarify it anyway because it may seem a little confusing fr people and we may be compromising our protection.

If my post didn't make sense... let me know I didn't really read the whole post.

Joel
 
SNL said:
Well, what I was trying to ask you about was actually usage of the Eraser library from Spybot-S&Ds file removal routines, as that was requested by some of our users. We would not distribute your library and would only call the main function of the library, thus wouldn't be under the GPL scope, but would still fit into its terms of dynamic linking if we would. Here's an excerpt from the GPL FAQ about this case:
If the program dynamically links plug-ins, and they make function calls to each other and share data structures, we believe they form a single program, which must be treated as an extension of both the main program and the plug-ins. In order to use the GPL-covered plug-ins, the main program must be released under the GPL or a GPL-compatible free software license, and that the terms of the GPL must be followed when the main program is distributed for use with these plug-ins.

If the program dynamically links plug-ins, but the communication between them is limited to invoking the `main' function of the plug-in with some options and waiting for it to return, that is a borderline case.
Now you probably understand why I'm insisting on your declaration in the case mentioned first: if a user just downloads and installs Eraser, we would be fine. If a user would by chance look into your Source page, it would be a violation. Personally, I didn't see the Source page before writing code to support the Eraser library, so I as the author of Spybot-S&D would just fall under the GPL, allowed to use the code as intended. But if you told me I was a liar and did see it before, we would have a draw.

I could also just go ahead and write a proxy library under the GNU GPL. This library would fullfil your requirement of being under the GPL as well, while I would not put any usage restrictions that would go beyond the GPL on it, so I would be allowed to use that. Still want to talk with you about it though, since that's what the GPL, in part 10, says would be best ;)
I don't understand - what is the Source page? We're using SVN now.

Joel
 
@admin: I'm in Germany right now, so please apogolize if I don't call right away :)
Regarding commercial product, I need to mention that we have this special networked corporate edition as well, in case you didn't know about it. Would make sure in the build chain that these wouldn't link to Eraser of course.

@Joel: this source page - if even you don't remember it, that's another reason to put that announcement into a more visible place ;-) The GPL FAQ has an example how such a term can be added to the GPL itself in each file.

Joel said:
So far "linking" to a GPLed library makes your program GPL.

No, actually not ;-) See my quote from the official GPL FAQ above - there are grey areas.
I'd like to incorporate GPL-covered software in my proprietary system. Can I do this?
Can I release a non-free program that's designed to load a GPL-covered plug-in?
Novell: The GPL: Understanding the License that Governs Linux (that imho was before they sold their soul to Microsoft ;) )
 
http://www.gnu.org/licenses/old-licenses/gpl-2.0-faq.html#GPLInProprietarySystem said:
However, in many cases you can distribute the GPL-covered software alongside your proprietary system. To do this validly, you must make sure that the free and non-free programs communicate at arms length, that they are not combined in a way that would make them effectively a single program.
Linking is combining them into one single program, because without the library your program won't start; unless you explicitly load.

I believe that Borderline cases, in this context, means that it may or may not rule in your favour in the court of law because no precedent has been set by a judge. There have not been enough cases appearing in a court to set a general rule, and when it is "borderline" it does not mean that it is safe. One must also remember under which jurisdiction the cases is being heard in; some states enforce copyright (or whatever you wanna call the GPL - contract?) more stringently than others. The lingua franca chosen between the parties who originate from different states is also important in giving the final decision.

I believe my original interpretation that linking to a GPLed library makes your program GPL stands. Of course, I am not a lawyer.

Joel
 
And about the source page... I need to get Garrett to get rid of it. I didn't design the site, I just joined the project a month or so ago.

Also please don't get me wrong; I'm not trying to stop Spybot from using the Eraser library; rather I am merely attempting to provide a neutral POV and a speculation on how a case in a court of law will be heard.

Joel
 
Well, I don't find any court discussion necessary, since I wouldn't implement anything without an expressed permit ;)

So my arguments about the GPL are really purely theoretical ;) And continuing there, to answer your description: if the program won't start without the library, that is static linking. Static linking is indeed effectively a single program; I was speaking about dynamic linking though. Dynamic linking means the program works, and when it needs the library, it dynamically loads it, or if it isn't there, it displays an error (still more or less a single program then) or uses alternatives (in which case it's quite optional).
And if a program does not need the library for anything, except for improving an optional feature, that's imho not a single program ;)
 
Not really... under Windows you can set a DLL to be loaded at program load time and that would still be "dynamic" linking, although you won't be able to work without it... somewhat like MSVCRT.dll.

I believe by using the external directive when declaring a function in Delphi would also force runtime-loadtime-dynamic linking (or static linking... whatever lol). The difference is there because for C++ static linking does exist (as is with Delphi) and it simply means separate compilation but single linking....

=shrug= The GPL is all about terminology I guess... =sigh= the wonders of legalities....

Joel
 
Back
Top