Google Summer of Code 2018 @ the Python Software Foundation

This page is an archive for our GSoC 2018 participation. To view the latest information, go to http://python-gsoc.org

Python powered

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.

Getting started: Not sure what to do first? Check out the section on getting started in open source!

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:

We also have a great group of advisors and "org admins emeritus" who may be able to help you:

Table of Contents

Getting in Touch

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.)

Getting Started

Here's 7 things you can do to get started in free and open source software:

  1. 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.
  2. 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.
  3. 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.
  4. 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.
  5. 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.
  6. 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!
  7. 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!

Students

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:

How do I apply?

Short application checklist:
  1. 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.
  2. Choose a sub-org (check the list here). Applications not associated with a sub-org typically get rejected.
  3. 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!
  4. Prepare a patch for that sub-org
  5. Set up a blog where you will keep track of your GSoC progress
  6. 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). A shorter markdown version of the application template is available here.
  7. 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.
Communication is probably the most important part of the application process. Talk to the mentors and other developers, listen when they give you advice, and demonstrate that you've understood by incorporating their feedback into what you're proposing. We reject a lot of students who haven't listened to mentor feedback.

Mentors

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 often 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

Sub-orgs

To participate under the Python umbrella, a sub-org must do the following:

  1. Be a Python-based open source project that meets Google's requirements for GSoC.
  2. Have one sub-org admin and at least two mentors who are willing to commit to the full GSoC period. (More is awesome, though!)
  3. Accept the Python Community Code of Conduct for the duration of the program.
  4. 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).
  5. 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! Once you're ready for review, you can send a pull request to get added to this page
  6. 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.
  7. Disclose all potental conflicts of intrest to the Python admins BEFORE accepting a student. If you are unsure, ask. If a conflict is found after the fact the studnet and sub-org may be dropped from the program.

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!

Project Ideas

This section lists all the sub-orgs who have signed up to participate with the Python Software Foundation for 2018. If they're not on this list, they're probably not participating at this point, although we can sometimes make exceptions if the organization tells us they have a particularly promising student they want to work with.

DIPY

DIPY is a free and open source software project for computational neuroanatomy, focusing mainly on diffusion magnetic resonance imaging (dMRI) analysis. It implements a broad range of algorithms for denoising, registration, reconstruction, tracking, clustering, visualization, and statistical analysis of MRI data.

Website | Mailing List | Contact | Ideas Page
Status: Ideas page in progress

Mercurial

Mercurial is a free, distributed source control management tool. It efficiently handles projects of any size and offers an easy and intuitive interface.
Website | Mailing List | #mercurial on Freenode| Ideas Page
Status: Ideas page in progress

MNE-Python

MNE is a free and open source software designed for processing electroencephalography (EEG) and magnetoencephalography (MEG) data. EEG and MEG data analysis requires advanced numerics, signal processing, statistics and dedicated visualization tools. MNE-Python is a pure Python package built on top of numpy, scipy, matplotlib and scikit-learn.
Website | Mailing List | Contact | Ideas Page
Status: Ideas page in progress

PySAL

Python Spatial Analysis Library
Website | Mentor Gitter | Ideas Page
Status: Ideas page in progress

SciPy

SciPy is a library that provides fundamental routines for scientific computing: statistics, optimization, integration, linear algebra, Fourier transforms, signal processing, and more.
Website | Contact (scipy-dev list) | Ideas Page
Status: Ideas page in progress

Scrapinghub

Scrapinghub is a company focused on information retrieval and its later manipulation, deeply involved on developing and contributing in Open Source projects regarding web crawling and data processing technologies. This year we are applying with four of our most renowned projects, Scrapy, Portia, Splash and Frontera. (maybe 5 with dateparser)
Website | Contact | Ideas Page
Status: Ideas page in progress

SecureDrop

SecureDrop is an open-source whistleblower submission system that media organizations can use to securely accept documents from and communicate with anonymous sources. It was originally created by the late Aaron Swartz and is currently managed by Freedom of the Press Foundation.
Website | Contact | Ideas Page
Status: Ideas page in progress

Statsmodels

Statsmodels is a general purpose Python package for data analysis, statistics and econometrics
Website | Contact | Ideas Page
Status: Ideas page in progress

Schedule

Next Deadline Students can start signing up March 12th.

Dates

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