Thursday, May 29, 2008

Torbjorn Granlund:> The other publicly stated reasons are a mixture of> blatant falsehoods and sinister insinuations.> This fork exists for some very different reasons than those publicy> stated.

I know why the fork exists, so I'll state publicly preciselywhy the fork exists. The issues below are notblatant falsehood or sinister insinuations.

1. FACT: (L)GPLv3 cannot be used by some companies. See below whereI discuss this issue at length.

2. FACT: The GMP project is not developer friendly. This is easy tosee by reading the GMP mailing lists.

3. FACT: The GMP project does not have a regular andpredictable release cycle. How many times has the GMP 5.0 releasebeen moved back -- it used to be "sometime in 2007", but now theGMP site says "5.0 is planned to come out in a couple of years."

4. FACT: The working code repository of GMP is closed. There isno public svn, etc. repository so that anybody can look at the latestversion of the GMP code. See 2.

5. FACT: Some extremely capable developers do not want to contribute toan LGPL'd project, because they don't want their voluntary contributionsto be used by Maple, Mathematica and Magma to make money.

6. FACT: The GMP project is unfriendly toward natively supportingMicrosoft Windows using MSVC. Just see any email you have sentto Brian Gladdman.

Torbjorn Granlund:> I think the forkers over at SAGE use the purported v3 incompatibility> issues as an excuse for forking GMP.

I have been approached by numerous people (from industry,government, etc.) over the last three years about forking GMP.GPLv3 was one of numerous factors that really pushed thingsover the edge, though a fork would have happened anyways.

Torbjorn Granlund wrote:> Seriously, please don't use this sort of rhetoric. At least not> before you've explained the actual problem. I suspect the SAGE team's> problem is mere stubbornness, in particular since they have not been> able to produce one single reason for their problems with v3. But I> am all ears, should somebody spell it out.

It is no secret that the Sage project receives some funding fromMicrosoft Research to produce free open sourcemathematical software for use by their researchers. See http://sagemath.org/ack.htmlfor a list of organizations that fund Sage development.A company-wide requirement at Microsoft is that they do not run anyGPLv3 code, not even binaries. This is not surprising in lightof numerous quotes by Stallman about how GPLv3 was designedpartly to attack Microsoft. For example:

Stallman: "The point of the GPLv3 conditions that apply to the Novell/Microsoft deal is to give the rest of the community a defense against Microsoft's patent threats. If these conditions do their job, the result will be that Microsoft never goes beyond threats, and the community is safe." http://www.technewsworld.com/story/must-read/59780.html?welcome=1212081285

This is one straightforward reason why GPLv3+ only codeis a problem for the Sage project. It has nothing to do withideological stubborness by Sage developers (instead it isideological stubborness by Stallman).

If Microsoft maintains this policy, then they willalso not run new versions of Mathematica, Maple,Magma, that depend on any LGPLv3+ code.So the problem Sage has will also be a problem for allthose projects. And I guarantee you that people at Microsoftknow about this issue.

You probably don't like Microsoft, so I doubt we will find any sympathyfrom you as a result of the above. But rest assuredthat the above issues with GPLv3 are NOT motivated by "merestubborness" by the *Sage team*. So you are wrong about that.

Thursday, May 1, 2008

For over a decade I have primarily done research in number theory that often involves computation, mainly using Magma. In 2004 I realized that it was stupid for me to continue building my work on Magma because Magma is proprietary, the development model is closed, Magma is expensive which is bad for students, and the language itself lacked many features (e.g., user defined classes) that I had requested repeatedly for over 5 years. Thus to continue to use only Magma unacceptably limited my potential in both research and education.

Having used Magma for many years, I simply could not switch to an existing open source system. The only serious free open source software for number theory is PARI, whose capabilities are far behind that of Magma in numerous critical areas of interest to me, including exact linear algebra, commutative algebra, and algebraic curves. And no other free system--GAP, Singular, Axiom, Maxima, Macaulay 2, etc.--even comes close in all these areas. In fact, after a decade of patiently waiting, I doubt they ever will.

Magma is the result of several decades of hard work by extremely talented fulltime mathematicians and programmers such as John Cannon, Allan Steel and Claus Fieker. I've worked with them and they are simply amazing. The situation seemed hopeless. If I had only never used Magma and tasted of the forbidden fruit...

In 2004, sure that there was no possible way to solve this problem, and driven by nothing but pure blind compulsion, I started the Sage project as my little free open source alternative to Magma, and spent an insane amount of time working on it even though I was utterly convinced that there was no hope of Sage ever succeeding. The first version of Sage consisted of the Python interpreter and a few scripts for doing number theory.

After a year, some of my first feedback from the computer algebra research community came from Richard Fateman on December 6, 2005 when he posted his opinion of the Sage project to sci.math.symbolic: ``By avoiding applications (say, to engineering design, finance, education, scientific visualization, etc etc) the activity is essentially doomed. Why? Government funding for people or projects will be a small percentage of the funding for pure mathematics. That's not much. And the future is pretty grim.''

Honestly, I believed he was right, but I just couldn't stop myself from working on Sage. It is now nearly three years later and the Sage project currently has around 100 active developers and 10,000 users. In November 2007, Sage won first place in the scientific category of the Trophees du Libre, which is a major international free software competition. Sage is funded by the US National Science Foundation, the US Department of Defense, the University of Washington, Microsoft Research, Google and private donations. Sage has new releases every two weeks, and typically 30--40 people contribute to each release. All new code contributions to Sage are peer reviewed, and every new function must be documented with tests that illustrate its usage. The docs have over 50,000 lines of input examples.

So what is Sage and what makes it unique? Sage is:

a huge distribution of free open source mathematical software that is surprisingly easy to build from source,

a set of interfaces to most other mathematical software systems, and

a new Python library that fills in huge gaps in other open source math software included in Sage, unifies everything offering a smooth user experience, and provides a modern web-based graphical notebook interface with math typesetting and integrated 2D and 3D graphics.

Sage is the first large general purpose mathematics software system that uses a mainstream programing language (Python) as the end user language. Python--easily one of the world's top 10 programming languages--is a powerful and beautiful modern interpreted programming language with an organized and professional developer base and millions of users. Sage also makes extensive use of a Python-to-C compiler called Cython. Thus Sage has a tremendous advantage over every other general purpose computer algebra system, since Python has thousands of third party libraries, sophisticated support for object serialization, databases, distributed programming, and a major following in scientific computing.

Instead of reinventing the wheel, Sage combines many of the best existing open source systems that have been developed over the last 40 years (about million lines of code) with about 250,000 lines of new code. Every single copy of Sage includes all of the following software (and much much more):

Algebra and calculus: Maxima, SymPy

High precision arithmetic: GMP, MPFR, MPFI, quaddouble, Givaro

Commutative algebra: Singular

Number theory: PARI, NTL, mwrank, ECM, FLINTQS, GMP-ECM

Exact linear algebra: LinBox, IML

Group theory: GAP

Scientific computation: GSL, SciPy, NumPy, cvxopt

Statistical computation: R

Graphics (2d and 3d): Matplotlib, Tachyon3d, Jmol

Sage is thus the first system to combine together such a wide range of libraries and programs in a meaningful way. Instead this huge range of programs is tied together using Python's excellent extensibility via C libraries and using pseudo-tty's. Sage has a highly developed unified collection of pseudo-tty based interfaces that make it is possible to make extensive use of Maple, Mathematica, Magma, Matlab, GAP, Maxima, Singular, PARI, and many other systems from anywhere within a single Sage program.

Curious? If you want a viable open source alternative to Magma, Maple, Mathematica and Matlab, drop everything, try out Sage now and become a Sage developer.

About Me

I am a professor of mathematics at University of
Washington. In my mathematics research, I use the Birch and
Swinnerton-Dyer conjecture as motivation to explore the
constellation of conjectures and questions about arithmetic invariants of elliptic curves. I do many explicit computations, and started the Sage Mathematical Software project. Currently, I'm working very hard on https://cloud.sagemath.com.