Hi folks --

It's that time of year again: Google's announced the Summer of Code 2009, and
Django is again one of the participating projects. Jannis Leidel will be
running things this year, and I'll be backing him up.

For those who aren't aware: Summer of Code is Google's program to pay students
to work on open source projects over the summer. I can't think of a better
summer job if you're a student and want to get involved in open source. For
more details about the program in general, check out Google's FAQ:
http://socghop.appspot.com/document/show/program/google/gsoc2009/faqs.

If you're interested in working on Django as part of GSoC please read this
whole email. It's quite long, and I apologize for that, but we've learned over
past years a lot about what makes a GSoC project succeed or fail. Last year
was our most successful year to date, and I'm determined to make this year
even better.

Important dates
---------------

The whole timeline can be found in the FAQ, but there's a couple of important
dates you should be aware of right now:

The student application period opens March 23 and ends April 3. There's no
prizes for getting your applications in first, but that April 3 deadline is a
*hard* deadline: no applications filed late will be considered. This means
you've got two weeks to prepare your application, so the time to start is
*right now*.

Picking a project
-----------------

[Thanks to Malcolm for some of the content below; I shameless ripped some
stuff off from an email he wrote yesterday.]

The first thing you need to do is choose something to work on. Hopefully if
you're reading this you've already got an idea; if not, there's some ideas at
http://code.djangoproject.com/wiki/SummerOfCode2009.

However, if you just pick something there and throw together a quick
application, you're going to get rejected immediately. There's a lot more to
choosing a project that just throwing something together.

We've found over the past years that the pickier we are about application
quality, the better the final projects are. Because we want success this year,
we're going to be exceedingly picky about only accepting good applications, so
it's vital that you put your best foot forward. Here's how:

Think of the process as applying for a job. You're trying to convince us that
you:

    (a) understand the problem you're attempting, and

    (b) have some chance of achieving something realistic in the 12 week
    period you've got to work.

This can be hard, particularly for people haven't been involved in Django
development before -- some projects require a history of involvement before
applying; we let anybody apply. So it's really *now* that you want to start
getting involved. You have to put in a little bit of work to work out how your
problem might be approached, or what the current problems are. Don't just pick
something from the ideas page -- you could also look through Trac and view the
tickets grouped by component and see if there's a bunch of things in a similar
area that suggests something needing more holistic attention.

Most importantly, though, when you have some kind of idea, start a discussion
on django-developers. This will let us help you understand what you're up
against, and it'll help us see that you've got the knowledge to tackle the
problem. Last year, to pick one example, Nicolas Lara, who helped implement
aggregates support, was involved in quite a long discussion about it leading
up to the project start. This meant that by the time he filed his application,
he knew the problem space very well, and had a well-reasoned proposed
solution.

Timing is a little tricky this year, because a bunch of the core developers
are heavily focused on getting Django 1.1 out. So mention in the post that
it's a SoC discussion, and we'll make sure to give it some attention. (If you
don't mention that, somebody will say "wait until 1.2").

The applications that have been most successful in the past -- in terms of
producing working code at the end of the period, rather than just being
accepted -- are those where the applicants have engaged a bit ahead of time to
see if their ideas stand up to review and/or tweak those ideas a bit.

Once you've had one of these discussions, *then* you're in a position to write
an application that can lay out your cunning plan and point to a discussion
showing it kind of holds up under scrutiny. We have much more confidence
voting for a student who's done the preparation than somebody with no history
whatsoever. Many SoC students starting to get into Django, which means you
have to do some work here and get a feeling for what you're up against.

In short, the application isn't a "convince us to let you work on this for
the summer" as much as "convince us you understand the problem you're
proposing to work on and that your solution has a chance of working and being
accepted by the core body of developers".

Our goal this year is for *every single project* to result in code that gets
committed back to Django. We'll accomplish this goal by *rejecting*
applications that don't show us good odds of success.

What a good proposal looks like
-------------------------------

Once you've got some discussion done, and have a handle on the task, you'll
need to submit your proposal into Google's SoC web app
(http://socghop.appspot.com/). We'll be looking for a few things in your
proposal:

    - A concise but complete description of the problem.

    - A concrete, as detailed as you can, proposal of how you plan to modify
      Django to fix said problem. This is where you'll include links to
      your previous discussions on django-dev.

    - A timeline, ideally broken into week or two-week chunks, showing the
      steps you plan to take as you work on the problem. This is obviously
      subject to change, but it'll show us that you have a handle on the scope
      of the problem. You should also indicate roughly how much time
      (hours/week) you can devote to the problem. Some folks work full-time
      (40+ hours/week) on SoC. Less is OK, but if you've only got weekends
      free we'd like to know about.

    - Some information about yourself, including why you think you're
      qualified to work on this problem. We don't need or want a resume, but
      include any relevant information about you and your background that'll
      help us get a feel for who you are.

What a bad proposal looks like
------------------------------

Just to round things out, a couple of things that happen in applications that
have absolutely no chance:

    - Somebody we've never heard of proposing something *really* ambitious.
      It's not too hard to guess roughly at the required amount of work, for
      those of use who maintain Django or work regularly on the internals, so
      if somebody proposes something that's too hard, we can tell. And if we
      don't know them at all, it's hard to trust they'll get things done.

    - However, the, the problem shouldn't be too small. It's called Summer of
      Code, not Weekend of Code.

    - A proposed change without any evidence on django-dev or django-users (or
      elsewhere) that the change is needed. We make changes because there are
      use-cases for them, not because we can. So any proposal should be driven
      by trying to fix some existing problem, not creating a "wouldn't it be
      nice if...?" situation.

    - This will sound cliched, but a badly written application is a real
      turn-off. If you can't write an important thing like that and use
      spelling and grammar and sentences with at least some punctuation, we'll
      worry about your ability to communicate effectively with your mentor and
      the community.

      There's a lot of people in our community who don't speak English as a
      first language. *That's* not a problem; we're not going to be grading
      you! However, we need to see that you can communicate clearly, and so
      basic proofreading is a must.

      We're not asking for Shakespeare -- though a proposal in iambic
      pentameter would thrill me and annoy Malcolm; double win -- but it needs
      to rise above IRC speak.

Next steps
----------

If you've read all that -- and congratulations, by the way! -- the next things
to do are:

    - Start looking for a project.

    - Subscribe to the django-gsoc mailing list
      (http://groups.google.com/group/django-gsoc); we'll use this list to
      conduct most of the business of GSoC.

Let's do it!

Jacob

--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups 
"Django developers" group.
To post to this group, send email to django-developers@googlegroups.com
To unsubscribe from this group, send email to 
django-developers+unsubscr...@googlegroups.com
For more options, visit this group at 
http://groups.google.com/group/django-developers?hl=en
-~----------~----~----~----~------~----~------~--~---

Reply via email to