As we are making progress on preparing the Sage library for modularization (
https://trac.sagemath.org/ticket/29705), here's a discussion of three 
things that need to be decided whenever a portion of the Sage library is 
modularized:

*(1) Namespace:* Will it be imported as (+) "from sage.hermeneutics.quantum 
import QuantumGravity" or (-) "from transformative_hermeneutics.quantum 
import QuantumGravity"?

*(2)* *Distribution name (= project name):* Will it be installed using "pip 
install transformative-hermeneutics" or "pip install sagemath-hermeneutics"?

*(3) Source repository:* Is the source maintained as part of the Sage 
repository using Trac tickets (MONOREPO); or in a separate repository on 
GitHub, GitLab, ... (MULTIREPO)?

This post is dedicated to the MONOREPO vs. MULTIREPO question, and how it 
relates to (1) and (2). 

*Some details about MONOREPO:*
The Sage repository already contains several separate distribution source 
trees. Since Sage 9.4 they are located in the subdirectory SAGE_ROOT/pkgs 
(see 
https://wiki.sagemath.org/ReleaseTours/sage-9.4#New_location_for_distribution_package_sources:_SAGE_ROOT.2Fpkgs).
For example, SAGE_ROOT/pkgs/*sage-sws2rst* is a self-contained source tree 
of this distribution package: It has standard Python packaging files such 
as setup.py.
SAGE_ROOT/pkgs/*sagemath-standard* is also a source tree of this 
distribution package; but it is created in part using symbolic links into 
SAGE_ROOT/src. This is the trick that has allowed the modularization effort 
to *keep the SAGE_ROOT/src tree monolithic: *Modularization has been 
happening behind the scenes and will not change where Sage developers find 
the source files.

*In favor of MONOREPO:*
+ The Sage developer community is used to using Trac
+ The process is well defined: No code "ownership" (all Sage developers can 
change any code, subject to peer review); changes are synchronized
+ There is implicit integration testing with all of Sage

*Drawbacks of MONOREPO:*
- Extra hurdle for attracting new developers from outside the Sage 
developer community (everyone who is not already a Sage developer uses 
GitHub or similar)
- Testing infrastructure needs to be set up and maintained separately; in 
particular, integration testing with Sage.

*Evidence:*
- The pynac situation -- now finally resolved by merging it into the Sage 
library 
(https://wiki.sagemath.org/ReleaseTours/sage-9.5#Modularization_and_packaging_changes)
- Even for separate git repositories hosted in the SageMath GitHub 
organization (https://github.com/sagemath/), code ownership and review 
workflow are unclear.
  - For example, https://github.com/sagemath/sage-numerical-backends-coin 
provides no information on how to contribute (commonly expected in a file 
CONTRIBUTING.md)
  - Neither does https://github.com/sagemath/cysignals, which moreover 
looks abandoned: Issues and PRs are not tended to. Is it subject to peer 
review like other parts of Sage? Who is in charge of merging PRs?
  - Similar issues with https://github.com/sagemath/cypari2


*Recommendation:* Keep MONOREPO for all distributions that fill the 
sage.PAC.KAGE.MODULE namespace (= distribution packages named *sagemath-... 
*-- according to my recommendation in part I). 

*Recommendation: *For distributions that do not use the 
sage.PAC.KAGE.MODULE namespace (= distribution packages named something 
other than sagemath-... -- according to my recommendation in part I), weigh 
the benefits vs. drawbacks of MONOREPO vs. MULTIREPO. It is also simple 
enough for a distribution to start out being developed inside of the Sage 
MONOREPO and to be split out to a separate repository later.

*Recommendation:* Discuss the development workflow for projects in the 
https://github.com/sagemath organization, and document it in files 
CONTRIBUTING.md in the individual repositories.




-- 
You received this message because you are subscribed to the Google Groups 
"sage-devel" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to sage-devel+unsubscr...@googlegroups.com.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/sage-devel/1572d163-abba-4fde-b348-5f31166d4b87n%40googlegroups.com.

Reply via email to