GlacioHack / xdem

Analysis of digital elevation models (DEMs)
https://xdem.readthedocs.io/
MIT License
144 stars 41 forks source link

[POC] license ApacheV2 #555

Open adebardo opened 3 months ago

adebardo commented 3 months ago

After #558

Context

The current license for xdem is the MIT License. We would like to transition to the Apache License 2.0 for the following reasons:

Implementation

    # Copyright (c) 2024 Centre National d'Etudes Spatiales (CNES).
    #Copyright (c) 2024 xdem developpers
    #
      # This file is part of xdem project:

      #  https://github.com/glaciohack/xdem

    #Licensed under the Apache License, Version 2.0 (the "License");
    #you may not use this file except in compliance with the License.
    #You may obtain a copy of the License at

       # http://www.apache.org/licenses/LICENSE-2.0

    #Unless required by applicable law or agreed to in writing, software
    #distributed under the License is distributed on an "AS IS" BASIS,
    #WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    #See the License for the specific language governing permissions and
    #limitations under the License.

estimation

1d

adebardo commented 3 months ago

Waiting for richdem issue

adehecq commented 2 months ago

After discussions with @erikmannerfelt, we agreed that having a long header at the beginning of each file and listing all contributors to that file is a bit of a hassle and we would prefer to find an easier solution if that is possible. Looking at other projects with Apache v2 license, like xarray or OpenCV, none of them seemed to follow the structure suggested in this issue and used in dempcomare.

In short, our preference would be to use a short header like OpenCV pointing to the license file, and to have a copyright to "the xdem developers" (possibly with a list of contributors somewhere in a file) and CNES. We could discuss with Sebastien about the drawbacks/problems of this approach.

sdinot commented 2 months ago

As @adehecq referred to me, I'll take the liberty of replying here.

Firstly, a distinction must be made between the contributor and the copyright holder / owner.

The Apache Foundation recommends that the copyright header should mention the names of the copyright holders, not the contributors (i.e. the authors of the contributions).

It is quite possible to group them together under a generic term such as:

The Apache Foundation recommends the copyright header below:

Copyright [yyyy] [name of copyright owner]

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

    http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.

In my humble opinion, the header should also mention the project from which the file comes, so that you can trace its origin and make it self-supporting:

Copyright [yyyy] [name of copyright owner]

This file is part of xdem project:

    https://github.com/glaciohack/xdem

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

    http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.

The main authors and other contributors can be listed in an AUTHORS (or equivalent name) file, provided in the root folder of the Git repository. Cf.:

Last but not least, it is strongly recommended to announce the license in a dedicated section of the README file, which points to the license file:

Here are some examples:

adehecq commented 2 months ago

@sdinot, you are of course more than welcome to write on this project! Thank you for the clear details. As discussed yesterday in a meeting with @adebardo and @duboise-cnes, the preferred option would indeed to have an "AUTHORS.rst" file or equivalent. I like the example from request that you gave, which lists contributors by current, past and more minor contributors categories. Something like this would be easy to add and maintain for the geoutils/xdem.

What is still unclear to me is what copyright holders should appear in the files' headers. It is clear for CNES or CS contributions, but what about contributions from current Glaciohack members, or future "independent" contributors? Ideally we would like something generic, that may point to a more detailed list of copyright holders, e.g. in the authors file. And of course it would be good to prevent future contributors to add a copyright that would make future changes very difficult... Finally, in practice, in which situation would the copyright statement become important? With the permissive license, almost everything is allowed and we do not plan to switch to a less permissive license in the future.

And yes, I agree it would be good to include a mention to the license in the README.

sdinot commented 2 months ago

Finally, in practice, in which situation would the copyright statement become important? With the permissive license, almost everything is allowed and we do not plan to switch to a less permissive license in the future.

There are many reasons for tracing copyright holders correctly, and they are all the more important in a world that is tending to become increasingly litigious and to make intellectual property sacred.

We must never forget that distributing a work under a free and open source license is not a surrender of the rights granted by law, but a sharing of some (not all) of those rights.

Even when you publish a project under a permissive license such as the Apache v2.0 license (or even the MIT or BSD license), you retain some of your rights exclusively, which allow you to make decisions and choices that are forbidden to others.

For example, let's imagine that one day a legal loophole or weakness is detected in version 2.0 of the Apache license, leading the Apache Foundation to publish a new version (3.0) of its license. In that case, it would certainly be worthwhile for the xdem project to adopt this new version of the Apache license and declare that from this day forward, xdem is distributed under the Apache v3.0 license. Only the copyright holders can do this.

Here's another example of how being recognized as a copyright holder helps, which CS encountered with the Orekit project (released under the Apache v2.0 license). A third party had copied Orekit's source code into his project (which he had decided to turn into a proprietary tool), removing the copyright notices and replacing them with his own, thus claiming to be the sole author and copyright holder of this library. We discovered this illegal action by chance and, because we were the copyright holders of Orekit, we were able to force this third party to respect the license. They had to restore the copyright notices in their software, and indicate in their software documentation that they were using Orekit. Here again, only the copyright holders can take legal action if necessary.

It is therefore in your interest to make it known that you are the copyright holder.

Ideally we would like something generic, that may point to a more detailed list of copyright holders

Yes, you can do that. You can fill two files: AUTHORS (or CONTRIBUTORS) and COPYRIGHTOWNERS. GitHub has attempted to create a de facto standard through the CODEOWNERS specification, but in fact the purpose of this file is a little different from ours.