<p>Open Source and Proprietary Licensing problems.

Posted 20 Dec 2002 at 12:59 UTC by salmoni Share This

Will MS and the FSF allow me to mix GPL'd Python code with an instance of MS's Internet Explorer? Help!!!

Recently, I have developed an application to further my research for my phd thesis. The topic is broadly web search engine usability (see this page for a quick review of a recent conference talk and outline of the subject), but I found that I needed to track users actions when using a web browser. Short of writing a browser myself or learning to hack Mozilla (both out of my reach), I noticed that the wxPython has a demo in which an Internet Explorer component can easily be embedded into a basic frame. This means that all I had to do was create a frame (or a Window to use common vernacular), embed an IE instance, and set up some event handlers to record the users actions. I record things like which links they click on, which buttons they press on the interface, which links does the mouse cursor hover over and so on, all recorded with the current time: the whole range of data are such that proxy servers will not record.

I should also point out that I am aware of Gecko. If I could embed Gecko into a wxFrame I would do so in an instant, but I just don't have the programming knowledge. I'm primarily a psychologist, not a hacker, and just do not have the time to spend on this area.

This is all well and dandy, and the code I wrote was just over 300 lines (not included images, but including comments). As a side bonus, the IE component will not open up some pop-up windows (not fully tested yet!), and the whole project shows the ease of programming and power of the Python/wxPython combination.

As I have found this a potentially useful tool, I think that other people in the world might be interested in using the program too. The human being in me wants to release the source code under an OS license (probably GPL so that I can see any changes made to released versions), but my wallet thinks that maybe some money can be made here.

However, regardless of the path I choose, one problem remains consistent: can I actually do this without running foul of Microsofts legal machinery?

They are a company known for zealously protecting their IP, far more than the most vocal of GPL "zealots" (the FSF have yet to demand an audit of anyone), and they are also known for an unfriendly attitude towards the GPL (think "cancer" and "viral"). Even choosing to release the program under a proprietary license results in the same situation, though in this case it could be exacerbated by the fact that I might be making money out of it, something which I am sure MS would want a share of (100% plus everything else I own?).

I am unfamiliar with EULA's and am not a lawyer in any way, and I am here to ask two questions of the greater experience of the Advogato community:

  • Is it "safe" for me to release the program (whether under an open source or proprietary license) to the unsuspecting public, when the program will need to embed IE into it, but doesn't include IE at all?

  • Would the GPL allow me to embed an instance of IE within my program?

    Apologies if the article is a bit rushed - I'm due to meet with my supervisor soon and then go home for the weekend!

  • My take, posted 20 Dec 2002 at 16:15 UTC by aes » (Observer)

    IANAL, but these are my opinions:

    Is it "safe" for me to release the program (whether under an open source or proprietary license) to the unsuspecting public, when the program will need to embed IE into it, but doesn't include IE at all?

    It's legal. If you are only using IE as a runtime component, and not distributing it, it's OK.

    Would the GPL allow me to embed an instance of IE within my program?

    This depends on the method of embedding. If the program or IE are "linked" in any way, ie. use the same address space, then no. If IE runs in a separate process and communicates using some protocol - which I think is most probably how it works, I'm thinking ActiveX here - then yes.

    Of course, you can always grant an exception to the GPL to allow linking of your program and IE. You are the author, and you can release under a variant of the license if you want.

    GPL allows linking with standard parts of the OS, posted 20 Dec 2002 at 16:45 UTC by Radagast » (Journeyer)

    Interestingly, the GPL by default allows you to link with components of the operating system, without any problems:

    However, as a special exception, the source code distributed need not include anything that is normally distributed (in either source or binary form) with the major components (compiler, kernel, and so on) of the operating system on which the executable runs, unless that component itself accompanies the executable.

    So it seems that since Microsoft has graciously included IE in the operating system, you can just go ahead and use it as you want from GPLed code. Note that MS might have something to say about it, though, but I doubt that they will want to control the licensing of software that embeds standard parts of their OS. Also, you're not really distributing any of their code, or anything linked to their code, you're just using wxWindows code that does so, and that code is LGPLed.

    So in my opinion, go ahead.

    The FSF's say is limited here, posted 20 Dec 2002 at 17:46 UTC by jbuck » (Master)

    The FSF can tell you what they believe the GPL to mean, but they do not hold the copyright on Python. I agree with Radagast that the "special exception" in the GPL for OS components would appear to apply. However, if this weren't the case, and if you were interested in getting an exception, then it would be up to the Python copyright holders to grant you one.

    Also, in the Gnome GUI, Mozilla is embedded in Nautilus. If you're better at Python than C, the IE approach might be easier for you to get going, but you might want to consider putting in an abstraction layer so that, at a later time, your work can be used with a Mozilla component as well.

    Why not asking in Mozilla mailing lists?, posted 20 Dec 2002 at 18:42 UTC by atai » (Journeyer)

    Whatever IE can do, Mozilla should be able to do, only better:-) Why not asking in Mozilla mailing lists? If not doable today someone may implement it and have it working tomorrow... You don't have to do it yourself but you may just contribute useful feature suggestions to the Mozilla developers...

    No third-party GPL code involved, posted 20 Dec 2002 at 18:51 UTC by mbrubeck » (Journeyer)

    Just to clarify, Python is not distributed under the GNU GPL. Python 2.2 is available under the PSF License, which is free and GPL-compatible but is not copyleft (the only requirements on derivative works are maintaining the copyright notice, and including a notice of modifications). This isn't even relevant however, because programs written in Python are not derivative works of Python, and are not restricted by the Python license.

    wxPython is not under the GPL either. It is licensed under the GNU LGPL, with exceptions given by the wxWindows Library License allowing unrestricted linking of binary object code based on the library.

    The only GPL code involved is written by salmoni himself (unless he has incorporated other sources too). The other copyright holders have already granted explicit permission to link their code unrestricted.

    Mozilla ActiveX Control, posted 20 Dec 2002 at 18:54 UTC by mbrubeck » (Journeyer)

    There is a Mozilla Control that provides a near drop-in replacement for the IE control. It should be simple to adopt the Python IE wrappers to use the Mozilla control (possibly as easy as substituting a single classid string).

    Use the LGPL then, posted 21 Dec 2002 at 02:07 UTC by pphaneuf » (Journeyer)

    If IE doesn't count as an OS component, I'd say that the GPL doesn't allow you to use it (see this FAQ entry).

    Mentions are also made of interpreted programs, and linking a GPL program to a GPL-incompatible library (such as IE's web browser component) here.

    It seems to be that if you make a GPL'd program that depends on the IE component, then it is implied that you meant an exception to be made for that, but that it is preferable to have the exception explicitly.

    Personally, I'd just forget it all, use the LGPL and go on.

    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