This page is an archive for our GSoC 2017 participation. To view the
latest information, go to http://python-gsoc.org
Google Summer of Code 2017 @ the Python Software Foundation
[
画像: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. It is our
intention to apply again for the 2017 season!
The 2017 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)
- Florian Fuchs (florianf on IRC)
- Kushal Das (kushal on IRC)
- Stephen Turnbull (yaseppochi on IRC)
- John Hawley (warthog9 on IRC)
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.
- This year, we have two realtime chat options:
- #python-gsoc on
irc.freenode.net is our IRC channel. IRC is an older protocol very
popular among open source projects, and it's worth learning to use it 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.
- We also have a Zulip server at https://zulip.python-gsoc.org. Zulip
is open source chat software similar to the popular Slack. These channels
are logged so that you can catch up on older conversations and see what
people have already asked, and if you set up a valid email, the server will
email you if someone answers your question after you've had to leave.
- We are working on IRC-Zulip integration so that chats will show in both
places, but for now they are two separate chat rooms.
- Found a typo? Want to improve this page? The source code
is on GitHub and we welcome pull requests!
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 Feb
27th). 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.
There are some great resources at http://irchelp.org/ if you need help
finding a client or learning how to use IRC.
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.
See "How
do I choose a project or a sub-org?" if you need help choosing.
Don't forget, you can try working with more than one organization to see
which one suits you best!
- Experience with *any* open source group will help you prepare for GSoC.
If you decide to write an application for GSoC you'll need to choose from our
list of registered sub-orgs, but you can experiment before you get to the
application stage.
- Asking mentors to choose your project for you
typically leaves a bad first impression, especially since mentors probably
don't know you well enough to help guide you to a good choice. At least try
to narrow down your choices a bit on your own, or let them know enough about
what you like and don't like so they can help.
- Look through our list of
GSoC 2016 sub-orgs to get a sense of who might participate in 2017. Our ideas list will be updated as soon as orgs tell us
they're interested in participating this year. If your favourite org isn't on
the list and you'd like them to be, contact them directly! Assuming Google
accepts us, we'll accept sub-orgs until the dates listed in
our schedule.
- 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.
Not sure where to find that contact info? Each sub-org for Python has their
information listed in the ideas list.
- If you want to make the best
first impression, DO NOT start emails with "Dear Sir." Python has
many mentors who are female and/or prefer other forms of address. Try
"Dear developers" if you're sending a general email, or use
whatever name they use on their email if you're addressing a specific person.
Culturally speaking, first names or chosen nicknames are fine for most open
source projects.
- DO ask your question in public. Being able
to participate in the open is a signal to developers that you're ready to
participate in open source/free software, so it can improve your chances of
being accepted to GSoC. It also means others can benefit from seeing your
questions and the answers you get.
- DON'T Ask to
ask. Just get right to the point and ask your question without asking if
you're allowed to ask a question first. See What
does "don't ask to ask?" mean? for more explanation.
- Set up your own development environment.
This can be a lot of work the first time, so budget time for it, and don't
forget that you're going to want to run the code you've written, so you'll
need some sort of test environment. This is a good time to practice asking
good questions and helping improve setup instructions!
- Find some bugs and try to fix
them.
Many projects have bugs tagged as "easy",
"bite-size", or "beginner-friendly" that will be easier
for new contributors. - 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!
- Some projects
have beginner-friendly "bite-sized" bugs listed in the OpenHatch
search engine, found here: http://openhatch.org/search/ but many
do not, so try searching for tags like "easy" or "beginner" in your project's
bug tree. Remember, competition for easy bugs is very high during GSoC so
it can be hard to find one that's flagged. If you don't see anything, read
through the bugs and choose a few that sound like something you can fix.
- Having trouble figuring out which
bugs are beginner-friendly? Try searching for terms like "easy" in
the bug tracker. Or just choose a bug that sounds easy to you and try to get
started on it! What's easy for you may not be easy for others, so take
advantage of your own skills and experience where you can. 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: look for typos
and fix them. Set up new tests -- even if your project decides they don't
need the first one you write, the practice of writing test cases will be
useful for other development (e.g. when you want to add a new feature and
need to include tests for it). Try using a tool like pylint to find style
issues and correct those. (But pay attention to your project's style guide!
Not everyone cares about the same things.)
- Find bugs and report them.
It's always a
good idea to get familiar with your project's bug reporting process. Writing
excellent bug reports is a really useful skill, so try searching for "writing
good bug reports" and learn to write really great ones. You might
even be able to help improve other people's bug reports by duplicating their
results and asking questions to fill in information they didn't provide.
- 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 many 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 at least 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:
- 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)
- 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!)
- 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.
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) but it's a very
rewarding chance to basically 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
Sub-orgs
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!
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 page is an archive for our GSoC 2017
participation. To view the
latest information, go to http://python-gsoc.org
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!
Note that some of these groups may have applied as separate mentoring
organizations. We're listing everyone who wants to be listed here to help
students find great Python projects, and we'll separate out the listing to
make it clear which ones are under our umbrella and which are participating
on their own after Google makes their selections.
If you represent a new sub-org and want to be added to the list, 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.
Core Python
CPython, its standard library, and its infrastructure.
GNU Mailman
GNU Mailman is a mailing list manager used by
educators, businesses, open source projects, NPOs (including
the Internet Engineering Task Force itself), and pretty much
anybody who uses mailing lists for discussions and
announcements.
HYDRA W3C Group
A Python server/middleware to automate Web APIs navigation using
intelligent clients. This project aims to:
- create a metadata-powered REST API leveraging HYDRA framework,
- define a design for future development of client/server interactions
using smart clients,
- use graphs and machine-learning to solve complex queries using HYDRA
framework,
- define a middleware (low-level client) to collect requests from
external clients and provide the requested data using reasoning and
machine-learning algorithms.
The Italian Mars Society
Mars City main goal is to provide an effective test bed for field operation studies
in preparation for human missions to Mars. We are currently working on an immersive
virtual reality simulation of the Mars City Station (V-MARS).
Jython
Jython is Python for the Java platform. Jython is one of the oldest maintained projects in the Python ecosystem, with over 8000 commits that go back to 1997. Currently we support the 2.7 version of the Python language, including standard library and ecosystem (this means pip and PyPI); but there is also active work to implement Python 3.x.
Kivy Organization
Kivy is a cross-platform, business friendly, GPU accelerated Python
library for rapid development of applications that make use of innovative
user interfaces, such as multi-touch apps.
The Kivy Organization oversees several major projects:
- The Kivy GUI Library
- The Python-For-Android
compilation tool.
- The Kivy-iOS compilation tool.
- The PyJNIus library for interfacing with
Java from Python.
- The PyOBJus library for interfacing with
Objective-C from Python.
- The Plyer platform-independent Python
wrapper for platform dependent APIs.
- Buildozer - A generic Python packager
for Android, iOS, and desktop.
- KivEnt - A 2d Game Engine that provides
optimized methods of handling large amounts of dynamic visual data.
- Kivy Designer - A graphical GUI
designer for Kivy built in Kivy.
Mercurial
Mercurial is a free, distributed source control management tool. It efficiently handles projects of any size and offers an easy and intuitive interface.
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.
MyHDL
hardware description with Python
Peragro
The core principle of Peragro is to make a centralized 'asset server':
- To stimulate collaboration between artists, by the means of tasks e.g. a texture artist can pick up where a modeller left of.
- To take the job of exporting out of the artist's hand by entirely automating it.
- Allow to tag assets and make collections to easily manage assets.
- Share an art repository between projects to reuse common assets, tag or group assets to be more settings or project specific.
- Deliver and accept its content in the format requested/provided by the user as to support multiple tools so assets can be freely distributed between artist and each can use their program of choice.
- Deliver its content in the format requested by the engine, projects might use CS, Ogre or 2D, etc representations of assets.
Website |
Contact |
Ideas Page
Status: Ready to accept proposals
PyPy
PyPy is a fast, compliant alternative implementation of the Python language.
It is separated in many independent layers, one can work on each separately.
Some areas offer rather challenging topics (such as JIT compilation, Optimization, ...),
others do not have such a steep learning curve.
PySAL
Python Spatial Analysis Library
Pylons Project
The Pylons Project encompasses all projects hosted at https://github.com/Pylons including:
- Pyramid web framework
- WebOb WSGI request/response objects
- Waitress WSGI server
- Colander validation library
scikit-learn
scikit-learn is a Python module for machine learning built on top of SciPy and distributed under the 3-Clause BSD license.
SciPy
SciPy is a library that provides fundamental routines for scientific
computing: statistics, optimization, integration, linear algebra, Fourier
transforms, signal processing, and more.
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: Ready to accept proposals
Statsmodels
Statsmodels is a general purpose Python package for data analysis, statistics and econometrics
TARDIS-SN
TARDIS is an open-source Monte Carlo radiative-transfer spectral synthesis code for 1D models of supernova ejecta.
It has a fun and active community that consists of Astrophysicists, Computer Scientists and Statisticians
Theano
Theano is an optimizing compiler for numpy.ndarray and scipy.sparse matrix that generate GPU code and do symbolic differentiation
Timelab
Time series analysis for astronomy, to study the variability in black hole emission.
Schedule
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
Some Python-specific dates for orgs:
- February 7 - Python sub-orgs should get ideas pages to
gsoc-admins(at)python.org if at all possible. This lets us showcase all
your great ideas when Google looks at our application and increases our
chances of acceptance. Terri is getting on a plane on Feb 8, so please don't
miss this deadline!
- March 3 - Last day for Python sub-orgs to apply to
participate with the PSF. (Assuming we get accepted by Google and can
support sub-orgs, of course!) This deadline is for orgs who applies on their
own and didn't make it, but still wish to participate under the umbrella.
- April 15 16:00 UTC - Deadline for sub-orgs to make slot
requests. This is 48h before Google's deadlines so that our org admins
have time to coordinate with folk who don't have enough mentors signed up and
chase down anyone who forgets. Please send all slot requests to
gsoc-admins(at)python.org.
- April 22 16:00 UTC - Deadline for sub-orgs to get student
selections in. HOWEVER, if you really want a student, request them as early
as possible, since we may have to negotiate with other organizations to see
who gets to accept their application. Sub-org admins, please send requests
and lists of mentors to gsoc-admins(at)python.org.
- June 28 16:00 UTC - Deadline for mentors to submit phase
one evaluations. (48h before Google's deadline so we have time to take action
if a mentor fails to submit an evaluation.)
- July 26 16:00 UTC - Deadline for mentors to submit phase
two evaluations. (48h before Google's deadline so we have time to take action
if a mentor fails to submit an evaluation.)
- September 3 16:00 UTC - Deadline for mentors to submit
final evaluations. (48h before Google's deadline so we have time to take
action if a mentor fails to submit an evaluation.)
Student blogging schedule. Students are always welcome to blog more, or
earlier, but we need to see at least one new blog post by the following
dates.
- June 13
- June 27 - Phase one evaluations this week
- July 11
- July 25 - Phase two evaluations due this week
- August 8
- August 22 - Final week