Hello Dominik, PoDoFo mantainers and contributors, it follows shortly my announce about pdfmm 0.9.20 (with the proposal of merging back to PoDoFo) another request regarding the current license of PoDoFo. Let me try to recap the current situation with PoDoFo licensing terms, using a Q/A approach. I am not a legal but I evaluated open source licensing terms quite a lot in the past 15 years, and I believe my considerations should be accurate enough.
Short version: Mozilla Public License 2.0[1] is more business friendly than LGPL[2]. Long version: PoDoFo is currently licensed under the terms of LGPL 2.0 license (or later version) terms. Very roughly summarizing LGPL 2.0[3] allows to use, redistribute and modify the Library (see LGPL definition of "Library") code in both source and binary form, providing modifications to the library code are redistributed along the way, making it a "copyleft" license. The Library (either modified or unmodified) can be "linked" in closed source programs (or any "work that uses the Library", as in LGPL terms) making it a derivative work of the Library providing such "work" is redistributed together "**object** code and/or source code, so that the user can modify the Library and then relink to produce a modified executable containing the modified Library". * What does this mean with regard to "linking" the Library, as per using it in a C++ project with a linker? This means that this "work" (programs/libraries) using PoDoFo Library should be redistributed together either source code or the ".o", ".a" or ".lib" binary code that were generated for the whole programs/libraries (closed source software components as well), or such files shall be provided "for a charge no more than the cost of performing this distribution". LGPL2.0 makes no distinction between "static" or shared/dynamic linking, possibly being more restrictive, nor it better specifies anything if the "work" using the Library is another shared library and not a "program", intended as an entry point executable, putting this situation in a limbo/gray area * Does this really mean I can use/link PoDoFo code in my closed source program without having to release the source code? Yes, and FSF confirm it as well for any LGPL version (v2, v2.1, v3) in its FAQ[4], proving the above mentioned clauses are met. Any other source in the internet that it says that the the closed source code should be always released with LGPL as well is not correct. * What's the difference between LGPL 2.0 and 2.1? LGPL 2.1 introduces these main changes: - It renames the "L" in LGPL from "Library" to "Lesser"; - It introduces a distinction between "static" and "shared" linking (aka "dynamic"), basically allowing the "work that uses the Library" to not being considered a derivative work if it just uses "a run time a copy of the library already present on the user's computer system" using a "shared" linking mechanism; - It makes more clear that anything that gets "linked" to the Library is a derivative, non only "programs" but (presumably) other libraries as well. * So, what's the problem with LGPL (any version)? In my opinion the LGPL is overall fair, but it introduces a coercitive clause (the requirement to release the "work" under source or relinkable object form) that is not business friendly. It's no mistery that many companies avoid using/depending on LGPL libraries: for this exact reason. I think we can agree that most of the times this coercitive clause, differently than GPL (no "L), has very little use in practice since the freedom to modify the Library and use this modified version in the original programs/libraries looks very hacky/amateurish. I make one example: let's suppose a Fortune 500 company is now using and redistributing PoDoFo in a program of theirs, or a shared library: we all have now the right to ask this company to release the object code that was generated and linked in the final executables or libraries. What is the value of having this right in the "real" world? I answer for my self only: for me the value is less than zero in the case of a Library such PoDoFo, and exercise this right would sounds more like a coercitive move attempting to damage/jeopardize the company business. * What do you suggest? I think LGPL had and still has a place in this world, but I also believe PoDoFo should be as much as possible business friendly. My proposal is to relicense PoDoFo to Mozilla Public License 2.0. * Why Mozilla Public License 2.0? MPL 2.0 is a copy left license, similar in intents to LGPL but with much more easier terms and no "source disclosure" clause for just using/linking the library. It's also LGPL/GPL compatible. * Why not MIT/BSD/Apache 2.0/? I think Dominik had in in mind copyleft when he chose LGPL 2.0 and I agree with this principle. MIT/BSD/Apache2.0 are not copy left so are not viable choices. MPL2.0 instead is a copy-left license. * What plan do you suggest? If Dominik overall agrees with the arguments in support of relicensing, I suggest he should name the people that contributed most to PoDoFo and that should take part in this decision. These people are contacted, and if they overall agree we could make a signed statement that they accept the re-license. We should think about what to do about people that contributed with small patches, that may not respond to requests about licensing changes. For what I know, PoDoFo never had copyright re-assignment policy, which it would make relicensing much easier now. I think in many of these cases we can take for granted that posting of small "trivial" patches into PoDoFo mailing list automatically makes these patches "public domain". I think this approach was used in some circumstances in several open source projects that later decided to change license. Also we should think what do if some people, but not the majority, disagree with the re-licensing, especially in case of non-trivial contributors. * What's the bargain with pdfmm? If the license change is accepted and pdfmm gets merged into PoDoFo, then all the pdfmm code will use the new licesing terms of PoDoFo. Currently the license of pdfmm is LGPL 2.1 fixed[5], which it would make it incompatible to merge new files from pdfmm into PoDoFo * What about the dependencies of PoDoFo/pdfmm? With one exception (libidn), all the dependencies have permissive (non coercitive) licenses: - zlib: custom permissive -> OK - libxml2: MIT -> OK - openssl:pre 3.0 custom permissive, apache2 in openssl 3.0 -> OK - fontconfig: MIT -> OK - freetype2: BSD like -> OK - libjpej: BSD like -> OK - libtiff: BSD like -> OK - libpng: custom permissive -> OK - libidn: LGPL -> FAIL I believe at some point we can just take a more permissive stringprep implementation written in another language/framework and port it to C++. I hope this request is clear and well argued. I welcome everybody to comment, especially in case your employer is using PoDoFo in its products. Cheers, Francesco [1] https://tldrlegal.com/license/mozilla-public-license-2.0-(mpl-2) [2] https://tldrlegal.com/license/gnu-lesser-general-public-license-v2.1-(lgpl-2.1) [3] https://www.gnu.org/licenses/old-licenses/lgpl-2.0.en.html [4] https://www.gnu.org/licenses/gpl-faq.en.html#LGPLStaticVsDynamic [5] https://github.com/pdfmm/pdfmm/blob/master/COPYING _______________________________________________ Podofo-users mailing list Podofo-users@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/podofo-users