Possible GPL violation by Vidomi

Posted 23 May 2001 at 17:00 UTC by atai Share This

This is a possible GPL violation case which needs public awareness and the community needs to throw strong support behind the original author. The company Vidomi included code from VirtualDub, a GPLed video editing/processing program for Microsoft Windows, in their product and is trying to avoid following the GPL. Vidomi is also distributing DivX, a hacked version of Microsoft's MPEG4 codec, in the same product, which means Microsoft's copyright may also be violated as well. For this reason the original author, Avery Lee, wants his GPLed code removed from the potentially illegal product.

VirtualDub, by Avery Lee, is an excellent video editing and processing package for Microsoft Windows and is free software under the GNU GPL. VirtualDub was previously mentioned in Advogato in a story where Microsoft forced Avery Lee to drop support for ASF files because Microsoft has a patent on the ASF file format. Now a possible GPL violation has occured over VirtualDub: part of it was incorporated into Vidomi, a product that "makes and plays top quality DivX/MPEG4 video from your existing source files." Even though the author has pointed out the potential GPL violation, Vidomi is just having a ""discussion" and not taking concrete steps to follow the GPL's requirements and the author's wishes, who wants the GPLed code removed from this product. Vidomi also contains DivX, a hacked version of the MPEG4 codec of Microsoft, and is in possible violation of Microsoft's copyright.

Vidomi has placed parts of VirtualDub in DLLs which are loaded at program startup. Dynamically linking via shared libraries into the same address space does not make the DLLs separate works from the main program, for the purpose of the GPL, for C and C++ programs. According to Avery Lee,

For a month now I have been trying to get the makers of Vidomi to remove VirtualDub-derived source code from their distribution. Vidomi (build .346 as of this writing) is MPEG-to-AVI converter that uses code licensed under the GNU General Public License from DVD2AVI and FlasKMPEG to decode MPEG-2 video. These modules are kept in DLLs and are automatically and invisibly loaded by Vidomi at startup. The FlaskMPEG module, ncodefls.dll, exports 24-bit to 32-bit RGB conversion and resizing capabilities that are directly derived from VirtualDub code. Vidomi has placed the source code for these derived modules on their website but the main application is proprietary, closed source, and this is what I have a problem with.

This is a list of the exported functions from ncodefls.dll. The VirtualDub-derived functions are in red. The DIBconvert function even has exactly the same name as the function in VirtualDub and FlasKMPEG, except for the "flask" part.

ordinal hint RVA name

1 0 00001870 flaskCrop

2 1 00001900 flaskDIBconvert_24_to_32

3 2 000016C0 flaskDeinterlace

4 3 000016B0 flaskInit

5 4 00001770 flaskResize

6 5 000016D0 flaskStartDeinterlacer

7 6 00001700 flaskStartResizer

8 7 000016F0 flaskStopDeinterlacer

9 8 00001840 flaskStopResizer

Dynamic linking does not save you from the source code requirements of the GPL. The requirement of the GPL is that your application must be reasonably independent from the GPLed code, with no mention of static or dynamic linkage. I do not consider an application that automatically installs the GPL modules, each of which exports specific, individual functions from the original program, and automatically and invisibly loads the DLLs on startup to provide major functionality to be "independent" of the the GPLed code. The company has taken various token methods to try to ward me off, such as providing token useless capability when the DLLs are not available (AVI input with no resizing), and putting disclaimers on their web site. None satisfy me as long as Vidomi still advertises VirtualDub functionality in its UI and on its front web page, and places the recommended "with GPL" download in big, highlighted type, away from the tiny download in the corner that doesn't have it.

I don't consider it independent as long as it still needs my code to do what it is supposed to do.

I repeatedly said that I wanted it out. They claim they're compliant under the GPL and that, in any case, they are trying to address my concerns. Which of course means that they still haven't taken the fscking code out. The with-GPL installer is still there, Vidomi still advertises GPL functionality as its own in its interface (and on the web page unless you notice the asterisk), and STILL automatically and invisibly loads the DLL on startup. And although it has not yet reached this point, I am confident that when their patience runs out, they will have their lawyer claim that they are compliant with the GPL, and my concerns be damned.

Although the FSF has been contacted, they cannot take action directly since they are not the copyright owner of the software in question. The community should throw its support behind Avery Lee to force Vidomi to remove his GPLed code from a potentially illegal product.

Is DivX illegal?, posted 23 May 2001 at 17:29 UTC by claviola » (Master)

Are you sure of this? AFAIK, there is nothing illegal about DivX, it is an independent implementation of Microsoft's codecs.

Hm., posted 23 May 2001 at 18:12 UTC by Uruk » (Apprentice)

Proceed carefully I suppose. I'm not saying that it doesn't or can't happen, but I kinda get skeptical about claims of GPL violation when I hear them.

With regard to the FSF, I think bringing them in or letting them know is an excellent idea. If anybody is willing to fight, it's going to be them. Has anybody considered transferring the copyright to the FSF? That might be needed if things get serious. Of course I can think of a bunch of reasons why you wouldn't want to do that, too.

But maybe you're approaching this backasswards. Maybe rather than emphasizing that they should take the code out of their product, you should go the other way and try to get them to GPL theirs. As in, take the opinion that they're welcome to keep using the source code, with the condition that they GPL the rest of their source code to be in compliance with the GPL. With the GPL there's two ways in that sense - you can get them to remove the source code, or you can continue to let them use the source code after they've GPL'd their app. Arguably the latter is better because it increases the amount of free software in the world. Just a thought, anyway.

This product should be distributed, posted 23 May 2001 at 18:39 UTC by atai » (Journeyer)

Normally we would want the product source released under the GPL. This case is a bit different. DivX is a hacked version of some Microsoft software (there are some later DivX work which are "original work,", but the DLL in question here is a hacked version of some Microsoft DLL) and this company will not be able to release the source of that. Since there is no legal way for this company to release all the source code of this product under the GPL, the only thing legal is to not distribute the product at all.

Of course that does not have to be the concern of Avery Lee. He just wants his code out of there. Let Microsoft deal with that company regarding DivX.

This product should NOT be distributed..., posted 23 May 2001 at 18:44 UTC by atai » (Journeyer)

Obviously I put in the wrong title

DLLs vs. plugins vs. shared libraries, posted 23 May 2001 at 20:01 UTC by sej » (Master)

The 2nd response by JM makes a distinction between DLLs and plugins per the GPL. Seems like a reasonable difference between a library that has to be there for a program to run, and a separate executable that gets leveraged at run-time if it exists. But what about shared libraries in Unix? There you have a low-level linking that can be deferred until run-time, and avoided entirely if a particular path of execution is never taken. If plugins make the GPL no stronger than LGPL, I think a court might not see the difference between them and shared libraries or DLL. So whether the FSF goes to court or not, goodbye GPL V2.0, hello LGPL and GPL V3.0.

Re: DLLs vs. plugins vs. shared libraries, posted 24 May 2001 at 03:38 UTC by mslicker » (Journeyer)

The GPL really doesn't get that techincal with the method of derivation. If it is a derivative work than the terms of the GPL must apply to that work. Of course there are ambiguities to exactly what constitues a dervative work. Vidomi correctly, and perhaps opportunistically, identifies the related section of the GPL:

These requirements apply to the modified work as a whole. If identifiable sections of that work are not derived from the Program, and can be reasonably considered independent and separate works in themselves, then this License, and its terms, do not apply to those sections when you distribute them as separate works. But when you distribute the same sections as part of a whole which is a work based on the Program, the distribution of the whole must be on the terms of this License, whose permissions for other licensees extend to the entire whole, and thus to each and every part regardless of who wrote it.

Thus, it is not the intent of this section to claim rights or contest your rights to work written entirely by you; rather, the intent is to exercise the right to control the distribution of derivative or collective works based on the Program.

To me seems clear that Vidomi is a derivative work, since it is not independent of the VirtualDub program. However, the courts might see it differently. I don't if there have been other cases which test the GPL in this way, but this would be good legal case to establish a precedent and hopefully put some teeth into the GPL.

Can't revoke license, posted 24 May 2001 at 22:27 UTC by jmg » (Master)

From my reading of the GPL, there is no way for Avery Lee to force them to remove his code. The only way that this can happen is if he takes them to court and sues them for breach of license. This might be a good thing, because if the courts feel that Vidomi has violated the license, then the source code for it will become GPL'd. It would also set a precedent for companies use GPL'd software. Make sure you follow the rules or all your work could become public property.

When you're dealing with companies, you have to play by their rules, and that means lawyers. You can't depend upon a companies integrety to play fair like you can with other people.

from the the GPL FAQ, posted 24 May 2001 at 23:47 UTC by sej » (Master)

From the GPL FAQ:

If a program released under the GPL uses plug-ins, what are the requirements for the licenses of a plug-in.

It depends on how the program invokes its plug-ins. If the program uses fork and exec to invoke plug-ins, then the plug-ins are separate programs, so the license for the main program makes no requirements for them.

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, so plug-ins must be treated as extensions to the main program. This means they must be released under the GPL or a GPL-compatible free software license.

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.

To me this raises some additional things to think about:

1) Why weren't these distinctions between fork-and-exec and dynamic linking clarified in GPL V2.0? The concept of dynamic linking is defined (and permitted) in the LGPL. Maybe it will get defined (and restricted) in GPL V3.0.

2) What about a fork-and-exec process that uses shared memory to communicate with the original process? Is that a borderline case as well?

3) Clearly derivative works that evolve the original source code of a GPL library seem in the clear (as far as GPL enforcement). But doesn't all the concern over pure "use" of GPL-ed libraries steer dangerously close to advocating the enforcement of a "user interface" copyright? Will we see the LPF and the FSF split on this issue in the future?

Re: Can't revoke license, posted 25 May 2001 at 07:06 UTC by Bram » (Master)

If someone includes GPL'ed code in their redistributed code they are not implicitly GPL'ing their own code, they are simply in violation of the GPL.

That's if the GPL is enforceable, which is a big if. I expect that the GPL will be knocked down in court to have essentially the same restrictions as the LGPL.

-Bram Cohen

Offer a seperate license, posted 29 May 2001 at 13:45 UTC by danwang » (Master)

If the Avery Lee owns the copyright on the majority of the code. He should just offer a commercial license to the company for that part. The money he recieves can be used to fund development of the GPLed version, which the company may not be able to use, depending on how copyright on modifications is assigned. Code gets forked in the worst case, but the code forking turns into revenue for the GPL developers.

Simple, everyone wins...

New Advogato Features

New HTML Parser: The long-awaited libxml2 based HTML parser code is live. It needs further work but already handles most markup better than the original parser.

Keep up with the latest Advogato features by reading the Advogato status blog.

If you're a C programmer with some spare time, take a look at the mod_virgule project page and help us with one of the tasks on the ToDo list!

Share this page