[openstack-dev] [tc][ansible][ironic] Reusing Ansible code in OpenStack projects

Pavlo Shchelokovskyy pshchelokovskyy at mirantis.com
Wed May 25 06:58:28 UTC 2016


Hi All,

I had the same question in "legal-discuss" ML and would like to summarize
the outcome to benefit all.

It appears that we are in green in regards of the subject in question:

- from the driver itself we are launching "ansible-playbook" as a subprocess
- our custom Ansible callback plugin for logging is implemented w/o
importing any Ansible code (API is pretty simple and straightforward)
- Ansible's module_utils is licensed under *BSD* (2 clause) [0] which
allows us to use it in our custom modules licensed under Apache-2 (thanks
to Clint Byrum for pointing that out).

If you are interested, you can find the code under this Gerrit topic [1].
Any comments or suggestions are as always very welcome.

[0]
https://github.com/ansible/ansible/blob/devel/lib/ansible/module_utils/basic.py#L1-L27
[1] https://review.openstack.org/#/q/topic:bug/1526308

Cheers,

Dr. Pavlo Shchelokovskyy
Senior Software Engineer
Mirantis Inc
www.mirantis.com

On Thu, May 19, 2016 at 8:28 PM, Clint Byrum <clint at fewbar.com> wrote:

> Excerpts from Pavlo Shchelokovskyy's message of 2016-05-19 15:28:03 +0300:
> > Hi all,
> >
> > I have a question re FOSS licenses interplay. I am pretty sure that
> > OpenStack community (e.g. openstack-ansible) has already faced such
> > questions and I would really appreciate any advice.
> >
> > We are developing a new ansible-based deployment driver for Ironic [0]
> and
> > would like to use some parts of ansible-lib Python API to avoid
> boilerplate
> > code in custom Ansible modules and callbacks we are writing, and in the
> > future probably use Ansible Python API to launch playbooks themselves.
> >
> > The problem is Ansible and ansible-lib in particular are licensed under
> GPL
> > v3 [1] "or later" [2]. According to [3] Apache 2.0 license is only one
> way
> > compatible with GPL v3 (GPL v3-licensed code can include Apache
> > 2.0-licensed code, but not vice versa).
> >
> > I am by far not a legal expert, so my questions are:
> >
> > Does it mean that the moment I do "from ansible import ..." in my Python
> > code, which AFAIU means I am "linking" to it, I am required to use a
> > GPLv3-compliant license for my code too (in particular not Apache 2.0)?
> > What problems might that imply in respect with including such code in an
> > OpenStack project (e.g. submitting it to Ironic repo) and distributing
> the
> > project?
>
> Yes that's what it means. You can write modules in any license you want
> because AnsibleModule is BSD 2-clause, but plugins must be GPLv3.
>
> > If there are indeed problems with that, would it be safer to keep the
> code
> > in a separate project and also distribute it separately?
> > Even when distributed separately, will merely using (dynamically
> importing
> > at run-time) a GPLv3-licensed driver from ApacheV2-licensed Ironic
> > constitute any license violation?
> >
>
> I think your options are to make it function without the plugins, and
> distribute just them separately (so a bare bones version comes with
> Ironic, but it works better w/ the GPLv3 plugins), or just distribute
> the whole thing separately.
>
> Long term, you might approach Ansible about possibly making their plugin
> interface LGPL so that people can write non-GPL plugins. But, it may be
> part of a broader strategy to ensure that contribution happens in the
> open. As an OSS hippie, I applaud them for choosing a strong copyleft
> license. :)
>
> __________________________________________________________________________
> OpenStack Development Mailing List (not for usage questions)
> Unsubscribe: OpenStack-dev-request at lists.openstack.org?subject:unsubscribe
> http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.openstack.org/pipermail/openstack-dev/attachments/20160525/20cbf127/attachment.html>


More information about the OpenStack-dev mailing list