Python GSoC Frequently Asked Questions

  1. Getting Started
    1. How do I get started in open source?
    2. How do I choose a project or sub-org?
    3. What do I need to know to participate in Summer of Code with Python??
  2. Communication
    1. What does "don't ask to ask" mean?
    2. What should I do if no one answers my question?
    3. How should I address my emails? (or Why shouldn't I start my emails with "Dear Sir"?)
  3. Mentoring
    1. What does it take to be a mentor?
  4. Other
    1. How many slots does python get? How many slots does project $x get?
    2. Why does Meflin always say no?
    3. Where can I find information about previous years?

Getting Started

How do I get started in open source?

We recommend 7 steps for getting started as an open source developer:
  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.
    • 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.
  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.
    • 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.
  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.
    • 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!).
  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!

How do I choose a project or sub-org?

Choosing a project is a pretty personal choice. You should choose something you want to work on, and none of us can tell you exactly what that would be! But here's a few questions you might want to ask yourself to help figure that out:

There's a list of sub-orgs for this year and for previous years linked here Be aware that all sub orgs might not be able to participate every year, and make sure to check and see if they're planning to participate before assuming.

If you're chosen as a GSoC student, you're going to be expected to make some decisions on your own, so you can make a better first impression on mentors by showing that you're able to narrow down your field of choices!

What do I need to know to participate in Summer of Code with Python??

The answer to this depends a lot on the project you choose. We have a range of projects, from beginner to advanced. Each of the sub orgs expects different things from their students: maybe you'll need to know a bit about machine learning, or email, or image processing. The answer to this question is always ask your mentors what you will need to know for a specific project.

But a lot of people ask early on because they want to be sort of generically ready but they're not sure what they want to do yet, so that's not always super helpful.

So here's a list of a few things that are useful for most Python umbrella projects:

Communication

What does "don't ask to ask" mean?

You'll hear this phrase sometimes on IRC, and it means "please just ask your question, don't say something like 'can I ask a question?' first."

Why? Developers are often pretty busy, and if you just ask the question, someone can jump in the minute they see your message with the answer or direct you to folk who can answer it better.

If you ask "can I ask a question?" you're basically just waiting for someone to say "yes" before any useful information is communicated. Many folk consider this slow, annoying, and perhaps even rude. Save everyone (including yourself!) some time and just ask the question right from the start. Culturally speaking, in open source projects it's generally ok launch right in to a question on IRC; you don't even have to say hi first!

What should I do if no one answers my question?

  1. Be patient. If you're on IRC, stick around for an hour or so (you can do something else, just leave the IRC window open and check back occasionally) and see if someone gets back to you. If they don't, try posting to the mailing list (it's possible all the developers are asleep!) If you're on a mailing list, you should give people around 24-48h to answer before worrying too much about it.
  2. Make sure you're asking in the best place. One common mistake students make is to contact individual developers rather than asking on a public mailing list or a public IRC channel. You want as many people as possible to see your questions, so try not to be shy! (and don't worry about looking too much like a newbie -- all of us were new once!) Sometimes projects have different lists/irc channels/forums/bug queues for different types of questions. If you're not sure, do feel free to follow up your question with something like "hey, I haven't gotten an answer on this... is there somewhere better I could post it or more information you need to help?"
  3. Try giving more information. If you've hit a bug, try to give the error message and information about your setup and information about what you've already tried. If you're trying to find a bit of documentation, indicate where you've already looked. And again "hey, I haven't got an answer... what other information could I provide to help debug this problem?" is a reasonable follow-up if you're not sure what people might need.
  4. If you're really having trouble getting in touch with your mentors, talk to the Python org admins by emailing gsoc-admins(at)python.org The Python org admins should have contact info for mentors with each project and can help connect you. (Note: please don't complain that you can't get in touch with us on the general google lists or #gsoc. They're just going to redirect you to Terri and the other python org admins anyhow!)

How should I address my emails? (or Why shouldn't I start my emails with "Dear Sir"?)

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. We realize you're trying to be polite, but "Dear Sir" is often perceived in our communities as alienating, rude or simply too formal and off-putting.

Try "Dear developers" or "Dear mentors" if you're sending a general email. If you're addressing a specific person, use the name or nickname that they use on their emails. Culturally speaking, first names or chosen nicknames are fine for most open source projects.

Mentoring

What does it take to be a mentor?

Other

How many slots does python get? How many slots does project $x get?

We don't know our slot allocation until Google announces them, and google bases their numbers on the number of students we tell them we want. The more great applications we have, the more slots we'll request. So rather than worrying about the number of slots, you should be aiming to be such a memorable and great prospective student that your sub-org will definitely request a slot with you in mind.

For sub-orgs, new groups working with us usually get 1-2 slots, experienced sub-orgs may be granted as many as they can comfortably mentor at the discretion of the org admins. (The max number will likely be close to the total number of mentors divided by two, but the actual number requested depends on which students the org specifically wants to hire after they've done an initial review of the applications.)

Google has been incredibly generous with letting us have slots in previous years, so we are usually more limited by the matching of mentors with truly excellent students. We've had as many as 70 or fewer than 30 depending on the year.

Why does Meflin always say no?

He’s just like that! It's actually an incredibly important job: his job is to say no when things aren’t ready, so we can go back and make things more awesome. It's also his job to make sure that Terri's workload is reasonable, and that means saying NO pretty frequently. All those no’s make it possible to run this program every year!

Where can I find information about previous years?

SummerOfCode on the python wiki