Skip to content

GCI 2011 Organization Application

goodok edited this page Nov 20, 2011 · 24 revisions

GCI 2011 Organization Application

Organization description

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.

Why has your org chosen to participate in Google Code-in?

We believe that Google Code-in is a great opportunity to get some fresh blood into our project, from students who would not otherwise participate or even find SymPy. We think that we can get some good contributions this way and some students might even stick around (that would be the ideal situation). Every outreach that we do with SymPy, be it GSoC, or conferences and other talks or getting mentioned on the Google Open Source blog, usually brings us some new users, and generally brings new developers, even if it's just someone who submits a patch every once in a while.

Another reason is that it allows us to collaborate more with other SymPy mentors and recruit new ones, and so the participation in Google Code-in helps the whole SymPy community. We have usually been quite efficient in accepting lots of patches from a lot of people, but every such opportunity is great to streamline our review/merge process even more and force us to think how we can lower the entry barrier for new contributors.

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 Google Code-in 2010-11. If your organization uses more than one list, please make sure to include a description of the list so students know which to use.

Our main development list is [email protected]. You can subscribe at http://groups.google.com/group/sympy. All of our main communication goes through this list. If you have any questions, or just want to introduce yourself, the list is the place to go. We are very friendly and helpful on it, so don't be afraid to post. The list is relatively low-traffic, though that is expected to spike during the Code-In period.

We also have an IRC channel at irc://irc.freenode.net/sympy. You may be able to find help there. If no one on the IRC channel can help you, try asking on the mailing list. Note that IRC is not exactly like real-time chat, so consider that it might take a couple of hours to get an answer to your question (as the other developers might be busy and just leave their IRC clients on in the background). However, once people actually start talking about an issue, it allows for very rapid communication and is more practical for small questions than the mailing list.

The main people who will be helping out with Google Code-In are at https://github.com/sympy/sympy/wiki/gci-2011-mentors. Note that it is preferable to contact the mailing list than a specific mentor, as a specific mentor may not be able to help you with your specific problem, or at that given time.

Our issue tracker is at http://code.google.com/p/sympy/issues/list. All of our Google Code-In tasks are issues in the issue tracker, and are clearly marked with their Code-In category and difficulty.

All patches to SymPy should be submitted as a pull request to our GitHub organization at https://github.com/sympy/ (except for those where this is not relevant, such as improvements to the wiki). We have an extensive guide on how to do this at https://github.com/sympy/sympy/wiki/Development-workflow. (Note to Google: we will probably convert this into a more friendly page for the Google Code-In students).

Please tell us about how your organization has prepared for Google Code-in, including what (and how many) mentors and organization administrators have agreed to help, what your schedule and response time will be during the holidays (and otherwise during the contest period) and how you plan to deal with unresponsive mentors.

Admins: Aaron, Ondřej

Mentors: Mateusz, Chris, Hector, Stefan, Joachim, Matthew, Vladimir

These are the people who have committed so far, but it is likely that others will help out too. For example, we had nine Google Summer of Code students, and only two have committed to helping out so far (Matthew and Vladimir). Also, two or three core developers have not responded yet, but they will no doubt help out here and there with reviewing stuff. There was a surge of new contributors during the GSoC application period (as each applicant needed to submit one patch to SymPy) and it was handled fine. See the "More Stuff/Traffic" section of https://github.com/sympy/sympy/wiki/gsoc-2011-report. And now we have an even large community because many of our Google Summer of Code students have stuck around.

Here is a schedule of some of the core mentors (who have told us when they can help): till December 16 (Ondřej +Aaron full, Mateusz might skip a few days here and there), after December 16 (Aaron+Mateusz full time, Ondřej might skip a few days here and there). Vladimir can help on US and Catholic religious holidays. As our mentors are from all around the world, someone will be around for all holidays.

Here is a detailed page with photos and short bios: https://github.com/sympy/sympy/wiki/GCI-2011-Mentors

SymPy doesn’t have any mentor specific areas, so all mentors will have access to Melange to approve a task, and any trustworthy mentor will have push access to SymPy. As such, if some mentor becomes unresponsive, others can step in. So far, we never had any problem with disappearing mentors in GSoC. We have also participated in GHOP previously, without any problems.

We will require all students to submit patches through GitHub's pull request system (except for those for which this is not relevant, such as the tasks to improve the wiki). We have been using GitHub's pull request system since it's inception last August, and it has greatly increased our productivity with respect to reviewing patches and pushing them in. Because of the high efficiency of this system, combined with a test running bot that we have been developing to run the unit tests on pull requests, we believe that we can handle the increase in pull requests that Google Code-In would produce. Also, all of our core developers would put priority on reviewing Google Code-In pull requests.

We have already created over 130 tasks for Code-In (see the link to the Google Docs spreadsheet). We have used our already existing issue tracker at Google Code (http://code.google.com/p/sympy/issues/list), creating labels for the various Code-In categories and difficulties. For our tasks, we will direct the students to the respective issue in the issue tracker, where there may already be some discussion about how to fix the issue.

Please provide a link to your task ideas page. This is much like the ideas page for Google Summer of Code but must include at least 5 tasks in all of the 8 categories sorted by difficulty level.*

https://docs.google.com/spreadsheet/ccc?key=0AiMKW-ZM-_fedFpSWm51VFBFZkdTRnh3WkhYRndSVXc

Links:

Clone this wiki locally