Hacker News new | past | comments | ask | show | jobs | submit login
Hg64: A 64-bit histogram data structure (dotat.at)
95 points by g0xA52A2A on Sept 18, 2022 | hide | past | favorite | 14 comments



> SPDX-License-Identifier: CC0-1.0

Do not use this bone-headed license.

The Fedora people have identified a problem with it.

https://lists.fedoraproject.org/archives/list/legal@lists.fe...

TL; DR: the CC0 license explicitly says that it's granting only use and redistribution in a copyright sense, and not granting any patent or trademark rights.

This is different from a truly free license like BSD or MIT which grant unlimited redistribution and use.


If patent rights are required to call it free, BSD and MIT aren't that great either. Apache 2.0 explicitly grants patent rights, CC0 explicitly calls out that it doesn't, BSD and MIT are simply silent on the issue since they were written in a time before the issue became relevant. The silence allows people to argue that they contain an implicit patent grant. An argument that has merit in the US, but not in every jurisdiction out there.


Afaik CC0 is fine for images, video, audio and similar media material — this is also why some people think it is a good choice for code (which it isn't for the reasons you laid out).


It's strictly better than just saying "this is public domain". I think it has about the same energy as using v1 of the WTFPL license: a strong "I don't care" to the point of not wanting to bother with BSD/MIT/Apache.


"Strictly better" means something like: better in one or more way, and not worse in any way.

I don't think you can say that here.

"This is public domain" is better than CC0 in jurisdictions where "this is public domain" is meaningful. Particularly if accompanied by a statement indicating that users are free to reproduce, broadcast and use the work in any manner. The problem is that work can be assigned to the public domain at the copyright level, without users having the license to use its patents and trademarks.

CC0 is better than "this is public domain" in jurisdictions where the latter is invalid, because its fallback license is better than none at all.

As a separate topic, the CC0 (https://creativecommons.org/publicdomain/zero/1.0/legalcode) is idiotically verbose. The BSD license is small enough that I can put it into every source file. That makes it easy for people to borrow pieces of a program.


> This is different from a truly free license like BSD or MIT which grant unlimited redistribution and use.

Not "unlimited"; they do require a copyright notice. An interesting license for small pieces of code like this is 0BSD[1], it is (despite the name) a small modification of the ISC license[2] that drops the requirement to include the copyright notice. The advantage being for small pieces of code it means you don't have the proliferation of copyright lines that in theory should be copied even into binary distributions of the code.

[1]: https://spdx.org/licenses/0BSD.html [2]: Compare 0BSD with: https://spdx.org/licenses/ISC.html


Do you recommend removing the copyright notice from a 0BSD licensed work before passing it onto someone else?

Or else, what exactly is the use case?


The use case is not wanting people to care, in theory if you license a small code sample under ISC / MIT / normal BSD, etc. licenses then someone has to include the copyright statement in "all copies" (ISC, or slightly different wording with the others).

With 0BSD there's no need to remove the copyright notice, but there's no need to proliferate the text.

As mentioned in https://landley.net/toybox/license.html the result of correctly complying with this can be crazy things like: https://github.com/android/platform_system_core/blob/fd4c6b0...

The advantage of 0BSD is it appears to be the most accepted OSI license without the attribution requirement (given as you mention CC0 isn't accepted by Fedora, Unlicense isn't allowed by Google). Usual not being a lawyer applies, this is just my observations.


That file is just stupid; most of the licenses have common bits that can be algebraically factored out.

There is no need to have two copies of a license which differ only in this:

  Copyright (c) 1987, 1993
     The Regents of the University of California.  All rights reserved.
vs:

  Copyright (c) 1987, 1993, 1994
     The Regents of the University of California.  All rights reserved.
The second one subsumes the first one.

Secondly, it's obvious that what that file consists of is licenses pulled from individual source files. But doesn't indicate which source files. It mentions various author names, but doesn't say who wrote which file.

This conglomerated file is uninformative and serves no purpose.

What you want is to just leave the original notices in the source files and have a concise summary about what.

  This project uses:
  * BSD-licensed code by Jeffrey Mogul in subdir/foo;
  * BSD-licensed code by David Hitz in subdir/bar;
  ...
  consult the individual license headers or subdirectory LICENSE files for the exact licensing details.


Unfortunately that's not what the license says.

> 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.

You do need to pull out the license headers into somewhere to present to the end user, for binary distributions.

Also the Apache license explicitly mentions a file called "NOTICE", which, again, I'm not a lawyer, but I believe is how the Apache license and some BSD licenses are able to be compatible here. Your proposed summary therefore doesn't make the licenses compatible.

Hence 0BSD is a way to not further contribute to this problem.


You can redistribute the code as is. You can copy and paste the code or any part of it without having to copy the licence. You can incorporate it into a project with a different licence and you don’t have to worry about preserving the original licence.

Just, do whatever is most convenient for you.


You are right. I am gradually changing my code to 0BSD / MIT-0 but it isn’t a very high priority (perhaps it should be).

I started using CC0 more than 10 years ago, I think, and at that time the problems with its patent clause were not so well known. I personally only properly understood after Red Hat’s recent decision, after I wrote hg64.


I wonder if HdrHistogram[1] could have done the job. Didn't find any references to that one in the post.

[1]: http://hdrhistogram.org/


Because of the name, it took my brain a few seconds to realize this is not related to mercurial.




Join us for AI Startup School this June 16-17 in San Francisco!

Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: