jrief / django-admin-sortable2

Generic drag-and-drop ordering for objects in the Django admin interface
https://django-admin-sortable2.readthedocs.io/en/latest/
Other
765 stars 179 forks source link

Incomplete license information #396

Open stefan6419846 opened 4 months ago

stefan6419846 commented 4 months ago

The wheels apparently ship with patched templates from Django itself:

     adminsortable2/templates/adminsortable2/edit_inline/stacked-django-4.2.html          
     adminsortable2/templates/adminsortable2/edit_inline/stacked-django-5.0.html
     adminsortable2/templates/adminsortable2/edit_inline/tabular-django-4.2.html
adminsortable2/templates/adminsortable2/edit_inline/tabular-django-4.2.html.orig
     adminsortable2/templates/adminsortable2/edit_inline/tabular-django-5.0.html
adminsortable2/templates/adminsortable2/edit_inline/tabular-django-5.0.html.orig

I could not find any license details for these files (especially relevant on distribution, id est inside the PyPI wheels), although they are subject to the BSD-3-Clause license and have different copyrights compared to your own package code.

jrief commented 4 months ago

Interesting use case. The patched files are not part of this repository, they are generated during the build and publishing state. So what is the resulting license of a BSD-3 licensed file patched by an MIT licensed file?

What would you suggest as solution?

stefan6419846 commented 4 months ago

One could argue that the patches should be subject to the BSD-3-Clause license as well as they refer to BSD-3-Clause code and partially reproduce them. Other approaches might be possible, but I am not a lawyer and therefore I am limiting this to the basic approach.

I would recommend to either add a corresponding section to the django-admin-sortable2 license file or to each of the bundled files. (An alternative could be the ABOUT File Specification, although this might require adapting your MANIFEST file to include these files inside the distribution.) Something like this should work (here inside the template, I use some similar snippet inside some of my own code as well):

{% comment %}
This file is a slightly modified copy of https://github.com/django/django/blob/main/django/contrib/admin/templates/admin/edit_inline/stacked.html as distributed with Django 4.2.3
and has been generated by https://github.com/jrief/django-admin-sortable2/blob/79bd6948ab861cba8fd465a679ae0722e3b64d6b/patches/stacked-django-4.0.patch

Original license:

Copyright (c) Django Software Foundation and individual contributors. All rights reserved.

Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:

1. Redistributions of source code must retain the above copyright notice,
   this list of conditions and the following disclaimer.

2. Redistributions in binary form must reproduce the above copyright
   notice, this list of conditions and the following disclaimer in the
   documentation and/or other materials provided with the distribution.

3. Neither the name of Django nor the names of its contributors may be used
   to endorse or promote products derived from this software without
   specific prior written permission.

THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

{% endcomment %}