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

Common and coherent license policy for rust-embedded and drivers? #57

Closed
getreu opened this issue Mar 7, 2018 · 26 comments
Closed

Common and coherent license policy for rust-embedded and drivers? #57

getreu opened this issue Mar 7, 2018 · 26 comments
Labels
feb-2019-cleanup These issues are proposed to be closed, as part of a cleanup of issues in February 2019

Comments

@getreu
Copy link

getreu commented Mar 7, 2018

Drivers should be published under the same license as embedded-hal and cortex-m-rtfm which is:

Licensed under either of

at your option.

It is important that the ecosystem grows under the same license! If you agree with me, the question arises if and how we could enforce this?

One way to go: We set up an "official repository" to create an incitement for developers to become part of it. License compliance would be the first condition to get a driver accepted. In case we later add quality criteria as acceptance condition, this "official repository" should be managed in a democratic way.

@therealprof Could you consider adapting your license to Apache/MIT?

@getreu
Copy link
Author

getreu commented Mar 7, 2018

In a professional environment the license is of utmost importance. When you start a project and choose an ecosystem for embedded development you need to make sure that all code and drivers are released under a compatible license.

A common license policy is not only supporting our vision (To improve the productivity of embedded software development teams) but also constitutes the condition sine qua non for professional suitability. Linux wouldn't have been successful in a professional environment without a common license policy.

@getreu
Copy link
Author

getreu commented Mar 7, 2018

@therealprof

Compatible: yes, identical: no.

@MrBuddyCasino

Never had issues with the permissive ones, be it MIT / BSD / Apache / Mozilla or whatever

A license is a legal agreement. Unfortunately "permissive" and "compatible" are no legal concepts. In general when someone assembles code with different licences, he needs to make sure that his usage does not violate any of the licences. In other words, you have to comply with all of them. This needs to checked against the business model that is subject to change. Without a layer next to you, many different licenses becomes a risky enterprise because your attack surface gets bigger with every licence you add to your code base. In doubt professionals will not opt for an ecosystem where the legal side is risky or somehow unclear.

@therealprof

And I absolutely don't get your "Linux" point, are you talking about the kernel or the ecosystem?

Kernel.

@getreu
Copy link
Author

getreu commented Mar 7, 2018

If we all agree with:
@dbrgn

yes, the use of permissive licenses

... it should not hurt anybody to chose the same than the Rust language and RTFM. A professional user will always prefer a code base with a coherent, simple and clear license policy.

@dvc94ch
Copy link
Member

dvc94ch commented Mar 7, 2018 via email

@MrBuddyCasino
Copy link

I had to provide Excel sheets of dependency licenses that were used in projects of ours multiple times in my career. Only GPL and LGPL gave us trouble, everything else was fine. So I suggest that unless there is actual evidence that the "Very Big Corporation of America" has an issue with this, this discussion is academic. Yes we need to be business friendly, but if some company decides to be unnecessarily picky about licenses, they can gladly look elsewhere for free (as in beer) code.

Having a single one would be nice because it simplifies things, but why piss off unpaid contributors that may have a strong preference for a certain license?

@thejpster
Copy link
Contributor

thejpster commented Mar 7, 2018 via email

@nastevens
Copy link
Member

I had to provide Excel sheets of dependency licenses that were used in projects of ours multiple times in my career.

Same here. I suggest that it's not as important to limit which licenses can be used as it is to clearly surface the licenses being used. I.e. provide clear instructions on how to show which licenses are being used so that people who need to justify their FOSS usage can quickly gauge if RTFM/drivers/etc. will work for them.

@ah-
Copy link

ah- commented Mar 10, 2018

I.e. provide clear instructions on how to show which licenses are being used so that people who need to justify their FOSS usage can quickly gauge if RTFM/drivers/etc. will work for them.

Maybe even a cargo tool? cargo license goes and prints a list of all your dependencies and their licenses?

@Nemo157
Copy link

Nemo157 commented Mar 10, 2018

I have an existing cargo sub command for this cargo-lichking, it may have issues with embedded projects currently since it doesn’t support specifying the target for target specific dependencies; but I’m planning to add that soon since I’m starting to work with Rust on embedded projects.

@korken89
Copy link
Contributor

korken89 commented Jul 4, 2018

On licensing I would like to point out that in embedded micro controller systems MIT / Apache 2.0 can be problematic as they require the license to be available in the binary distribution. In practice this means that the system must have the license compiled into the binary, and also be available to read out somehow by someone inspecting the system, which is a real problem if used in production.

What we did in the embedded C++ community was to switch to the Boost Software License 1.0 (BSL-1.0) which is similar to MIT but without the requirement on the license being available in the binary.
This is the change which makes the difference in BSL-1.0:

You must include the original copyright and this license
in software unless in the form of “machine-executable
object code generated by a source processor.”

@jamesmunns
Copy link
Member

@korken89 Interesting, I had not heard of that interpretation before. Is there a legal precedence that states it must be included in the binary distribution? In my experience, companies include this documentation with the released product, but in paper form/in the rest of the T&Cs/Warranty/etc (not in the binary).

@korken89
Copy link
Contributor

korken89 commented Jul 4, 2018

This is a gray-zone in my non-legal-expert interpretation, but if it is in the documents accompanying the product can be fine.
Recalling from the old discussions, the choice was made to simply not be in the gray-zone and explicitly allow it.

For details I think Odin who is leading this project: https://github.com/kvasir-io has it.
I was just listening in on the discussions back then, but I also asked now on their Slack about the rationale behind all this so I can report back.

I just want to make you aware, as this has the potential to be a huge headache.

@Nemo157
Copy link

Nemo157 commented Jul 4, 2018

Apache-2.0 specifically seems like it's fine with the license being included in the documentation, it doesn't limit how you provide a copy of the license to the recipients:

You must give any other recipients of the Work or Derivative Works a copy of this License


I believe MIT is also ok with it when you read the license as a whole

[...] this software and associated documentation files (the "Software") [...]

The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.

by the definition of "Software" given in the copyright notice the documentation is included, so including the license file as part of the documentation of the derivative work should cover including the license with a copy of the Software.

(IANAL)

@korken89
Copy link
Contributor

korken89 commented Jul 4, 2018

I trust you guys, just to keep it in mind and so that you are aware of the choices other embedded communities has done.

@jamesmunns
Copy link
Member

Thanks for the input @korken89, definitely follow up if you hear more information from the organizations you are involved with.

@therealprof
Copy link
Contributor

Hm, what happened to this issue? A whole bunch of comments (including all of mine) are missing...

@hannobraun
Copy link
Member

hannobraun commented Jul 4, 2018

@therealprof: You're probably remembering the discussion from #39. Starts here: #39 (comment)

@getreu opened this issue and copied his own comments. See #39 (comment)

@therealprof
Copy link
Contributor

@hannobraun Right, my bad then. Just a bit weird to read...

@puzrin
Copy link

puzrin commented Jul 4, 2018

IMHO if you wish to push authors do something - create a convenient automated tools for CI. For example - recursive licence checker for projects. And let users to ask crate authors about the rest. Attempt to enforce authors directly & manually to do something is not nice in OSS.

@ithinuel
Copy link
Member

ithinuel commented Jul 4, 2018

@puzrin
Copy link

puzrin commented Jul 4, 2018

@ithinuel yes.

@getreu
Copy link
Author

getreu commented Oct 11, 2018

Any improvement here? it is hight time to conform with the rest of the rust community.

@getreu getreu changed the title Common and coherent license policy for RTFM and drivers? Common and coherent license policy for rust-embedded and drivers? Oct 11, 2018
@getreu
Copy link
Author

getreu commented Oct 11, 2018

Idea to foster coherent licensing:

add a tag like [compliant license] to items in rust-embedded/awesome-embedded-rust: Curated list of resources for Embedded and Low-level development in the Rust programming languag

@jamesmunns
Copy link
Member

@getreu echoing what @therealprof said in rust-embedded/awesome-embedded-rust#24 (comment), defining, policing, and enforcing what a "compliant license" is in the context is probably not something we have the bandwidth for at the moment.

That being said, I would expect any of the crates maintained by the WG to always be something permissive (e.g. MIT, Apache, 0BSD, etc), but I really have no personal issues with individuals using whatever license suits them, as long as it is clearly marked in their cargo.toml. Tools like cargo-license are great for auditing these dependencies.

I'm not sure what you mean by "conform with the rest of the rust community", there are a number of crates that have chosen different licenses across the crates.io ecosystem, and I haven't personally seen any WGs or other official entities attempting to enforce compatible licensing.

@jamesmunns
Copy link
Member

I would propose that we state somewhere that all embedded-wg owned crates be dual licensed under MIT/Apache-2.0, and perhaps mention that most crates in this ecosystem are similarly licensed.

Outside of that, I do not believe there is a strong desire (or capability) from the embedded-wg to "require" licensing terms from anyone in an open source space.

Nominating this issue for cleanup.

@jamesmunns jamesmunns added the feb-2019-cleanup These issues are proposed to be closed, as part of a cleanup of issues in February 2019 label Feb 4, 2019
@jamesmunns
Copy link
Member

I am closing this issue, please feel free to open another issue if you would like this discussed further.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
feb-2019-cleanup These issues are proposed to be closed, as part of a cleanup of issues in February 2019
Projects
None yet
Development

No branches or pull requests