## On questioning the mission of the Sage project

Every once in a while, it pays to reflect on the mission of a project. We want to review our mission and why we’re involved in the project. In a recent email I received, the sender asked for a clarification of the mission statement of Sage. Below is an edited version of my response to each point the person raised. I have withheld names to protect the identity of the sender.

Hi Sender,

First, allow me to apologize for the prolonged delay in responding to the issues you raised. A person upon receipt of a challenge to her/his position would have the immediate instinctual reaction to defend the position no matter what. I wanted to temper any knee-jerk reaction I might have after first reading your email, and allow myself several days to carefully ponder your email.

> On Fri, Aug 20, 2010 at 1:47 PM, Sender <sender@domain.com> wrote:

> I don’t really know who to address this, but here goes nothing.

There are various avenues for raising your concerns. The mailing list sage-devel can be a catch-all for most issues to do with Sage, its development, and direction. Civilized discussion is expected of all participants. Where a debate exceeds the boiling point, people can move it over to sage-flame where you can vent flames and vitriols at your own risk. Please refer to the Sage website for a list of forums where discussion can take place.

> There seems to be a general misunderstanding of the concept of software and

> it’s role in society.

Software can be understood at many levels among which are:

As a tool to accomplish a task. This can range from tools such as office productivity software, to communication software, to software for conducting (academic/industrial) research. A basic goal according to this perspective is to use a piece of software or a software package to realize some gaol, in the same manner that a carpenter uses a hammer or a writer uses words. We use a tool for its effect.

A related perspective is to view software as a means to an end, e.g. developing software as part of one’s job. A person might be hired to develop/maintain some software; think of paid developers and maintainers. Or one develops/maintains a piece of software as a requisite to fulfilling one’s job; think of researchers who need to develop/maintain a piece of software as part of a research program. Or end users who develop office productivity macros to automate a routine task, e.g. a spreadsheet macro or a word processor macro. A hammer is a tool, but we don’t use any hammer for any situation that arises. A wooden mallet is appropriate for certain jobs. But it’s entirely unsuitable for uprooting nails; that’s a job for a claw hammer. A situation that stretches the limit of a particular type of hammer is an opportunity to evaluate the usefulness of that hammer for that particular circumstance. We may find a particular hammer entirely inadequate so we choose a more suitable hammer, or we may design or fashion a hammer to cater to the peculiarities of the circumstance. An analogous case can be made about words. The words in English are not static for all times. They are created as the needs arise. The meaning and usage of words change over time. People invent phrases to describe new situations, and each community has its own vernacular by way of slangs and colloquialism.

Software can also be viewed as an expression of one’s creativity, as an expression of our perspective of the world around us. Through a piece of software we construct a model of our understanding, of how we think a physical phenomenon works, of our understanding of a theoretical abstraction. The act of construction during the gestation period is a manifestation of one’s creativity. The result of that creativity embodies our understanding, a manifestation of a model through which we view a process, phenomenon, or abstraction. The HTTP protocol is a model of communication, an instance of the client-server model. The software package that represents a web browser is the result of the creative energy of numerous people to implement the protocol (among other protocols). Returning to the example of the English language, we creatively use words to express our thoughts, to create models, theories, and arguments as means to effective communication.

Other perspectives on software are possible.

> For instance, in the front page of sage,

> http://www.sagemath.org says: “Mission: Creating a viable free open source

> alternative to Magma, Maple, Mathematica and Matlab.”

> This I simply consider wrong, free software is not, under any circumstance,

> the alternative to payed, proprietary software. In fact, proprietary

> software is an alternative to the lack of or low quality of available free

> software.

An alternative is a choice. There is also such a thing as a non-choice, e.g. when you’re presented with a “choice” between using the only piece of closed source, proprietary software to accomplish a task or not using that software at all. I consider such a “choice” to be a non-choice, a blackmail of sort; the situation essentially boils down to this: pay up and you are permitted to use the only available tool or suffer the lack of such tool. The existence of only one tool to accomplish a task presents you with a non-choice to use that tool: you either use it or you don’t, and there are no alternative tools to accomplish the same task (of course you could decide to put together an equivalent tool). To talk about choice or alternative when there’s only one available tool for a job is to spout marketing-speak, to engage in sophistry in order to deceive.

When the Sage project talks about an alternative, we talk about a choice among tools to accomplish the same or similar tasks. Think of the case of a manual hammer and the glorified electric hammer. Both tools present you with a choice; they both can be used for the same task. The current situation with respect to symbolic/numeric computation systems is this. The big proprietary, closed source players are Magma, Maple, Mathematica, and Matlab. Their open source counterparts consist of Axiom, Maxima, Octave, Sage, Scilab, SymPy, YaCAS. There are numerous closed source and open source symbolic/numeric computation packages; I don’t want to list them all here, but you could view a comprehensive list from Wikipedia. The Sage project aims to be an umbrella project that unifies existing free open source tools, packaging the tools and developing them into a unified tool that is competitive with the above closed source players. In this situation, it is legitimate to talk about a choice or an alternative between tools without attaching any ideological principles to our choosing of tools. We provide a tool that adds to the repertoire of tools for symbolic/numeric computation. So far no ideology is involved.

Where ideology comes into play is when you consider the philosophical underpinning of the existence of the Sage project. In science and especially in mathematics, information is passed on free of charge and everything is laid out for verification. To charge someone a fee in order for that person to access the information for purposes of verification is to corrupt science and especially mathematics. The extent of this corruption within mathematics can be seen in the mountain of papers whose results depend on closed source, proprietary software. How is the mathematics community to verify results when the tools used for deriving such results are closed off? The proof of the four-colour theorem by Appel and Haken made substantial use of software, and they published their proof and corresponding source code. Had they closed off the software they used for their proof, their purported proof would be tenuous at best. Now consider the case where someone writes a piece of software using, say Maple, it might be a Maple package that is used for deriving some mathematical results. The person publishes the source code of their package and a write up of their results. Has the person fulfilled their obligation to lay everything open for inspection? A major point of contention is that Maple is closed off. Even if you have access to a copy of Maple, it is usually access to a binary version. The published Maple package might look fine and produce valid results, but we are now in a situation where we are unable to verify the tools underlying the package, we can’t inspect the Maple source code as part of the verification process. A crucial question is: What’s wrong when the Maple package, once run through a compatible version of Maple, outputs a mathematically sound result?

To begin to understand what’s wrong, let’s look back at history to the period when a solution to the cubic equation was first discovered. In 1545 Gerolamo Cardano published *Ars magna*, which contains a solution to the cubic equation. Cardano clearly stated that the solution contained in the book was discovered by Scipione del Ferro around 1500. Niccolò Fontana Tartaglia independently discovered the same solution to the cubic in 1535 and kept the solution secret. In the 16th century mathematicians were fond of challenging each other to public calculating contests. In such a contest, the person who is the first to solve a mathematics problem wins the contest. The winner (or loser) need not reveal the method they used to solve the problem, so long as the offered solution is valid. Imagine that Tartaglia was involved in a public contest whose problem is to solve a cubic equation, a problem which he would solve using his secret method. He might out-perform his opponent and win the contest. But how can we verify his method? Every time you challenge Tartaglia to solve a cubic equation, he would gladly do so without revealing his method. Is such secrecy conducive to the advancement of mathematics? An air of secrecy is now prominent in areas of mathematics that rely on computers and symbolic/numeric computation packages. A select few has access to closed off tools and report results produced by such tools, while the rest can only wonder how the results are arrived at.

> Information is inherently free, and it’s not natural to put

> restrictions to it, therefore it’s nonsense what you guys are saying in

> front of your page, and as a presentation.

> One would think that you, as free software developers / promoters / users

> would know better and give a little more value to the fine software you are

> providing. This cannot be put under the shadow of other programs. Such a

> shame.

> I simply want you to know that I would be very pleased that you could

> consider changing this saying, given the reasons I explained above, or you

> could answer me what do you mean that your software is the alternative.

> Kind regards, and thanks for your time.

I suspect that you and I are at variance in our understanding of choice/alternative. Please refer to the above in how I understand the idea of offering an alternative, and the philosophical underpinning of the Sage project. I do not claim to speak for the Sage project; that is the task of its leader William Stein.

The Sage project doesn’t claim that information should be closed off nor that any restrictions are to be put on information. We strive as best we can and in the absence of a dedicated legal team to honour the open source licenses of upstream projects. Our library of new code that build on upstream free open source projects, the Sage library, are available for open inspection from our website and by downloading the source tarball of the latest version. Research publications that use Sage are provided by their authors for public scrutiny, and we maintain a list of publications that use Sage. In some cases, an author might not be willing to release a preprint for public scrutiny; that is their prerogative as an author. The Sage standard documentation is available from our website and we maintain a list of downloadable PDF books that document aspects of Sage. In many cases book authors also release the source to their books, but the decision to release the source of a book rests with the book’s author(s), not the Sage project. A number of open source books [1, 2, 3, 4, 5, 6] that document Sage are in progress, in keeping with the principle that open source software requires open documentation.

I would like to know your understanding of where the Sage project is deviating from the spirit of passing on information free of charge and laying everything open for inspection. I must apologize for being thick and having little experience. The little bit of information you offered in your email doesn’t do your argument any justice. Would you please care to clearly state and elaborate your argument? Otherwise it’s easy to degenerate the current situation to the Monty Python Argument Sketch in which we are exchanging contradictions and fatuous statements instead of clearly stating arguments backed up with evidence and reason.

And that’s the end of my response. I’m interested to know how people understand the mission of the Sage project.

[1] http://code.google.com/p/crypto-book/

[2] http://code.google.com/p/factor-book/

[3] http://code.google.com/p/graph-theory-algorithms-book/

[4] http://code.google.com/p/high-school-sage/

[5] http://code.google.com/p/intcalc-book/

[6] http://code.google.com/p/numas-book/

The Sender is not trying to impugn the intentions of the Sage project in any way. I’m sure he agrees with you that the Sage project and its goals are very much Free (as in speech). Rather, he is suggesting that the wording of Sage’s mission statement itself undercuts this goal by subtly implying that Sage is only “playing catch-up” with the non-Free proprietary software. I think he would suggest a more direct mission statement, something along the lines of this: “To provide a world-class, Free environment for mathematical computing.” This statement does not define Sage’s goal in terms of other software. Sage has ambitious goals above and beyond merely matching the functionality of proprietary software. I daresay I agree with the Sender that Sage should have a mission statement to match.

One advantage to the present mission statement is that it gives a more focused goal than “To provide a world-class, Free environment for mathematical computing”. In some areas Sage is ahead of all four of the “M” systems. I don’t think the current mission statement really impeds us from further developments where we are ahead. But in many other areas Sage is indeed playing catch-up, and the explicit list of systems we want to match can be helpful.

Hey! This is my 1st comment here so I just

wanted to give a quick shout out and tell you I genuinely enjoy reading through your blog posts.

Can you suggest any other blogs/websites/forums that cover the same subjects?

Thanks!