Sage can give students and other contributors a wonderful experience in developing in a
large-scale, supportive, and rigorous environment. All code is peer-reviewed, all functions must
be documented and unit-tested on a variety of platforms and systems. Python is used as a base
language, Mercurial is used as the source code revision system, and Trac is used to
track all support/development issues. All of these tools are very
capable and used in many other small and large-scale projects. The mailing lists are
extremely supportive and responsive, as is the highly active IRC channel. There are
around 150 people that have contributed code directly to
Sage, including many leaders in mathematics, as well as professionals (e.g., one main developer
is a retired Apple kernel engineer, another works at machine vision company in Seattle, etc.),
graduate students, and undergraduate students. There are releases about every 3-4 weeks, under
the attitude of "release early, release often", so students could see their code in the
real live software several times before the semester is over. Contributions of all sorts are
heartily welcomed, but attention is paid to making sure that the system does not become bloated
and disorganized. The mission statement allows for a very wide variety of contributions. From a
software engineering standpoint, Sage is a wonderful project to be engaged in.