Join GitHub today
GitHub is home to over 28 million developers working together to host and review code, manage projects, and build software together.Sign up
GSoC 2011 Organization Application
This is based on the Google Summer of Code 2010 application for SymPy to be an organization. The headers below were the questions that we had to answer for the application.
The application deadline was March 11, 3 PM Pacific Time.
I have submitted the application. The deadline is now past, so please do not edit this page any more. Google will notify me of our acceptance or nonacceptance on March 18, 11 PM Pacific Time. I will notify the list at that time of Google's decision.
SymPy is a Python library for symbolic mathematics. It aims to become a full-featured computer algebra system (CAS) while keeping the code as simple as possible in order to be comprehensible and easily extensible. SymPy is written entirely in Python and does not require any external libraries, which makes it available everywhere Python can be used. It also has a liberal BSD license allowing other open source projects and commercial companies to make use of SymPy in their own projects.
SymPy has a vast array of potential applications, from theoretical physics (atomic physics, quantum field theory, general relativity, classical mechanics, quantum information...), applied math (solving algebraic and differential equations, ...), teaching (calculus, integrals, derivatives, limits, ...), web (it runs on the Google App Engine), and it can also be included as a library in any scientific code.
SymPy has a large, active development team that has increased non-stop since 2007 (ref: http://www.ohloh.net/p/sympy) thanks to an extensible architecture that enables features to be added easily and in a modular way.
It is built and tested regularly on all major platforms and all major architectures to ensure that it can reach the widest possible audience.
Main Organization License (Note: this question has a popup selection for answers):
New and Simplified BSD licenses
Why is your organization applying to participate in GSoC 2011? What do you hope to gain by participating?
From previous experiences, GSoC is an effective way to get students involved in the project, by coding on a specific task with a finite timeline.
It will be beneficial for the project, since each year this has proven to give a huge boost to the project, and it will be beneficial for the students, who will get the chance to write code for an open source project (and get paid for it).
In the past, SymPy has participated under the umbrella of the Python Software Foundation, the Space Telescope Science Institute, and Portland State University. However, there is more competition for students applying under an umbrella organization, meaning that SymPy might not get as many students accepted as we would like or could handle. Also, umbrella mentoring organizations may limit what applications are accepted to work on SymPy based on what they see as being beneficial to their own organization, instead of directly to SymPy.
If accepted, would this be your first year participating in GSoC? (Note: this question takes a boolean answer)
Did your organization participate in past GSoCs? If so, please summarize your involvement and the successes and challenges of your participation.
The SymPy project participated in 2007 under the umbrella of the Python Software Foundation, Portland State University and the Space Telescope Science Institute. We had five students in total. All five projects were successful. All the projects details can be found here:
In 2008, we participated under the umbrella of the Python Software Foundation and we got one student, who was successful. All details are here:
In 2009, we participated under the umbrella of the Python Software Foundation and Portland State University, for a total of five students. All but one were successful. Details are here:
In 2010, we participated under the umbrella of the Python Software Foundation and Portland State University. There were five students, all of whom were successful in their projects. The details are here:
A total of fifteen out of sixteen projects were successful and they incredibly boosted SymPy's development. Some of the students who did this program have continued developing for SymPy after the program ended, again helping to boost the program. For example, the current SymPy project leader (Aaron Meurer) participated in 2009 and 2010. In 2011, Ondřej Čertík, the founder of the project and leader, asked him to step up and be the leader of the project. Aaron would have never have heard of the project and would not be doing any work at all for open source were it not for the Google Summer of Code program.
For almost all of the projects, it is almost certain that they would have never been coded if it were not for the Google Summer of Code program, because they were implemented by students who would otherwise either would not have known about SymPy or else wouldn't be able to dedicate their summer to working on it because of the stipend.
If your organization participated in past GSoCs, please let us know the ratio of students passing to students allocated, e.g. 2006: 3/6 for 3 out of 6 students passed in 2006.
2007: 5/5, 2008: 1/1, 2009: 4/5, 2010: 5/5.
What is the URL for your ideas page?
What is the main development mailing list for your organization? This question will be shown to students who would like to get more information about applying to your organization for GSoC 2011. If your organization uses more than one list, please make sure to include a description of the list so students know which to use.
What is the main IRC channel for your organization?
#sympy in Freenode
Does your organization have an application template you would like to see students use? If so, please provide it now. Please note that it is a very good idea to ask students to provide you with their contact information as part of your template. Their contact details will not be shared with you automatically via the GSoC 2011 site.
What criteria did you use to select the individuals who will act as mentors for your organization? Please be as specific as possible:
Our mentors will be chosen from members of the community who have shown themselves to be committed to the development of SymPy. This means that they will be familiar both with the code base and with git, so they will be able to help the students effectively with these. Also, if possible, we will choose mentors who are familiar with the concepts that the student will be implementing. In SymPy, these are often mathematically complicated, so it is useful to have a mentor who understands them well. And of course, if someone whom we feel meets the above qualifications wants to mentor a particular student, we will let him, because that person is the most likely to be the best person to stick with that student and help him to complete his project.
In particular, here is a list of people (SymPy Organization Members at github):
who have push access to the main sympy repository (15 at the time of writing this text). Those are people that have already proven to be part of the SymPy community and proven that they can be trusted. This is an obvious pool of people to choose from. However, in the past, we also had excellent experience when we choose a mentor from outside this pool, for example a university professor familiar with the field of the project. In that case, we assigned a backup mentor from the above pool, so that the student can work with both and has a guidance as how to write his code and get it in.
What is your plan for dealing with disappearing students?
To begin with, we will try to pick students who will not disappear. We will require that all students who are accepted to have submitted at least one patch that passes review and is pushed into the code base. This will show that they are dedicated, because they must be willing to learn the code base enough to try fixing part of it, and be willing to stick around for the review process.
We require each student to start a blog if they don't already have one and to blog once a week about their progress. The mentor for each student will try to stay in touch more often, by whatever method is best for the student (email, the mailing list, IRC, etc.), but we will also try to get the students to stay in touch with the entire community through the mailing list. The requirement that students submit a patch to be accepted will also help us screen students who will likely not be very communicative with the community. We will also require that students push their work up to an online git repository such as GitHub, so that the mentor as well as everyone in the project can monitor their progress and to see the things that they are doing, as well as to help them fix mistakes early.
If, despite these things, a student disappears, or does not work up to their potential, the mentor and the SymPy organization admin will try to sit down with the student in an IRC conversation or via some other medium to try to see what is holding him back and how he can be brought back on track. If necessary, we may need to adjust the goals as originally stated in the student's application, because it is better for a student to do a reduced amount of work than to do nothing at all. If nothing works, we may be forced to fail the student in his midterm or final evaluation, but this will be a last resort, because it will be to everyone's benefit if the student can be brought back on track. If the student stops being responsive, we will require him to report daily on what work he did. If that doesn't help, then before failing him, we will raise the issue among all the mentors (in the past it was discussed with the Python Software Foundation, who was the umbrella organization). If SymPy is accepted as a standalone organization, we will try to discuss this (privately) with similar organizations, like the Python Software Foundation, to get an outside opinion. If there are any doubts, we will also use the main GSoC list for mentors. This is so that we can make sure that the student was not treated/failed unfairly.
From the 16 students that SymPy had so far, one project had to be ended at midterm, and we had followed the above procedure in that case.
What is your plan for dealing with disappearing mentors?
Traditionally, SymPy has had a lot of willing backup mentors. We are in frequent contact with all our mentors and we have collaborated with each other for several years, so we do not expect that such thing would happen. However, we will assign a backup mentor for each student just in case (see above for the link to all SymPy developers with push access; we have people to choose from for this position), but we do encourage students to interact with the whole community, and ask the whole community for help (i.e., on the IRC channel or on the mailing list) if they have a problem, rather than asking just one person. This will help them to become better members of the community and will also make it easier for the whole community to monitor their progress.
If, given the above, there is still some problem, both Aaron Meurer (current project leader) and Ondrej Certik (former project leader) are ready to step up and become a mentor for any project if needed.
As shown by the 4 years of our experience with GSoC, this model seems to work very well for us.
What steps will you take to encourage students to interact with your project's community before, during and after the program?
We require all applicants to submit a patch to the project that gets reviewed and pushed in. We do not require that this be a particularly complicated. In fact, we will reference to them the easy to fix issues in our tracker:
This is so that we can make sure that they can submit a patch (if they can't we teach them at this stage) and also so that we have some experience with how they interact over email. We communicate with them very frequently before they are accepted, and try to get them involved in our community. As was discussed in the previous questions, if we find that the students cannot do these fundamental things, then they will not be accepted to the program.
During the program, they need to blog once a week about their progress and are encouraged to become active members of our community. The mentors may also choose to have a meeting with the students regularly to monitor their progress. We will leave this up to the mentor and the student to schedule, because they may have problematic schedules to synchronize, but we will encourage them to do any meeting on our public IRC channel, so that it is public to the entire community.
After the program is over, the students already have their blogs, which are synchronized with our planet.sympy.org, and usually if they blogged interesting things, they already built a nice community around their blogs, and so they continue blogging about what they do. It all depends how they like our community and how they communicate with others, so we will try hard to make them feel comfortable so that they will stick around. We do encourage all students to stick around and become regular members of the community. Sometimes they do, and become valuable contributors and sometimes they even participate in Google Summer of Code again in future years. Other times, they move on to do their own things, though often they will still sometimes submit bug reports or patches. We will try to accept students who are likely to become regular contributors to the community after the program ends, because that will benefit SymPy the most. But we do realize that people can become interested in other things, so while we do not require this of students (if it were even possible to require such a thing), we let them know that our expectation as well as the expectation of the GSoC program is to "contribute to open source, while getting paid, and stick around later and contribute more," as opposed to "getting paid, while contributing to open source, and move on after the job is finished."
If you are a small or new organization applying to GSoC, please list a larger, established GSoC organization or a Googler that can vouch for you here.
Googlers: Robert Bradshaw, Craig Citro
Organizations: Python Software Foundation, Portland State University
If you are a large organization who is vouching for a small organization applying to GSoC for their first time this year, please list their name and why you think they'd be good candidates for GSoC here:
Anything else you'd like to tell us?
SymPy has been very successful in the Google Summer of Code program under umbrella programs in the past, and we hope that we can be much more successful if we are accepted as an organization.
We tried to answer all the questions above as best as we could, but ultimately, the best recommendation is looking at our past involvement in GSoC (see the links above), as well as talking to our previous umbrella organizations (PSF and PSU, see the vouching question above).
Backup Admin (Link ID):
- GSoC-2011-Ideas -- Ideas for Google Summer of Code projects
- GSoC-2011-Application-Template -- The template for student applications for Google Summer of Code.
- GSoC-2011-Current-Applications -- A list of active proposals.
- GSoC-2011-Report -- Report for the GSoC 2011
- GSoC-Previous-Applications -- Some examples of successful Google Summer of Code applications from the past.