licensed: Difference between ignored and reviewed
Recently I got a question from my teammate:
What’s the difference between
reviewed
andignored
in.licensed.yml
?
I found only the following:
# These dependencies are explicitly ignored.
ignored:
bundler:
- some-internal-gem
bower:
- some-internal-package
# These dependencies have been reviewed.
reviewed:
bundler:
- bcrypt-ruby
bower:
- classlist # public domain
- octicons
For me it’s still not really clear when I should put a gem into ignored:
and when into reviewed:
. Can you guide me?
Probably this should be clarified in the docs or combined into a single category to avoid confusions and save time debating with colleagues.
About this issue
- Original URL
- State: closed
- Created 5 years ago
- Comments: 20 (20 by maintainers)
Commits related to this issue
- Clarify difference between ignored and reviewed [ci skip] Related to #196. — committed to sergey-alekseev/licensed by sergey-alekseev 5 years ago
@sergey-alekseev @mlinksva
reviewed
is meant for dependencies that need to be cached and checked, but do not have a license found that matches theallowed
configured licenses.ignored
is meant for dependencies that shouldn’t be cached at all, and will not have cached metadata written to the repo.Good question! I’ll update the docs when I have a chance, though I’d also welcome a PR 😄
@mlinksva @benbalter I’ve pared down https://github.com/jonabc/licensed-example/tree/master/vendor/gems/ruby/2.6.0/gems to only include the dependencies in the audit above.
I’m not expecting anything to be actionable for dependencies on the
no license contents
list, but for the others it’s not immediately clear which cases should be detected or not. If anyone gets a chance could you take a look and see if there is anything in there you’d expect that licensee would already detect, or would be reasonable to detect with additional work?🙇
Makes sense, I haven’t thought about it. So Licensed can’t fetch those license files from local directories as they simply do not exist there. They can still be grabbed from repositories and filled in manually then when necessary.
I’ve updated https://github.com/jonabc/licensed-example/ to include the full content after
bundle install --path vendor/gems
. This is the “source of truth” thatgithub/licensed
uses to determine dependency data.It’s mostly complete but won’t contain data on the ruby default gems like bundler and json
@sergey-alekseev I agree with you that the remote repositories have license files and/or licenses in the readme, but those files aren’t included in the distributed gem - you can check each gemspec
spec.files
property to see what is included.The only special case here is
bundler
, which I’ve found to kind’ve do its own thing and may or may not be directly installed with ruby. For example my local bundler installation doesn’t have a README or LICENSE@sergey-alekseev thanks for your patience!
I just completed a quick audit of the example you provided. Here’s my findings for things without license contents, and those marked
other
No license contents
This class of failures is what we’re trying to address in https://github.com/github/licensed/issues/189.
“other” license classification
The list here shows each dependency that was classified as “other”, which files
licensed
found for each dependency, and the resulting classification fromlicensee
for each file. In the case ofother
classifications for a file I also added a note on what I was able to tell on why a license wasn’t detectedThe majority of the failures here were due to deviations from an official license template for various reasons. I think some of them might be actionable to fix in the license detection logic in licensee, but many are likely to continue to be painful.
It’s getting a little late in my day, but I’ll open an issue tomorrow over in licensee and link to this + the example repo and see if there are any thoughts on improvements.
The MIT License (MIT)
as part of the wordset because it’s after the copyright noticedependency.readme_file.content_normalized == ""
jQuery UI as well as this gem are licensed under the MIT license (see jquery-ui/MIT-LICENSE.txt).
LICENSE
aboveThe MIT License
OR COPYRIGHT HOLDERS
from license text is the only difference I can see2 clause bsd
, where one ofbsd 2-clause
orbsd-2-clause
was expectedThat sounds like the best option for now as the most straightforward fix. Hopefully as we figure out https://github.com/github/licensed/issues/189, much of this will just fix itself automatically. If you have any specific preference beyond “just make it work please”, please do to comment on the issue 🙇 😄
I forked your example 👍 I don’t have enough time to dig in at the moment but I’d love to look through this and see exactly why each
other
classification occurred. It’d be great if we could better support some of these scenariosGoing to answer as many of these as I can 😄
Any content licensee detects from a
README
is already included in cached output, so I don’t think it’s that.What would change in this example is that we’d be showing the license specification picked up from http_accept_language.gempsec. Still working through the best way to show that, but as a possible example
If my understanding is correct, this is a slippery slope for the reasons outline by licensee. If others with better understanding of OSS licensing requirements give a 👍 that representing this content as a license is ok I’m happy to make that change.
Yeah that’s painful. Some feedback around the details of why you had so many adjustments needed would be great
license: other
: Is the license text far enough off from the standard template for the license that a false negative is found? Are multiple licenses found? Something else?licenses: []
: Do all 11 of these not have anyLICENSE
type file and nothing in the README?That said, licensed won’t overwrite the
license
field on dependency version updates if the (normalized) license contents are determined to be the same between the cached and new version. In our experience there is high likelihood that nothing changes re: license contents between versions of a dependency, so a majority of the pain in clarifying licenses is only experienced once.That’s a better question to ask at Licensee directly, though in my experience I’ve found this has to do with gem not installing all the files that Licensee uses from the repo as part of the package.
This is the part where I get to say I’m not a lawyer and don’t personally have an answer on what constitutes a binding agreement when using an OSS license. I don’t know
@grosser
personally and couldn’t tell you whether his comment is based in legal knowledge or personal opinion.As I mentioned before, licensee does bring this up in case that helps?
The requirement is older than my involvement in the product 😆 I asked awhile ago whether
reviewed
dependencies should still surface this error, and the answer was to keep the error in place. I don’t recall whether the question+answer was pre-v1 release or not, but I couldn’t find anything in the issue/PR repo history.Aside: thank you @sergey-alekseev for making PRs (seen from your examples, also thanks for providing concrete examples!) to improve licensing documentation from projects where it is missing, silently saving time for developers using (as they should) license tooling (licensed or numerous others) who might otherwise need to ask for review of innocuous dependencies.
@sergey-alekseev what you described is intentional, though I’m not sure what the recommended remediation here is. @mlinksva any thoughts?
The goal is to have cached metadata for all external dependencies that are used by the shipped product. The
ignored
flag is to say that a dependency that’s being found isn’t shipped as part of the public product, or it’s something built by the project owner and isn’t an external dependency. An external dependency that’s found but doesn’t have license text shouldn’t be set asignored
An interesting thing though. Chances are an external dependency doesn’t have a license info (examples: https://github.com/iain/http_accept_language/issues/72, https://github.com/grosser/i18n_data/pull/47, https://github.com/grosser/sort_alphabetical/pull/23). If added to
reviewed
thenlicensed status
fails with “missing license text”. Hence they should be added toignored
. So I’m not sure whether “but do not have a license found that matches theallowed
configured licenses.” suits well forreviewed
🤔