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.