software-submission icon indicating copy to clipboard operation
software-submission copied to clipboard

CyNetDiff Submission

Open eliotwrobson opened this issue 10 months ago • 21 comments

Submitting Author: Name (@eliotwrobson) All current maintainers: (@eliotwrobson, @abhishekumrawal) Package Name: CyNetDiff One-Line Description of Package: A performance-focused library implementing algorithms for simulating network diffusion processes, written in Cython. Repository Link: https://github.com/eliotwrobson/CyNetDiff Version submitted: v0.1.13 EIC: @Batalex Editor: @sneakers-the-rat Reviewer 1: TBD
Reviewer 2: TBD
Archive: TBD JOSS DOI: TBD Version accepted: TBD Date accepted (month/day/year): TBD


Code of Conduct & Commitment to Maintain Package

Description

  • Include a brief paragraph describing what your package does:

Network diffusion processes aim to model the spread of information through social networks, represented using graphs. Experimental work involving these models usually involves simulating these processes many times over large graphs, which can be computationally very expensive. At the same time, being able to conduct experiments using a high-level language like Python is helpful to researchers, as this gives greater flexibility in developing research software. To address both of these concerns, CyNetDiff is a Cython module implementing the independent cascade and linear threshold models, two of the most popular network diffusion models. Development has been focused on performance, while still giving an intuitive, high-level interface to assist in research tasks.

Scope

  • Please indicate which category or categories. Check out our package scope page to learn more about our scope. (If you are unsure of which category you fit, we suggest you make a pre-submission inquiry):

    • [ ] Data retrieval
    • [ ] Data extraction
    • [x] Data processing/munging
    • [ ] Data deposition
    • [ ] Data validation and testing
    • [ ] Data visualization[^1]
    • [ ] Workflow automation
    • [ ] Citation management and bibliometrics
    • [ ] Scientific software wrappers
    • [ ] Database interoperability

Domain Specific

  • [ ] Geospatial
  • [ ] Education

Community Partnerships

If your package is associated with an existing community please check below:

[^1]: Please fill out a pre-submission inquiry before submitting a data visualization package.

  • For all submissions, explain how the and why the package falls under the categories you indicated above. In your explanation, please address the following points (briefly, 1-2 sentences for each):

    • Who is the target audience and what are scientific applications of this package?

This is aimed at researchers working in areas related to network diffusion and influence maximization, and specifically at optimizing the most computationally expensive part of this process. This should enable researchers to conduct experiments on larger graphs than would be possible with a pure-Python package. For a recent work doing experiments that fit the use cases of this package, see https://arxiv.org/abs/2207.08937

  • Are there other Python packages that accomplish the same thing? If so, how does yours differ?

There is a previous package filling a similar use case called ndlib: https://github.com/GiulioRossetti/ndlib Our package differs as it was developed with a focus on performance, and with lesser emphasis on visualization and flexibility (for example, we do not have a way of defining custom models). Using code compiled with Cython allows our package to handle much larger graphs than are possible with a pure-Python package like ndlib.

  • If you made a pre-submission enquiry, please paste the link to the corresponding issue, forum post, or other discussion, or @tag the editor you contacted:

#165, @Batalex

Continuing off of the discussion there, the main goals of the review for me are to finalize the interface and add related features / utility code to aid usability. In terms of concrete features, the algorithms already implemented are enough for a full release.

Technical checks

For details about the pyOpenSci packaging requirements, see our packaging guide. Confirm each of the following by checking the box. This package:

  • [x] does not violate the Terms of Service of any service it interacts with.
  • [x] uses an OSI approved license.
  • [x] contains a README with instructions for installing the development version.
  • [x] includes documentation with examples for all functions.
  • [x] contains a tutorial with examples of its essential functions and uses.
  • [x] has a test suite.
  • [x] has continuous integration setup, such as GitHub Actions CircleCI, and/or others.

Publication Options

Is it possible to add the paper submission after this review is completed? Would like the content of the paper to incorporate any functionality that gets added during the review process.

JOSS Checks
  • [ ] The package has an obvious research application according to JOSS's definition in their submission requirements. Be aware that completing the pyOpenSci review process does not guarantee acceptance to JOSS. Be sure to read their submission requirements (linked above) if you are interested in submitting to JOSS.
  • [ ] The package is not a "minor utility" as defined by JOSS's submission requirements: "Minor ‘utility’ packages, including ‘thin’ API clients, are not acceptable." pyOpenSci welcomes these packages under "Data Retrieval", but JOSS has slightly different criteria.
  • [ ] The package contains a paper.md matching JOSS's requirements with a high-level description in the package root or in inst/.
  • [ ] The package is deposited in a long-term repository with the DOI:

Note: JOSS accepts our review as theirs. You will NOT need to go through another full review. JOSS will only review your paper.md file. Be sure to link to this pyOpenSci issue when a JOSS issue is opened for your package. Also be sure to tell the JOSS editor that this is a pyOpenSci reviewed package once you reach this step.

Are you OK with Reviewers Submitting Issues and/or pull requests to your Repo Directly?

This option will allow reviewers to open smaller issues that can then be linked to PR's rather than submitting a more dense text based review. It will also allow you to demonstrate addressing the issue via PR links.

  • [x] Yes I am OK with reviewers submitting requested changes as issues to my repo. Reviewers will then link to the issues in their submitted review.

Confirm each of the following by checking the box.

  • [x] I have read the author guide.
  • [x] I expect to maintain this package for at least 2 years and can help find a replacement for the maintainer (team) if needed.

Please fill out our survey

P.S. Have feedback/comments about our review process? Leave a comment here

Editor and Review Templates

The editor template can be found here.

The review template can be found here.

eliotwrobson avatar Apr 22 '24 03:04 eliotwrobson

Editor in Chief checks

Hi there! Thank you for submitting your package for pyOpenSci review. Below are the basic checks that your package needs to pass to begin our review. If some of these are missing, we will ask you to work on them before the review process begins.

Please check our Python packaging guide for more information on the elements below.

  • [x] Installation The package can be installed from a community repository such as PyPI (preferred), and/or a community channel on conda (e.g. conda-forge, bioconda).
    • [x] The package imports properly into a standard Python environment import package.
  • [x] Fit The package meets criteria for fit and overlap.
  • [x] Documentation The package has sufficient online documentation to allow us to evaluate package function and scope without installing the package. This includes:
    • [x] User-facing documentation that overviews how to install and start using the package.
    • [x] Short tutorials that help a user understand how to use the package and what it can do for them.
    • [x] API documentation (documentation for your code's functions, classes, methods and attributes): this includes clearly written docstrings with variables defined using a standard docstring format.
  • [x] Core GitHub repository Files
    • [x] README The package has a README.md file with clear explanation of what the package does, instructions on how to install it, and a link to development instructions.
    • [x] Contributing File The package has a CONTRIBUTING.md file that details how to install and contribute to the package.
    • [x] Code of Conduct The package has a CODE_OF_CONDUCT.md file.
    • [x] License The package has an OSI approved license. NOTE: We prefer that you have development instructions in your documentation too.
  • [x] Issue Submission Documentation All of the information is filled out in the YAML header of the issue (located at the top of the issue template).
  • [x] Automated tests Package has a testing suite and is tested via a Continuous Integration service.
  • [x] Repository The repository link resolves correctly.
  • [x] Package overlap The package doesn't entirely overlap with the functionality of other packages that have already been submitted to pyOpenSci.
  • [ ] Archive (JOSS only, may be post-review): The repository DOI resolves correctly.
  • [ ] Version (JOSS only, may be post-review): Does the release version given match the GitHub release (v1.0.0)?

  • [ ] Initial onboarding survey was filled out We appreciate each maintainer of the package filling out this survey individually. :raised_hands: Thank you authors in advance for setting aside five to ten minutes to do this. It truly helps our organization. :raised_hands:


Editor comments

I think the documentation is a little bare currently to get started with the review. I'd like to see the information you wrote in this submission issue in the project repository itself. For example:

Network diffusion processes aim to model the spread of information through social networks, represented using graphs. Experimental work involving these models usually involves simulating these processes many times over large graphs, which can be computationally very expensive. At the same time, being able to conduct experiments using a high-level language like Python is helpful to researchers, as this gives greater flexibility in developing research software. To address both of these concerns, CyNetDiff is a Cython module implementing the independent cascade and linear threshold models, two of the most popular network diffusion models. Development has been focused on performance, while still giving an intuitive, high-level interface to assist in research tasks.

This is a nice elevator pitch to rework and include in the README.

I'd like to see more content in the documentation as well. The API section is great, but the basic example lacks context and does not really show case what CyNetDiff is great for. I want to share with you this resource: Diátaxis framework. I am not asking that you follow the full framework to the letter, and it would be a huge task to do so, but I think there is some virtue in thinking about the kind of documentation you aim to showcase. The documentation is the first thing a potential user will take a look at. As such, it needs to quickly guide the reader to:

  • what does it do? (= should I try it?)
  • how does it work? (= ok, I think this is the tool I need, how do I proceed?)

Batalex avatar Apr 26 '24 18:04 Batalex

Thank you for the feedback! I think those changes are reasonable and will significantly enhance the package, I'll try and expand the documentation by Monday so we can get the ball rolling on the review before too long 🚀

eliotwrobson avatar Apr 26 '24 21:04 eliotwrobson

@Batalex I have just published a release with the following changes:

  • Updated the elevator pitch and example in the README
  • Added two longer extended examples to the documentation site

eliotwrobson avatar Apr 29 '24 06:04 eliotwrobson

Thanks, this looks great. From what I can tell, we are good to go. I'll get started on finding the perfect editor for this review 🐈‍⬛

Batalex avatar May 02 '24 16:05 Batalex

@Batalex I know we don't have an editor yet, but is it too early to begin suggesting reviewers? We've already found someone that might be a good candidate for this.

eliotwrobson avatar May 10 '24 23:05 eliotwrobson

@Batalex I know we don't have an editor yet, but is it too early to begin suggesting reviewers? We've already found someone that might be a good candidate for this.

That's fantastic! Could you please orient them to our signups form? https://forms.gle/GHfxvmS47nQFDcBM6

Batalex avatar May 11 '24 12:05 Batalex

For sure! I'll be sure to email this person as well, but this is @jeremyzhangsq

eliotwrobson avatar May 11 '24 15:05 eliotwrobson

Shiqi has agreed to review and filled out the form!

eliotwrobson avatar May 14 '24 16:05 eliotwrobson

@Batalex just wanted to check back in and see if there was anything we could do to help find a suitable editor for this. We're not in a huge rush or anything, but we want to submit this package to a conference before too long.

eliotwrobson avatar Jun 28 '24 18:06 eliotwrobson

Hello @eliotwrobson, Unfortunately, I do not have an editor at the moment. There are two reasons for that: first, we are so successful our current editors have their hands full currently (let me brag a little). Second, the domain is more niche than others, so we (or more specifically I) cannot rely on personal connections or previous involvements to find someone with a relevant expertise. What would be your target conference? I'll see what I can do to help accelerate the process.

Batalex avatar Jun 29 '24 17:06 Batalex

@Batalex Thank you for your detailed response. We don't quite have a target conference in mind, but we're starting more work on a longer version of what will be our paper for this. I mainly asked because we may be able to help search for an editor as well, depending on what the preferred qualifications are. For example, Shiqi has published papers related to this, and might be able to serve, depending on how heavy the workload is, and how difficult it would be to find two other reviewers.

Regarding this general area, anyone who has worked on projects related to influence maximization or even just general graph theory might know enough to get the ball rolling.

eliotwrobson avatar Jun 29 '24 20:06 eliotwrobson

I can edit this, although I just was the editor for the automata package and maybe the authors want a break from me ;)

sneakers-the-rat avatar Jun 30 '24 01:06 sneakers-the-rat

@sneakers-the-rat we would greatly appreciate you serving as editor 🙂

eliotwrobson avatar Jun 30 '24 01:06 eliotwrobson

Happy to do it, i'll be able to get started searching for reviewers tmrw :). (i'll let the EiC do the formal assignment)

sneakers-the-rat avatar Jul 02 '24 22:07 sneakers-the-rat

i'll let the EiC do the formal assignment

Thanks a lot @sneakers-the-rat and thanks to @Batalex who did the hard work as EIC here! Happy review to all!

cmarmo avatar Jul 03 '24 20:07 cmarmo

Awesome! @sneakers-the-rat just to fill you in, we've already identified a reviewer (@/jeremyzhangsq) who has papers published in this area. So the other reviewer doesn't necessarily need to be a subject area expert, and I think it would be appropriate to have someone with more knowledge of Cython packaging / best practices, since that was the part I was most unfamiliar with when writing this package.

eliotwrobson avatar Jul 04 '24 17:07 eliotwrobson

hi there team! i'm just checking in on this review to see the status. it looks like there's been no activity for almost 3 months. Is there anything that i can do to support moving things forward?

lwasser avatar Oct 01 '24 17:10 lwasser

Thanks for checking in @lwasser ! We found one reviewer and are looking for another

eliotwrobson avatar Oct 01 '24 18:10 eliotwrobson

can we help @eliotwrobson @sneakers-the-rat with the second reviewer? if you have one domain-specific review, we can pull a second from our signup who knows about packaging and can test for usability. i just updated the label to seeking-reviewers as well. please let me know how we can move things forward. I want to support everyone here!

lwasser avatar Oct 01 '24 18:10 lwasser

Also thank you for the speedy reply and to everyone her that's already invested in this review ✨

lwasser avatar Oct 01 '24 19:10 lwasser

@lwasser your assessment is correct, the first reviewer we have is knowledgeable about the domain, so I think having a reviewer focused on packaging / usability / documentation is the way to go 👍🏽

eliotwrobson avatar Oct 01 '24 19:10 eliotwrobson

hey @eliotwrobson @sneakers-the-rat I think I found a second reviewer for this @Kai-Striega . 🚀 Kai if you are still able to review this package with a focus on the Cython side of things, we'd appreciate it!

lwasser avatar Oct 14 '24 16:10 lwasser

@lwasser I'm happy to. I should have time this weekend. If I haven't replied by Monday please remind me.

Kai-Striega avatar Oct 14 '24 19:10 Kai-Striega

@eliotwrobson the plan is to spend a couple of hours on an informal review tomorrow (informal as I'm still waiting to do the pyOpenSci induction). I've spent some time (~30 mins) this morning building the project from scratch (aka with Cython) in case there are any build problems. Seems to build so far.

Kai-Striega avatar Oct 17 '24 21:10 Kai-Striega

ok let's kick off this review! Below is the editor template that we need to get started with.

Editor response to review:


Editor comments

:wave: Hi @Kai-Striega @jeremyzhangsq ! Thank you for volunteering to review for pyOpenSci! It's so awesome to have you here supporting our open source / open science community 🚀

To begin there are a few items to complete:

Please fill out our pre-review survey

Before beginning your review, can you both please fill out our pre-review survey. This helps us improve all aspects of our review and better understand our community. No personal data will be shared from this survey--it will only be used in an aggregated format by our Executive Director to improve our processes and programs.

  • [ ] @Kai-Striega survey completed.
  • [ ] @jeremyzhangsq survey completed.

Thank you in advance for doing this!

Review templates

The following resources will help you complete your review:

  1. Here is the reviewers guide. This guide contains all of the steps and information needed to complete your review.
  2. Here is the review template that you will need to fill out and submit here as a comment once your review is complete.

Let's shoot for a review deadline of 8 November 2024. Please get in touch with any questions that you have!! Have an awesome weekend y'all!! 🚀

Reviewers: Due date: 8 November 2024.

lwasser avatar Oct 18 '24 23:10 lwasser

YIKES sorry for being AWOL on this one, i couldn't remember if this was one i agreed to do or one that i waved off because i am a little slammed at the moment.

@lwasser You're pretty busy with fall festival stuff atm, would you like me to pick this up again?

sneakers-the-rat avatar Oct 19 '24 02:10 sneakers-the-rat

@sneakers-the-rat please don't apologize! It's so understandable!

If you can take this over that would be wonderful!!! Thank you Jonny! 😊

lwasser avatar Oct 19 '24 16:10 lwasser

Thanks all for getting the ball rolling! I'm not sure how much @/jeremyzhangsq checks GitHub, so I'll go ahead and ping him again via email.

eliotwrobson avatar Oct 19 '24 17:10 eliotwrobson

A quick couple of questions @lwasser /@sneakers-the-rat:

  • as previously discussed, my review has focused primarily on the Cython aspects of the project. Do you require me to review the remaining points on the review template too? I'm happy to do this, but I need to be aware that it's required.
  • I've look through the package and written plenty of notes but haven't typed them into the review template yet. As this is my first time reviewing, would we be able to organise a mentoring session to ensure I do a great job?

Kai-Striega avatar Oct 20 '24 02:10 Kai-Striega

@Kai-Striega 👋🏻 i just saw your discord dm's! So sorry it took me a few days to respond. I answered you there, please do go through the entire template. I'm happy to either provide a mentor session OR to get someone else in our community to do so as well. You're also in great hands here with @sneakers-the-rat so i don't want to step on any toes more than I already have!! so please just let me know how I can best support everyone here 🚀

lwasser avatar Oct 20 '24 18:10 lwasser