mm2 / Little-CMS

A free, open source, CMM engine. It provides fast transforms between ICC profiles.
https://www.littlecms.com
MIT License
571 stars 176 forks source link

Request: allow the provided GPL plugins to build by default #414

Closed ajeb78 closed 11 months ago

ajeb78 commented 1 year ago

Currently debian, ubuntu etc. packages do not build the fast float or threading plugins.

This results in added complexity for GPL projects wishing to use the plugins:

For the CI we could manually rebuild the package enabling the GPL plugins, but this doesn't help users who want to compile the project that uses lcms2 themselves - they have the additional task of recompiling lcms2, which ideally would not be necessary. So currently I'm copy & pasting the whole fast float and threading plugins' code into my (GPL) project purely so that it's guaranteed to be there and gets built as part of the project. That works, but it introduces the added burden of checking for updates to the plugins and updating the files in my project as necessary.

I know the licence is different for the plugin than the main library code and non-GPL projects have to purchase an alternative licence for the plugin, and that's obviously fine, but it would make life a lot easier for GPL projects wishing to use the GPL plugins if it could be set to build and install by default. I can't see a downside - there's clearly no issue including GPL software in debian / ubuntu packages, and non-GPL projects would still be required to obtain a licence - but GPL projects would be saved all of the admin burden of manually keeping the code in sync.

mm2 commented 1 year ago

I have been thinking carefully about your proposal. Unfortunately I cannot accept it. The package is distributed and advertised as MIT, so when you install by default you get binaries over MIT code. In addition, there is the possibility to install commercial plug-ins that I am also distributing under GPL3. I have other plug-ins that are not even open source, and therefore not there, but I allow GPL3 use of those two. Doing a default install of those GPL3 components would create non-MIT binaries, which could be very bad for commercial packages that only use core code. Please understand that I fully support open source, but I am an industry professional and have to favor my customers first.

My recommendation for your project is to keep a private copy of the plug-ins you use. There is a version tracking in the plug-in system, so if the system tries to use an outdated liblcms.so you will get an error.

ajeb78 commented 1 year ago

OK, understood - I had forgotten about the issue of mixing licences within a package. But I take it there's no issue requesting of the distributions that they produce separate packages for lcms2 and lcms2-plugins-gpl, so that the MIT code is all in one package and the GPL code is all in a different one (and each would have their own separate -dev packages). That should address your concerns and is a similar way that gstreamer has a number of different plugin packages). It's a bit more work for the packager to set up a packaging script but that should be a one-time job.