dandi / dandi-hub

Infrastructure and code for the dandihub
https://hub.dandiarchive.org
Other
11 stars 24 forks source link

Establish live script example library repository #60

Open vijayiyer05 opened 1 year ago

vijayiyer05 commented 1 year ago

The MatNWB working group has been working towards establishing an organized library of example live scripts. The consensus view was that it would best be hosted by the DANDI archive organization (or an affiliated one).

Based on discussions, it is proposed to tackle this issue in stages:

See comments below and/or sub-issues for further notes regarding each step.

vijayiyer05 commented 1 year ago
  1. Stand up repository on a third-party organization, e.g. the INCF

Proposed name of repository is example-live-scripts.

This mirrors the example-notebooks repository currently established for Jupyter notebook examples.

yarikoptic commented 1 year ago

re name

vijayiyer05 commented 1 year ago
  1. Document the repository organization guidelines, fine-tune if needed, and implement

The MatNWB working group converged on the following guidelines for the example live script repository, which will be documented in somewhat more detail in the staged repository (e.g., in the README and/or wiki). 👉🏽These are general concepts & are freely shared as potentially also a model for other DANDI example libraries

Example Basics

Example Submission Process

Example Folder Location

Folder location guidelines depend on whether example is hosted natively in library or external to library:

Native Example Guidelines

Natively hosted examples should use a permissive license option from ChooseALicense.com, e.g. MIT or BSD.

External Example Guidelines

Cloned Examples

IF the external example repository uses:

  1. A permissive license option
  2. GitHub releases

THEN the external example owner has the option to simply copy (clone) specifiic release contents into the DANDI example repository. This is (for some) a simpler option than the Mirrored Example option below (which uses git submodule).

This simplicity comes with one responsibility: the cloned example README should be minimally modified to include a header that 1) points to source repository & 2) identifies the release copied. If the copied release is updated (e.g., for new releases), this header should be updated accordingly.

Mirrored Examples

Besides the convenient case of Cloned Examples outlined above, git submodule is the expected workflow to mirror the example from the source repository to the example library.

Community Contributions to Examples

vijayiyer05 commented 1 year ago
  1. Upload initial examples (following the submitter guidelines per above) Initial Dandiset examples anticipated:
    • 000017 by CatalystNeuro
    • 000011 by Morteza Abbaszadeh, PhD
    • 000217 by Marielle Darwin, PhD
vijayiyer05 commented 1 year ago
  1. Configure the Dandihub MATLAB environment to pre-install the repository & set this as the initial working directory for new users.

MetaCell has begun work on refining the Dandihub MATLAB environment via Dockerfile edits. They will likely become the owners of this step.

vijayiyer05 commented 1 year ago

re name

  • is there some semantic in using live making example-live-scripts being different from example-scripts in its nature?

    • but then it should also be open to non-matlab scripts submissions etc.
  • may be they could be furnished as notebooks using e.g. https://www.mathworks.com/products/reference-architectures/jupyter.html and thus residing in the same example-notebooks?

Thank you @yarikoptic for these good questions.

Live scripts are I would say more like notebooks (i.e., have graphics/rich text/equations/controls/etc) than ordinary scripts, so I think the 'live' qualifier is necessary.

Grouping these examples together with the (mostly or all) Jupyter notebooks in the example-notebooks would be the natural way to move in the direction I believe you're alluding towards. But this would have a couple of disadvantages in my view:

vijayiyer05 commented 1 year ago