You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@nifi.apache.org by Horváth Péter Gergely <ho...@gmail.com> on 2018/06/12 19:41:06 UTC

Contributing Apache-2.0 licensed code from a 3rd party into NiFi

Hi All,

I would like to make some contribution to NiFi out of a project that was
released on GitHub under Apache-2.0. NiFi Test [1] would allow a NiFi
instance to be started programmatically and unit-tests to be written
against flow files.

The code base has been properly released as open source under the terms of
Apache-2.0 and now each file has the original licence header, something
like this;

Copyright (c) 2018 XXXXX, All Rights Reserved.
Licensed under the Apache License, Version 2.0 (the "License");
...

Based on my understanding this means that I have the green light to adapt
and contribute such pieces of codes into NiFi, since the license is the
same (Apache-2.0), and hence they are compatible.

The question is: once I have a piece of software that was originally
released by someone else but was adapted to NiFi, what should be the license
header?

Shall it retain the original copyright lines or should it contain the
generic NiFi license headers:

Licensed to the Apache Software Foundation (ASF) under one or more
contributor license agreements.  See the NOTICE file distributed with
this work for additional information regarding copyright ...


I am not sure I understand what is the appropriate approach here: can
someone shed some light on this, please?

Thank you,
Peter

[1] https://github.com/ThinkBigAnalytics/nifi-test

Re: Contributing Apache-2.0 licensed code from a 3rd party into NiFi

Posted by Joe Witt <jo...@gmail.com>.
Peter,

Broadly speaking there are a few ways code becomes part of the project
as I understand it.

1) An author, an individual contributor, provides a source code
contribution to the Apache project that is an original work of that
author.  This could be a patch attached to a JIRA or as a pull request
via github, etc..  The author of the code is the contributor
themselves and they're doing it as a contribution to the ASF and to
that apache project specifically.  You'd use our standard source
header and it would be ALv2 licensed entirely and can have
dependencies from any of the approved legal [1] licenses of type A or
B.

2) An author, an individual contributor, provides a source code
contribution to the Apache project that is one or the other or a
combination of of a work of the original author and includes copied
code from some other location.  The original work of the author is
just like #1 above.  The part they copy/pasted must be cited in the
nifi source NOTICE consistent with how we handle [2] licensing which
is meant to be consistent with ASF guidance and it must strictly be
source code that is clearly from the approved legal type category A
[3].  For whole class files copied in or for mostly fully copied items
you must keep the headers they had - not just add the standard ASF
ones as per [4]. Or you, if you're the original author/agent/owner of
the code can provide written permission to do so [4].

3) The author or representative of the author can submit code to the
Apache IP Clearance process as called out in [2] with the intent of
moving the work to the Apache project for follow on care and feeding.
This should start with a discuss thread to the community they wish to
transfer the project to and if that goes well result in a VOTE thread
with the project agreeing to take it on.  The code must be ALv2 (i
believe) and at that point would likely have packages changed, headers
changed, etc as part of the IP clearance and actual import process.
I'm sure there can be some variations here but i'm not quite sure to
be honest.  The IP clearance page describes the software grant
agreement process and such in detail towards the bottom as well.

#1 is super common and is the majority all day every day case we can
handle within the project easily.
#2 is less common but clear in handling and can easily be done within
the project.
#3 has never happened in NiFi as of yet but can be achieved if needed.

#1 does not appear to be an option (as far as I can tell) here since
it is already written elsewhere and has different headers/etc..
presumably and is not Copyright of ASF/etc..

#2 still is possible here.  You can just copy paste in relevant code
and we can maintain in nifi land from here forward.  It would require
NOTICE updates to reference the source code and any necessary NOTICE
entries such as Copyrights.  But, it would be forking the code which
is presumably a fork of NiFi so could be a bit strange to manage the
provenance of.  Would you keep maintaining it in the other repo too?
These sorts of things would need to be sorted out.

#3 is possible and requires your organization (presuming they own the
code) to help the community work through the IP clearance process if
the community decides it is a good thing to transfer over.

I am probably wrong on some of this and perhaps even significant bits.
But I think generally the above serves as a decent starting point for
discussion and understanding.

[1] https://www.apache.org/legal/resolved.html
[2] http://incubator.apache.org/ip-clearance/
[3] https://www.apache.org/legal/resolved.html#category-a
[4] https://www.apache.org/legal/src-headers.html

Thanks
Joe

On Tue, Jun 12, 2018 at 3:41 PM, Horváth Péter Gergely
<ho...@gmail.com> wrote:
> Hi All,
>
> I would like to make some contribution to NiFi out of a project that was
> released on GitHub under Apache-2.0. NiFi Test [1] would allow a NiFi
> instance to be started programmatically and unit-tests to be written
> against flow files.
>
> The code base has been properly released as open source under the terms of
> Apache-2.0 and now each file has the original licence header, something
> like this;
>
> Copyright (c) 2018 XXXXX, All Rights Reserved.
> Licensed under the Apache License, Version 2.0 (the "License");
> ...
>
> Based on my understanding this means that I have the green light to adapt
> and contribute such pieces of codes into NiFi, since the license is the
> same (Apache-2.0), and hence they are compatible.
>
> The question is: once I have a piece of software that was originally
> released by someone else but was adapted to NiFi, what should be the license
> header?
>
> Shall it retain the original copyright lines or should it contain the
> generic NiFi license headers:
>
> Licensed to the Apache Software Foundation (ASF) under one or more
> contributor license agreements.  See the NOTICE file distributed with
> this work for additional information regarding copyright ...
>
>
> I am not sure I understand what is the appropriate approach here: can
> someone shed some light on this, please?
>
> Thank you,
> Peter
>
> [1] https://github.com/ThinkBigAnalytics/nifi-test