(index of previous posts:
https://github.com/sagemath/sage/issues/29705)
A common wisdom applies: Do your combinatorial explosions at home, not in public.
In other words, we should not attempt to define a distribution package for every possible community or subfield of mathematics that Sage supports.
The proposed design instead introduces 3 types of distribution packages:
Packages that are named after a basic mathematical structure but may cover a wide range of generalizations/applications of this structure. People who work in a specialized research area will of course recognize what structures they need. But the down-to-earth naming also creates discoverability for a broader audience. Not many more distribution packages than these 7 are needed:
-
sagemath-graphs: also provides posets, designs, abstract complexes, quivers, etc.
Packages that are named after an upstream library. This makes technical sense because the dependencies will be localized to this distribution package, but it also helps give attribution and visibility to these libraries and projects that Sage depends on. (These narrowly focused packages could also invigorate collaboration with the upstream projects.) Examples:
Packages that are named after a technical functionality.
-
sagemath-repl: The top-level interactive environment with the preparser.
-
sagemath-standard: Everything as provided by a standard installation of the Sage distribution.
Each of the distribution packages can define a list of
extras (nicknames for sets of other distribution packages that provide additional advertised features). When using
pip to install a distribution, users can use
square bracket notation to add (adjoin?) these extras.
Need fast linear algebra over GF(pⁿ) and over cyclotomic fields?
So you need Berkovich spaces and elliptic curves over the p-adics?
So you want to do algebraic topology?
Algebraic combinatorics?
Representation theory?
Graph theory and everything related that the Sage distribution provides?
To try it out, use ./bootstrap && make pypi-wheels