GSOC 2007 finally came to an end on last 20th, providing loads of experience and lots of other good things to take with us. It helps to create passion for Open Source software among students, by providing an opportunity to work with more than 100 OSS projects in their summer holidays. Even it implies as a summer vacation program any university student in the globe can participate in the program. So students like me who is actually doesn't have such summer vacation (In Sri Lanka we don't experience seasons, thus no summer holidays) are also eligible to participate. Best thing for some, is the $45K stipend paid by the Google for the work done in the program. Honestly it's a great relief for our academic expenses for the year, but what I believe is the experience and reputation the program brings what is more important in long term.
Talking about reputation, it's great to be in a community of different people all around the world (almost in every continent), who knows you by your first name. This was mainly due to Silverstripe was a small tightly knitted community since it was a budding up project. I guess I made the right move by applying to upcoming project like it rather than a big project like GNOME, Apache or Drupal where I would be just another contributor as many others. Silverstripe valued our work very much and took lot of effort in giving us the exposure. Most wonderful thing is our work being featured in the tech talk Silverstripe presented in Google Headquaters (thanks Sig!)
I haven't done much contribution to FOSS prior to GSOC, but now I feel as a developer it's very essesntial to work on FOSS project in spare time. So I'll be continuing my work with Silverstripe CMS (and even with some other projects if I get more time). Not only it brings you credibility and reputation, but also you could polish your skills by learning from the masters.
Here are some lessons I learnt from the GSOC, hope these help you as well.
Polishing your coding skillsNone of the programming courses could teach the art of programming or the best practices. Those do only come with the experience. It may be simple as the placement of a parentheses or line indention but it's better to do it correct way. In Open source projects, where the documentation is rather mediocre, it's the code which does act as the documentation or the spec.
In Silverstripe they had strong concern on the coding standards and best practices. Most of the stuff I learnt about the project was by looking at the code itself. Similarly many will try to understand how my module works just looking at it's source code. So lot of careful thought was needed on coding. Inspiration from the seasoned hackers of the core team gave me lot of inspiration (especially my mentor, Matt) to do the things in the right way.
Now I treat coding as a creative exercise, like painter doing an art on a canvass. It's not just copy-paste and changing some stuff. This is something I would never learn by on my own, even if I do tons of freelance projects.
How to set achievable goalsGSoC is a program with a limited time frame (and any other project). Eventhough we may come up with a mind-blowing proposal due to practical constraints it's difficult to achieve all those within the period. So it's essential to break the the project into several chunks and achieve them in several iterations. This will allow you to focus on a single small target than having a large wayward target.
Working under pressureOne of the major challenges I faced in the GSOC was balancing academic stuff and project work. As I mentioned earlier in Sri Lanka we didn't have summer holidays so GSOC went along with the normal semester work. I couldn't make this an excuse since I assured to complete the proposed work in that time frame. Yet I didn't want to throw away this great opportunity came in my way. At the end, I felt I could keep the balance on both and was able to complete almost every assigned task by the deadline.
BTW, I learnt that I must be willing to take such risks, if I need to go beyond an average.
Communication and CollaborationWorking with a team of developers who lives across the globe, in different timezones was new experience for me. Lot of decisions were taken based on the communication done via IRC, forums and Skype.
Collaboration in development was mainly done with the use of Source code management system (Subversion) and Trac. Silverstripe offered special branch in the repository to GSOC, which enabled us to freely commit our patches without worrying much on confilcts with the trunk. Also they created separate areas for modules we develop in SCM and gave us the total control of the module.
Supporting the CommunityApart from development, developer in a open source project must be willing to help the community to use the product. Responding to questions coming from forum or IRC, was also part and parcel of the project assignment. I also did documented the usage of the modules I developed, as much as possible. As I understand support rendered by the developers to the users is one of the key factors for the success of an open source projects. If more support is available, more people are willing to try out the FOSS products.
At last, I must not forget the surprise gift sent by the Google to us. Producing Open Source Software written by Karl Fogel, acted as an bible for me to understand the concepts and attitudes needed to have as an Open Source developer.