Google Summer of Code 2018 @ the Python Software Foundation
Python is a popular high-level programming language. It is a general-purpose language used by scientists, developers, and many others who want to work more quickly and integrate systems more effectively.
Google Summer of Code (GSoC) is a global program that offers post-secondary students an opportunity to be paid for contributing to an open source project over a three month period. Since 2005, the Python Software Foundation has served as an "umbrella organization" to a variety of Python-related projects, as well as sponsoring projects related to the development of the Python language.
The 2018 Python Software Foundation (PSF) GSoC coordinator is Terri Oda. (terri on Freenode IRC, terrioda at gmail.com, but please email gsoc-admins(at)python(dot)org if you are a mentor who wishes to contact an admin. Students should almost always visit Getting Started first, and email gsoc-general(at)python.org only if you get stuck.)
The other org admins include:
- James Lopeman (meflin on IRC)
- John Hawley (warthog9 on IRC)
- Matthew Lagoe (Botanic on IRC)
We also have a great group of advisors and "org admins emeritus" who may be able to help you:
- Florian Fuchs (florianf on IRC)
- Kushal Das (kushal on IRC)
- Stephen Turnbull (yaseppochi on IRC)
Table of Contents
Here's 7 things you can do to get started in free and open source software:
- Choose an organization to work with.
There's hundreds of thousands of projects that use Python, and you need to narrow down the list before you can get help or do much that's useful. See How do I choose a project or sub-org? for ideas on how to do that.
- Hint: Core Python development is not a great place for absolute beginners: you probably want a smaller project with more mentorship available as your first choice.
- Any open source experience will help you prepare for GSoC, so don't worry too much about what project you try first and don't be afraid to change your mind!
- For GSoC applications, you'll need to choose from the list of accepted sub-orgs (Or google's list of big orgs!). If your favourite group isn't on the list, contact them to see if they're interested in participating. Applications not associated with a known sub-org are usually rejected because we don't have mentors available.
- Set up your own development environment.
Document what you do so you can remember it later, and so you can help others if they get stuck! And if you get stuck, don't be afraid to ask for help.
- Start communicating with the developers.
Join the mailing list, IRC channel, or any other communication channels the developers use. Listen, get to know the people involved, and ask questions.
- In almost all cases, you should communicate in public rather than in private. GSoC is a busy time for many developers and many beginner questions get asked repeatedly. Help keep your devs less stressed out by reading what they've written already and making it easier for them to have a record of the things they've answered. You can use a pseudonym/nickname if you want. Also, search those archives to make sure you're not asking something that's just been asked by someone else!
- If you want to make the best first impressions, DO NOT start with "Dear Sir." and DO NOT ask to ask.
- Find some beginner-friendly bugs and try to fix them.
Many projects have these tagged as "easy" "bite-size" or "beginner-friendly" so try searching for those terms or looking at the tags to figure out which bugs might be good for you.
- Note that if you apply as a student with the PSF you will be asked to submit a code sample, generally code related to your project. A few fixed bugs with code accepted upstream will make your application look great!
- Remember, competition for easy bugs is very high during GSoC so it can be hard to find one that's tagged. If you don't see anything from your search, read through the bugs and choose a few that sound like something you can fix. Remember to ask for help if you get stuck for too long, "I'm a new contributor and was trying to work on bug#123456. I have a question about how to..." -- if people can't help, sometimes they will be able to suggest another bug which would be more beginner-suitable.
- Other "easy" bug ideas: find typos and fix them. Set up new tests -- even if the project doesn't need the first one you write, practice writing test cases is useful for later. Try using a tool like pylint to find issues (but remember not everyone cares about the same things!).
- Find bugs and report them.
Hopefully you won't encounter too many, but it's always a good idea to get familiar with your project's bug reporting process.
- Help with documentation.
As a beginner in your project, you're going to see things that are confusing that more experienced developers may not notice. Take advantage of your beginner mindset and make sure to document anything you think is missing!
- Help others.
This is a great idea for a lot of reasons: explaining things can help you learn them better, demonstrating your skills as a good community member can make you more memorable when your mentors have to choose candidates, and being helpful makes your community a better place!
Getting in Touch
- Please note that Python has a Community Code of Conduct and mentors and students working with the PSF are asked to abide by it as members of the Python community.
- Sign up to the gsoc-general(at)python.org mailing list to get updates, reminders, and to discuss questions.
- #python-gsoc on irc.freenode.net is our IRC channel. IRC is an older realtime chat protocol very popular among open source projects, and it's worth learning to use it and getting a dedicated client if you're going to be involved in open source long term. Please remember to stick around a while for an answer, as many open source people use IRC for work and aren't always available to respond immediately.
- There are some great resources at http://irchelp.org/ if you need help finding a client or learning how to use IRC.
- We are working on IRC-Zulip integration so that people without IRC clients will have a nice web interface, but this isn't working yet.
- Found a typo? Want to improve this page? The source code is on GitHub and we welcome pull requests!
- To talk with people from a specific sub-org, check their ideas page listing.
Please try to read all the information on this page before asking a question. We have tried to answer a lot of common questions in advance!
Don't forget to be patient: Our mentors generally have day-jobs and are not always paying attention to IRC (especially during GSoC off-season: expect more active mentors after Google's announcement of organizations). Please ask questions directly on channel (you don't need to introduce yourself or say hi first) and please be patient while waiting for an answer. You could wind up waiting an hour or much longer for "realtime" answers if all the mentors are in meetings at work or otherwise occupied. If you can't stay that long, stay as long as you can and then send email to the mailing list instead so mentors have some way to reach you. We try to answer emails within 48h.
For mentors: All the gsoc admins can be reached at gsoc-admins(at)python(dot)org if you have questions about participating. (Students should email gsoc-general(at)python.org with all of their questions, unless they are of a sensitive personal nature.)
GSoC is basically an open source apprenticeship: students will be paid by Google to work under the guidance of mentors from an open source community. It's a really great opportunity to build new skills, make connections in your community, get experience working with a larger and often distributed team, learn, and, of course, get paid.
Students are expected to work around 40 hours a week on their GSoC project. This is essentially a full-time job. Ideally, you should not attempt to do another internship, job, or full-time schooling while you're doing GSoC.
Remember that Google intends this to be a way for new contributors to join the world of open source. The students most likely to be selected are those who are engaged with the community and hoping to continue their involvement for more than just a few months.
To apply, you need to take a look at the mentoring organizations and the ideas that they are willing to sponsor. Typically, you'll choose one of their ideas and work with a mentor to create a project proposal that's good for both you and your chosen open source community. Sometimes, projects are open to new ideas from students, but if you propose something new make especially sure that you work with a mentor to make sure it's a good fit for your community. Unsolicited, undiscussed ideas are less likely to get accepted.
Note that Python is an "umbrella organization" which means that our team is actually a group of python projects that work together to do Google Summer of Code. If you're going to apply with us, you'll need to choose from one of those teams, because that defines which mentors will be helping you with your applications. Applications without any sub-org and mentor to evaluate them will be rejected. You can work with more than one sub-org while you're figuring out what you want to do, but you can only accept one job offer. Here's some resources so you can read up more on how to be an awesome student:
- The GSoC student Guide -- This is a guide written by mentors and former students. It covers many questions that most students ask us. Please read it before asking any questions on the mailing list or IRC if you can! New students in particular might want to read the section Am I Good Enough?
- Google's list of resources -- Note especially the Frequently Asked Questions (FAQ) which does in fact answer 99% of the questions we get on the main GSoC IRC channel.
- Python's SummerOfCode/Expectations also talks about what Python in particular is looking for in its students.
- Python's Summer of Code Frequently Asked Questions answers the questions that we most often get about Python's projects. You might want to see How do I choose a project or a sub-org? or How many slots does Python get?
How do I apply?Short application checklist:
- Read the links and instructions given on this page -- All of it! we've tried to give you all the information you need to be an awesome student applicant.
- Choose a sub-org (check the list here). Applications not associated with a sub-org typically get rejected.
- Talk to your prospective mentors about what they expect of student applicants and get help from them to refine your project ideas. Listening to your mentors' recommendations is very important at this stage!
- Prepare a patch for that sub-org
- Set up a blog where you will keep track of your GSoC progress
- Write your application (with help from your mentors!) Make sure to include the sub-org name in the title so your mentors can find it in the system, and make it easy for your mentors to comment on your doc (e.g. enable comments if you're using google docs)
- Submit your application to Google before the deadline. We actually recommend you submit a few days early in case you have internet problems or the system is down. Google does not extend this deadline, so it's best to be prepared early! You can edit your application up until the system closes.
Interested in volunteering with the Python Software Foundation?
The biggest job is mentoring students: Mentoring a student as a primary mentor can be a pretty big time commitment (we recommend around 0-10 hours a week for the 3 months of the program, with more time at the beginning and less once the student learns to work independently) but it's a very rewarding chance to give a student an open source apprenticeship. We mentor in teams, so if all you can handle is a few code reviews or taking over for a week while someone's on vacation, we'd still love your help.
The easiest way to become a mentor is to be part of one of the sub-orgs that plan to be involved, so get in touch with them directly if you want to help. If you're part of a group that would like to participate as a sub-org, please read the section for sub-orgs below.
But we also need other volunteers! We're also looking for friendly community members to help with other tasks! We'd love to have more people available on IRC/Mailing lists to answer student and mentor questions in various time zones. We are particularly looking for volunteers who can read and comment on student blogs, remind students if they haven't posted, and promote the work our students do to the larger Python community. Or maybe you have another skillset you'd like to contribute? (Proofreading? Recruiting diverse student applicants?) If you want to help, we'd be happy to find a way to make that happen!
If you'd like to volunteer, get in touch with a sub-org admin or email the Python org admins at gsoc-admins(at)python(dot)org
To participate under the Python umbrella, a sub-org must do the following:
- Be a Python-based open source project that meets Google's requirements for GSoC.
- Have one sub-org admin and at least two mentors who are willing to commit to the full GSoC period. (More is awesome, though!)
- Accept the Python Community Code of Conduct for the duration of the program.
- Send an email indicating interest to gsoc-admins(at)python(dot)org before the Python deadline (exceptions can be made if you get an amazing student applicant later and want to sign up just for them)
- Have a good ideas page. Here's a template. Getting a really great page sometimes takes a few rounds of revisions; Meflin will work with you to make sure your page is ready!
- Be able to handle meeting deadlines and following both Google and Python's rules. We try to send important reminders for big deadlines, but we only have limited volunteer time for nagging and cajoling. Groups that cause repeated problems may be asked to take time off to limit volunteer burnout.
We can't promise to take everyone who meets those criteria, but we do try to take any group that we feel will give the students a great experience. Terri has final say in which projects participate under the Python umbrella, but please send any queries to all the admins at gsoc-admins(at)python(dot)org to make sure we're all on the same page.
Python projects are welcome and encouraged to apply as separate mentoring organizations directly with Google. We're happy to help you in any way we can and we don't mind being your backup plan. We're also happy to help advertise python based organizations not under our umbrella: we want students to find projects that best suit them!
No projects for GSoC 2018 yet! We'll start posting them as soon as sub-orgs get ideas to us, so they'll probably start appearing in January and February 2018.
This section will contain information about sub-orgs and their project ideas once they have gotten in touch with the PSF. If you're unsure whether your favourite Python-based project will be participating, ask them and encourage them to sign up!
If you represent a python-based sub-org and want to be added to the list, read up on what it takes to participate, contact gsoc-admins(at)python.org to get an ideas page review, and when it's ready you can make a pull request or file an issue on GitHub.
No schedule for GSoC 2018 yet! We'll set the one for Python sometime after Google announces their timeline. Check back around January 2018.
Please note Google's GSoC dates and deadlines.
In general, Python will ask mentors to do things 48h before the Google deadline. This allows our admins time to make sure that evaluations, etc. are complete and ready for Google when their deadline comes. Student deadlines remain the same, although getting things done earlier is never a bad idea!
We have a Python-specific calendar here: Python GSoC calendar in ical format