Google Summer of Code 2009 Application
Here is a list of questions we're expected to answer as a part of the application for Google Summer of Code 2009.
The FAQ for the Google Summer of Code 2009 is here.
Describe your organization.
Sage is an open-source mathematical software system. It combines numerous software libraries under one umbrella. It's main user interface, besides the command-line, is a dynamic web-interface where worksheets are stored for each user. Python is the main programming language and also the language of choice for all interactions with the built in objects and functions. The goal of Sage is to create an open-source alternative to all other major proprietary mathematical software systems.
Why is your organization applying to participate in GSoC 2009? What do you hope to gain by participating?
Did your organization participate in past GSoCs? If so, please summarize your involvement and the successes and challenges of your participation.
If your organization has not previously participated in GSoC, have you applied in the past? If so, for what year(s)?
What license(s) does your project use?
Sage is a collection of many open source packages most of which provide specialized mathematics functionality, with a library written mostly in Python, Cython with a little C/C++ to glue these together and provide a unified interface as well as implementations of new mathematical functionality.
Code submitted to the Sage library should be under the GPLv2 or later license. Code written during the GSoC is also expected to be under the GPLv2+. Contributors to Sage are not expected to transfer copyright to anybody or foundation.
The distribution of Sage, including all the components mentioned above alongside the library, is under the GPLv3 license. Detailed license information about the components can be found in the COPYING.txt file of the corresponding release tarball.
What is the URL for your ideas page?
What is the main development mailing list or forum for your organization?
Main development discussions take place on the sage-devel Google Groups list.
Support questions are mostly handled through the sage-support list.
What is the main IRC channel for your organization?
The official IRC channel of the Sage project is #sage-devel on freenode.net. There are usually more than 20 people logged in to the channel at any time. Since Sage developers are distributed around the world, it is possible to get answers to questions any time of day. Support from developers on IRC have received praise on many occasions, and led to many new comers choosing to use Sage instead of the propriety alternatives.
Does your organization have an application template you would like to see students use? If so, please provide it now.
What is your plan for dealing with disappearing students?
After committing to work on a well defined project with a mentor, there are few reasons for a student to disappear. We can't do anything about personal matters, such as family or health problems. Other possible reasons to give up on a project are lack of feedback from a mentor when one is struggling with technical problems and not being able to move on, or general communication problems between the student and the mentor.
We plan to avoid running into these problems, first by carefully evaluating the applications and making sure that the student assigned to a task is capable of completing it, then by keeping in close contact with the mentor and the student so that communication problems can be noted and handled promptly.
We will also encourage students to post their progress reports and questions to the development lists and spend some time hanging out on IRC. Since Sage has a very lively community, and the topics suggested for the Google Summer of Code project are features requested by many developers and users, they will be sure to get feedback and support for their work.
It should also be noted that due to the nature of the Sage project, many developers and likely mentors are related to academia, and have extensive experience tutoring and advising students.
What is your plan for dealing with disappearing mentors?
The Sage project tries to keep the bus factor for any component of the library higher than one. This is basically accomplished by asking for formal reviews and approval of submitted code from another developer before any patch is applied. Hence, there is always more than one person knowledgeable about a certain part of the library, and if there are problems with one mentor, someone else can take up the task.
As also mentioned above, we plan to ask the students to submit progress reports to the development lists. While there will of course be only one official mentor, this way we can make sure that there are lots of eyes studying the work and suggesting improvements and the students progress is not tied to the attentiveness of the mentor during a certain time frame.
What steps will you take to encourage students to interact with your project's community before, during and after the program?
Sage has a very active developer community, which communicates mainly through the IRC channel and mailing lists mentioned above. There are also workshops named Sage Days with varying degrees of academic or development focus organized in universities in the US and in Europe. Dates and places of upcoming Sage Days are listed on the front page of this wiki.
The students working on GSoC projects for Sage will be encouraged to hang out in the IRC channel, and submit their questions and progress reports to the development list. Since the tone of the lists and the IRC channel is very supportive, this will hopefully be enough to get them in close contact with other developers and users interested in their work. Depending on funding, timing and place of Sage Days organizations, students will also be encouraged to attend a workshop where they can meet some developers in person, and join night long coding sprints.