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

[REVIEW]: Surprise: A Python library for recommender systems #2174

Closed
38 tasks done
whedon opened this issue Apr 12, 2020 · 94 comments
Closed
38 tasks done

[REVIEW]: Surprise: A Python library for recommender systems #2174

whedon opened this issue Apr 12, 2020 · 94 comments
Assignees
Labels
accepted published Papers published in JOSS recommend-accept Papers recommended for acceptance in JOSS. review

Comments

@whedon
Copy link

whedon commented Apr 12, 2020

Submitting author: @NicolasHug (Nicolas Hug)
Repository: https://github.com/NicolasHug/Surprise
Version: v1.1.1
Editor: @terrytangyuan
Reviewer: @sara-02, @ejhigson
Archive: 10.5281/zenodo.3959188

Status

status

Status badge code:

HTML: <a href="https://joss.theoj.org/papers/cd8a6f153e9111fb41142a797b82d53b"><img src="https://joss.theoj.org/papers/cd8a6f153e9111fb41142a797b82d53b/status.svg"></a>
Markdown: [![status](https://joss.theoj.org/papers/cd8a6f153e9111fb41142a797b82d53b/status.svg)](https://joss.theoj.org/papers/cd8a6f153e9111fb41142a797b82d53b)

Reviewers and authors:

Please avoid lengthy details of difficulties in the review thread. Instead, please create a new issue in the target repository and link to those issues (especially acceptance-blockers) by leaving comments in the review thread below. (For completists: if the target issue tracker is also on GitHub, linking the review thread in the issue or vice versa will create corresponding breadcrumb trails in the link target.)

Reviewer instructions & questions

@sara-02 & @ejhigson, please carry out your review in this issue by updating the checklist below. If you cannot edit the checklist please:

  1. Make sure you're logged in to your GitHub account
  2. Be sure to accept the invite at this URL: https://github.com/openjournals/joss-reviews/invitations

The reviewer guidelines are available here: https://joss.readthedocs.io/en/latest/reviewer_guidelines.html. Any questions/concerns please let @terrytangyuan know.

Please try and complete your review in the next two weeks

Review checklist for @sara-02

Conflict of interest

  • I confirm that I have read the JOSS conflict of interest (COI) policy and that: I have no COIs with reviewing this work or that any perceived COIs have been waived by JOSS for the purpose of this review.

Code of Conduct

General checks

  • Repository: Is the source code for this software available at the repository url?
  • License: Does the repository contain a plain-text LICENSE file with the contents of an OSI approved software license?
  • Contribution and authorship: Has the submitting author (@NicolasHug) made major contributions to the software? Does the full list of paper authors seem appropriate and complete?

Functionality

  • Installation: Does installation proceed as outlined in the documentation?
  • Functionality: Have the functional claims of the software been confirmed?
  • Performance: If there are any performance claims of the software, have they been confirmed? (If there are no claims, please check off this item.)

Documentation

  • A statement of need: Do the authors clearly state what problems the software is designed to solve and who the target audience is?
  • Installation instructions: Is there a clearly-stated list of dependencies? Ideally these should be handled with an automated package management solution.
  • Example usage: Do the authors include examples of how to use the software (ideally to solve real-world analysis problems).
  • Functionality documentation: Is the core functionality of the software documented to a satisfactory level (e.g., API method documentation)?
  • Automated tests: Are there automated tests or manual steps described so that the functionality of the software can be verified?
  • Community guidelines: Are there clear guidelines for third parties wishing to 1) Contribute to the software 2) Report issues or problems with the software 3) Seek support

Software paper

  • Summary: Has a clear description of the high-level functionality and purpose of the software for a diverse, non-specialist audience been provided?
  • A statement of need: Do the authors clearly state what problems the software is designed to solve and who the target audience is?
  • State of the field: Do the authors describe how this software compares to other commonly-used packages?
  • Quality of writing: Is the paper well written (i.e., it does not require editing for structure, language, or writing quality)?
  • References: Is the list of references complete, and is everything cited appropriately that should be cited (e.g., papers, datasets, software)? Do references in the text use the proper citation syntax?

Review checklist for @ejhigson

Conflict of interest

  • I confirm that I have read the JOSS conflict of interest (COI) policy and that: I have no COIs with reviewing this work or that any perceived COIs have been waived by JOSS for the purpose of this review.

Code of Conduct

General checks

  • Repository: Is the source code for this software available at the repository url?
  • License: Does the repository contain a plain-text LICENSE file with the contents of an OSI approved software license?
  • Contribution and authorship: Has the submitting author (@NicolasHug) made major contributions to the software? Does the full list of paper authors seem appropriate and complete?

Functionality

  • Installation: Does installation proceed as outlined in the documentation?
  • Functionality: Have the functional claims of the software been confirmed?
  • Performance: If there are any performance claims of the software, have they been confirmed? (If there are no claims, please check off this item.)

Documentation

  • A statement of need: Do the authors clearly state what problems the software is designed to solve and who the target audience is?
  • Installation instructions: Is there a clearly-stated list of dependencies? Ideally these should be handled with an automated package management solution.
  • Example usage: Do the authors include examples of how to use the software (ideally to solve real-world analysis problems).
  • Functionality documentation: Is the core functionality of the software documented to a satisfactory level (e.g., API method documentation)?
  • Automated tests: Are there automated tests or manual steps described so that the functionality of the software can be verified?
  • Community guidelines: Are there clear guidelines for third parties wishing to 1) Contribute to the software 2) Report issues or problems with the software 3) Seek support

Software paper

  • Summary: Has a clear description of the high-level functionality and purpose of the software for a diverse, non-specialist audience been provided?
  • A statement of need: Do the authors clearly state what problems the software is designed to solve and who the target audience is?
  • State of the field: Do the authors describe how this software compares to other commonly-used packages?
  • Quality of writing: Is the paper well written (i.e., it does not require editing for structure, language, or writing quality)?
  • References: Is the list of references complete, and is everything cited appropriately that should be cited (e.g., papers, datasets, software)? Do references in the text use the proper citation syntax?
@whedon
Copy link
Author

whedon commented Apr 12, 2020

Hello human, I'm @whedon, a robot that can help you with some common editorial tasks. @sara-02, @ejhigson it looks like you're currently assigned to review this paper 🎉.

⭐ Important ⭐

If you haven't already, you should seriously consider unsubscribing from GitHub notifications for this (https://github.com/openjournals/joss-reviews) repository. As a reviewer, you're probably currently watching this repository which means for GitHub's default behaviour you will receive notifications (emails) for all reviews 😿

To fix this do the following two things:

  1. Set yourself as 'Not watching' https://github.com/openjournals/joss-reviews:

watching

  1. You may also like to change your default settings for this watching repositories in your GitHub profile here: https://github.com/settings/notifications

notifications

For a list of things I can do to help you, just type:

@whedon commands

For example, to regenerate the paper pdf after making changes in the paper's md or bib files, type:

@whedon generate pdf

@whedon
Copy link
Author

whedon commented Apr 12, 2020

PDF failed to compile for issue #2174 with the following error:

Can't find any papers to compile :-(

@arfon
Copy link
Member

arfon commented Apr 12, 2020

@whedon generate pdf from branch joss_paper

@whedon
Copy link
Author

whedon commented Apr 12, 2020

Attempting PDF compilation from custom branch joss_paper. Reticulating splines etc...

@arfon
Copy link
Member

arfon commented Apr 12, 2020

@sara-02, @ejhigson - please carry out your review in this issue by updating the checklist above and giving feedback in this issue. The reviewer guidelines are available here: https://joss.readthedocs.io/en/latest/reviewer_guidelines.html

Any questions/concerns please let @terrytangyuan know.

@whedon
Copy link
Author

whedon commented Apr 12, 2020

@ejhigson
Copy link

Hi @NicolasHug - congratulations on making a really awesome and very popular software package!

The install and examples all worked perfectly for me. The API documentation is very thorough too. I have couple of questions:

  1. are there any similar other existing software packages for recommender systems? One of the review criteria is "Do the authors describe how this software compares to other commonly-used packages?" and I don't see any such comparison in your paper, but if no such packages exist then this is fine.

  2. are there any instructions on how to run the unit tests? I can't see any such instructions in the documentation (sorry if I have missed them). When I try running the tests with nosetests I get an import error for some module called 'similarities' on every test - I include an example below. Do you know what I need to do to fix this?

$ nosetests
EEEEEEEEEEEEEEEEEE
======================================================================
ERROR: Failure: ImportError (cannot import name 'similarities')
----------------------------------------------------------------------
Traceback (most recent call last):
  File "/home/ed/.local/lib/python3.6/site-packages/nose/failure.py", line 39, in runTest
    raise self.exc_val.with_traceback(self.tb)
  File "/home/ed/.local/lib/python3.6/site-packages/nose/loader.py", line 418, in loadTestsFromName
    addr.filename, addr.module)
  File "/home/ed/.local/lib/python3.6/site-packages/nose/importer.py", line 47, in importFromPath
    return self.importFromDir(dir_path, fqname)
  File "/home/ed/.local/lib/python3.6/site-packages/nose/importer.py", line 94, in importFromDir
    mod = load_module(part_fqname, fh, filename, desc)
  File "/usr/lib/python3.6/imp.py", line 245, in load_module
    return load_package(name, filename)
  File "/usr/lib/python3.6/imp.py", line 217, in load_package
    return _load(spec)
  File "<frozen importlib._bootstrap>", line 684, in _load
  File "<frozen importlib._bootstrap>", line 665, in _load_unlocked
  File "<frozen importlib._bootstrap_external>", line 678, in exec_module
  File "<frozen importlib._bootstrap>", line 219, in _call_with_frames_removed
  File "/home/ed/code/surprise/surprise/__init__.py", line 3, in <module>
    from .prediction_algorithms import AlgoBase
  File "/home/ed/code/surprise/surprise/prediction_algorithms/__init__.py", line 23, in <module>
    from .algo_base import AlgoBase
  File "/home/ed/code/surprise/surprise/prediction_algorithms/algo_base.py", line 10, in <module>
    from .. import similarities as sims
ImportError: cannot import name 'similarities'

@NicolasHug
Copy link

Thanks for the review @ejhigson

I didn't include a comparison with other similar packages. Should I?
It's a bit tricky because recommendation has a very wide range of applications and usually, each library targets a specific one. That I know of, surprise is the only library that focuses on rating prediction and that is still maintained, in Python. There are also openrec, Spotlight and LightFM but they target different applications.

There are instructions to run the tests in the contributing guidelines: https://github.com/NicolasHug/Surprise/blob/master/CONTRIBUTING.md . Also note that a CI instance is ran at every commit, there's a "build passing badge in the readme.

@sara-02
Copy link

sara-02 commented Apr 14, 2020

@NicolasHug If not an exhaustive comparison then even an overview would do. I assume most projects on Recommendation Systems have been written as part of research projects and not maintained after that.
I recently found this markdown that is trying to curate a list of RecSys available for use, maybe you this to curate your related work section of the paper.
https://github.com/grahamjenson/list_of_recommender_systems

@ejhigson
Copy link

@NicolasHug :

I didn't include a comparison with other similar packages. Should I?

I agree with @sara-02 that an overview would be useful.

recommendation has a very wide range of applications and usually, each library targets a specific one. That I know of, surprise is the only library that focuses on rating prediction and that is still maintained, in Python. There are also openrec, Spotlight and LightFM but they target different applications.

I think this is useful information to include in the paper.

There are instructions to run the tests in the contributing guidelines: https://github.com/NicolasHug/Surprise/blob/master/CONTRIBUTING.md . Also note that a CI instance is ran at every commit, there's a "build passing badge in the readme.

Aha sorry I missed this! With these instructions all the tests work perfectly for me.

@arfon
Copy link
Member

arfon commented May 20, 2020

👋 @NicolasHug - today we reopened JOSS for new submissions and are checking in on our existing reviews. How are you getting on making these updates to your paper?

@sara-02
Copy link

sara-02 commented Jun 1, 2020

@terrytangyuan I have updated my reviews, waiting for @NicolasHug to update the paper w.r.t State of the field: Do the authors describe how this software compares to other commonly-used packages?

@arfon
Copy link
Member

arfon commented Jun 24, 2020

👋 @NicolasHug - could you update us on when you might be able to address @sara-02's request above? ☝️

@NicolasHug
Copy link

NicolasHug commented Jun 25, 2020

Thank you for the reviews so far and apologies for the silence!

I'm still short on time ATM but it will get better soon and should be able to address the reviews by mid August July.

@NicolasHug
Copy link

@whedon generate pdf from branch joss_paper

@whedon
Copy link
Author

whedon commented Jul 14, 2020

Attempting PDF compilation from custom branch joss_paper. Reticulating splines etc...

@whedon
Copy link
Author

whedon commented Jul 14, 2020

@NicolasHug
Copy link

@whedon generate pdf from branch joss_paper

@whedon
Copy link
Author

whedon commented Jul 14, 2020

Attempting PDF compilation from custom branch joss_paper. Reticulating splines etc...

@whedon
Copy link
Author

whedon commented Jul 14, 2020

@NicolasHug
Copy link

Thanks again everyone! I have updated the paper with a section on related libraries, as suggested by @sara-02 .

@terrytangyuan
Copy link
Member

👋 @sara-02 Could you review again when you get a chance? Thanks!

@sara-02
Copy link

sara-02 commented Jul 17, 2020

@terrytangyuan @NicolasHug LGTM 🥳

@sara-02
Copy link

sara-02 commented Jul 17, 2020

@NicolasHug Minor suggestion for the first line of the paper can we replace the phrase items that the offers to items that the platform/service offers so as not to confuse the word system from the RecSys we refer to in the beginning of the sentence.

@NicolasHug
Copy link

Thanks @sara-02 , and good catch. I have modified the first sentence accordingly.

@whedon
Copy link
Author

whedon commented Aug 4, 2020

Attempting PDF compilation from custom branch joss-paper. Reticulating splines etc...

@whedon
Copy link
Author

whedon commented Aug 4, 2020

PDF failed to compile for issue #2174 with the following error:

error: pathspec 'joss-paper' did not match any file(s) known to git.
Can't find any papers to compile :-(

@NicolasHug
Copy link

@whedon generate pdf from branch joss_paper

@whedon
Copy link
Author

whedon commented Aug 4, 2020

Attempting PDF compilation from custom branch joss_paper. Reticulating splines etc...

@whedon
Copy link
Author

whedon commented Aug 4, 2020

@danielskatz
Copy link

👋 @Kevin-Mattheus-Moerman - is this ready to go?

@danielskatz
Copy link

@NicolasHug - in the references, I think "ECML pkdd workshop" should be "ECML PKDD Workshop" Similarly the booktitle for Gantner should be changed to title case (by protecting it in the .bib file with {}s
Guo is missing something
Some caps need to be fixed in Harper
Same for Kula 2015
And Lee
And McKinney
and Yang

After these are fixed, please regenerate the pdf

@Kevin-Mattheus-Moerman
Copy link
Member

@danielskatz yes this looks good to me. I see you raised a minor issue ☝️, once that is resolved it looks good to go. You can process acceptance if you like or let me know if you want me to.

@danielskatz
Copy link

I'll do it once this issue is resolved - thanks

@NicolasHug
Copy link

@whedon generate pdf from branch joss_paper

@whedon
Copy link
Author

whedon commented Aug 5, 2020

Attempting PDF compilation from custom branch joss_paper. Reticulating splines etc...

@whedon
Copy link
Author

whedon commented Aug 5, 2020

@NicolasHug
Copy link

Thanks @danielskatz , capitalization is hopefully fixed now

@danielskatz
Copy link

@whedon accept

@whedon
Copy link
Author

whedon commented Aug 5, 2020

Attempting dry run of processing paper acceptance...

@whedon
Copy link
Author

whedon commented Aug 5, 2020

PDF failed to compile for issue #2174 with the following error:

Can't find any papers to compile :-(

@danielskatz
Copy link

@whedon accept from branch joss_paper

@whedon
Copy link
Author

whedon commented Aug 5, 2020

Attempting dry run of processing paper acceptance...

@whedon
Copy link
Author

whedon commented Aug 5, 2020

Reference check summary:

OK DOIs

- 10.25080/Majora-92bf1922-00a is OK
- 10.1109/MCSE.2010.118 is OK
- 10.1109/MCSE.2011.37 is OK
- 10.1007/978-3-319-29659-3 is OK
- 10.1145/3159652.3159681 is OK

MISSING DOIs

- None

INVALID DOIs

- None

@whedon
Copy link
Author

whedon commented Aug 5, 2020

👋 @openjournals/joss-eics, this paper is ready to be accepted and published.

Check final proof 👉 openjournals/joss-papers#1628

If the paper PDF and Crossref deposit XML look good in openjournals/joss-papers#1628, then you can now move forward with accepting the submission by compiling again with the flag deposit=true e.g.

@whedon accept deposit=true from branch joss_paper 

@danielskatz
Copy link

@whedon accept deposit=true from branch joss_paper

@whedon whedon added accepted published Papers published in JOSS labels Aug 5, 2020
@whedon
Copy link
Author

whedon commented Aug 5, 2020

Doing it live! Attempting automated processing of paper acceptance...

@whedon
Copy link
Author

whedon commented Aug 5, 2020

🐦🐦🐦 👉 Tweet for this paper 👈 🐦🐦🐦

@whedon
Copy link
Author

whedon commented Aug 5, 2020

🚨🚨🚨 THIS IS NOT A DRILL, YOU HAVE JUST ACCEPTED A PAPER INTO JOSS! 🚨🚨🚨

Here's what you must now do:

  1. Check final PDF and Crossref metadata that was deposited 👉 Creating pull request for 10.21105.joss.02174 joss-papers#1629
  2. Wait a couple of minutes to verify that the paper DOI resolves https://doi.org/10.21105/joss.02174
  3. If everything looks good, then close this review issue.
  4. Party like you just published a paper! 🎉🌈🦄💃👻🤘

Any issues? Notify your editorial technical team...

@danielskatz
Copy link

Thanks to @sara-02 and @ejhigson for reviewing and @terrytangyuan for editing!

Congratulations to @NicolasHug (Nicolas Hug)!!

@whedon
Copy link
Author

whedon commented Aug 5, 2020

🎉🎉🎉 Congratulations on your paper acceptance! 🎉🎉🎉

If you would like to include a link to your paper from your README use the following code snippets:

Markdown:
[![DOI](https://joss.theoj.org/papers/10.21105/joss.02174/status.svg)](https://doi.org/10.21105/joss.02174)

HTML:
<a style="border-width:0" href="https://doi.org/10.21105/joss.02174">
  <img src="https://joss.theoj.org/papers/10.21105/joss.02174/status.svg" alt="DOI badge" >
</a>

reStructuredText:
.. image:: https://joss.theoj.org/papers/10.21105/joss.02174/status.svg
   :target: https://doi.org/10.21105/joss.02174

This is how it will look in your documentation:

DOI

We need your help!

Journal of Open Source Software is a community-run journal and relies upon volunteer effort. If you'd like to support us please consider doing either one (or both) of the the following:

@NicolasHug
Copy link

Thank you so much everyone! 🎉

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
accepted published Papers published in JOSS recommend-accept Papers recommended for acceptance in JOSS. review
Projects
None yet
Development

No branches or pull requests

8 participants