Google Summer of Code is a program that offers student developers stipends to write code for various open source projects. Google works with a several open source, free software and technology-related groups to identify and fund several projects over a three month-period. Historically, the program has brought together over 1,000 students with over 100 open source projects to create hundreds of thousands of lines of code. The program, which kicked off in 2005 , is now in its third year, following on from a very successful 2006.
This document describes the mentor guidelines for the Joomla! Summer Of Code program 2007. It contains information about the program schedule, program goals, program organisation, the mentor-ship selection process, conflict resolution/problem solving resolutions, what to expect (and what do we expect) and of course communications and tooling.
2. General program schedule
- Week of February 12th: Announcement that Google will fund GSoC 2007
- March 5: Mentoring organizations can begin submitting applications to Google
- March 12: Mentoring organization application deadline
- March 13: Google program administrators review organization applications
- March 14: List of accepted mentoring organizations published on code.google.com;student application period opens
- March 23: Student application deadline
- Interim Period: Mentoring organizations review and rank student proposals; where necessary, mentoring organizations may request further proposal detail from the student applicant
- April 2: List of accepted student applications published on code.google.com
- Interim Period: Students learn more about/integrate with their project communities
- May 28: Students begin coding for their Google Summer of Code projects; Google begins issuing initial student payments
- Interim Period: Mentors give students a helping hand and guidance on their projects
- July 9: Students upload code to the Google Summer of Code project repository; mentors begin mid-term evaluations
- July 16: Mid-term evaluation deadline; Google begins issuing mid-term student payments
- August 20: Students upload code to the Google Summer of Code project repository; mentors begin final evaluations; students begin final program evaluations
- August 31: Final evaluation deadline; Google begins issuing student and mentoring organization payments
3. Joomla! Summer of Code
The general goals of Google are recognized and extended with our own goals. In short, we want to improve the innovation within the project by offering students the opportunity to propose (research) topics that are Joomla! related. The Joomla! project offers students an inspiring environment to do research, create proof-of-concepts or create working functionality. The students get well guided by field experts. We not specifically target at implementing work in the Joomla! framework, if it can be done in the Summer Of Code period this is perfectly ok, if not we still have well founded research and possible new talents for the working groups within the Joomla! project.
There is a non-limited list of program goals defined below. Please bare in mind that this is an initial list of subjects we like to aim at, and in basic the final program content is open for discussion. It is important to understand that we need some guideline for project proposal evaluation, else we end up with all nice initiatives, but no choice between the individual project. In general we aim at the following type of projects:
1. Adding new logic to the 1.5 extensions.
- Creation of a 'digg' like extension for Joomla! 1.5 to be used on our news site. Features see digg.
- Creation of a 'my joomla' like extension for Joomla! 1.5 to be used on our news sites. The goal of this extension would be to offer people a 'My Joomla! account they can use to communicate, have an overview of their activity, etc ... Ideally the system would use OpenID to give them a unique login that can be used across all sites. Basically it would be a social networking extensions for 1.5 tailored to the Joomla! community. Of course we would offer it under a GPL license so other communities can benefit from it too.
- Re-factoring of back-end to fully use MVC.
- Further implementation of mootools.
- Simple work-flow (ties in with ACL).
- Simple versioning.
- WebDAV support (client and server).
- Research on mash-ups/programmable web/micro-formats.
- GForge Joomla integration, GForge J!Code integration.
- New technology implementations.
- Import / Export of content assets and other related information
- J!Code, collaboration between Eclipse and Joomla!
We strive for a shallow hierarchy for the Joomla! project and the Summer Of Code program is no exception to that. There will be a formal program structure in place, but in general we like everyone to just do their job. For the mentors this means a big responsibility towards the Joomla! project and especially the students.
The total organization of the program will be done by the program leaders, one as main program leader (Wilco Jansen) and a second program leader (Louis Landry) to offer continuity when one of the two leaders is absent or on leave. The program team is completed with the team of mentors. For each accepted project there will be at least one mentor, depending on the subject there is no limit to the amount of mentors but we would like to limit to a maximum of two, else it is not clear to the student who is guiding him/her in the project realisation.
Mentor selection process
We can put together a real big questionnaire for the mentor selection...We like to make the selection process as easy as possible, we will describe the general "criteria" here:
- Mentor needs to be familiar with the Joomla! project, and have some level of knowledge about our 1.5 framework.
- Mentor needs to be someone with experience in guiding people. You can have experience in as a manager, project manager, a team coordinator, teacher or whatever. If this is the first time you are going to guide a student, help is available (see below).
- Mentor needs to have knowledge about the topic he is going to mentor. If a student for instance wants to write a Python version of Joomla!, it is necessary the mentor has knowledge about Python and the Joomla! architectural design (just a fake example).
- The mentor is responsible for guiding the student. This takes time, and with cultural and timezone differences this can be a real challenge! Past year the average time it took for a mentor was between 70-90 hours in 3 months, and this was considered to be too low to be really successful. If you are not able to put this kind of time in being a mentor, don't even consider! There is nothing worse then a mentor dropping out in the middle of the program, this simply increased the time stress on the program management and mentors left behind.
It would be naive to assume that a group of people can work together in perfect harmony. There are going to be times when someone feels they have been wronged. In these times the following procedure should apply:
- Talk privately to the person concerned.
- If you still believe grievances exists, then bring in one or two other people to help mediate.
- If this fails then take the issue to the program manager.
- If this fails take the issue with the program manager to the Joomla! project leader.
What to expect, and what do we expect from you?
What we expect is simple. Dedication, devotion, an open mind and for all patience with the students. The actually are here to learn, some even have never worked in a team before, and don't know what a tracker or wiki is, explain and guide them. Also a communicative mind is very welcome, we prefer an information overload to the program manager and the fellow mentors then us hunting down all information needed to keep the program and community informed.
If you join as a mentor, what do you get in return? You can work in an open-source environment, meet great and inspiring people in a great open source project. It is all about sharing knowledge and work together to common goals. We will be there to support you also, like you do with is when you join.
This is a very important aspect of the project. Communicating is all about sharing what you are doing, the challenges you meet and the problems you have solved. We expect the students to do a weekly report (see student guidelines), and the task you perform is to communicate about the progression in relation to the planning the student makes. As a mentor you have the lead in solving the time-zone and language and cultural barriers:
- Time zones: Having team members in different time zones is one of the most frustrating and challenging aspects of being involved in a distributed team network. The worse combination is where certain members are separated by close to 12 hours. It is something you need to get used to and deal with. It typically requires you to plan to load the mailing list for questions that you know will be picked up in a few hours time by your team mates in another country. On the other hand it can be your ally, allowing a project to potentially have support around the clock. Please take care of yourself; it is very easy to be around hour after hour just to get in contact to those that are on the other side of the globe.
- Language and Cultural Barriers: Projects will come up against differences in language and culture in either the user community or in the make up of your teams. There is no escaping it. When you are reading posts on a forum, submissions to a mailing list or even reading personal mail from another person who is not writing in their native tongue, you need to be sensitive to the fact that their translated dialog may not mean what they are trying to say. Sometimes you can unfairly brand a person as arrogant and rude because they have chosen forceful forms of words and phrases. Keep in mind it is generally not as bad as it sounds.
- SourceForge (http://forge.joomla.org/sf/projects/joomla) for all project related resources like tracker and tasks.
- Subversion (http://subversion.tigris.org/) for adequate source control.
- Google Project Page (including wiki).
- Mentor Application from Google
- Joomla! forum for general discussions
- Google Documents for collaborative document description
As you see on the time schedule Google allows the student to familiarize with the project and tasks. You should prepare a kind of structure and document which help both of you with topics like:
- Planing of actions/tasks; make a planning including milestones up-front.
- Communications such as status reports, achieved steps. Prepare the student to make a weekly report telling what has achieved past week, and what is planned next week.
- Time efforts and commitments. Students tend to under estimate the time and effort for certain tasks and you need to be prepared to cover those issues with some organizational help. Some of them might have different priorities e.g. exams, which might get in conflict of their plans. Being prepared from your side it will help to make this project a success for you and your student. It will be important that you become a good living example of your own structure in order to help the student through complicated decisions (e.g. dropping parts of the project as they will not fit into the time frame anymore).