Welcome to the Sage Developer’s Guide!

Everybody who uses Sage is encouraged to contribute something back to Sage at some point. You could:

  • Add examples to the documentation
  • Find bugs or typos
  • Fix a bug
  • Implement a new function
  • Create a new class, create a fast new C library, etc.

This document describes how to write programs using Sage, how to modify and extend the core Sage libraries, and how to modify Sage’s documentation. We also discuss how to share your new and modified code with other Sage users around the globe.

All development takes place on or via the Sage Trac server, including bug reports, fixes, new functionality, and discussions about approaches to particular tickets. Once you start writing code for Sage, you will want to carefully read conventions and guidelines we use.

Depending on your previous knowledge, there are several places you can start learning about the source code revision control process.

  • First, although it is possible to try out bugfixes and explore the code without having a developer account, it is best to acquire a Trac account first, then configure git for use with Trac.
  • An overview of the Sage development process, assuming you have git installed and know the basics of how to use it, is in the concise development guide.
  • More advanced tricks and tips for git are linked below.
  • For those unfamiliar with revision control, please start by reading about collaborative development with Git-Trac, which provides some easier interface with git and Trac, both for newbies and power users.
  • Alternately, one can do certain amounts of Sage development without having git installed, by using Sage’s own internal installation of git and the Sage dev scripts. This is mainly intended as a bridge to full use of git once one becomes more comfortable with the system.
  • Finally, if you’ve never worked on software before, don’t forget you will need the prerequisites to compile in order to make your changes in the source code work.

No matter where you start, good luck and welcome to Sage development!

Writing Code for Sage

Indices and tables

This work is licensed under a Creative Commons Attribution-Share Alike 3.0 License.