notro/gud-pico

Would you consider adding a license?

Closed this issue · 4 comments

Hi,
thanks for sharing the project. Very useful little tool...
Would you consider adding a license? Some corporate environments are unhappy to contribute to open source projects under no license. It would make things easier if you could add one. Thanks.

The reason I haven't done that is because I don't know how I should do it. Most of the files are CC0-1.0, gud.{hc} is MIT and lz4 is BSD-2. I could relicense gud.{hc} as CC0 so maybe I could do: SPDX-License-Identifier: CC0-1.0 AND BSD-2-Clause ?

The reason I used CC0 is so people can reuse whatever (RP2040 code) they need in their own project regardless of the license they're using (when I wrote it it wasn't much RP2040 USB code examples available). I would probably have used MIT if this was a project I would expect people to contribute to, it's mostly an example implementation. I use it to test the R1, R8 and RGB332 pixel format code paths in the host driver.

I've looked some more, I'll probably follow the way node.js has done it: https://github.com/nodejs/node/blob/main/LICENSE
I have added an entry on my todo for this project.

I'm not a license guru, but the Node solution looks good to me. Thanks for the effort.

Update:
Looks like you could do away using MIT License (see below)...

Just a brief check with our AI overlords...:

When open-sourcing a project that includes libraries with different licenses, it's important to choose a license that is compatible with all of the licenses of the libraries you are using. In your case, you have libraries under the MIT, CC0, and BSD-2-Clause licenses. Fortunately, these licenses are all permissive and compatible with each other, which gives you some flexibility in choosing a license for your project.

Here's a brief overview of the licenses involved:

  1. MIT License: A permissive license that allows for reuse, modification, and distribution, provided the original copyright notice and license are included.
  2. CC0 (Creative Commons Zero): A public domain dedication that allows for reuse without any conditions. It's the most permissive and is effectively a waiver of all rights.
  3. BSD-2-Clause License: A permissive license similar to the MIT license, allowing for reuse, modification, and distribution, provided the copyright notice and list of conditions are included.

Given these licenses, you can choose one of the following approaches:

Option 1: Use the MIT License

The MIT license is widely recognized and very permissive, making it a good choice for your project. It allows you to fulfill the conditions of the BSD-2-Clause license by including the necessary copyright notices and license texts from the libraries you use. It also accommodates the CC0 dedication since it imposes no additional restrictions.

Steps to use the MIT License:

  1. Include the MIT license text in your project.
  2. Include the copyright notices and license texts of the BSD-2-Clause and any MIT-licensed libraries you use.
  3. Mention that some components are under the CC0 dedication.

Option 2: Use the BSD-2-Clause License

The BSD-2-Clause license is also very permissive and compatible with MIT and CC0. It has similar requirements to the MIT license, so using it is straightforward.

Steps to use the BSD-2-Clause License:

  1. Include the BSD-2-Clause license text in your project.
  2. Include the copyright notices and license texts of the MIT and BSD-2-Clause licensed libraries you use.
  3. Mention that some components are under the CC0 dedication.

Option 3: Use a Dual or Multi-License Approach

If you want to provide maximum flexibility to users of your project, you can release it under multiple licenses. For example, you could state that your project is available under both the MIT and BSD-2-Clause licenses, allowing users to choose which one they prefer. This approach is less common but can be useful in some cases.

Steps to use a Dual-License Approach:

  1. Include both the MIT and BSD-2-Clause license texts in your project.
  2. Include the copyright notices and license texts of the MIT, BSD-2-Clause licensed libraries, and mention the CC0 components.
  3. Explicitly state that the project can be used under either the MIT or BSD-2-Clause licenses.

Recommendation

Using the MIT License is likely the simplest and most effective approach. It is very permissive, widely understood, and ensures that you meet the requirements of the BSD-2-Clause and CC0 licenses. Here is a suggested way to structure your project’s LICENSE file:

MIT License
-----------
 
[Include the full text of the MIT License here]
 
Third-Party Licenses
--------------------
 
This project includes third-party libraries with the following licenses:
 
- BSD-2-Clause: [Include the BSD-2-Clause license text here]
- CC0: [Include a statement about the public domain dedication or the text of CC0]
 
Each component's source code includes the original license information.

By following this structure, you ensure that you respect the licenses of all included libraries and clearly communicate the licensing terms to users of your project.