One annoying thing about monorepo from a downstream perspective - but only for 
people crazy enough to package a development branch (OK that would be me and 
not many other people :) ).
The split packages have their setup.py or equivalent in SAGE_ROOT/pkgs/pkg_name 
and some links to the single sage source tree from there. Examples: 
sagemath-standard, sage_setup and sage_docbuild. To package these I pull the 
full tree :( and then I don’t go to SAGE_ROOT/pkgs/pkg_name and build from 
there.
If I want to patch it doesn’t work from there because patch doesn’t apply 
across symbolic links. So, instead I go to SAGE_ROOT/src, copy the appropriate 
setup.py (and any other files needed) and patch and build from there. To patch 
while setting the top package source tree at SAGE_ROOT/pkg/pkg_name I would 
have to write my own new patching machinery for Gentoo ebuilds - not gonna 
happen.
That wouldn’t happen with split repos.
For proper releases, I am hoping for separate tarballs (eventually) which means 
that there won’t be any issues with symbolic links. 

François

> On 11/10/2021, at 13:17, Matthias Koeppe <matthiaskoe...@gmail.com> wrote:
> 
> 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.

-- 
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/7682C523-1881-4525-A55E-158FE9AE5C65%40gmail.com.

Reply via email to