Skip to content
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

Published on CRAN #14

Open
AARON-CLARK opened this issue Jul 5, 2022 · 4 comments
Open

Published on CRAN #14

AARON-CLARK opened this issue Jul 5, 2022 · 4 comments

Comments

@AARON-CLARK
Copy link

AARON-CLARK commented Jul 5, 2022

Hi @dgkf,

Just wanted to let you know that my team forked {shinyDataFilter} many years ago, made some edits, and just published on CRAN last week under the name {IDEAFilter}. We published {IDEAFilter} to CRAN because we are trying to publish another project on CRAN which depends on '{IDEAfilter}' and as we all know, CRAN packages can't depend on non-CRAN packages.

If interested, please check out our repo: https://github.com/Biogen-Inc/IDEAFilter. We love your work on {shinyDataFilter} and have maintained your authorship and cited your work the README, under the "Origins" section. If you'd like {shinyDataFilter} to be cited some other way, please let me know.

The only things we changed where:

  • Removed plots for a more minimalist aesthetic
  • Added a datetime filter
  • Amended the filter input widget for numeric data to change from a slider to checkboxes whenever the number of unique values was 7 or less.
  • There may have been a few other misc changes I can't remember right now.
@dgkf
Copy link
Owner

dgkf commented Jul 8, 2022

Thanks for letting me know!

I was aware that you all were working on a fork, but didn't realize that the package not being up on CRAN was a bottleneck for you.

The re-licensing is the only thing that jumps out to me as potentially problematic. In order to be compatible with the MIT license, you need to include the LICENSE for the respective components. (Note that the included license is ambiguous, as DESCRIPTION states MIT, while the LICENSE is for Artistic-2.0. Both are permissive and follow more-or-less the same rules for sublicensing, but I'll get them in sync under MIT so there's no ambiguity.) MIT is very straightforward with redistribution:

from MIT LICENSE

The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.

This would go for the shinyDataFilter LICENSE, as well as sortableJS which is redistributed here. You can see the LICENSE file in this repo for how sortableJS's license is included.

It's probably late in the process now, but if it makes things easier on your end, I'd be happy to publish this to CRAN.

@AARON-CLARK
Copy link
Author

Hey @dgkf, thanks for the heads up. I remember having a license file, but the CRAN team told me to remove it during the submission process, so I did in this commit. However, my license file was not appropriately citing shinyDataFilter or sortableJS at the time. I'll create an issue to amend and re-submit.

Thanks for your offer to submit to CRAN, but you're right: we are in a good place with the (minor) changes we've made to {IDEAFilter}, so as of right now, we'd prefer to rely on it for our future projects.

@AARON-CLARK
Copy link
Author

Oh sorry @dgkf, are you saying if you publish to CRAN, I won't have to include shinyDataFilter in my license.md file?

@dgkf
Copy link
Owner

dgkf commented Jul 8, 2022

Thanks for being receptive to the changes, @AARON-CLARK!

However, my license file was not appropriately citing shinyDataFilter or sortableJS at the time. I'll create an issue to amend and re-submit.

Ah, a great point - I didn't think about how this might be received by CRAN. I'm not sure how the structure will play with CRAN's acceptance policy.

I'm searching around for tips, and found this "Practical Guide | Licensing R" resource that uses shiny as an example. I think this is a good template to follow because shiny itself is GPL-3, but redistributes MIT code. The | file LICENSE in shiny's description indicates that redistributed components fall under a different license.

I'm not sure whether this will fly with the CRAN submission process, but I would follow the same structure as shiny here. As far as the MIT license is concerned, you just need to include the license somewhere. If the CRAN folks request a different structure, that would be fine too as long as it's included somewhere. Since this is practically identical to how shiny is set up, I'd expect that this should be acceptable to the CRAN submission process.

In DESCRIPTION you'll want to add | file LICENSE:

- License: AGPL-3
+ License: AGPL-3 | file LICENSE

And then include this LICENSE file

The IDEAFilter package includes other open source software components. The 
following is a list of these components (full copies of the license agreements 
used by these components are included below):

- shinyDataFilter, https://github.com/dgkf/shinyDataFilter
- SortableJS, https://github.com/SortableJS/Sortable


shinyDataFilter
----------------------------------------------------------------------

MIT LICENSE

Copyright (c) 2022 Doug Kelkhoff

Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.


SortableJS license
----------------------------------------------------------------------

MIT LICENSE

Permission is hereby granted, free of charge, to any person obtaining a copy of 
this software and associated documentation files (the "Software"), to deal in 
the Software without restriction, including without limitation the rights to 
use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies 
of the Software, and to permit persons to whom the Software is furnished to do 
so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.

This is a new best practice to me, but one I like. The tutorial resource also recommends adding a comment in the authors field in DESCRIPTION. In this case, something like:

person("Doug", "Kelkhoff", 
        role = c("ctb", "cph"),
        comment = "Author of shinyDataFilter")

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants