Tech Off Thread

20 posts

Microsoft Chart Controls in a GPL licensed application ?

Back to Forum: Tech Off
  • User profile image
    cro

    Is it legal to use the Microsoft Chart Controls in a GPL licensed application ?

  • User profile image
    W3bbo

    Yes, it is.

    The problems with GPL linking come from when a non-free project wants to use GPL libraries. However it is perfectly fine for a GPL project to use non-free libraries. It happens all the time because you can get GPL software that works on Windows, yet Windows is non-free.

  • User profile image
    AndyC

    , W3bbo wrote

    Yes, it is.

    No, actually it isn't.

    The problems with GPL linking come from when a non-free project wants to use GPL libraries. However it is perfectly fine for a GPL project to use non-free libraries. It happens all the time because you can get GPL software that works on Windows, yet Windows is non-free.

    The GPL makes an exemption for libraries which ship as part of the Operating System, but in the general case all code in a GPL application must be licensed under the GPL or a compatible license. This is necessary to ensure the aims of the GPL, i.e. that someone can simply take a GPL application, modify, recompile and redistribute as they wish are not compromised by the inclusion of proprietary code.

  • User profile image
    cro

    So it is legal, but it is not in the spirit of GPL.

  • User profile image
    AndyC

    , cro wrote

    So it is legal, but it is not in the spirit of GPL.

    No, W3bbo is just wrong. You can't license the Chart Controls under the GPL and therefore it violates section 2b to use them in your application. If you could do this, the GPL would be fundamentally incapable of what it is set out to achieve.

     EDIT: See http://www.gnu.org/licenses/old-licenses/gpl-2.0-faq.html#MoneyGuzzlerInc

  • User profile image
    ManipUni

    Frankly nobody should be using the GPL, it is almost worse than the problem it tries to solve. It isn't just copy-left, it is also viral, and will spread to other code.

    Check out Apache, LGPL, or BSD.  

  • User profile image
    W3bbo

    No, W3bbo is just wrong. You can't license the Chart Controls under the GPL and therefore it violates section 2b to use them in your application. If you could do this, the GPL would be fundamentally incapable of what it is set out to achieve.

    I didn't say the chart controls should be licensed under the GPL or violate Microsoft's license.

    The Chart Controls, are marketed as being a part of the .NET Framework 3.5 (even if they aren't included in the main distributions, and they run fine on a pure-2.0 environment). I argue that because that's how Microsoft markets them it's no different to developing a GPL-licensed application for ASP.NET MVC (because the MVC assemblies must be distributed with the application, even if Microsoft ostensibly claims they're part of ASP.NET).

    Part b) states:

    "You must cause any work that you distribute or publish, that in whole or in part contains or is derived from the Program or any part thereof, to be licensed as a whole at no charge to all third parties under the terms of this License."

    The workaround in this case is to make use of the chart controls require the user to separately download the assemblies themselves, or get the application to optionally make use of it. These are technical mitigations that allow GPL compliance despite flying in the face of it.

    I still think it's arbitrary, and the GPL makes a provision for this anyway:

    http://www.gnu.org/licenses/gpl-faq.html#GPLIncompatibleLibs

    http://www.gnu.org/licenses/gpl-faq.html#FSWithNFLibs

  • User profile image
    AndyC

    , W3bbo wrote

    *snip*

    I didn't say the chart controls should be licensed under the GPL or violate Microsoft's license.

    The Chart Controls, are marketed as being a part of the .NET Framework 3.5 (even if they aren't included in the main distributions, and they run fine on a pure-2.0 environment). I argue that because that's how Microsoft markets them it's no different to developing a GPL-licensed application for ASP.NET MVC (because the MVC assemblies must be distributed with the application, even if Microsoft ostensibly claims they're part of ASP.NET).

    You can argue it all you like, but it's not what the GPL allows. v2 has a reasonably vague clause but it still requires that the libraries are normally shipped as part of the OS or compiler. And if you distribute any components with the program, you must provide GPL compatible source code for them. GPLv3 is even stricter with regards to this.

    Of course whether anyone would ever actually challenge you on this is a whole different matter. There are mountains of 'GPL' applications that flagrantly abuse the license, but nothing ever comes of it, largely because suing someone over 'free as in beer' software is futile.

    Personally I'm with Manip though, the GPL is a horrendous thing to burden a codebase with and has caused more problems than it could ever solve. It's a shining example of why you shouldn't attempt to use the law to enforce political beliefs.

  • User profile image
    W3bbo

    Personally I'm with Manip though, the GPL is a horrendous thing to burden a codebase with and has caused more problems than it could ever solve. It's a shining example of why you shouldn't attempt to use the law to enforce political beliefs.

    What license do you recommend I use in future for software projects where I want the source for derivative works to be made available?

  • User profile image
    AndyC

    , W3bbo wrote

    *snip*

    What license do you recommend I use in future for software projects where I want the source for derivative works to be made available?

    The minute you get into constraining derivative works without just requiring people arrange it independently with you it tends to get messy and overly restrictive. The best I've seen, though I have by no means scoured the OSI pages, was the Apple license but that's not exactly worded in a way you can easily reuse it for a different situation.

  • User profile image
    Bass

    As an author of GPL application, you can do whatever you want (even offer your program under a proprietary license, as many companies that produce GPL software do). The GPL derivative clause only applies to end users of your software.

  • User profile image
    C9Matt

    @Bass: Are you sure about that? I was pretty sure that any user can demand to see the source code for any GPL licenced application. Most of the companies which make money from OSS (like Ubuntu) make their money from either corporate support or for building custom modules for corporate customers.

  • User profile image
    AndyC

    @Bass: That's only true for the situation in which you have ownership of all the code. The minute a third party library is introduced it's going to have to be under a GPL compatible license (or code that can be placed under a GPL license, such as Public Domain) or you will end up violating either the GPL or whatever license is associated with the library.

  • User profile image
    Bass

    @C9Matt:

    The idea is that you can use the software freely ONLY if you are developing some kind of FOSS software (GPL-compatible, although some projects add exceptions to the license).

    Proprietary developers expecting license fees for their own software, might find that the libraries they want to use expect to extract license fees from them as well. Only fair in my opinion. Smiley

    You can find many examples of this copyleft/proprietary business model: MySQL, Qt pre-Nokia buyout, SugarCRM, RavenDB (AGPL), etc.

  • User profile image
    C9Matt

    @Bass: You can't add exceptions to the GPL licence. The GPL (peversely) is copyrighted by the EFF, and you can only use it to apply the GPL to other software, and even if it wasn't the GPL is only compatible with itself (and weaker copylefts, but it upgrades them to GPL), so if you changed it and applyed it to a program, then that program wouldn't be able to use any GPLed components without violating the copyright of those GPLed components.

    The GPL is a viral licence. Whatever you bundle the GPL component inside of, the entire system becomes GPLed. For instance if Microsoft foolishly took a GPLed subcomponent of Firefox and used it in Internet Explorer, then the GPL would force Internet Explorer to become GPLed, which would mean they would have to publish the source code. If they took a linux driver and bundled it with Windows, they would have to publish the whole of Windows under the GPL, which would require almost all of Microsoft's code ever written to become downloadable.

    It's bad for end users too. If Microsoft stopped supplying the CRT under the Microsoft Permissive Licence and having such a rich set of APIs, then you'd almost certainly have to turn to a GPLed subcomponent of something somewhere (unless you want to implement your own crypt and compression and malloc and so on), which would mean you'd never be able to make money from your products or public domain them ever, because using a GPLed subcomponent would require you to GPL everything you ever programmed on top of them.

  • User profile image
    Bass

    I don't know what to say except that you are wrong on multiple counts. 

    The GPL (peversely) is copyrighted by the EFF

    The GPL is the work of the Free Software Foundation (FSF), which is not the Electronic Frontier Foundation (EFF) if that is what you meant. They are very different organizations.

    You can't add exceptions to the GPL licence.

    You can in fact add exceptions to the GPL license. GCC is one of the largest GPL projects. It's  also a project of the FSF, the author of the GPL. Yet it has such an exception: http://gcc.gnu.org/viewcvs/trunk/gcc/libgcc2.c?revision=152139&view=markup

    For instance if Microsoft foolishly took a GPLed subcomponent of Firefox and used it in Internet Explorer, then the GPL would force Internet Explorer to become GPLed

    Yet I know no instance of any court issuing an injunction forcing a company to open source an entire project for infringement of GPL code. If you have any examples I'd be happy to hear them.

    If Microsoft stopped supplying the CRT under the Microsoft Permissive Licence and having such a rich set of APIs, then you'd almost certainly have to turn to a GPLed subcomponent of something somewhere

    I think it's well within the right of an author to profit from his work, including authors who write libraries. Somehow it seems hypocritical for you to poo-poo someone for not giving you all their hard work with no cost or restriction and then go around and sell proprietary commercial products based on it with all kinds of built in restrictions of your own.

    So GPL largely limits this kind of behavior, but it's no different then how proprietary software itself limits the use of a software program. Except that GPL software can be distributed and modified freely in many situations while proprietary software can not.

  • User profile image
    C9Matt

    The GPL is the work of the FSF, which is not the EFF if that is what you meant. They are very different organizations.

    Oops. Freudian slip.

    You can in fact add exceptions to the GPL license. GCC is one of the largest GPL projects. It's  also a project of the FSF, the author of the GPL. Yet it has such an exception

    It doesn't. Firstly the Section 7 additional terms require sthe GPLv3 - it's not there in earlier versions. The GCC Runtime Library Exception (http://www.gnu.org/licences/gcc-exception.html) actually further restricts the use of GCC headers and code so that if and when GCC becomes a plugin-based architecture, no proprietary plugins can be built. Under Section 7 and Section 10 of the GPLv3 you cannot weaken the copyleft provisions provided by the rest of the document. 

    Yet I know no instance of any court issuing an injunction forcing a company to open source an entire project for infringement of GPL code. If you have any examples I'd be happy to hear them.

    Try and be a bit more trusting of other people rather than just assuming they're wrong. There are serveral cases of the GPL being brought up in court and there are examples where the company in question lost and had to open source their code (http://www.fsf.org/news/2009-05-cisco-settlement.html)

    I think it's well within the right of an author to profit from his work, including authors who write libraries. Somehow it seems hypocritical for you to poo-poo someone for not giving you all their hard work with no cost or restriction and then go around and sell proprietary commercial products based on it with all kinds of built in restrictions of your own.

    So GPL largely limits this kind of behavior, but it's no different then how proprietary software itself limits the use of a software program. Except that GPL software can be distributed and modified freely in many situations while proprietary software can not.

    Authors under the GPL won't ever profit from their work, because the GPL requires that the source code is made available to any of the licencees so they can compile it themselves.

    Programmers can licence their products as they choose, and big open source projects use the GPL because its actually quite a good licence for large projects with many contributors. My biggest problem with the GPL is that like downloading a will off the internet, writing your own contracts or copy-pasting an EULA, if you use a licence that you don't understand then it won't necessarilly do what you think it does. GPL doesn't protect your code from people who want to steal it. It gives it permanantly and legally to the FSF, and if you then go and use your own code in a proprietary piece of software later, the FSF can sue your * for GPL violation.

    Microsoft expressly forbids GPLed source code in it's entire network (it's actually part of your contract) because if a single source file of GPLed code was ever found on the Microsoft source server, the FSF could sue Microsoft for copyright infringement for the entire of Windows, and it's the reason why lots of good open source programs are never adopted, adapted or deployed by Microsoft even under a share-and-share-alike agreement such as the Microsoft Permissive Licence or the MIT Public Licence which say you can use the code, do what you want with the code, but must acknowledge the original author and keep the licence agreement for the components that exist in your final product.

  • User profile image
    AndyC

    , C9Matt wrote


    It gives it permanantly and legally to the FSF, and if you then go and use your own code in a proprietary piece of software later, the FSF can sue your * for GPL violation.

    No it doesn't and no they can't, since only the copyright holder (which is you) can sue for copyright violation. That's not to say there aren't a great many issues with trying to mix proprietary and GPL software development.

    Microsoft expressly forbids GPLed source code in it's entire network (it's actually part of your contract) because if a single source file of GPLed code was ever found on the Microsoft source server, the FSF could sue Microsoft for copyright infringement for the entire of Windows,

    Again, no. It's actually quite difficult for the GPL effect to apply to Windows, because the GPL itself includes an inherent exception for libraries that ship as part of the OS. The GPL code would need to be in Windows itself for you to even have a vague case.

    Microsoft do have very strict restrictions on GPL code though, because other properties like Office are not so well protected and GPL'd code finding it's way into them would be devastating. It's not an outright ban though, as Microsoft themselves have actually shipped GPL code themselves as part of Services for Unix, if memory serves,

Comments closed

Comments have been closed since this content was published more than 30 days ago, but if you'd like to continue the conversation, please create a new thread in our Forums, or Contact Us and let us know.