Differences between revisions 3 and 4
Revision 3 as of 2009-03-19 14:58:01
Size: 2972
Editor: BurcinErocal
Comment: fix address of developer's guide
Revision 4 as of 2009-12-24 10:59:30
Size: 3024
Editor: Minh Nguyen
Comment: beginning Sage development should be under devel/
Deletions are marked like this. Additions are marked like this.
Line 1: Line 1:
## page was renamed from HowToBeginSageDevelopment

How to Begin Sage Development

This is a quick guide for developers who want to contribute to Sage. It is intended especially for newbie programmers.

First, Sage's main language is Python. Some parts of Sage can be written in other languages, especially the components that do the heavy number crunching, but most native functionality is done in Python, including "glue code".

One of the good aspects of Python that Sage inherits is that working code is considered more valuable than just fast code. Sure, fast code is good, but clean, readable code is important, and as anything math-related, inaccurate results are unacceptable. Correctness comes before optimization.

If you don't know Python, you should start there, since it is Sage's main language. A good place to start is the Python Official Tutorial and other documents available at http://python.org/doc/ . Another good place to take a look at is Dive Into Python, which may be pretty helpful in some specific topics like test-driven development.

In the meantime, you can grab your copy of the sage source and get used to mercurial. The mercurial book is recommended for those who aren't used to that version control system (and to some extent to those who never used such a system).

Once you are comfortable with Python itself (which is pretty fast for basics) you can start using Sage. If you want, you can try to learn Python by using Sage, but that isn't recommended because it's helpful to know what is pure Python and what is Sage doing its "magic". There are many things that work on one that don't on the other, because Sage does a lot of type conversions behind the scenes.

Then take a look at the official development guide for Sage. After that, you can take a look at the trac guidelines which details some aspects of Sage development and how to get a Trac account. You can also join the sage-devel list at Google Groups and hang around the #sage-devel IRC channel on Freenode. Getting an account in this wiki can be helpful too.

Then, you can choose to grab a ticket from the trac server to solve or you may want to implement some feature you have in mind. If you want to implement something, it's good practice to include a ticket and/or discuss in the group first, so that the gurus can give their opinion (and it's nice to listen to them, since they know Sage's internals much better and may give some advice). They are pretty open to new ideas, too, like all mathematicians should be :)

devel/BeginSageDevelopment (last edited 2022-05-08 20:39:15 by mkoeppe)