Thursday, September 2, 2010

Purple Sage

In order to support my computational research projects, I've decided to start a new project called "Purple Sage" (PSAGE).  This is based on the Sage math software project that I started nearly 6 years ago, but has very different goals.    The main goal of the Sage project is to Create a viable free open source alternative to Magma, Maple, Mathematica, and Matlab, whereas the goal of the PSAGE project is to Create viable free open source software for arithmetic geometry research.  These are very different goals.  

I intend to spend most of my mathematical programming effort during the next year on PSAGE, though I'll continue to support Sage by providing infrastructure, helping with releases, and sponsoring Sage Days workshops.  During the last 2-3 years, the Sage project has become large, stable, and democratic, and has substantial momentum behind it.   It is time for me to do work that much more directly supports my research.

PSAGE will consist of (1) a stable subset of Sage, which includes only C/C++/Python/Cython code (no Fortran or Lisp), and has no Pexpect interfaces, (2) numerous research-oriented cutting edge Python/Cython libraries, and (3) a large network-accessible database of mathematical objects, probably built using MongoDB.     The target audience for the documentation and code will be research mathematicians (e.g., like the members of http://mathoverflow.net).   I will focus on writing code for arithmetic geometry, though I'm open to including in PSAGE other code contributions.

The development process will focus on making cutting edge code for arithmetic geometry available quickly to other researchers.   The requirements of 100% test coverage, documentation, and peer review will be removed, so that useful code, e.g., for computing with Maass forms, Siegel modular forms, Hilbert modular forms, etc., will get into researchers hands quickly.

PSAGE could in the long run lead to a more modular approach to Sage itself.  For example, the PSAGE library will be a Python library like any other, and it should be possible to just install it into an existing Sage as an optional package.   There could be similar projects, e.g., NSAGE = Numerical Sage, which focus on numerical computation.   And, having a smaller core will help with porting, maintenance, and flexibility.

4 comments:

Tom said...

Purple?

Ondřej Čertík said...

Excellent, thanks for pushing this approach.

You can get inspired by a Python based build system for Sage like projects that I wrote for Femhub:

http://github.com/hpfem/femhub/blob/master/spkg/base/femhub-run

I have decided to implement dependencies so that one can do things like

./femhub -i scipy

and it installs all the libraries needed for scipy and scipy itself.

Femhub is for doing numerics, finite elements and visualization (VTK).

I would also like to create Sage like projects for some of my other programs (electronic structure), but it's currently too much work, so I just create it as optional packages for Femhub.

So once PSage is up and running, hopefully more people will consider using spkg packages and building their own distribution around it.

maldun said...

It was just a matter of time, till something like this would happen, since Sage is now very very big, and everything needs a lot of time.

But I also think this should somehow considered to be done under a bigger framework. The real strenght of Sage is it's big community behind it.

I would propose the following for the future:
Maintain a BaseSage distro which holds only the hard core of sage, and distribute more specialiced versions of Sage for example Numerics, Finance, Number Theory etc.
When things from the specialiced distros get stable enough and have enough need, one can merge them into Base.
This makes 1) maintainance easier, 2) development faster, since not all packages have to work in Harmony.
And if they do they can be merged =)

just my 2 cents,
maldun

maldun said...

It was just a matter of time, till something like this would happen, since Sage is now very very big, and everything needs a lot of time.

But I also think this should somehow considered to be done under a bigger framework. The real strenght of Sage is it's big community behind it.

I would propose the following for the future:
Maintain a BaseSage distro which holds only the hard core of sage, and distribute more specialiced versions of Sage for example Numerics, Finance, Number Theory etc.
When things from the specialiced distros get stable enough and have enough need, one can merge them into Base.
This makes 1) maintainance easier, 2) development faster, since not all packages have to work in Harmony.
And if they do they can be merged =)

just my 2 cents,
maldun