Problem/Motivation
I've just written a bridge module that includes third-party LGPL code.
It's IDNA Convert module that uses IDNA Convert class of Matthias Sommerfeld. IDNA Convert class is distributed under the Lesser General Public License (LGPL) 2.1.
According to the licensing FAQ we can in some special cases and as an exception include LGPL code inside projects.
For instance, SMTP module includes LGPL classes.
The only problem I see is the phrase at the top of the IDNA Convert class file:
// | You should have received a copy of the GNU Lesser General Public |
// | License along with this library; if not, write to the Free Software |
// | Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 |
// | USA.
Proposed resolution
I'm asking you to consider possibility to make an exception for the standard policy and leave the library included in the repository because users have to login on http://www.phpclasses.org/ to download the class themselves, that is unclear and complicated process.
We, contrib modules and the core, have been in need of IDNA Converter functionality for quite long time and I believe our users will thank us for simplification of installation process of the library that adds internationalized domain names support.
In case you're agree we would need to modify the class header and/or add LGPL license to the repository as it is required by the class header. I would need your help here.
Nobody but us.
Thanks,
Konstantin
Comments
Comment #1
Konstantin Komelin commentedComment #2
gisleThanks for contacting the LWG!
The group was established recently and we are currently working on a set of new procedures and guidelines for third part code. These new guidelines will also describe how to document the presence of additional licenses (such as LGPL 2.1 in your case) in a distribution.
We are not going to review any exception requests until the new guidelines are in place, nor are we going to take any action against projects that have an exception request pending. Postponing until the new guidelines are in place.
(The new procedures and guidelines will be subject to public review by the community before implemented.)
Comment #3
Konstantin Komelin commented@gisle , thank you for your reply.
The bureaucracy again kills developer initiative.
If I include the IDNA Convert module as a dependency to a module that needs it right now It will be very painful for users to download LGPL library after 3 versions.
Never mind.
Thanks,
Konstantin
Comment #4
gisleI am sorry you feel this way about it.
Just to make things clear: The LWG did not create the present Git Repo Policy. Our charter is to review it, try to come up with a better policy, get it approved by Dries, the Drupal Association, and the community, and finally implement it.
The present policy is that an exception is not granted for a third party library if the library is available for download elsewhere. An yes, despite this being the official policy, some exceptions that violated the policy was granted - because in the past, exceptions were in most cases granted ad-hoc through private arrangements between developers and certain prominent community members - with no audit trail and no transparency.
Drupal and the Drupal.org git repo has become too large for this form of governance to be managable, and this is why the LWG and its "bureaucracy" has been established.
Comment #5
Konstantin Komelin commentedYes, I feel so, and it's not only about licensing, it's about any decisions, patches, etc. It usually takes months and years to make the final decision. I see the big picture and understand that Drupal, Drupal Community and Drupal repos are too complex to behave flexibly and adapt to our needs quickly, but I'm afraid end-users don't share my understanding. I think this problem should be finally noticed by Dries and other decision makers.
Anyway, I've moved LGPL library to a separate folder of IDNA Convert module and provided LICENSE file as it's required by the library header http://cgit.drupalcode.org/idna_convert/tree/ So now I don't break LGPL rules.
Please let me know if the future D.org licensing policy changes dramatically and I have to move the module to a better place that supports the freedom of Open Source software.
Best,
Konstantin
Comment #6
alexanderpas commentedWould it be a solution to use the Libraries API to handle the dependency for the class?
Comment #7
Konstantin Komelin commented@alexanderpas,
There is no difference for end-users. They have to manually download and install the library anyway.
Comment #8
gisleThe rationale behind the Libraries API is explained on its project page:
By not using the Libraries API to register its dependency on an external library, IDNA Convert is not following Drupal best practices.
Comment #9
Konstantin Komelin commented@gisle
Libraries API is not in Drupal 7 core. If you mention Drupal best practices, please provide a link to official Drupal documentation. The Libraries API project page does not and cannot declare Drupal best practices.
Comment #10
gisleYour right: Drupal best practices follows from the Drupal Git Repository Usage policy, which you have agreed to (agreeing to this is a condition for getting the permission to push to the Drupal.org Git repositotory). I quote (emphasis in the original):
So according to best practices you're not allowed to put third party materials in your repo. Period.
So just forget about me suggesting that you registered it with Libraries API and were granted an exception to keep it in the repo. Just comply with the Drupal Git Repository Usage policy and remove the third party library from the repo.'
Since this is a PHP repo, you shall probably be able to resolve this by having a
composer.jsonfile in your repo and get it installed by composer after the user has downloaded your project.Comment #11
Konstantin Komelin commentedThat's probably why I created this exception request - to ask for an exception.
In the issue description I provided SMTP module example which includes third-party LGPL code. Double standards?
You totally missed my point and the reason why I am asking for the exception. I would like to simplify the installation process for my users and not make it more complicated.
Comment #12
gisleThe SMTP module is making progress in getting the third party phpMailer out of its repo, please see #2711559: Set phpMailer as a external library using composer (and update it to 6.0).
If you're aware of other projects with third party code in their repo that has not been in dialogue with the LWG about this, please let us know.
Comment #13
gisleIn the issue summary, you refer to the answer to Q10, and you write:
Unfortunately, that is not what it says in the licensing FAQ. Here is the relevant part of the answer to Q10:
I fully understand that you want to simplify the installation process for your users. Unfortunately, that is not a valid reason for an exception to be made.
Comment #14
Konstantin Komelin commentedOkay. I am not going to argue.
What would you suggest? Move the module to Github? Can you also ask SMTP module maintainers to do the same?
Comment #15
gisleI suggest that you implement
composer.jsonto download the library from packagist. This works for Drupal 7 as well as Drupal 8, and will simplify the task for your users as it will allow them to use composer to integrate said third party library with your module.FYI: They are already doing the same (see #2711559: Set phpMailer as a external library using composer (and update it to 6.0)).
Comment #16
Konstantin Komelin commentedOnce again, please do not mix ordinary users with developers. They have no clue about composer
Comment #17
Konstantin Komelin commentedI wrote about this https://komelin.com/articles/drupal-developers-toy
Comment #18
gisleTo summarize, if you want your bridge project depending on a third party library hosted on Drupal. org, the following two options exists:
composer.jsonfile.If you feel that neither of these are suitable for your project, then I guess the best solution for you and your project is to move the project to GitHub.
Comment #19
Konstantin Komelin commentedThanks @gisle. I will move the project to Github when I have time.
Comment #20
gisleThat's a good plan.
Since the exception request has not been approved, I am changing the component to "Violation" and status to "Needs work".
Please set it to "Needs review" after you've moved the third party materials out of the HEAD of the 7.x-1.x branch and unpublished the releases from the project page.
To make your project findable by Drupal users, you can link to the project at GitHub from its Drupal.org project page.
You may also want to read this: https://www.drupal.org/node/2743493
Please ask questions here if there is anything in the process that is unclear.
It should not take a lot of work or time to clean out the repo and move the project to GitHub. To avoid having the project marked as unsupported/abandoned, please complete the process within two weeks from now.
Comment #21
Jeff Burnz commentedIs this official policy, I can't find anything that states that as an offical policy.
Comment #22
gisleJeff Burnz said:
The official mandate the LWG operates under is documented on the LWG project page and in the Licensing Working Group Charter.
The part that is relevant to this specific case is this:
IMHO, the resolution proposed by me in this case is in accordance with our mandate. If you disagree, please open up a new issue to discuss this.
Comment #23
Jeff Burnz commentedOK, so two weeks is not an official policy.
I have no idea why someone would open a new issue to discuss the issue.That sound rude, my apologies.
Comment #24
Konstantin Komelin commentedHi @gisle,
I have moved project to Github, hidden the releases and made corresponding note on the project page https://www.drupal.org/project/idna_convert .
Best,
Konstantin
Comment #25
gisle@Konstatin Komelin,
thank you for taking action. I am marking this as "Fixed".
Comment #26
Konstantin Komelin commented@gisle Thanks.