github-linguist / linguist

Language Savant. If your repository's language is being reported incorrectly, send us a pull request!
MIT License
12.11k stars 4.2k forks source link

Running script/licensed creates a mess #4265

Closed pchaigno closed 5 years ago

pchaigno commented 6 years ago

Running ./script/licensed on an unmodified clone of Linguist seems to create a huge mess (see below). It removes newlines at the end of files, adds lines to license texts, and even deletes a few files. Is that expected? Should we be running ./script/licensed from time to time??

$ git status
On branch master
Your branch is up to date with 'origin/master'.

Changes not staged for commit:
  (use "git add/rm <file>..." to update what will be committed)
  (use "git checkout -- <file>..." to discard changes in working directory)

    modified:   vendor/licenses/grammar/ABNF.tmbundle.txt
    modified:   vendor/licenses/grammar/Agda.tmbundle.txt
    modified:   vendor/licenses/grammar/Alloy.tmbundle.txt
    modified:   vendor/licenses/grammar/Assembly-Syntax-Definition.txt
    modified:   vendor/licenses/grammar/AutoHotkey.txt
    modified:   vendor/licenses/grammar/BrightScript.tmbundle.txt
    modified:   vendor/licenses/grammar/ColdFusion.txt
    modified:   vendor/licenses/grammar/Docker.tmbundle.txt
    modified:   vendor/licenses/grammar/EBNF.tmbundle.txt
    modified:   vendor/licenses/grammar/Elm.txt
    modified:   vendor/licenses/grammar/Handlebars.txt
    modified:   vendor/licenses/grammar/IDL-Syntax.txt
    modified:   vendor/licenses/grammar/Isabelle.tmbundle.txt
    modified:   vendor/licenses/grammar/Lean.tmbundle.txt
    modified:   vendor/licenses/grammar/LiveScript.tmbundle.txt
    modified:   vendor/licenses/grammar/MQL5-sublime.txt
    modified:   vendor/licenses/grammar/MagicPython.txt
    modified:   vendor/licenses/grammar/NSIS.txt
    modified:   vendor/licenses/grammar/NimLime.txt
    modified:   vendor/licenses/grammar/PHP-Twig.tmbundle.txt
    modified:   vendor/licenses/grammar/PogoScript.tmbundle.txt
    modified:   vendor/licenses/grammar/Racket.txt
    modified:   vendor/licenses/grammar/SCSS.tmbundle.txt
    modified:   vendor/licenses/grammar/SMT.tmbundle.txt
    modified:   vendor/licenses/grammar/Scalate.tmbundle.txt
    modified:   vendor/licenses/grammar/Slash.tmbundle.txt
    modified:   vendor/licenses/grammar/Stata.tmbundle.txt
    modified:   vendor/licenses/grammar/Stylus.txt
    modified:   vendor/licenses/grammar/Sublime-Coq.txt
    modified:   vendor/licenses/grammar/Sublime-HTTP.txt
    modified:   vendor/licenses/grammar/Sublime-Lasso.txt
    modified:   vendor/licenses/grammar/Sublime-Loom.txt
    modified:   vendor/licenses/grammar/Sublime-Nit.txt
    modified:   vendor/licenses/grammar/Sublime-Pep8.txt
    modified:   vendor/licenses/grammar/Sublime-QML.txt
    modified:   vendor/licenses/grammar/Sublime-REBOL.txt
    modified:   vendor/licenses/grammar/Sublime-Red.txt
    modified:   vendor/licenses/grammar/Sublime-SQF-Language.txt
    modified:   vendor/licenses/grammar/Sublime-Text-2-OpenEdge-ABL.txt
    modified:   vendor/licenses/grammar/SublimeBrainfuck.txt
    modified:   vendor/licenses/grammar/SublimeEthereum.txt
    modified:   vendor/licenses/grammar/SublimeGDB.txt
    modified:   vendor/licenses/grammar/SublimePapyrus.txt
    modified:   vendor/licenses/grammar/SublimePuppet.txt
    modified:   vendor/licenses/grammar/Syntax-highlighting-for-PostCSS.txt
    modified:   vendor/licenses/grammar/TLA.txt
    modified:   vendor/licenses/grammar/TXL.txt
    modified:   vendor/licenses/grammar/Textmate-Gosu-Bundle.txt
    modified:   vendor/licenses/grammar/TypeScript-TmLanguage.txt
    modified:   vendor/licenses/grammar/UrWeb-Language-Definition.txt
    modified:   vendor/licenses/grammar/VBDotNetSyntax.txt
    modified:   vendor/licenses/grammar/Vala-TMBundle.txt
    modified:   vendor/licenses/grammar/X10.txt
    modified:   vendor/licenses/grammar/abap.tmbundle.txt
    modified:   vendor/licenses/grammar/actionscript3-tmbundle.txt
    modified:   vendor/licenses/grammar/ada.tmbundle.txt
    modified:   vendor/licenses/grammar/ampl.txt
    modified:   vendor/licenses/grammar/ant.tmbundle.txt
    modified:   vendor/licenses/grammar/antlr.tmbundle.txt
    modified:   vendor/licenses/grammar/apache.tmbundle.txt
    modified:   vendor/licenses/grammar/applescript.tmbundle.txt
    modified:   vendor/licenses/grammar/asciidoc.tmbundle.txt
    modified:   vendor/licenses/grammar/asp.tmbundle.txt
    modified:   vendor/licenses/grammar/assembly.txt
    modified:   vendor/licenses/grammar/atom-firestore-grammar.txt
    modified:   vendor/licenses/grammar/atom-fsharp.txt
    modified:   vendor/licenses/grammar/atom-fstar.txt
    modified:   vendor/licenses/grammar/atom-language-1c-bsl.txt
    modified:   vendor/licenses/grammar/atom-language-clean.txt
    modified:   vendor/licenses/grammar/atom-language-julia.txt
    modified:   vendor/licenses/grammar/atom-language-p4.txt
    modified:   vendor/licenses/grammar/atom-language-perl6.txt
    modified:   vendor/licenses/grammar/atom-language-purescript.txt
    modified:   vendor/licenses/grammar/atom-language-rust.txt
    modified:   vendor/licenses/grammar/atom-language-srt.txt
    modified:   vendor/licenses/grammar/atom-language-stan.txt
    modified:   vendor/licenses/grammar/atom-salt.txt
    modified:   vendor/licenses/grammar/atomic-dreams.txt
    modified:   vendor/licenses/grammar/ats.txt
    modified:   vendor/licenses/grammar/awk-sublime.txt
    modified:   vendor/licenses/grammar/ballerina-grammar.txt
    modified:   vendor/licenses/grammar/bison.tmbundle.txt
    modified:   vendor/licenses/grammar/blitzmax.txt
    modified:   vendor/licenses/grammar/bro-sublime.txt
    modified:   vendor/licenses/grammar/c.tmbundle.txt
    modified:   vendor/licenses/grammar/capnproto.tmbundle.txt
    modified:   vendor/licenses/grammar/carto-atom.txt
    modified:   vendor/licenses/grammar/ceylon-sublimetext.txt
    modified:   vendor/licenses/grammar/chapel-tmbundle.txt
    modified:   vendor/licenses/grammar/cmake.tmbundle.txt
    modified:   vendor/licenses/grammar/conllu-linguist-grammar.txt
    modified:   vendor/licenses/grammar/cpp-qt.tmbundle.txt
    modified:   vendor/licenses/grammar/creole.txt
    modified:   vendor/licenses/grammar/cucumber-tmbundle.txt
    modified:   vendor/licenses/grammar/cython.txt
    modified:   vendor/licenses/grammar/d.tmbundle.txt
    modified:   vendor/licenses/grammar/dartlang.txt
    modified:   vendor/licenses/grammar/desktop.tmbundle.txt
    modified:   vendor/licenses/grammar/diff.tmbundle.txt
    modified:   vendor/licenses/grammar/dylan.tmbundle.txt
    modified:   vendor/licenses/grammar/ec.tmbundle.txt
    modified:   vendor/licenses/grammar/eiffel.tmbundle.txt
    modified:   vendor/licenses/grammar/ejs-tmbundle.txt
    modified:   vendor/licenses/grammar/elixir-tmbundle.txt
    modified:   vendor/licenses/grammar/erlang.tmbundle.txt
    modified:   vendor/licenses/grammar/factor.txt
    modified:   vendor/licenses/grammar/fancy-tmbundle.txt
    modified:   vendor/licenses/grammar/fish-tmbundle.txt
    modified:   vendor/licenses/grammar/forth.txt
    modified:   vendor/licenses/grammar/fortran.tmbundle.txt
    modified:   vendor/licenses/grammar/gap-tmbundle.txt
    modified:   vendor/licenses/grammar/gdscript.txt
    modified:   vendor/licenses/grammar/gettext.tmbundle.txt
    modified:   vendor/licenses/grammar/gnuplot-tmbundle.txt
    modified:   vendor/licenses/grammar/grace.txt
    modified:   vendor/licenses/grammar/gradle.tmbundle.txt
    modified:   vendor/licenses/grammar/graphviz.tmbundle.txt
    modified:   vendor/licenses/grammar/groovy.tmbundle.txt
    modified:   vendor/licenses/grammar/html.tmbundle.txt
    modified:   vendor/licenses/grammar/idl.tmbundle.txt
    modified:   vendor/licenses/grammar/idris.txt
    modified:   vendor/licenses/grammar/ini.tmbundle.txt
    modified:   vendor/licenses/grammar/io.tmbundle.txt
    modified:   vendor/licenses/grammar/ioke-outdated.txt
    modified:   vendor/licenses/grammar/jade-tmbundle.txt
    modified:   vendor/licenses/grammar/jasmin-sublime.txt
    modified:   vendor/licenses/grammar/java.tmbundle.txt
    modified:   vendor/licenses/grammar/javadoc.tmbundle.txt
    modified:   vendor/licenses/grammar/javascript-objective-j.tmbundle.txt
    modified:   vendor/licenses/grammar/jflex.tmbundle.txt
    modified:   vendor/licenses/grammar/json.tmbundle.txt
    modified:   vendor/licenses/grammar/language-agc.txt
    modified:   vendor/licenses/grammar/language-apl.txt
    modified:   vendor/licenses/grammar/language-asn1.txt
    modified:   vendor/licenses/grammar/language-babel.txt
    modified:   vendor/licenses/grammar/language-batchfile.txt
    modified:   vendor/licenses/grammar/language-blade.txt
    modified:   vendor/licenses/grammar/language-click.txt
    modified:   vendor/licenses/grammar/language-clojure.txt
    modified:   vendor/licenses/grammar/language-closure-templates.txt
    modified:   vendor/licenses/grammar/language-coffee-script.txt
    modified:   vendor/licenses/grammar/language-crystal.txt
    modified:   vendor/licenses/grammar/language-csharp.txt
    modified:   vendor/licenses/grammar/language-csound.txt
    modified:   vendor/licenses/grammar/language-css.txt
    modified:   vendor/licenses/grammar/language-cwl.txt
    modified:   vendor/licenses/grammar/language-emacs-lisp.txt
    modified:   vendor/licenses/grammar/language-fontforge.txt
    modified:   vendor/licenses/grammar/language-gfm.txt
    modified:   vendor/licenses/grammar/language-gn.txt
    modified:   vendor/licenses/grammar/language-graphql.txt
    modified:   vendor/licenses/grammar/language-haml.txt
    modified:   vendor/licenses/grammar/language-haskell.txt
    modified:   vendor/licenses/grammar/language-hql.txt
    modified:   vendor/licenses/grammar/language-inform7.txt
    modified:   vendor/licenses/grammar/language-javascript.txt
    modified:   vendor/licenses/grammar/language-jison.txt
    modified:   vendor/licenses/grammar/language-jolie.txt
    modified:   vendor/licenses/grammar/language-jsoniq.txt
    modified:   vendor/licenses/grammar/language-kotlin.txt
    modified:   vendor/licenses/grammar/language-less.txt
    modified:   vendor/licenses/grammar/language-maxscript.txt
    modified:   vendor/licenses/grammar/language-meson.txt
    modified:   vendor/licenses/grammar/language-ncl.txt
    modified:   vendor/licenses/grammar/language-ninja.txt
    modified:   vendor/licenses/grammar/language-pan.txt
    modified:   vendor/licenses/grammar/language-pcb.txt
    modified:   vendor/licenses/grammar/language-povray.txt
    modified:   vendor/licenses/grammar/language-reason.txt
    modified:   vendor/licenses/grammar/language-regexp.txt
    modified:   vendor/licenses/grammar/language-renpy.txt
    modified:   vendor/licenses/grammar/language-restructuredtext.txt
    modified:   vendor/licenses/grammar/language-ring.txt
    modified:   vendor/licenses/grammar/language-roff.txt
    modified:   vendor/licenses/grammar/language-rpm-spec.txt
    modified:   vendor/licenses/grammar/language-ruby.txt
    modified:   vendor/licenses/grammar/language-sed.txt
    modified:   vendor/licenses/grammar/language-shellscript.txt
    modified:   vendor/licenses/grammar/language-supercollider.txt
    modified:   vendor/licenses/grammar/language-toc-wow.txt
    modified:   vendor/licenses/grammar/language-turing.txt
    modified:   vendor/licenses/grammar/language-typelanguage.txt
    modified:   vendor/licenses/grammar/language-viml.txt
    modified:   vendor/licenses/grammar/language-wavefront.txt
    modified:   vendor/licenses/grammar/language-webassembly.txt
    modified:   vendor/licenses/grammar/language-xbase.txt
    modified:   vendor/licenses/grammar/language-xcompose.txt
    modified:   vendor/licenses/grammar/language-yaml.txt
    modified:   vendor/licenses/grammar/language-yang.txt
    modified:   vendor/licenses/grammar/language-yara.txt
    modified:   vendor/licenses/grammar/latex.tmbundle.txt
    modified:   vendor/licenses/grammar/lilypond.tmbundle.txt
    modified:   vendor/licenses/grammar/liquid.tmbundle.txt
    modified:   vendor/licenses/grammar/lisp.tmbundle.txt
    modified:   vendor/licenses/grammar/llvm.tmbundle.txt
    modified:   vendor/licenses/grammar/logos.txt
    modified:   vendor/licenses/grammar/logtalk.tmbundle.txt
    modified:   vendor/licenses/grammar/lua.tmbundle.txt
    modified:   vendor/licenses/grammar/m3.txt
    modified:   vendor/licenses/grammar/make.tmbundle.txt
    modified:   vendor/licenses/grammar/marko-tmbundle.txt
    modified:   vendor/licenses/grammar/mathematica-tmbundle.txt
    deleted:    vendor/licenses/grammar/matlab.tmbundle.txt
    modified:   vendor/licenses/grammar/maven.tmbundle.txt
    modified:   vendor/licenses/grammar/mediawiki.tmbundle.txt
    modified:   vendor/licenses/grammar/mercury-tmlanguage.txt
    modified:   vendor/licenses/grammar/monkey.txt
    modified:   vendor/licenses/grammar/moonscript-tmbundle.txt
    modified:   vendor/licenses/grammar/nemerle.tmbundle.txt
    modified:   vendor/licenses/grammar/nesC.txt
    modified:   vendor/licenses/grammar/nix.txt
    modified:   vendor/licenses/grammar/nu.tmbundle.txt
    modified:   vendor/licenses/grammar/objective-c.tmbundle.txt
    modified:   vendor/licenses/grammar/ocaml.tmbundle.txt
    modified:   vendor/licenses/grammar/ooc.tmbundle.txt
    modified:   vendor/licenses/grammar/opa.tmbundle.txt
    modified:   vendor/licenses/grammar/openscad.tmbundle.txt
    modified:   vendor/licenses/grammar/oz-tmbundle.txt
    modified:   vendor/licenses/grammar/parrot.txt
    modified:   vendor/licenses/grammar/pascal.tmbundle.txt
    modified:   vendor/licenses/grammar/pawn-sublime-language.txt
    modified:   vendor/licenses/grammar/perl.tmbundle.txt
    modified:   vendor/licenses/grammar/php-smarty.tmbundle.txt
    modified:   vendor/licenses/grammar/php.tmbundle.txt
    modified:   vendor/licenses/grammar/pig-latin.txt
    modified:   vendor/licenses/grammar/pike-textmate.txt
    modified:   vendor/licenses/grammar/postscript.tmbundle.txt
    modified:   vendor/licenses/grammar/powershell.txt
    modified:   vendor/licenses/grammar/processing.tmbundle.txt
    modified:   vendor/licenses/grammar/python-django.tmbundle.txt
    modified:   vendor/licenses/grammar/quake.txt
    modified:   vendor/licenses/grammar/r.tmbundle.txt
    modified:   vendor/licenses/grammar/rascal-syntax-highlighting.txt
    modified:   vendor/licenses/grammar/ruby-slim.tmbundle.txt
    modified:   vendor/licenses/grammar/sas.tmbundle.txt
    modified:   vendor/licenses/grammar/sass-textmate-bundle.txt
    deleted:    vendor/licenses/grammar/scala.tmbundle.txt
    modified:   vendor/licenses/grammar/scheme.tmbundle.txt
    modified:   vendor/licenses/grammar/scilab.tmbundle.txt
    modified:   vendor/licenses/grammar/secondlife-lsl.txt
    modified:   vendor/licenses/grammar/shaders-tmLanguage.txt
    modified:   vendor/licenses/grammar/smali-sublime.txt
    modified:   vendor/licenses/grammar/sourcepawn.txt
    modified:   vendor/licenses/grammar/sql.tmbundle.txt
    modified:   vendor/licenses/grammar/squirrel-language.txt
    modified:   vendor/licenses/grammar/st2-zonefile.txt
    modified:   vendor/licenses/grammar/standard-ml.tmbundle.txt
    modified:   vendor/licenses/grammar/sublime-MuPAD.txt
    modified:   vendor/licenses/grammar/sublime-angelscript.txt
    modified:   vendor/licenses/grammar/sublime-aspectj.txt
    modified:   vendor/licenses/grammar/sublime-autoit.txt
    modified:   vendor/licenses/grammar/sublime-bsv.txt
    modified:   vendor/licenses/grammar/sublime-cirru.txt
    modified:   vendor/licenses/grammar/sublime-clips.txt
    modified:   vendor/licenses/grammar/sublime-fantom.txt
    modified:   vendor/licenses/grammar/sublime-glsl.txt
    modified:   vendor/licenses/grammar/sublime-golo.txt
    modified:   vendor/licenses/grammar/sublime-mask.txt
    modified:   vendor/licenses/grammar/sublime-nearley.txt
    modified:   vendor/licenses/grammar/sublime-nginx.txt
    modified:   vendor/licenses/grammar/sublime-opal.txt
    modified:   vendor/licenses/grammar/sublime-pony.txt
    modified:   vendor/licenses/grammar/sublime-q.txt
    modified:   vendor/licenses/grammar/sublime-rexx.txt
    modified:   vendor/licenses/grammar/sublime-robot-plugin.txt
    modified:   vendor/licenses/grammar/sublime-shen.txt
    modified:   vendor/licenses/grammar/sublime-spintools.txt
    modified:   vendor/licenses/grammar/sublime-tea.txt
    modified:   vendor/licenses/grammar/sublime-terra.txt
    modified:   vendor/licenses/grammar/sublime-text-ox.txt
    modified:   vendor/licenses/grammar/sublime-varnish.txt
    modified:   vendor/licenses/grammar/sublimeassembly.txt
    modified:   vendor/licenses/grammar/sublimeprolog.txt
    modified:   vendor/licenses/grammar/swift.tmbundle.txt
    modified:   vendor/licenses/grammar/tcl.tmbundle.txt
    modified:   vendor/licenses/grammar/thrift.tmbundle.txt
    modified:   vendor/licenses/grammar/toml.tmbundle.txt
    modified:   vendor/licenses/grammar/verilog.tmbundle.txt
    modified:   vendor/licenses/grammar/vhdl.txt
    modified:   vendor/licenses/grammar/vscode-scala-syntax.txt
    modified:   vendor/licenses/grammar/vue-syntax-highlight.txt
    modified:   vendor/licenses/grammar/wdl-sublime-syntax-highlighter.txt
    modified:   vendor/licenses/grammar/xc.tmbundle.txt
    modified:   vendor/licenses/grammar/xml.tmbundle.txt
    modified:   vendor/licenses/grammar/zephir-sublime.txt

Template removed because it doesn't apply.

lildude commented 6 years ago

Is that expected?

No. This sounds like licensed's normalisation process. Will try get this fixed before the next release.

Alhadis commented 6 years ago

More like abnormalisation. πŸ˜‰

pchaigno commented 6 years ago

@lildude If I'm trying to change the source for a submodule, can I first do a PR with these changes? Is that how you plan to fix it?

lildude commented 6 years ago

Is that how you plan to fix it?

I have no idea how I'll address this just yet. πŸ˜‰

lildude commented 6 years ago

So this is as a result of changes introduced in licensee/licensed like those in https://github.com/github/licensed/pull/21 and the recent normalisation changes and I've been caught being old and forgetting to do anything about it on the Linguist side. 😊

It removes newlines at the end of files, adds lines to license texts,

I think this is part of the recent normalisation improvements made to Licensee. Am I right here @benbalter, @mlinksva and/or @jonabc?

and even deletes a few files.

This is going to be because the two grammars, scala and matlab, have been removed as they were swapped out in https://github.com/github/linguist/pull/4044 and https://github.com/github/linguist/pull/4000 respectively but the old cached licenses weren't removed.

Is that expected?

It wasn't, but I think it is now :grin:

Should we be running ./script/licensed from time to time??

Yeah, I think I should probably be running this every time I make a release with updated grammars and when a grammar is swapped out as this is when any license change is likely to happen, though I was under the impression the running of script/licensed status during testing as defined at https://github.com/github/linguist/blob/b5e2687b2ebe02a6f30943b30ddd8ee08322881c/.travis.yml#L14 ... would do the trick and highlight such cases. πŸ€”

Something that is unexpected is the reviewed elements defined in the config file at https://github.com/github/linguist/blob/b5e2687b2ebe02a6f30943b30ddd8ee08322881c/vendor/licenses/config.yml#L21-L26 appear to be ignored (suggestion from https://github.com/github/licensed/issues/7#issuecomment-365000922), for example:

$ git --no-pager diff vendor/licenses/grammar/Sublime-Lasso.txt
diff --git a/vendor/licenses/grammar/Sublime-Lasso.txt b/vendor/licenses/grammar/Sublime-Lasso.txt
index b3595505..baac3ebe 100644
--- a/vendor/licenses/grammar/Sublime-Lasso.txt
+++ b/vendor/licenses/grammar/Sublime-Lasso.txt
@@ -1,10 +1,5 @@
 ---
 type: grammar
 name: Sublime-Lasso
-license: public domain
-curated: true
+license: none
 ---
-
-License Information
-
-This package is provided as-is and is placed in the Public Domain. Sublime Text itself is proprietary software and is probably copyrighted by Sublime HQ Pty Ltd

But now I look at the source, this appears to be expected.

I now also realise the "better option" mentioned in https://github.com/github/licensed/issues/7#issuecomment-365000922 only works for grammars which have their licenses in a separate file which is why we're seeing this license getting trampled all over.

So for this final part of the problem, @jonabc I think we may need to change licensed's caching behaviour to consider reviewed and if a file is marked a reviewed and the caching produces an empty file, ignoring the metadata, leave the file as-is.

This should stop the changes and thus the "missing license text" warnings we see if we run script/licensed status immediately after script/licensed which introduces all the changes:

Warnings:

/Users/lildude/github/linguist/vendor/licenses/grammar/language-csharp.txt:
  - license needs reviewed: other.

/Users/lildude/github/linguist/vendor/licenses/grammar/language-renpy.txt:
  - license needs reviewed: other.

/Users/lildude/github/linguist/vendor/licenses/grammar/sublime-shen.txt:
  - license needs reviewed: other.

/Users/lildude/github/linguist/vendor/licenses/grammar/Sublime-Lasso.txt:
  - missing license text

/Users/lildude/github/linguist/vendor/licenses/grammar/ant.tmbundle.txt:
  - license needs reviewed: other.

/Users/lildude/github/linguist/vendor/licenses/grammar/SCSS.tmbundle.txt:
  - missing license text
  - license needs reviewed: other.

/Users/lildude/github/linguist/vendor/licenses/grammar/creole.txt:
  - missing license text

/Users/lildude/github/linguist/vendor/licenses/grammar/ioke-outdated.txt:
  - license needs reviewed: other.

/Users/lildude/github/linguist/vendor/licenses/grammar/blitzmax.txt:
  - missing license text

/Users/lildude/github/linguist/vendor/licenses/grammar/atom-fsharp.txt:
  - license needs reviewed: other.

309 dependencies checked, 10 warnings found.

I still need to look into the others as to why they've changed, but out of time for today.

jonabc commented 6 years ago

So for this final part of the problem, @jonabc I think we may need to change licensed's caching behaviour to consider reviewed and if a file is marked a reviewed and the caching produces an empty file, ignoring the metadata, leave the file as-is.

@lildude this question came up very recently in a different context and the answer was that every metadata file should have license text, even if it's set as reviewed. Failure to have license text should still result in the warnings shown.

@lildude @pchaigno what are your goals for using licensed? I'm happy to help work through any usage issues or questions, I'm just a little unclear on what you'd like it to be doing.

lildude commented 6 years ago

@lildude this question came up very recently in a different context and the answer was that every metadata file should have license text, even if it's set as reviewed. Failure to have license text should still result in the warnings shown.

That's the thing. The original license file has been manually populated, normally from the text in the README or another file with a name that doesn't match the normal license file nomenclature, and then reviewed. It's when the caching runs that we end up with a problem as it removes this already approved text.

In the example I highlighted above, the license file is populated with the license included in the original README. In another case, the repo uses a file named The MIT License (MIT) to hold the license.

@lildude @pchaigno what are your goals for using licensed? I'm happy to help work through any usage issues or questions, I'm just a little unclear on what you'd like it to be doing.

In this scenario, ideally, multiple invocations shouldn't make changes to the cached files without good reason, like an actual change in license or content, especially across patch releases of licensed or licensee. Many of the changes pointed out by @pchaigno appear to be related to normalisation changes which shouldn't have affected our cached license files.

A quick review of the remaining warnings in the output above show a few obvious license mis-detections due to wild formatting changes and others aren't quite so obvious as to why they're now being mis-detected, even though the license is still the same.

jonabc commented 6 years ago

The original license file has been manually populated, normally from the text in the README or another file with a name that doesn't match the normal license file nomenclature, and then reviewed. It's when the caching runs that we end up with a problem as it removes this already approved text.

@lildude licensed uses logic based on version metadata to detect whether changes are needed. The issue here is that linguist uses a custom enumeration source that doesn't provide version metadata.

The solutions to this are

  1. update the Filesystem source to give "version" => <version> metadata for each dependency
  2. switch to licensed's built-in manifest dependency source

Given that there was discussion about replacing some of the custom tests with more licensed integration, maybe switching to the built-in dependency sources + deeper integration is the best solution?

lildude commented 6 years ago

Given that there was discussion about replacing some of the custom tests with more licensed integration, maybe switching to the built-in dependency sources + deeper integration is the best solution?

Yes, this sounds like it might be the best thing going forward. I'll start a PR today to implement the manifest method as we've been wanting to move away from our custom filesystem method for a while (that comment at the top of our script has been there for as long as I've been working with Linguist 😁).