This year we received a great contribution from Martin, who worked on a GSoC project for EASE. Belows post sums up his experience with the GSoC program. So I leave the stage for Martin...
Hello everyone.
First off let me quickly introduce myself. My name is Martin and I study
software-engineering at Technical University Graz. This summer I
participated in the Google Summer of Code program (GSOC) where I
implemented a Jython debugger for the Eclipse Advanced Scripting Environment with the help of my mentor Christian who today is so
friendly and "borrows" me his blog.
I wanted to write a
blog entry for quite a while now but was never sure what to write
about. I finally decided to simply tell my experience with this
year's GSOC program and try to give a few pointers to anyone who is
interested in participating next year. Please understand that these
are just things that worked for me and there is no guaranty that you
will be selected next if you do everything I did.
In general the most
important part about applying is to have a pretty good plan what you
are going to do. The application phase was mid of March this year and
applicants where expected to submit a project proposal. This proposal
should contain an outline of what you want to achieve, what your
milestones and deliverables are and an estimation about your
timeline. Based on this application your mentoring organization (the
open source organization you are applying to) will choose who they
take.
Eclipse has a list
of projects for Google Summer of Code and so do several other
organizations but if you think you have a potentially great idea just
get in contact with them and they will likely tell you if this is
something they are interested in.
Once you think you
have an idea I would recommend getting in touch with the mentoring
organization and see if they have anything particular in mind for
your project or if they can give you some tips on how you could
tackle the problem. I always like an open dialog about my projects
and to hear what others think about it. It is hard to let go off a
fixed plan in your head if you don’t get reasonable input from
someone else. In my case my mentor helped me a lot in shaping the
idea to an actual plan.
If you finally think
you have a decent plan about what you want to do it is time to think
about how you want to do it. This phase to me is the most important
phase of the whole GSOC program. The better thought through your plan
is the less work you’ll have to do in the actual implementation
phase. Don’t get me wrong, you will still make amends as you go
along but the better the initial plan the less derivations there will
be and the less additional time you will spend planning.
Make a list of all
deliverables (necessary and optional), order and rank them and create
your deliverable plan. Once again the more time you spend here the
less surprises you will face when doing the actual implementation.
Should I even
mention that you should give your planned timetable some thought and
try to be as accurate as you can at this point of you project? I
think you see where everything so far was going…
So one last time:
Take your time when writing your project proposal, try to go into
enough detail and do not just quickly hack together a proposal. It
will help your chances of getting selected because you obviously show
dedication and once you actually are taken it helps you bring your
project to a satisfying end. The rest of the
program – the actual implementation – is quite straight forward.
I will still give you some last hints that helped me and hopefully
help you too.
Communication is the
most important part in the implementation phase. Try to align with
your mentor regularly, try to get feedback from others working on
your open source project (mailing lists, IRC, you name it) and try to
communicate your progress with everyone involved. Your mentor can and
will help you with your problems, that’s why they are mentors in
the first place. I knew my mentor before so it is easy for me to say
this but from what I’ve heard from others every mentor seems to be
nice and willing to help you if you only ask. There are some shy
people out there – which is totally okay – but they will probably
have a harder time. As I said, I really like feedback and it helps me
finish projects better than if I was working completely on my own. I
know it is hard for software developers to change their minds once
they have it set on an idea (believe me I’ve been there more often
than I can count) but feedback will almost certainly help. Being more
open minded about this is something I strongly believe most
(including me) should always try to improve.
The other persons
involved in your OS project will probably be the first ones to use
your software and play the beta-testers. Listen to their feedback,
try to be open to their ideas and wishes and by this you will get the
most out of your project. For them as well as for you.
Lastly try to
communicate your project’s progress regularly. This is something I
could have done a little more and although it worked this time it is
still something I would do differently in the future. Your mentor and
everyone else involved will help you avoid the stress of having to
work triple-shifts just to finish before the deadline because you did
not see the stress coming. Most people working on an open source
project have experience and have been in similar situations (be it at
work or in private) and will help you anticipate these things.
For GSOC there are
two deadlines, one in the middle of the implementation phase to show
that you haven’t completely wasted the first one and a half months
and one at the end where you have to deliver your final results.
I guess lots of
people handle deadlines the way I used to do, which is
procrastinating until it is almost too late. I understand that you
work best under pressure and seek the thrill and challenge of having
close to no time to do your job, but it is still something I try to
avoid as much as possible (although it still happens from time to
time). Your mentors will very likely give you a positive final
evaluations if you do not complete everything but tried your best
throughout the whole project. If you procrastinate and do not finish
then I’m pretty sure you will fail your finals and (maybe even more
important) will not get the payment.
These are all tips I
can give you, maybe there are others out there that can help you even
more. Still I believe if you keep these things in mind but still
tackle the program in your way there will be nothing stopping you
from participating and finishing next year. Believe me, it is worth
it.
Have
fun and who knows maybe we see each other during next year’s Google
Summer of Code program. I will definitely try my luck again.