Sage Development: Part 1

 

Fact:  Now you know something about Sage, and you would like to contribute back. 

 

How do you know that your contributions will stay free?

 

 

Some recent examples of how a typical UW undergraduate students have recently contributed to Sage:

 

{{{id=6| /// }}} {{{id=4| /// }}}

Why are your contributions essential?

{{{id=1| import pylab as p # make a square figure and axes p.clf() p.figure(1, figsize=(6,6)) ax = p.axes([0.1, 0.1, 0.8, 0.8]) labels = 'Maple', 'Mathematica', 'Matlab', 'Sage' fte = [400, 600, 1600, 1] p.pie(fte, labels=labels, autopct='%1.1f%%', shadow=True) p.title('Very Rough Revenue Estimates', bbox={'facecolor':'0.8', 'pad':5}) p.savefig('sage.png') /// }}} {{{id=13| /// }}}

What Can I Work do to Help?

{{{id=12| /// }}}

How to Actually Work on Something (Social)

{{{id=11| /// }}}

How to Actually Work on Something (Technical)

{{{id=10| /// }}}

A Step-by-step Demonstration

In this step-by-step demonstration, I will modify a function in Sage, then create a patch.   Ask lots of questions!

  1. Decide on a function to change.
  2. Find the source code.
  3. Edit the source code.
  4. Start using the modified code.
  5. Create a patch.
{{{id=9| /// }}}

Python versus Cython Code

{{{id=8| /// }}}

Add a new module or directory of code

{{{id=7| /// }}}

The Referee Process (and Life cycle)

  1. Create a trac ticket
  2. Post code to trac
  3. Get it refereed (bug people if nothing happens -- there is no magic editor at present)
  4. Fix code based on referee feedback
  5. Get that refereed
  6. Watch your code get included into the next version of Sage
{{{id=22| /// }}}

Working on the Sage Notebook

{{{id=25| /// }}} {{{id=21| /// }}} {{{id=20| /// }}} {{{id=3| /// }}}