Differences between revisions 1 and 2
Revision 1 as of 2008-11-15 21:52:43
Size: 2842
Editor: RonanPaixao
Comment: How to Begin Sage Development
Revision 2 as of 2008-11-20 01:45:23
Size: 2976
Editor: Minh Nguyen
Comment:
Deletions are marked like this. Additions are marked like this.
Line 3: Line 3:
This is a quick guide for developers who want to contribute to Sage. It is intended specially for newbie programmers. This is a quick guide for developers who want to contribute to Sage. It is intended especially for newbie programmers.
Line 5: Line 5:
First, Sage's main language is [[http://www.python.org|Python]]. Some pars of Sage can be written in other languages, specially the [[http://www.sagemath.org/links-components.html|components]] that do the heavy number crunching, but most native functionality is done in Python, including "glue code". First, Sage's main language is [[http://www.python.org|Python]]. Some parts of Sage can be written in other languages, especially the [[http://www.sagemath.org/links-components.html|components]] that do the heavy number crunching, but most native functionality is done in Python, including "glue code".
Line 9: Line 9:
If you don't know python, you should start there, since it's Sage's main language. A good place to start is the [[http://docs.python.org/tutorial/|Python Official Tutorial]] and other documents available at http://python.org/doc/ . Another good place to take a look at is [[http://www.diveintopython.org/|Dive Into Python]], which may be pretty helpful in some specific topics like test-driven development. If you don't know Python, you should start there, since it is Sage's main language. A good place to start is the [[http://docs.python.org/tutorial/|Python Official Tutorial]] and other documents available at http://python.org/doc/ . Another good place to take a look at is [[http://www.diveintopython.org/|Dive Into Python]], which may be pretty helpful in some specific topics like test-driven development.
Line 13: Line 13:
Once you are comfortable with python itself (which is pretty fast for basics) you can start using sage itself. 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. 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.
Line 15: Line 15:
Then take a look at http://www.sagemath.org/doc/prog/prog.html , which is the official development guide for Sage. After that, you can take a look at http://wiki.sagemath.org/TracGuidelines 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 take a look at the [[http://www.sagemath.org/doc/prog/prog.html|official development guide]] for Sage. After that, you can take a look at the [[http://wiki.sagemath.org/TracGuidelines|trac guidelines]] which details some aspects of Sage development and how to get a Trac account. You can also join the [[http://groups.google.com/group/sage-devel|sage-devel]] list at Google Groups and hang around the #sage-devel IRC channel on [[http://freenode.net/|Freenode]]. Getting an account in this wiki can be helpful too.
Line 17: Line 17:
Then, you can choose to grab a ticked in the trac 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 :) Then, you can choose to grab a ticket from the [[http://trac.sagemath.org/sage_trac|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 :)

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)