openjournals / joss-reviews

Reviews for the Journal of Open Source Software
Creative Commons Zero v1.0 Universal
725 stars 38 forks source link

[REVIEW]: pref_voting: The Preferential Voting Tools package for Python #7020

Open editorialbot opened 4 months ago

editorialbot commented 4 months ago

Submitting author: !--author-handle-->@epacuit<!--end-author-handle-- (Eric Pacuit) Repository: https://github.com/voting-tools/pref_voting Branch with paper.md (empty if default branch): Version: v1.0.0 Editor: !--editor-->@britta-wstnr<!--end-editor-- Reviewers: @dmnapolitano, @pkrafft Archive: Pending

Status

status

Status badge code:

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

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

@dmnapolitano & @pkrafft, your review will be checklist based. Each of you will have a separate checklist that you should update when carrying out your review. First of all you need to run this command in a separate comment to create the checklist:

@editorialbot generate my checklist

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

Please start on your review when you are able, and be sure to complete your review in the next six weeks, at the very latest

Checklists

📝 Checklist for @dmnapolitano

📝 Checklist for @pkrafft

editorialbot commented 4 months ago

Hello humans, I'm @editorialbot, a robot that can help you with some common editorial tasks.

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

@editorialbot commands

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

@editorialbot generate pdf
editorialbot commented 4 months ago

Software report:

github.com/AlDanial/cloc v 1.90  T=0.19 s (730.7 files/s, 193737.4 lines/s)
-------------------------------------------------------------------------------
Language                     files          blank        comment           code
-------------------------------------------------------------------------------
Python                          90           6352           6044          14536
Markdown                        35           1309              0           1589
JSON                             3              0              0            835
Jupyter Notebook                 4              0           5039            828
TeX                              1             32              0            295
YAML                             2              8             17             30
TOML                             1              3              0             28
DOS Batch                        1              8              1             26
reStructuredText                 2             36             57             24
make                             1              4              7              9
-------------------------------------------------------------------------------
SUM:                           140           7752          11165          18200
-------------------------------------------------------------------------------

Commit count by author:

   216  Eric Pacuit
   178  Wesley H. Holliday
     6  Dominik Peters
editorialbot commented 4 months ago
Reference check summary (note 'MISSING' DOIs are suggestions that need verification):

OK DOIs

- 10.12987/9780300186987 is OK
- 10.1016/S1574-0110(02)80014-5 is OK
- 10.1007/978-3-319-91908-9_4 is OK
- 10.1016/S1574-0110(02)80008-X is OK
- 10.1007/978-0-387-49896-6 is OK
- 10.7551/mitpress/9780262015134.003.0001 is OK
- 10.1017/CBO9781107446984 is OK
- 10.1007/978-1-4020-9688-4_14 is OK
- 10.1007/978-3-642-20441-8_3 is OK
- 10.1515/9781400868339 is OK
- 10.2307/1911681 is OK
- 10.1007/s00355-015-0909-0 is OK
- 10.1007/978-3-662-09925-4 is OK
- 10.21105/joss.04880 is OK
- 10.1007/978-3-642-41575-3_20 is OK
- 10.1515/9781400859504 is OK
- 10.1017/CBO9780511605864 is OK
- 10.1007/978-94-009-3985-1 is OK
- 10.1007/978-3-662-03782-9 is OK
- 10.4159/9780674974616 is OK
- 10.1017/cbo9780511614316 is OK
- 10.4324/9781315259963 is OK
- 10.1017/cbo9781107446984.003 is OK

MISSING DOIs

- No DOI given, and none found for title: Guide to Numerical Experiments on Elections in Com...
- 10.1093/oso/9780190934163.003.0003 may be a valid DOI for title: Voting Procedures
- No DOI given, and none found for title: Computer-aided Methods for Social Choice Theory
- No DOI given, and none found for title: Rolling the dice: Recent results in probabilistic ...
- No DOI given, and none found for title: Learning to Manipulate under Limited Information
- No DOI given, and none found for title: Voting Methods
- No DOI given, and none found for title: Votelib: Evaluation of voting systems in Python
- No DOI given, and none found for title: Pref.Tools: Tools that are useful for analyzing pr...
- No DOI given, and none found for title: abif
- No DOI given, and none found for title: VoteKit

INVALID DOIs

- None
editorialbot commented 4 months ago

Paper file info:

📄 Wordcount for paper.md is 1077

✅ The paper includes a Statement of need section

editorialbot commented 4 months ago

License info:

✅ License found: MIT License (Valid open source OSI approved license)

editorialbot commented 4 months ago

:point_right::page_facing_up: Download article proof :page_facing_up: View article proof on GitHub :page_facing_up: :point_left:

britta-wstnr commented 4 months ago

Hello again! 👋
 @dmnapolitano @pkrafft FYI @epacuit

This is the review thread for the paper. All of our higher-level communications will happen here from now on, review comments and discussion can happen in the repository of the project (details below).

📓 Please read the "Reviewer instructions & questions" in the comment from our editorialbot (above). ✅ All reviewers get their own checklist with the JOSS requirements - you generate them as per the details in the editorialbot comment. As you go over the submission, please check any items that you feel have been satisfied. 💻 The JOSS review is different from most other journals: The reviewers are encouraged to submit issues and pull requests on the software repository. When doing so, please mention this issue. That will also help me to keep track! ❓ Please also feel free to comment and ask questions on this thread. 🎯 We aim for the review process to be completed within about 4-6 weeks but please make a start well ahead of this as JOSS reviews are by their nature iterative and any early feedback you may be able to provide to the author will be very helpful in meeting this schedule.

britta-wstnr commented 4 months ago

FYI: I will be out of office for 2.5 weeks. 🌲 🌻 I will check-in again as soon as I am back! In the meanwhile, see above for how to get your reviewing process started! 🌱

dmnapolitano commented 4 months ago

Review checklist for @dmnapolitano

Conflict of interest

Code of Conduct

General checks

Functionality

Documentation

Software paper

britta-wstnr commented 3 months ago

Thanks for getting started with your review, @dmnapolitano ! A gentle ping for @pkrafft, could you generate your checklist if you get a moment and confirm the first two points? Thanks! 🙏

britta-wstnr commented 3 months ago

For transparency: I just sent @pkrafft and email in case the Github notifications are off 🙂

dmnapolitano commented 3 months ago

Hi @britta-wstnr , I believe I'm done with my review 🎉 Sorry it took so long, and please let me know if there's anything I missed or anything else I can help out with here.

One question I have...it's minor but the authors use "etc." quite a bit throughout the paper, which is rather informal compared to the rest of the paper (which is very well-written!). Is this ok for JOSS? This is my first time reviewing here so I'm not entirely familiar with the style standards 🙂

Thanks!!

pkrafft commented 3 months ago

Review checklist for @pkrafft

Conflict of interest

Code of Conduct

General checks

Functionality

Documentation

Software paper

britta-wstnr commented 2 months ago

Hi @dmnapolitano - thanks a lot for your review! 🙏 I see you raised a question in https://github.com/voting-tools/pref_voting/issues/106 that got resolved; were there any other things the authors should address? And for the mentioned issue, @epacuit is this now further clarified in the documentation as per the issue comment and if so, @dmnapolitano are you happy with how it's updated?

Regarding your question on style, AFAIK we do not have a strict style guide on this, but if something is disturbing the reading flow, it's definitely worth changing. I had a look at the use of etc. in the paper, and it might indeed make the paper a little more elegant to read if some of those occurrences could be resolved differently in the text. @epacuit can I add this onto your list? Thanks 🙏 and thanks to @dmnapolitano for pointing it out.

dmnapolitano commented 2 months ago

Hi @britta-wstnr , thanks for following up! Yes, I'm happy with how the issue was handled and I hope it'll be clarified in the documentation soon if it wasn't already. My issue will hopefully help others, at the very least 😄

And thanks, I agree that "etc." feels out of place in this otherwise well-written paper! 🙌🏻

epacuit commented 2 months ago

@britta-wstnr @dmnapolitano Thanks for the suggestion about removing "etc.". We have updated the paper accordingly.

pkrafft commented 2 months ago

Hi all and @britta-wstnr, for minor issues, should I make a list in an issue comment, or make direct edits/suggestions through a fork and pull requests?

britta-wstnr commented 2 months ago

Hi @pkrafft - both works, whatever you find more convenient. If it's a list of minor comments, you can even post that in the thread here if you prefer. Bigger things we think is better documented at the software-level, i.e., on the Github repo of the software (that makes it easier for people to find it back in the future). Then just make sure to link the issue or PR here.

britta-wstnr commented 2 months ago

@pkrafft gentle ping just to make sure this answered your question? 🙂

pkrafft commented 1 month ago

The issues I've identified in my review are as follows. I think the package, documentation, and write-up are okay but with room for improvement. They are certainly above the standard I would expect for research code but don't quite meet a high open source/free software standard.

epacuit commented 1 month ago

Thank you for the feedback!

We are still in the process of updating the README along the lines of your suggestions.

Regarding the errors with the tests and the import issues:

  1. When trying to import generate_profile, I got an error "ModuleNotFoundError: No module named 'seaborn'" so there might be a problem with the dependency management in the pip file. I also get the error for preflibtools when I try to run the tests. After manually installing seaborn and preflibtools, I can run the code in the README and the tests without dependency errors.

  2. There is extensive functionality of the software, so it is difficult to verify all the functionality. I have been able to run the code in the README without error, but I do get three errors when I run the tests directory with pytest. This is on a fresh install with Python 3.9.6. The errors are copied below. FAILED tests/test_all_vms.py::test_all_profile_vms - assert <networkx.cla...t 0x315056430> == [1] FAILED tests/test_all_vms.py::test_all_profile_with_ties_vms - assert <networkx.cla...t 0x3143334f0> == [1] FAILED tests/test_all_vms.py::test_all_margin_graph_vms - assert <networkx.cla...t 0x31457eb80> == [1]

These are both fixed in the commits 8856e72c890d8d7d2b02e856fac499d13c91cd96 and 95f40df3841d1f19419cfc7e23af22553348674f

epacuit commented 1 month ago

Regarding the community guidelines (available here: https://github.com/voting-tools/pref_voting/blob/main/CONTRIBUTING.md): Since this is a small project, we followed the model of a related project: https://github.com/martinlackner/abcvoting/blob/master/CONTRIBUTING.md (see https://joss.theoj.org/papers/10.21105/joss.04880).

This seems the most appropriate for our project. However, if JOSS submissions require something more extensive, please let us know.

britta-wstnr commented 1 month ago

Hi @epacuit and @pkrafft, First of all, great to see that the review process is in full swing! 🙂 Regarding your question, JOSS' guidlines can be found here: https://joss.readthedocs.io/en/latest/review_criteria.html#community-guidelines I think it would be great if you could explicitly add those three points into your Contributor Guidelines, especially "finding a bug" and "seeking support"; the contribution of new features is covered by what you already have. Let me know if there are any questions regarding this!

epacuit commented 1 month ago

We have made a number of additional changes to deal with the remaining issues raised by @pkrafft:

  1. The contributer guidelines have been updated along the lines that @britta-wstnr suggested: https://github.com/voting-tools/pref_voting/blob/main/CONTRIBUTING.md. We also add a link to this file in README.md
  2. We have updated the installation guidelines in the README.md file and the online documentation.
  3. The README include a description of how to run the tests
  4. We slightly extended the code in the "Example Usage" section of the README. We also added an "examples" directory (https://github.com/voting-tools/pref_voting/tree/main/examples) that includes a number of notebooks that illustrate how pref_voting can be used to study issues in social choice. We also add a link to an elections-analysis repo (https://github.com/voting-tools/election-analysis) that uses pref_voting to study some recent political elections.

I believe that this addresses all of the remaining issues. Please let me know if there are additional changes/modifications that are needed. Thanks!

britta-wstnr commented 1 month ago

Thanks @epacuit! @pkrafft, could you have a look? 🙂

britta-wstnr commented 2 weeks ago

Gentle ping @pkrafft to put this back on your radar! Thanks! 🙏

britta-wstnr commented 4 days ago

Pinged @pkrafft via email 🙂