r-devel / cran-cookbook

Problem and solution documentation for common CRAN issues
http://contributor.r-project.org/cran-cookbook/
42 stars 1 forks source link

Description file: LICENSE-files #29

Closed jasdumas closed 1 month ago

jasdumas commented 1 month ago

All licenses must be FOSS (there is a list here: https://svn.r-project.org/R/trunk/share/licenses/license.db)! Most licenses don’t need an additional file as these are part of R. If one is added anyways, we will reject. Same goes for MIT-License files with wrongly specified copyright holders. Surprisingly often, package authors write “[packagename] authors” (which is fine) but still list an old/outdated packagename.

jasdumas commented 1 month ago

I converted this project ticket to an issue to ask some clarifying questions

@Baltmann01 Is this a new rejection rule?

I'm looking at my own DESCRIPTION file for shinyLP that was updated/accepted to CRAN 9 months ago and I have a reference to a LICENSE file:

License: MIT + file LICENSE

Would this way of writing it currently get rejected?

llrs commented 1 month ago

What you have is a template for the relevant aspects of the MIT license (author and date). It would be rejected if you had a full MIT license copied and submitted. CRAN maintainers do not want to add 25k MIT license files duplicated. The rule is relatively old, but recently it has been enforced via checks that packages comply with CRAN templates.

Baltmann01 commented 1 month ago

Yeah, exactly. We on CRAN don't want several copies of the same LICENSE files if the file is already part of R. The MIT License needs however an additional file which specifies the Author and Year. So no worries, MIT + file LICENSE is exactly what you need. If you check out this webpage: https://svn.r-project.org/R/trunk/share/licenses/license.db you can see for the MIT license it says: "Note: this is a template, needs + file LICENSE"

llrs commented 1 month ago

I'm surprised this license.db is in R source code and not somewhat accessible from R side. If it helps to document this (I just learned about RShowDoc()), the list can be consulted via:

path_licenses <- RShowDoc("license.db")
licenses_doc <- as.data.frame(read.dcf(path_licenses))