class: middle, center
by Luca De Feo
Sep 2, 2015. OpenDreamKit kickoff meeting.
SageMath (formerly Sage) is a free open-source mathematics software system licensed under the GPL.
- It builds on top of many existing open-source packages: NumPy, SciPy, matplotlib, Sympy, Maxima, GAP, FLINT, R and many more.
- Access their combined power through a common, Python-based language or directly via interfaces or wrappers.
Official downloads, docs, etc.: http://www.sagemath.org/
Mission statement
Creating a viable free open source alternative to Magma, Maple, Mathematica and Matlab.
Mottos, quotes
We are building the car, not reinventing the wheel.
We implement all conversion routines, instead of expecting upstream to do it: we make them communicate with Sage, whether they want to or not. Resistence is futile.
- Started in 2004 by William Stein;
- Developed by researchers and students (and soon professionals) for researchers and students (and hopfeully professionals?);
- A community of >500 developers (trac accounts);
- A company SageMath, Inc., est. 2015;
- 19K tickets in the issue tracker, 39K commits, 1.8M LOCs (native code, via
git ls-files | xargs cat | wc -l
); - ~70 community meetings (Sage Days) in 10 years.
- A distribution of mathematical software (NumPy, SciPy, matplotlib, Sympy, Maxima, GAP, FLINT, R,...),
- A common Python-based interface, including interfaces to proprietary software (Magma, Mathematica, ...),
- Native Python/Cython code implenting more functionality,
- Two web notebook interfaces developed in house + Juptyer integration,
- SageMathCloud, a spinoff project hosting collaborative math projects (Jupyter, Sage, LaTeX, ...) in the cloud, hopefully generating revenue soon.
- SageMath: Community driven, peer-reviewed contributions via issue tracker http://trac.sagemath.org.
- SageMathCloud: Centralized, essentially a one-man project for the moment.
- Most interfaces to subsystems done via C/C++ library calls (in Cython wrappers);
- Some leftovers of text-based interface to child instances of subsystems (e.g., interfaces to proprietary software);
- Python/Cython library built on top of subsystem and/or native code;
- Dynamic type system, dubbed Category framework, for easy scaffolding of mathematical objects.