-
Notifications
You must be signed in to change notification settings - Fork 23
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
Add license #18
Comments
AFAIK no license means you can do anything with it, plus the license they would use probably would also state that you can do anything with it. So does it really matter that much? |
That's incorrect; no license means it's not defined what you can do with the software, so the owners of the code (who are not with PINE64) own the rights and can decide what's allowed to be done with it. It would be a good idea IMO to get some concrete statements from the owners of the code about licensing. |
FintasticMan is correct, it's more formally described as "All Rights Reserved". Rights to IP are almost never granted, unless explicitly granted. Here is a nice write-up by GitHub that explains why including a license is important:
In other words, OpenPineBuds is not open-source, until they include the license. However, in theory, it can never really be fully open-source at all anymore, unless Pine64 contacts every contributor to retroactively get permission to license it or otherwise remove their contributions. The longer maintainers take to add the license, the more complicated the matter becomes. This really should be prioritized, and all contributors asked to agree to whatever license is proposed. |
I agree that we should prioritise figuring out a way to license this code, the issue is that this repository is based on code that PINE64 was granted permission to use by some Chinese company. As far as I'm aware, the conditions of that agreement have not been made public. To add a license, we would need not only the approval of all the contributors as well as from that company. |
Yes, this is an issue. We could use a CLA bot to get the contribution copyright signed over to Pine64. I don't know if that's a good idea. The problem remains of tracking down all contributions and resolving SDK copyright from BES. I don't think they'll allow it [copyright] to be transferred to an open-source license. They might do, but I doubt it, from my experience with Chinese ODM/OEMs. I'll hand this over to @gamelaster and @Ralim for their input on this issue - I'm new to the project, but we've discussed things in depth recently. |
I wasn't aware of the Chinese ODM/OEM thing, so I appreciate that you both raised it. I do hope that one way or another, it'll be possible to get open-source firmware. Be it through this repository or something similar, where the offending code is superseded. 👍 However, at least some clarity on the license terms would help then. Especially as the README explicitly states that this is open-source when it's not, at least not by the OSI definition, which I think most people would imply. ^-^' This is ofc a complicated matter, so I appreciate it'll take time to figure everything out. But if indeed there are licensing issues, it may be worth revising the README to either omit the term "open-source", or at least replace it with "source accessible". |
We have discussed replacing Makefiles with CMake, and my long-term goal is to convert the firmware over to Rust - plus simplify the linker scripts. This may reduce the offending code. I'll probably hold fire on future PRs until we've sorted the copyright issues. However, I'll make a PR to the README shortly, just to clarify. I'll link to this issue in the PR when I commit. |
This is related to pine64#18.
So we need to plan for this case:
No matter what I've asked, its been silence from them on this; it appears they do not want any transfer of their existing code/binary blobs to a different licence. It seems they are ok with source-available of it (and given this SDK is all over csdn, its not really a secret). At this point I would suggest we adopt a licence for our changes and new content at the minimum; and have a goal of eventually removing all of the existing dubious licensed code. |
This is related to pine64#18.
This is related to pine64#18.
This is related to pine64#18.
Since it looks like the project will have different files under different licenses, I'd recommend using something like the REUSE spec [1] and the Debian Copyright (DEP5) format [2] as they are machine readable and have tooling for automatic verification (reuse-tool) [3]. This would involve listing all the licenses in Additionally you'd create a file ( The reuse tool can then verify that licenses are identified and properly marked for every file prior to PR merges. And if you want to list all licensing in one place, you can generate a full DEP5 style license manifest (named either |
@OneDeuxTriSeiGo we have some update about this. We found identical BES files with the ones in our SDK, with Apache license in AliOS repository (I am on phone right now, so I can't send link). Thus, we can relicense those files. For other files, we already asked Pine Store for help, so it should be resolved soon. |
You may not have seen what I said in the Discussions area, but that's precisely what I aim to do. |
Ah yep. I see that comment now. I'm open to help out where I can but it'll probably take me a little bit to get acquainted with everything (Just got my pinebuds in the mail a week ago and was looking through the repo when I came across this issue). |
This is file which we have in our SDK and it's Apache 2 If anyone can check out how many files are same, it would be great. Thanks |
@OneDeuxTriSeiGo It's gonna take a while to get going. I've branched the Any ideas? |
Oh easy. Any non-standard licenses can be declared by including them in a file named Then just tag the license ID |
Huh. That was easier than I expected. I guess we need @gamelaster to get the full license Pine64 got from BES, so we can copy it into the repository. |
yep. luckily REUSE is pretty simple to deal with. Do we by chance know the licenses for the audio assets? I ask as REUSE will want us to label all files in the repo with a license either via a |
I don't know myself. (cc: @gamelaster @Ralim) I think I'd rather reduce the amount of For now, I'll need all the help I can get with this undertaking. CMake and REUSE. |
Yeah. personally that's my preferred way of handling it when we can't include it in a header file. So for example we'd just list all the audio files (or just glob the folder) and tag it with whatever license those are under.
I can start working on the REUSE branch so you can focus on the CMake stuff. I can also help with CMake if you need it. Edit: I'll just leave the branch as is and wait to make it a non-draft PR until after |
Also just to confirm:
Do we just want to have all new contributions under the Apache 2 as well? |
Also @shymega can we license the CMake stuff under whatever license we use for the main repo (assuming Apache-2 for now)? |
Also worth noting that the RTOS (RTX) is partially licensed under its own license as well. IDK how far that goes but not all of the headers have licenses attached. |
(Sadly) TL is going to try and get them agree to something more concrete but we have (A) no promise that will occur (B) they cannot re-licence the RTX stuff really, which is a main goal in moving off it once we have things sorted out. Edit: Meant to add that we should figure out what we can plan for if we don't ever get licencing information on the files we can't match up to having already been licenced. I'm not opposed to making a list of them and reimplementing or replacing them as a matter of urgency. For RTX we have the ability to replace it with freertos easier as that's part of their supported options. At least as a stop gap. |
At this point I have a list of all the files that could be easily identified with a license and am going through all the remaining files one by one to figure out:
I'll open a PR with a giant table containing all this in the comments so that we can get written OKs from everyone to re-license (or find a plan to use an alternative so we don't step on feet). Some of the important details based on what I've come across so far:
|
Thank you for your work. I am a little worried about my CMake and Rust branches, and if my work will need adjusting for the upcoming PRs with REUSE support... any thoughts on reducing merge conflicts? Cheers. |
I am basing my changes off of 5521f97 which is the first commit of your CMake branch since everything after that is just new CMake files and all you'd need to do is go back and put licenses/SPDX tags on those files. After my branch gets PRed, reviewed, and hopefully merged, your PR should just move up one commit with that base commit now being part of the shared history and your merge should otherwise go through as if it went through now. I noticed however that your second commit moves a bunch of files in the ANC directory out of their include/src dirs into the same dir. Is there a reason for that given it's the only section you did that for? That would be the only possible conflict but even then it should be pretty easy to resolve. |
Ah, okay. Yes, the reason I did that was to simplify the hierarchy. |
As for the rust rewrite, I'm not sure how much has been done on it so far but would it be worthwhile to break that out into its own repo instead? If you need to reference code from this repo, you could just fetch it in a That discussion is probably out of the scope of this issue so we could continue it in |
Ah. I'm not inherently opposed to the change but I think whatever we do we need to be consistent about it. Also any changes in the repo structure we make will make integrating new changes from other trees more difficult. With the move of the top level directory it isn't so bad because we can replicate that pretty easily but if deeply nested directories start getting moved around, that may make pulling in changes harder. IDK if we intend on even doing that so that might not be a concern but I figured it was worth mentioning. |
It was also due to the I might change it back - not sure yet. I wanted to make it simple, and didn't want too many |
ah. I'd personally recommend avoiding globs for marking sources as I've been bitten in the ass by them in the past (and on top of that CMake docs recommend avoiding them as well). From [1]:
|
Yeah, I used globs based on another CMake project I help maintain. Seemed to have worked there. What do you make of using a solution like this? I'd prefer to use globs to recursively collect headers and sources - I don't want to add each one manually, there's loads. |
I'm not inherently against it. It's definitely better than plain globs. And if we were to do that, rather than try to do a switch, it'd be preferable to just set the minimum CMake version to 3.11.
Given that there's a fairly small number per sub project (but a metric ton in total), If you don't mind them being there but don't want to deal with the monotony of adding them, I can go through and do the grunt work to replace globs with declarative header/source lists after I finish up the license stuff. I'm pretty sure there are actually scripts that exist which do this automatically once all the |
Yeah, I suppose backwards compatibility is a factor. If you do find the script, I can do that - can you ping me on Telegram when you find it? Thanks. |
Sure. |
OK, so with regards to We can then use I don't know if this will affect your branch. I also added a linking directive to |
awesome. as im working off only the first commit of your series, this should mean that now we have no conflicts whatsoever and the merge should probably go through without requiring any further changes from either of us. |
Yeah, you might need to rebase though. I edited the commit back in the history, so it's been rewritten. It's in the |
I've been working on the license identification for a while now and I can finally start presenting some results. I'm keeping them in a separate repository since they are fairly extensive and wouldn't fit easily in a single file. As of this post, the master branch has the analysis of upstream sources. The Once that's done, I'll pin the commit hashes for the alt sources and generate the diffs for the repository. I'm also working on generating the lists of contributors per file and I'll focus on finishing that once the rest of the copyright license source identification is done. https://github.com/OneDeuxTriSeiGo/openpinebuds-source-analysis/ What's left after this:
there's more to do after that of course but getting through this list should be the brunt of it. |
Really great work on this. Wouldn't know where to start, myself. Also, to avoid burnout, don't feel you're obliged to do this. Take any and all breaks you need - we'll still be here :) |
So we need to officially decide on a license still. I'm not sure what the decision making process is but I'm putting forward 3 suggestions (listed below). I'm also planning that any files with an established upstream be dual licensed as the original license OR our license rather than AND so we can attempt to upstream changes where possible. I will list each option in a comment below. thumbs up the ones you support and thumbs down any that you refuse to support/use.
For context the following licenses are currently in use in the repo:
|
|
|
|
This comment was marked as off-topic.
This comment was marked as off-topic.
No, and asking pings everyone involved in this issue - please see #76 and subscribe to this issue and that one for notifications. |
This software doesn't have a license, would you please add it?
The text was updated successfully, but these errors were encountered: