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 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:
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 now have a Matrix / Riot.im server, and IRC bridge. You can make use of this
by connecting to the normal IRC channel at irc://irc.freenode.net/#python-gsoc or use
our Matrix room at
#python-gsoc:matrix.python-gsoc.org
. (And yes, there's an Android client if you follow that link!)
We now ALSO have Slack bridged into Matrix, which is in turn bridged into IRC.
IRC <-> Matrix <-> Slack
Because you can never have too complicated a chain of bridged networks. If you would like to join our
Slack workspace please click the Slack Workspace Invite LinkNote: our Slack Workspace is: python-gsoc.slack.com
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:
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: If you're a beginner, look for a project with lots of mentors
available and projects marked as suitable for beginners. (Core Python development
is not usually beginner suitable.)
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!
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!
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:
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?
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
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:
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! Once you're ready for review, you can send a pull request to get
added to this page
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.
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 diffusionmagnetic resonance
imaging (dMRI) analysis. It implements a
broad range of algorithms for denoising, registration, reconstruction,
tracking, clustering,
visualization, and statistical analysis of MRI data.
Mercurial is a free, distributed source control management tool.
It efficiently handles projects of any size and offers an easy and intuitive interface.
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.
SciPy is a library that provides fundamental routines for
scientific
computing: statistics, optimization, integration, linear algebra, Fourier
transforms, signal processing, and more.
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)
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.
Next Deadline
Students can start signing up March 12th.
Dates
January 19 - Sub-org applications due. See
the sub-org section for details. If you're an organization that tried to get in as
a top-level organization and didn't get in and would like to participate with us instead,
please get in touch by March 5.
February 12 - Google Announces list of accepted mentoring organizations
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!