On Monday, April 22, 2024 at 2:22:36 AM UTC-7 Martin R wrote:

I still don't see why you would name these distributions as you do, and why 
you collect them as you do.


Above I explained, "I introduce these packages to create *discoverability* for 
potential consumers of portions of the Sage library. (pip-installable 
packages are often named after the functionality that they provide.)"

For example, as far as I know, symmetrica is currently essentially only 
used by symmetric functions, Schubert polynomials.  So, if symmetrica is 
such a burden to install, why would you want to install it if you don't 
need them?


*symmetrica*, as a single dependency on its own, is not "such a burden to 
install".
Dependencies can become a burden simply if there are too many of them.

I have defined the distributions with an eye on keeping the number of 
distributions and the complexity low.

But there's no dogma. If the community finds it useful, then a distribution 
**sagemath-symmetrica* could later be split out from *sagemath-combinat* 
and can become either a required dependency or an optional dependency of 
*sagemath-combinat*.

On the other hand, combinatorial species will, after this summer, heavily 
depend on gap.  Does this mean that you would want to move this part into 
sage-groups? 


If it has a build-time dependency on sage.libs.gap, then it would likely be 
shipped by *sagemath-gap*. If it's merely a runtime dependency, it does not 
really matter from a technical point of view which distribution ships it. 
(Once more I refer to the chapter in the Developer Guide that explains the 
different types of dependencies,  
https://doc.sagemath.org/html/en/developer/packaging_sage_library.html#dependencies-and-distribution-packages)

It could then be advertised, for example, as an "extra" of 
*sagemath-combinat* so that it can be installed as "pip install '
*sagemath-combinat*[species]'" or "pip install '*sagemath-combinat*[gap]'", 
like 
the existing definitions of extras that make it possible to do "pip install 
'*sagemath-combinat*[modules]'" for typical algebraic combinatorics 
features. 
https://github.com/mkoeppe/sage/blob/t/32432/modularization_of_sagelib__break_out_a_separate_package_sagemath_polyhedra/pkgs/sagemath-combinat/pyproject.toml.m4#L40

I gave more examples for the use of such extras in my 2023-06 sage-devel 
post "Modularization project: V. The blocs", 
https://groups.google.com/g/sage-devel/c/kiB32zP3xD4
 

Apart from the strange naming, I don't think that it will make anybody 
happy if dependencies change frequently.


Hard to tell what exactly you find strange about the naming if you're not 
more specific.

In https://github.com/sagemath/sage/pull/36964#discussion_r1564162445 and 
below, you already expressed surprise that trees and posets are in 
*sagemath-graphs* and that symmetric functions are in *sagemath-combinat*.

I'll just say that the existing design is the result of years of work that 
has taken all of the following into account:
- the technical constraints of Python packaging, 
- the actual dependencies of the Sage library, 
- discoverability by users,
- attribution and visibility for upstream libraries/projects,
- the overall complexity,
- and the potential for connecting the new distributions to communities of 
users and developers.

But as I said above, there's no dogma as to what exactly goes into what 
distribution, and the Sage developer community will be able to change it 
over time, like everything in Sage.

-- 
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/46b37837-f0ea-4e65-aee1-9864007ea164n%40googlegroups.com.

Reply via email to