Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

New License Request: libutil-David-Nugent #1629

Closed
jlovejoy opened this issue Sep 14, 2022 · 31 comments · Fixed by #1702
Closed

New License Request: libutil-David-Nugent #1629

jlovejoy opened this issue Sep 14, 2022 · 31 comments · Fixed by #1702

Comments

@jlovejoy
Copy link
Member

jlovejoy commented Sep 14, 2022

Not sure about name or short id for this one. Debian has used "BSD-5-clause-Peter-Wemm", but it could have other names?
Also seems specific to FreeBSD - @bsdimp - is this one familiar?

Short id: BSD-5-Clause
Found in Debian at: https://github.com/freedesktop/libbsd/blob/master/COPYING and marked as "BSD-5-clause-Peter-Wemm"
Used in package libmd, which is also included in Fedora (see: https://gitlab.com/fedora/legal/fedora-license-data/-/issues/71)

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

  1. Redistributions of source code must retain the above copyright
    notice immediately at the beginning of the file, without modification,
    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. This work was done expressly for inclusion into FreeBSD. Other use
    is permitted provided this notation is included.
  4. Absolutely no warranty of function or purpose is made by the author
    Peter Wemm.
  5. Modifications may be freely made to this file providing the above
    conditions are met.

title edited by @swinslow 2022-11-20 to change from BSD-5-Clause to approved name libutil-David-Nugent

@bsdimp
Copy link
Collaborator

bsdimp commented Sep 15, 2022

This looks to be a one-off for that one manual page....

But there's a 3-clause version of this as well hiding in FreeBSD's lib/libc/gen/setproctitle.c that omits clauses 3 and 5 (reproduced below).

I just sent peter email asking if I can change these to bsd-2-clause... But I guess it's leaked out in the intervening 25 years...

@bsdimp
Copy link
Collaborator

bsdimp commented Sep 15, 2022

As with all names, I'd also be tempted to make it alt text...

@bsdimp
Copy link
Collaborator

bsdimp commented Sep 15, 2022

Sigh. Found several variations in the FreeBSD tree:

* Copyright (c) 1996 by
 * Sean Eric Fagan <sef@kithrup.com>
 * David Nugent <davidn@blaze.net.au>
 * All rights reserved.
 *
 * Redistribution and use in source and binary forms, with or without
 * modification, is permitted provided that the following conditions
 * are met:
 * 1. Redistributions of source code must retain the above copyright
 *    notice immediately at the beginning of the file, without modification,
 *    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. This work was done expressly for inclusion into FreeBSD.  Other use
 *    is permitted provided this notation is included.
 * 4. Absolutely no warranty of function or purpose is made by the authors.
 * 5. Modifications may be freely made to this file providing the above
 *    conditions are met.

Here s/the author Peter Wemm./the authors./
Also note: this variation is used in a few places in the FreeBSD tree, but
also is used for some files with only one author.

@bsdimp
Copy link
Collaborator

bsdimp commented Sep 15, 2022

And this one with a different author. David is more common that Peter (who just appears on one file).

.\" Copyright (c) 1995 David Nugent <davidn@blaze.net.au>
.\" All rights reserved.
.\"
.\" Redistribution and use in source and binary forms, with or without
.\" modification, is permitted provided that the following conditions
.\" are met:
.\" 1. Redistributions of source code must retain the above copyright
.\"    notice immediately at the beginning of the file, without modification,
.\"    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. This work was done expressly for inclusion into FreeBSD.  Other use
.\"    is permitted provided this notation is included.
.\" 4. Absolutely no warranty of function or purpose is made by the author
.\"    David Nugent.
.\" 5. Modifications may be freely made to this file providing the above
.\"    conditions are met.

@bsdimp
Copy link
Collaborator

bsdimp commented Sep 15, 2022

And this one, misidentified as BSD-4-Clause (at least it was, I just fixed it in the FreeBSD tree)

 * SPDX-License-Identifier: BSD-4-Clause
 *
 * Copyright (c) 1996 John S. Dyson
 * Copyright (c) 2012 Giovanni Trematerra
 * 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 immediately at the beginning of the file, without modification,
 *    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. Absolutely no warranty of function or purpose is made by the author
 *    John S. Dyson.
 * 4. Modifications may be freely made to this file if the above conditions
 *    are met.

It drops clause 3 of the proposed license. It's found on two files in the FreeBSD tree.

@bsdimp
Copy link
Collaborator

bsdimp commented Sep 15, 2022

And we have this lovely 'let's randomly reorder variation'

 * Copyright (c) 1996 John S. Dyson
 * 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 immediately at the beginning of the file, without modification,
 *    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. Absolutely no warranty of function or purpose is made by the author
 *    John S. Dyson.
 * 4. This work was done expressly for inclusion into FreeBSD.  Other use
 *    is allowed if this notation is included.
 * 5. Modifications may be freely made to this file if the above conditions
 *    are met.

which swaps clauses 3 & 4, but as I can see no reason that order would
matter, this would be a variation.

@bsdimp
Copy link
Collaborator

bsdimp commented Sep 15, 2022

So this was used for a while in 1995 and 1996 then fell out of use, originating it seems in FreeBSD's libutil, though it spread a little in the tree for three or four different authors. At least one of which is uncontactable. And for code from Berkeley Software Design, Inc, which is defunct (though maybe Windriver is its successor). Though the BSDI stuff appears to be additions / bug fixes that were contributed with whatever license the file then currently held.
It was also plastered on a few files in the kernel and getty chat. And there's a 3-clause variation too. The legal team will have to decide if the differences are material or not.

There's no steward. It's at best a historical artifact of a time when boutique bsd-like and gnu-like and whatever-man licenses were the rage. It is indeed similar to the 4.4BSD 4-clause license in its disclaimer of warrantee (though in language that seems insufficient to my admittedly untrained eye)..

@bsdimp
Copy link
Collaborator

bsdimp commented Sep 15, 2022

Here's the 3 clause variation

 * Copyright (c) 1995 Peter Wemm <peter@freebsd.org>
 * All rights reserved.
 *
 * Redistribution and use in source and binary forms, with or without
 * modification, is permitted provided that the following conditions
 * are met:
 * 1. Redistributions of source code must retain the above copyright
 *    notice immediately at the beginning of the file, without modification,
 *    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. Absolutely no warranty of function or purpose is made by the author
 *    Peter Wemm.```

@richardfontana
Copy link
Contributor

It's an off-topic question @bsdimp but can I ask how the FreeBSD project has interpreted the ridiculous insistence that the copyright notice occur "immediately at the beginning of the file"?

@bsdimp
Copy link
Collaborator

bsdimp commented Sep 15, 2022

I don't think there's ever been an enforcement action officially from the project on this. Its origin was due to someone taking a FreeBSD driver, hacking it a bit, putting their copyright notice at the start of the file, and then moving the FreeBSD copyright notice to the end of the file, obscuring its origin and in an attempt to pass the work off as his own. People were pretty petty towards each other in the mid 90s, and this was an attempt to enforce existing practice where the copyright notices came first, and then the rest of the code. At worst, there may have been some requests to people that moved the notice to the end of the file to move it back to the beginning, but I don't know of it personally.

The 'immediately at the beginning' language is in 256 files in the FreeBSD tree, in the 'file' program, and a few things in NetBSD as well. IIRC it was someone from NetBSD that did this... but a number of bits of software in NetBSD unrelated to people involved in that incident are present too. And as with all things from almost 30 years ago observed on the sidelines, this is my recollection, but I'm not 100% sure about it and have omitted names due to that uncertainty.

The files that remain in the FreeBSD were generally written by epople around for the incident and who were somewhat mad about it. I've not looked at all 256 files in the FreeBSD tree, but most of them add it to the end of the first clause. A few are clearly cut and pasted from earlier code however.

@richardfontana I'm curious, though, what makes it 'ridiculous'? The sloppy wording or something else? Since I know the intent, it doesn't seem too crazy and matches how files have been marked in open source and every company I've worked at for the last 45 years. It also matches what the early advice from the 80s hobbyist magazines recommend as well as the copyrights in books being in the front matter of the book.

@richardfontana
Copy link
Contributor

richardfontana commented Sep 15, 2022

I'm not sure if we should allow this license (or set of licenses) in Fedora. I'm not sure it should be considered FOSS. If you have two licenses, each of which say the copyright notice has to appear immediately at the beginning of the file, how do you comply with both? What about scripts that have to have a shebang thingie immediately at the beginning of the file? (I know this is mostly off-topic for SPDX so sorry for ranting. The way this set of licenses came to light in Fedora was somewhat annoying.)

One of the more challenging issues in open source licensing policy is how much tolerance you should give to archaic FOSS-like licenses merely because they're archaic (and also typically difficult to relicense or otherwise get rid of). In this case, I can detect in myself an inclination to see this as a "BSD community problem" that on the Linux side we should wash our hands of, and I don't like that thought because standards for what's FOSS (which is what Fedora is trying to develop) shouldn't be specific to Linux-oriented communities.

@bsdimp
Copy link
Collaborator

bsdimp commented Sep 15, 2022

In general, this sort of thing has stopped in new files. And where there was conflict, 'immediately at the beginning' has been construed as 'before the code and not at the end of the file', but most of the files its on are either small or self-contained and unlikely to be mixed with something else. But since 'immediately at the beginning' can be construed in different ways, that would make it poorly drafted, but other constructs that have substantially the same requirement wouldn't.

If one were to construe it more narrowly, the obvious workaround is to not co-locate in the same file two bits of code with this requirement if you are worried. Much like people generally don't co-locate CDDL and GPL code in the same file when they want things to remain crips and unmuddied. I'm having trouble with the 'test' or 'rule' that is applied to the 'notice is required' statement that puts it 'in' or 'out' of FOSS.

FWIW, I found no instances of this wording on shell, perl or python scripts in the FreeBSD tree...

But honestly, I've not seen people care or notice these terms. In grepping the FreeBSD tree, I happened to notice them on some code I've made hundreds of changes to without noticing the variation in wording at the top.

At this point, these licenses are 'document it only' and 'not to be used in new code'. In many cases it's been so long that that finding original copyright holders may present a challenge as you say.

And I'd be very careful about tossing stones at the BSD family problems from 30 years ago given all the very publicly documented squabbles in the Linux world....

@richardfontana
Copy link
Contributor

Sorry, didn't mean to toss stones. Just venting a little.

@bsdimp
Copy link
Collaborator

bsdimp commented Sep 15, 2022

Sorry, didn't mean to toss stones. Just venting a little.

No worries... despite my defense above, I totally understand these ancient license grants leave something to be desired...

@richardfontana
Copy link
Contributor

richardfontana commented Sep 16, 2022

@jlovejoy correction to the above: this license is found in the package libbsd in Fedora.

In libbsd this Peter Wemm license apparently is in only one file, a man page. I've created a Fedora issue for it:
https://gitlab.com/fedora/legal/fedora-license-data/-/issues/73

My current inclination is that this license should not be allowed for Fedora as I don't see how it can be considered FOSS unless you argue that the restriction on where you place the copyright notice can't be taken literally (it's really the highly unnecessary choice Peter Wemm or whoever wrote this made to use the word "immediately" that's the heart of the problem). I also think the cost for the Fedora packager of disallowing this one man page is likely very small (though I haven't checked with them about this) -- indeed I am pretty sure that the libbsd man pages are not currently packaged. Finally, since this man page is apparently not included in the binary RPM, there is no expectation that this license would be given an SPDX identifier for use in the RPM License: field. Thus, if SPDX wants to include this license, they shouldn't do so for Fedora-related reasons.

@jlovejoy I would urge SPDX to pick a different name than BSD-5-Clause, which to me gives this license a kind of implied legitimacy and appearance of normality it does not deserve.

@bsdimp
Copy link
Collaborator

bsdimp commented Sep 16, 2022

I do know Peter Wemm didn't originate this license. He just used it. Who actually did, though I can't say for certain. It's definitely historical. And the sort of thing / variation you'll find if you go looking at the surviving BSD projects' code, especially kernel code for really old hardware / interfaces that were done in 95-97 by about a half dozen people, with a dozen more infecting otherwise BSD-4-Clause and similar licenses with this clause. @jlovejoy I too would pick a different name. While it came out of the BSD community family food fight, it needs a different name. FreeBSD has this license on maybe a dozen files, but we have no SPDX-License-Identifier markings on them at present. They are but a few of hundreds (maybe thousands) of files in the tree that don't exactly match any SPDX license... I found instances of it in NetBSD with other names as well.

@robert-scheck
Copy link

robert-scheck commented Sep 16, 2022

[…] indeed I am pretty sure that the libbsd man pages are not currently packaged.

The man page in question (/usr/share/man/man3/setproctitle.3.gz, later /usr/share/man/man3/setproctitle.3bsd.gz) is packaged in the libbsd RPM package already and shipped for at least 10 years (since 2012-06-04 with libbsd-0.4.1-1.fc18) with Fedora. And https://git.centos.org/rpms/libbsd/tree/c7 makes me assuming that libbsd-0.5.2-3.el7 was somehow part of RHEL 7, too.

@jlovejoy
Copy link
Member Author

Thanks for all the insights here and I think we can all commiserate over license conundrums like this one! On the other hand, I think it's kind of cool that a license that was found due to inclusion in a Debian Copying file which was found by a Fedora package maintainer while updating the Fedora spec file to SPDX ids, led to this license request for SPDX, which then got input from FreeBSD... so YEAH for collaboration @richardfontana @bsdimp @robert-scheck :)

Anyhoo, back to business: here's my analysis for including the license on the SPDX License List:

New submission review

Has the license been approved by the OSI?

No. Likely never submitted.

Definitive factors

Is the submitted license unique, that is, it does not match another license already on the License List as per the matching guidelines?

It is unique

If a software license, does it apply to source code and not only to executables?

Yes

Does the license have identifiable and stable text, and is not in the midst of drafting?

Stable and old, with some variations, see notes below

Has the license steward, if any, committed to versioning new versions in the future and to not modify it after addition to the list?

N/A

Other factors for inclusion

1. Does the license substantially comply with one of the free/open content definitions?

I would say so. Regardless of the outcome of Fedora's decision as to whether it's allowed or not there, it's still meets the 4 freedoms in my opinion.

2. Is the license structured to be generally usable by anyone, and not specific to one organisation or project?

If we markup the text for the name (which we should), then yes.

3. Does the license have substantial use such that it is likely to be encountered (ie. use in many projects, or in one significant project)?

Yes, it is used in a bunch of files in FreeBSD, which I'd consider reason enough to add, especially in light of FreeBSD's ongoing work to adopt SPDX ids. Also used in Debian (presumably) and possibly one file in Fedora.

4. Is the license primarily intended to facilitate the free distribution of content with limited restrictions?

Yes

5. Does the license steward support this submission, or is at least aware of and not in opposition of it?

N/A

Summary of factors / outcome

I would say we should add it the form of the first comment with replaceable markup for the name. This will cover the author/Peter/David variations.

As for the 4-clause variant, 3-clause variant and re-ordered, those may need their own analysis (TBD)

@jlovejoy
Copy link
Member Author

As for name and id... (and feeling really uncreative on this one) - how about something like:
Full name: libbsd man page License
Short id: libbsd-man

@bsdimp - not sure what project the 256 files that this license appears in belong to, so if you have any better ideas, do tell!

@jlovejoy jlovejoy added this to the 3.19 (documentation) milestone Sep 17, 2022
@jlovejoy jlovejoy self-assigned this Sep 17, 2022
@bsdimp
Copy link
Collaborator

bsdimp commented Sep 17, 2022

Some new details.

First, 256 files has the phrase 'immediately at the beginning of the file'. The vast majority of these are otherwise BSD-2-clause, BSD-3-clause or BSD-4-clause. I now believe this is the origin of the phrase. I talked to one of the early developers. He had some code that was lightly edited with the copyright moved to the end and/or other people's copyrights placed first. He was concerned it created the wrong impression. This also happened to at least one other developer, so they started adding this phrase to stuff they'd written. So I've chased this back to who added that phrase. However, that phrase was picked up by I believe David L Nugent who I'm pretty sure created the license under discussion... So the 256 figure is misleading and it looks like I was unclear about this distinction.

This specific license, however, appears to have originated in FreeBSD's libutil. 16 of the 22 files in the FreeBSD with this license are in libutil and git suggests they are the oldest ones. The other 6 are scattered through the tree (I'm counting all the variations I documented earlier in these totals). These 3/6 of these others are by David L Nugent whose name is on all the libutil files. This license appears to have originated with him. The other 3 are by John S Dyson in the kernel.... So it's only a few files and FreeBSD's interest in having this registered is kinda low.

I agree that the other variants should be considered separately... Honestly, I suspect that the huge number of variations that have grown up in the FreeBSD would mean it will be quite some time before they are registered, if ever.

I hope that helps..

@richardfontana
Copy link
Contributor

[…] indeed I am pretty sure that the libbsd man pages are not currently packaged.

The man page in question (/usr/share/man/man3/setproctitle.3.gz, later /usr/share/man/man3/setproctitle.3bsd.gz) is packaged in the libbsd RPM package already and shipped for at least 10 years (since 2012-06-04 with libbsd-0.4.1-1.fc18) with Fedora. And https://git.centos.org/rpms/libbsd/tree/c7 makes me assuming that libbsd-0.5.2-3.el7 was somehow part of RHEL 7, too.

Ah, thanks for the clarification @robert-scheck

@richardfontana
Copy link
Contributor

@jlovejoy I don't think the name should reference libbsd because libbsd is (IIUC) a Linux-oriented project that is derivative of FreeBSD and perhaps other BSD projects and it is inheriting (currently) only one fairly trivial file with a version of the license in question. It sounds like FreeBSD is already endeavoring to make use of SPDX identifiers.

If it were me I'd probably go with something like "libutil-David-Nugent" given @bsdimp's research.

@guillemj
Copy link

Hi!, I'm the upstream maintainer for libbsd.

  • I'd be extremely happy to switch to a version of the man page with a BSD-2-clause from FreeBSD if that ever happens, as I've found all these license variants a bit annoying TBH. @bsdimp thanks for reaching out to Peter!
  • I think calling BSD-5-clause license was probably not great when drafting the COPYING file, but was the "obvious" thing, but it seems to imply this license is worse / has more restrictions than a BSD-4-clause license, which I do not believe to be true. So I'll most probably be renaming it in the libbsd tree. If this ever needs to be added to SPDX, then using any other name seems way better.
  • But I agree calling it libbsd-something seems wrong/unfair, as libbsd is not the originator for that license.

@adriaandegroot
Copy link

@bsdimp sys/mips/include/_bus.h is a 2-clause-immediate (maybe "-immediate" or "-toppost" is a good distinguisher for this category of licenses?) file with your name on it, which is SPDX-tagged as BSD-2-Clause-FreeBSD -- just for another variant where the textual difference was either not noticed, or not deemed important.

Of the 303 files with "immediately at" in the source (that's at least the 256 @bsdimp found) in 13-stable, 170 are SPDX-tagged already. Examples are sys/mips/mips/busdma_machdep.c (2-clause) sys/dev/pst/pst-pci.c (3-clause).

I found one perl source, tests/sys/acl/run (shebang, followed by license text) and a contrib/file/python/LICENSE which is intended, I guess, as a license for that directory because the code in there has no license headers. Elsewhere in contrib/file/ there are more examples, but generally on C code.

@bsdimp
Copy link
Collaborator

bsdimp commented Sep 19, 2022

The BSD-2-Clause-FreeBSD tagged files in the tree are mostly by mistake, I think, given that at least in SPDX it's the license used by the FreeBSD handbook / documentation people, not the toppost variant. The mips code was originally copied from other files that had this and I replaced all the 'guts' of all the routines I added my name.

The files one is indeed intentional, but since it's an active project it has a chance of an adjustment...

@richardfontana
Copy link
Contributor

richardfontana commented Sep 25, 2022

Fedora has decided to allow this license after all. Since this issue came out of @robert-scheck's efforts to adopt SPDX license expressions for a Fedora package, I would ask that this issue be given appropriate priority. :)

Please don't name this BSD-5-Clause.

@bsdimp
Copy link
Collaborator

bsdimp commented Sep 25, 2022

I agree with @richardfontana . He suggested libutil-David-Nugent and I think it's the most appropriate given that seems to be the origin story for this specific license.

@jlovejoy
Copy link
Member Author

can I assume that the robust discussion on the naming means that y'all are in favor of adding? (and if so, can I get some +1 so it's officially logged here?)

As for name - seems like libutil-David-Nugent is the leading candidate. I don't have a strong opinion, but it's a bit long and a full name feels a bit odd in this case - what if we shortened to libutil-DN ?

@richardfontana
Copy link
Contributor

+1 for adding. I prefer "libutil-David-Nugent" over "libutil-DN" for aesthetic and policy reasons (I don't see anything odd about crediting the person that historical evidence shows is responsible for the license, and there's SPDX precedent for example in the Henry Spencer licenses) but it's not a hill I would die on.

jlovejoy added a commit that referenced this issue Nov 10, 2022
fixes #1629

Signed-off-by: Jilayne Lovejoy
@jlovejoy
Copy link
Member Author

PR #1702

@swinslow swinslow changed the title New License Request: BSD-5-Clause New License Request: libutil-David-Nugent Nov 21, 2022
@pombredanne
Copy link
Member

@richardfontana you wrote:

I'm not sure it should be considered FOSS. If you have two licenses, each of which say the copyright notice has to appear immediately at the beginning of the file, how do you comply with both? What about scripts that have to have a shebang thingie immediately at the beginning of the file? (I know this is mostly off-topic for SPDX so sorry for ranting. The way this set of licenses came to light in Fedora was somewhat annoying.)

FWIW, there is a good number of licenses with a similar "ridiculous" clause seen in the linux kernel and related. See https://github.com/search?l=C&q="The+following+copyright+notice+must+appear+immediately+at+the+beginning+of+all+source+files"&type=Code and this is just a small slice AFAICT.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging a pull request may close this issue.

7 participants