sagemath / sage

Main repository of SageMath
https://www.sagemath.org
Other
1.3k stars 447 forks source link

amend the mission statement and the roadmap to reflect landscape and Sage changes 20 years on #36827

Open dimpase opened 9 months ago

dimpase commented 9 months ago

The original Sage mission statement ("Creating a viable free open source alternative to Magma, Maple, Mathematica and Matlab") appeared close to 20 years ago, and since then there were big changes in Python and non-Python maths computing landscape, as well as in Sage:

  1. Numerical computing in Python (and in Julia) really took off, and nowadays e.g. SciPy+Jupyter is a viable alternative to many uses of Matlab. We're not competing with SciPy; our probably only extras, compared to SciPy, on this front are interfaces to several optimisation packages.
  2. Python-based visualisation/GUI via Jupyter(lab) has really become a standard widely available, easily installed, etc. We provide an inferior vendoring installation of it (but we don't have to).
  3. Python packaging matured enough, allowing to rely on externally installed from PyPI packages much more than we do. PyPI is now the prevalent way of delivering Python packages. One can pretty much install all the Python packages we need from PyPI rather than from our vendored collection.
  4. CI and other automation appeared and changed the ways software is tested.
  5. Docker and other container technologies simplified delivery of complete pre-installed set-ups of complex maths software tools, such as tensorflow etc.
  6. Anaconda/conda allows installing and running almost everything we package.
  7. Sage has outgrown its manual inefficient system of package management, with over 400 packages placed in a flat directory structure, and manual handling of dependencies, versions, etc.
  8. Sage is being transformed from an application (like Magma, Maple, Mathematica, Matlab) to a system of modern Python libraries, provided by distribution packages that can be installed and used separately, cf. https://github.com/sagemath/sage/issues/29705

Nevertheless, one sees the (old) mission statement invoked now and then to defend the current uncontrolled growth of the number of packages, continued vendoring of most everything, etc. Therefore the need to amend the mission statement is crucial, we don't want it to lead to complete unraveling of the project.

While I can't at the moment of writing this produce a short new version, here are few points which I see as crucial

a. Sage should be a good, economic citizen of Python universe; it should not duplicate efforts elsewhere. Existing solutions should be reused and existing standards should be followed whenever possible. Sage currently has many complex 'customizations', that might have been improvements over the state-of-the-art solutions at the time they were introduced, but are now preventing an easy adaptation of the new standards (examples are custom package manager, custom test runner, custom doctest format, custom sphinx setup).

b. Sage (the distribution) should slim down, in view of a; e.g. there is no need to ship its own GUI or a set of compilers.

culler commented 8 months ago

Sage is an outlier, one has to walk a long way to comfortably work with Sage.

I agree, but please pardon me for injectng that with the latest 3-manifolds binary distribution of SageMath it takes less than 5 minutes to download and install SageMath 10.2 on a mac and open a Jupyter v7 notebook running the Sage kernel, even for someone who does not know what a terminal is. Someone who does know what a terminal is and has homebrew installed can install the same SageMath 10.2 by typing brew install sage. About 1400 people have done one of these since December 3.

This is not preferable to being "in the Python ecosystem", mainly because it only works for one platform. But it is similar in complexity to typing python3 -m pip install sage in a terminal.

mkoeppe commented 8 months ago

I think @culler's distribution is also what is shipped as the Homebrew Cask for Sage.

[Edit: Now I see that you already mentioned brew install sage. Sorry for the duplication.]

nbruin commented 8 months ago

concerning:

https://github.com/sagemath/sage/issues/36827#issuecomment-1852100385

Sage incorporates many other high quality open source mathematical software projects, making them all accessible within a single, uniform, computing environment.

This is a point where one needs to tread with care and respect: we use and interface with other projects but don't necessarily "incorporate them", which could mean "manage and lead their development". Even seamless interfacing can step on toes: once it's so smooth that people don't realize what is being used, it becomes harder for people to properly reference the actual software being used. If research software is not properly referenced, the developers lose citations and have a harder time getting funded, because the impact of their work becomes less visible.

There have been attempts with various success to make it easier in sage to find what code was used for a given computation so that proper citations can be generated. The way we deal with software not directly and explicitly contributed to sage must be handled with care.

Also, the statement is a description of a fact about sage. It's not part of its mission. If you formulate it more aspirationally "to incorporate ... and make them all accessible in a single uniform computing environment" you see it's more something for a United Nations of Mathematical Software and would be mainly a political body that would need representation and input from all incorporated projects. I don't think that's what we're striving for or set up for to do successfully.

mkoeppe commented 8 months ago

Free open source mathematical software for research and teaching

I think this is too narrow because implicitly it says "we're making academic code that is not suitable for production use". This may not matter for some highly specialized areas of pure mathematics, but it does for areas such as graph theory, polyhedral geometry, ...

culler commented 8 months ago

@nbruin 's point is well taken. I think it would it be better to simply say:

Sage provides access to many other high quality open source mathematical software projects within a single, uniform, computing environment.

I think that is something Sage does, and also a part of its mission, related to not re-inventing wheels.

tscrim commented 8 months ago

As @tornaria said, I think we need to have the mission statement be short and catchy. In particular, IMO we should avoid legalese and detail. We could have a separate long-form detailed explanation, but the mission statement is basically our community's elevator pitch.

What @mkoeppe is saying about production use is crystalizing a part I couldn't express concisely for the portion that is not research and teaching. I vehemently disagree with the implications of academic code is never suitable for production use. That being said, I fully agree with the sentiment that our mission statement should have something for people who want to use Sage for, e.g., "real world" applications. I just don't yet see a short catchphrase for this...

dimpase commented 8 months ago

it's worth having a look how SciPy presents itself:

Fundamental algorithms for scientific computing in Python

Or SymPy SymPy is a Python library for symbolic mathematics...

Or GAP Groups, Algorithms, Programming - a System for Computational Discrete Algebra

Or Macaulay2 : Macaulay2 is a software system devoted to supporting research in algebraic geometry and commutative algebra...


It seems that not stating that Sage is Python-based implies that it uses its own language...

soehms commented 8 months ago

It seems that not stating that Sage is Python-based implies that it uses its own language...

To clarify: I did not object to this! Just to avoid using wording that implies that you need extensive Python experience to use Sage.

dimpase commented 8 months ago

On behalf of @sheerluck, who can't login to GH, I post this here:


Considering the transformation of Sage into a system of modern Python libraries, the new mission statement could be:

"Empowering the world with open-source Python libraries for mathematical computation."

This mission statement reflects the shift in Sage's focus from being a standalone application to a collection of Python libraries. It emphasizes the open-source nature of Sage, its commitment to providing tools for mathematical computation, and its goal to empower users globally.

This mission statement is short, catchy, and clearly communicates Sage's new focus and goals. It provides a concise and compelling overview of what Sage is, what it does, and why it matters.

culler commented 8 months ago

I think this discussion has wandered off course. Catchy slogans definitely have their place and purpose. But mission statements have a different place and purpose. As @williamstein commented above:

The most important property of a mission statement for SageMath is that it suggests answers to questions about the direction and scope of the project

I don't think that catchiness helps with that. I think that clarity and some specificity can help.

dimpase commented 8 months ago

"Empowering the world with open-source Python libraries for mathematical computation."

is actually not too bad

williamstein commented 8 months ago

"Empowering the world with open-source Python libraries for mathematical computation."

It's good to evaluate it based on "suggests answers to questions about the direction and scope of the project". Here are some questions that the above statement tends to answer. (I'm not claiming I agree with any of the answers.)

Anyway, try testing any question you can think of related to Sage development on that mission statement and see what happens...

mantepse commented 8 months ago
  1. In my research group (Combinatorics, Vienna, Austria), I heard several times the idea that they have to be programmers to be able to use Sage.

    I am not sure - could it be that emotionally, using mathematica or maple feels less like programming?

    If so, I think it would be a good idea to avoid the word "library".

  2. For me personally, the reason for using (and contributing to) Sage is that it is able to do just about everything I need. I spent a lot of time developing for Axiom / FriCAS, and I still love the clarity of the language (Aldor). However, it was a complete show stopper that I would have had to implement myself things I know little to nothing about, like support for graph theory, group theory, symmetric functions, etc.

    I still hear people saying that Sage just bundles software. It seems to me that the ability to use all this while only having to learn a single language / design should be stressed.

  3. I like the word "empowerment".

nthiery commented 8 months ago

I also very much like "Empower the world"!

Evaluating the statement by checking whether it "suggests answers to questions about the direction and scope of the project" sounds compelling . So I tried with a couple questions.

  1. Q. "Should Sage foster collaboration and interoperability with other mathematical systems (e.g. GAP, Singular, Oscar, ...).".
    Answer from the statement: unclear.
    Personal answer: definitely yes; it would be good to have a clear answer from the mission statement

Presumably, the balance for Q1 and Q4 could be improved by replacing "Python library" by something that would convey concisely "tightly integrated together and tightly integrated in the Python ecosystem" (yeah, whatever the latter mean).

Let me try:

Empower the world with libre computational mathematics software, tightly integrated together and in the Python ecosystem

Hmm. Concise. Hmm. The second part could use some love. Out of curiosity, I played a bit with Chat-GPT (hmm, Chat-GPT and love in the same sentence ...). Nothing that convinced me, but for some suggestions of synonyms. E.g.:

Empower the world with libre computational mathematics software, seamlessly woven together and in the Python ecosystem

I ponder about adding "community developed". E.g. for a better answer to Q3. But that adds verbosity.

Cheers, Nicolas

nbruin commented 8 months ago

I think sage is still not just a python library and I think there is an important component where that is essential for its adoption: the preparser. I don't think sage would be viable as a suggestion for a CAS if it required ** for exponentiation. Writing polynomial input with it is just not acceptable for many mathematicians. Hence, I don't think we should portray sage as just a python library in its mission statement.

kcrisman commented 8 months ago

I think sage is still not just a python library and I think there is an important component where that is essential for its adoption: the preparser. I don't think sage would be viable as a suggestion for a CAS if it required ** for exponentiation. Writing polynomial input with it is just not acceptable for many mathematicians. Hence, I don't think we should portray sage as just a python library in its mission statement.

This is why something like "Free/Libre Mathematics Software based on Python", many variations of which have been proposed here, is likely a better option. It also focuses more on the math and less on the CLI import statements, which some random researcher used to Mathematica will find annoying and boring.

dimpase commented 8 months ago

Writing polynomial input with it is just not acceptable for many mathematicians

If one can get used to not putting $ around maths, one can also get used to ** instead of ^. (or to ^ vs ^^ vs ** as in Haskell). Non-availability Mma's, and a bit of exposure to C/C++, Fortran, Javascript, real life in general, etc might help 😄

kwankyu commented 8 months ago

Please no "libre". It is a French word. I guess that the word is less familiar than Python to non-European people.

jhpalmieri commented 8 months ago

Writing polynomial input with it is just not acceptable for many mathematicians

If one can get used to not putting $ around maths, one can also get used to ** instead of ^. (or to ^ vs ^^ vs ** as in Haskell). Non-availability Mma's, and a bit of exposure to C/C++, Fortran, Javascript, real life in general, etc might help 😄

I prefer the general philosophy that we accommodate our potential users rather than ask them to make accommodations.

tornaria commented 8 months ago

Please no "libre". It is a French word. I guess that the word is less familiar than Python to non-European people.

It's also a spanish word, and so it rhymes with the "for the world" stanza. Recall that spanish is the second language by number of native speakers (mandarin first, english third). Also it's written "livre" in portuguese (fifth by number of native speakers, after Hindi, according to wikipedia).

In any case, the point of using "libre" is that there is no faithful translation to english, unless you resort to shenanigans like "free as in speech" vs "free as in beer" (metaphors which sound very US-centric to me).

BTW, the majority of native spanish speakers (by a very large margin, maybe 10 to 1) live outside Europe. Similar for portuguese. I don't know about french (probably not).

Did you know there are about the same number of native speakers of spanish in the US than in Spain?

kwankyu commented 8 months ago

No. But I know that there are many.

Let me correct myself: "to Korean people" (due to the recent boom of learning coding and AI, of course)

kcrisman commented 8 months ago

Let me correct myself: "to Korean people".

Also to many others! Let's not make Zamenhof's mistake in thinking that Esperanto should sound vaguely Latinate... but seriously, if the mission statement is in English, then probably for practical purposes either "free" or "free/libre" is the best variant, because to most English-speaking non-developers (and probably even to many of them if they live in the MS ecosystem, which we must admit is a huge number), "libre" alone is not an English word. (Or maybe "open" as in the current version?) Even FOSS or FLOSS is something people who aren't invested in software will have to look up in a wiktionary.

But perhaps that's bikeshedding. The bigger question is precisely who the mission statement is aimed at. The point (to me, and it sounds like to many others) is to reach not just developers, but primarily users. The current mission statement is at least clear in this sense.

kcrisman commented 8 months ago

If one can get used to not putting $ around maths, one can also get used to instead of ^. (or to ^ vs ^^ vs as in Haskell). Non-availability Mma's, and a bit of exposure to C/C++, Fortran, Javascript, real life in general, etc might help 😄

I prefer the general philosophy that we accommodate our potential users rather than ask them to make accommodations.

Agreed, and for that matter it would be nice to help people who don't even use $ or ( around their math use Sage. The f(x)=x^2 notation is golden for selling Sage in practice, at a grass-roots level.

Message ID: @.***>

dimpase commented 8 months ago

one doesn't actually need a preparser to redefine x^2 to mean x**2 in Python, as it's just redefining __rshift__ or whatever ^ means in Python to do __pow__.

culler commented 8 months ago

one doesn't actually need a preparser to redefine x^2 to mean x**2 in Python

I made the claim that this discussion had wandered off course. Now I can rest my case.

I wish you all good luck in your quest to empower the world.

soehms commented 8 months ago

Empowering the world sounds like a tautology because it refers to an intrinsic human motivation. I think we shouldn't waste three words about it.

Most of the above test-questions are developer oriented. We should not adress ourselves in the first lines a potential newbie reads about Sage. The questions of such a person will be totally different:

I still think that the proposal of @culler answers these questions in the best possible way. Therefore, I cite it again adding one extension (based on the popular ... with numerous examples):

The mission of Sage is to produce a comprehensive interactive mathematical computing system which is freely and conveniently available to all mathematicians, from students to educators to researchers. Sage provides access to many other high quality open source mathematical software projects, making them all accessible within a single, uniform, computing environment based on the popular and easy to learn interpreter programing language Python. All functions are extensively documented with numerous examples. Sage supports the development of open source mathematical software by distributing components of Sage through the standard Python distribution channels and by designing them to be embeddable into other software projects.

kwankyu commented 8 months ago

Let me remind you that there are several prominent places where we can post the mission statements.

(A) sagemath frontpage: https://www.sagemath.org/ (B) sagemath/sage repository readme: https://github.com/sagemath/sage (C) sagemath organization readme: https://github.com/sagemath

For (A) and (B), we need both one mission banner (short statement) and one long mission statement.

For (C), we may expand the mission statement even longer to describe the community rather than the software.

Perhaps we are discussing for (A) and (B).

dimpase commented 8 months ago

I think the banner should be sober and to the point, without any "empower" etc.

soehms commented 8 months ago

I think the banner should be sober and to the point, without any "empower" etc.

Since you and four others voted for https://github.com/sagemath/sage/issues/36827#issuecomment-1846422424, I misunderstood that we're not just talking about the banner. If we just want to replace the banner, my suggestion is:

Mission: To be the gateway to experimentation, exploration, learning, teaching, application and research in mathematics.

Well, gateway is a metaphor again. But I think it should be culturally neutral. BTW: I also avoid cathedrals!

kcrisman commented 8 months ago

Since you and four others voted for #36827 (comment), I misunderstood that we're not just talking about the banner. If we just want to replace the banner, my suggestion is:

It seems this discussion was probably about the overall mission statement, but it's a good point here that we might not want to have a longer mission/vision statement as a banner item, and that (in principle) those could be separate. That said, this discussion probably should be about the "bigger" version, from which the latter could be distilled once we can agree on it (if we can agree ...)

lunch-glide-pepper commented 8 months ago

Former Sage amateur user here - I randomly came across this thread and thought I'd add a relative layman's perspective.

I got into Sage because it was the one stop shop for doing math without using proprietary software. I didn't need much at the time, and could have used scipy instead, but I didn't want to repeatedly scour the web for individual libraries every time I played with a new field. I was doing a math degree, and I wanted to build skills in a single system that would cater for my needs no matter what I needed in the future. And Sage was perfect for that. If you do pivot away from providing an app, and towards providing libraries, I really hope that you will also provide the app, built on top of these libraries. The app could be easy to install, maybe have an optional preparser, etc, without putting extra burden on the libraries.

I stopped using Sage because Python took off in science, and I didn't want to limit myself to the Sage ecosystem. I know that I can install other packages into the Sage environment, but that feels clunky and wrong. I tend to have a single virtual environment that I use for random experimentation and prototyping, and that environment is now built around Jupyter and PyTorch, not around Sage, so whenever something more mathy piques my curiosity, I just sigh and move on. But I'd love to add Sage to my environment once that's possible.

P.S. "mission statement" is a phrase that can mean many things, but we are not here to argue about language. This thread started from needing to answer questions about where to focus efforts, so I feel like William's comments about having to "suggest answers to questions" are getting insufficient attention.