Replies: 10 comments 3 replies
-
From what I understand, BSD 3-clause is about the source code itself and not the final produced binaries. So if you ship the source code, it should include the license file. The Odin code base use to use BSD 2-clause but I changed it to 3-clause because more people were contributing to the project. As for the uncertainties: assume anything in the Odin code base to be always BSD 3-clause unless otherwise mentioned. |
Beta Was this translation helpful? Give feedback.
-
To help alleviate some of these pain points I think we should try to get most of the code as possible in Odin all licensed under the BSD 3-clause license. As such, as author of |
Beta Was this translation helpful? Give feedback.
-
I also consent to the code being contributed under any licensing terms Odin requires, with regards to code within |
Beta Was this translation helpful? Give feedback.
-
Speaking of |
Beta Was this translation helpful? Give feedback.
-
I haven't put my name/copyright anywhere so that this whole thing could be hopefully be avoided, I assume that just means it is copyrighted by Odin's own license. I feel like putting your name somewhere is fine but adding mention of copyright that is not the same as Odin's complicates matters and should be avoided. |
Beta Was this translation helpful? Give feedback.
-
I believe that your understanding is correct, though INAL.
Like with laytan unless I pulled in or heavily derived code from others, I explicitly omitted licenses for my contributions. For my personal contributions I am ok with most things within reason (BSD-3/BSD-1/Boost Software License etc are perfectly fine). While it is possible to re-implement a lot of this code, my primary contributions are places where reusing prior art if possible is good practice. With that in mind, these are the primary sources that I used, and why the licensing is the way it is:
The libraries I see myself (potentially) pulling code/ideas from in the near future are:
|
Beta Was this translation helpful? Give feedback.
-
Feoramund, your post is very helpful - thank you for sharing with all. I had very similar questions on the Odin Discord and Laytan shared this link. I thought you might find this post interesting as related to GNU GCC executables compiled by that venerable compiler. Maybe Odin could at a minimum create a runtime exception so for a simple program with no other imports no license statement is required for said executable, unless you literally copy the source code into the executable (something silly). This is not addressed by the BSD 3-Clause license for actual source or binary of the implemented compiler. What are the licensing requirements for a program I compile using GCC? - this is a clickable link to the SO post
|
Beta Was this translation helpful? Give feedback.
-
Since the topic came up: the issue with CC0, unlicense or public domain is, that it's not applicable across all jurisdictions. Some countries don't have the concept of a 'public domain', so 0BSD or MIT-0 is the closest you can get. 'Do as you want with it, don't hold me accountable for anything, no need to attribute anything'. Ideally, code under such licenses should be relicensed by a person in a country with PD under 0BSD for vendoring, imo. |
Beta Was this translation helpful? Give feedback.
-
The more I think about it, everything in the core library could be BSD 1-Clause if possible. The compiler code could easily remain BSD 3-Clause, and I think that would be fine with pretty much everyone. It's probably the best "compromise" I can think of. |
Beta Was this translation helpful? Give feedback.
-
My understanding of the 3rd clause seems to be different. This is not for protecting the contributors for all I can tell. It's about maintaining the integrity of trust in the project, by preventing the use of the project name and it's contributors, so that nobody can fork the project and say: "This [forked, sketchy] version is Odin. The language made by the one and only @gingerBill". The EU (GDPR), Australia, Japan, USA and Canada are protecting one's name by law, and to be frank, I'd expect most countries to have some form of laws protecting people's names, I didn't check more though. |
Beta Was this translation helpful? Give feedback.
-
I've recently been learning more about licensing in open source software development and had an overview of how Odin's copyright situation is.
I did this because I'd like to release a compiled binary of my own Odin code one day, and I want to know what I would be legally obligated to do. I've also been curious about the sporadic copyright notices throughout the project.
I want to preface this with saying that I'm not a lawyer, nor legally trained, nor am I in a legal profession, so my judgment may not be as sharp as someone from that background.
I'd like to resolve two questions with this discussion:
I'll go into my attempt at answering the first question myself, to show I've tried to figure this out on my own.
NOTE: Much of my understanding of late comes from this article.
Copyright Claims
A search for the word "Copyright" reveals the following claims:
LICENSE
base/runtime/dynamic_map_internal.odin
base/runtime/wasm_allocator.odin
core/c/libc/README.md
core/crypto/_aes/ct64/~
core/crypto/_aes/hw_intel/~
core/crypto/_fiat/field_~
core/crypto/~
core/encoding/entity/LICENSE_table.md
core/encoding/entity/generated.odin
core/encoding/uuid/LICENSE
core/flags/LICENSE
core/math/big/prime.odin
core/math/cmplx/~
core/math/math.odin
core/math/math.odin
core/math/math.odin
core/math/math_basic.odin
core/math/math_erf.odin
core/math/math_gamma.odin
core/math/math_lgamma.odin
core/math/math_log1p.odin
core/math/math_sincos.odin
core/math/noise/internal.odin
core/math/noise/opensimplex2.odin
core/mem/tlsf/LICENSE
core/net/~
core/slice/heap/heap.odin
core/text/table/table.odin
core/thread/thread_pool.odin
core/unicode/tools/generate_entity_table.odin
src/libtommath/LICENSE
src/ucg/~
src/utf8proc/~
Odin's license is currently under the BSD-3-Clause variant. See commit 1cd3b69 for the change.
Does not specify which license.
License text refers to https://netlib.sandia.gov/cephes/readme:
The code that it is ported from (https://github.com/KdotJPG/OpenSimplex2) is licensed as CC0 1.0 Universal.
Multiple holders include: Tetralux, Colin Davidson, and Jeroen van Rijn.
Multiple holders include:
Steven G. Johnson, Jiahao Chen, Peter Colberg, Tony Kelman, Scott P. Jones, and other contributors.
andPublic Software Group e. V., Berlin, Germany
.Interpretations
I've read that the phrase "All rights reserved." complicates licensing permissions, but there are opposing opinions on this. I'm inclined to believe the latter, but I've noted this here with what licenses use that phrasing.
Clause 2 of the BSD-3-Clause requires redistributions in binary form to reproduce the license.
I'm assuming all of the claims referring to "under Odin's BSD-3 License" would act as references of authorship, but they would not necessarily require additional licenses included in a redistribution of binary code.
So at bare minimum, every program compiled from Odin source with the Odin compiler should include
LICENSE
found at the root of this repository, because unless I'm mistaken, all of the code under thebase
andcore
library collections, unless otherwise stated, is under the rootLICENSE
.The BSD-1-Clause license does not explicitly require reproduction for binaries (that requirement which is usually found in clause 2 of the BSD-3-Clause), but it does have the typical opening statement: (emphasis is mine)
I could assume that the 1 clause overrides the opening statement referencing binary forms, but then I'd wonder why it was written to begin with anyway. Does "binary forms" in this instance refer to compressed forms of the source code only and not compiled forms?
Depending on how that's interpreted, the licenses of Thomas Pornin and the fiat-crypto authors may or may not be required to be carried in compiled binary distributions.
I am interpreting compilation of source code into machine code as a modification of source code. This seems common sense to me, but I was able to find this StackExchange answer that makes a more legal justification for this line of reasoning.
The W3C 2002 license does not differentiate between source or binary and only states that it permits modification, provided that its
NOTICE
is included.Stephen L. Moshier's copyright appears to have no redistribution requirements; it grants free use but states there is no support and no guarantees.
Requirements
Based on my reading and interpretation of the licenses, this is what I've concluded is required, if you distribute a compiled binary of your own Odin code using the Odin compiler and its included library collections.
LICENSE
reproduced, bare minimum.wasm_allocator.odin
reproduced if using a wasm build.core:encoding/xml
is imported.core/encoding/uuid/LICENSE
ifcore:encoding/uuid
is imported.core/flags/LICENSE
ifcore:flags
is imported.core:math
procedures:round_f16
,round_f32
,round_f64
.core:math
procedures:asinh
,acosh
,atanh
,ln_f64
,erf_*
,lgamma_*
,log1p_*
.core:math
procedures:asin_f64
,acos_f64
.core/mem/tlsf/LICENSE
ifcore:mem/tlsf
is imported.NOTE: I am uncertain if any code from
utf8proc
is used in decoding runes from within a compiled Odin program (i.e. the rune-based iteration of a string), but if it is, it may be the case that theutf8proc
MIT license is necessary to be included for such programs.For the
vendor
library collection, the situation's simpler, since everything's divided already. If you make use of one of the packages, the licenses are right there and able to be copied. This is more what I'm used to handling prior to Odin.Uncertainties
dynamic_map_internal.odin
does not list license/permissions.the
license but not Odin's license specifically. I could assume it's the Odin license, but maybe this is a weak point in the wording.Survey of Odin Programs
I was curious how other projects handled this, and if my interpretations about needing to include the Odin license would hold up. I went through the Odin showcase of projects that had demos for download.
EmberGen
I downloaded EmberGen 1.1.2 for Linux from the website and opened
THIRD_PARTY_LICENSES.txt
. A quick search revealed no mention of the Ginger Bill BSD-3-ClauseLICENSE
.LiquiGen
Same situation as EmberGen. I checked this one out, since my understanding is that it's a newer product of JangaFX.
Todool
No mention of the Odin
LICENSE
.Conclusions
As far as the base and core of Odin go, it's not too complicated of a licensing situation, from what I can tell.
Originally, I included my own licenses with my
flags
anduuid
PRs, because that's what Bill did when he put up the originalflags
PR which was porting my package. My limited understanding at the time was that because Odin's under a BSD-3-Clause license too, that the two would somehow "merge," but I've since learned that my license is something that stands on its own.I'd be okay with changing my licenses to simplify this process for other people if it's an issue.
It also seems like the three projects I checked out did not include the
LICENSE
from this repository, so I'm wondering if I've misinterpreted something.As an addendum, I did a little digging and found this answer about how the GCC handles the library code situation in their own scenario. I think it's an interesting case, since the GPL is supposed to be one of the most explicit open source licenses. In short, despite the libraries being under the GPL, they warrant an exception to code compiled using them to not be under the GPL. I'm not sure if there's a precedent for similar exceptions under BSD licenses, but I can't imagine why one wouldn't be able to be made if necessary.
Contribution
As I mentioned in the intro to this issue, I've noticed sporadic copyright statements made within the core library during my time contributing, many of them belonging to Jeroen van Rijn.
Is there an unwritten rule about these? I ask because it seems to be a non-standard practice, i.e. not every file or package has them and some are formatted or placed differently compared to others. I couldn't find any directions regarding this, either.
@Kelimion, can you provide some wisdom about this?
I can see the benefit in having a list of contributors section in files or packages, in case it gets reformatted or jumbled around, and you needed to contact someone about something particular, as digging through
git
blames can sometimes be a pain.I also think it would be helpful to have a list of procedures or code that's in the core/base of Odin which warrants specific license inclusion, as the ones I've pointed out up in the
math
library. (This is of course pending that my interpretation that such things are needed is actually true.)Other Projects
I know the Godot Engine project has a
LICENSE
where they have a copyright statement that lists "Godot Engine contributors" which points to anAUTHORS.md
file listing individual contributors.I went to look at how Zig handles this, and it looks like they have a
LICENSE
with a copyright to "Zig contributors" but noAUTHORS
type of file.The article I mentioned at the start of this has a section on this type of situation as well as this note.
Conclusions
I make no decree about what to do about this since I'm hoping for some wisdom from the elder contributors. :) I am curious though what your thoughts are, based on my observations. Do let me know if you think I have the wrong interpretation. I admit I'm new to this side of open source.
Beta Was this translation helpful? Give feedback.
All reactions