By Mike Jackson.
How to use GSoC and MSc projects to improve your project
It's frustrating when you have an idea for improving your software, but lack the resources needed to realise it. Not all is lost! Your idea might be the perfect basis for a student project. Student projects are generally a win-win situation for you and the student. You get to investigate ideas with relatively little outlay and the student gets highly valuable work experience in a professional environment.
"There is too much work!" must be one of the most common complaints heard in any project. Coping with a large workload means that there is little time to explore ideas (especially the kind of riskier ideas that can be highly valuable to your software). You could recruit more developers, but it will be difficult to recruit over the short time period needed to explore your idea. Instead, you could turn to a source of keen, hard-working and intelligent workers: students.
In this guide, we explain how to recruit students, what they can contribute, how students themselves can benefit and some important things to bear in mind.
Why write this guide?
We wrote this guide in response to a request, made at the JISC RI Software Sustainability workshop, for information about recruiting students.
Where to recruit student developers
There are a number of options for recruiting students to work on your project. Which one is right for you, of course, will depend upon your project and organisation.
Employ a student
If you have the resources, you can simply employ the student. They could work part time in addition to their studies or on a temporary basis during breaks between semesters. Some organisations provide the infrastructure for recruiting students in this way, so it is advisable to ask whether such a programme exists.
Undergraduate and Master's students generally complete a three to six month project as part of their study. The idea that you want to explore could become the basis for one of these projects. This idea is easier to implement if you work within a university. However, it's not impossible to recruit students if you work outside of academia. In fact, projects from outside the university often hold more kudos and could attract the best students.
Topics for student projects are decided by academic staff at the students' university. Since there are typically more students than interesting projects, you will typically find that academic staff are very grateful for your ideas. To be accepted, your idea will need to incorporate elements from the students' course (for example, a course in human-computer interaction could require a project that includes some interface design). It's a good idea to look at the courses studied at your target university and see if any are related to your project idea, and then and approach the relevant course organisers.
Google Summer of Code
How about a student being paid to work for you? Sounds too good to be true, but it's possible through the Google Summer of Code (GSoC).
GSoC was started in 2005 to encourage involvement in open-source projects. Organisations suggest ideas for student projects and agree to mentor any students who are interested in them. Google then decides whether those organisations meet the requirements of a mentoring organisation. If you meet the credentials and can interest a student in one of your projects, Google will pay the student a stipend to work on your project over the summer.
GSoC projects last for three months and must involve work on code that is released under a recognised open-source licence. GSoC is described in more detail below.
What you get
Since students generally work for a short period of time or are employed part time, the work they are most suited to is reasonably short projects with a definite deliverable, such as a prototype feature, a refactored component, bug fixes, a software demonstration, a design, performance figures or a usability assessment. Students are also highly suited to providing feedback on your software and documentation. Your student could also help make changes based on their feedback, such as commenting code, increasing test coverage, clarifying documentation or writing tutorials.
Recruiting a student also leads to less obvious benefits. By giving them the opportunity to work on your project, you may convert the student into a power user - someone who will continue to contribute to your software even after they've moved on from your project. And when they move on, your ex-student might just convert other people into users too. Working with a student on a short-term project allows you to assess the quality of their work and how they work with your team. It's an in-depth job interview that might lead to them studying a PhD with your group or starting work as a contractor. A student of sufficiently high calibre may even find themselves employed full time at the end of their studies.
What the student gets
Students get a lot from working in professional development projects. Experience in a real project is highly important. Not only does it give the student a taste of life outwith their usual studies, it is also gives them relevant work experience and a referee who knows their work. This might be the only thing separating two good students at job interview. It also gives them the chance to work on the skills that are needed to work in a development environment, such as best practice, team working, understanding client requirements and delivering to deadline.
Working in a real project also gives the student prestige. They can say that they have made a contribution to a live software or research project. This is especially if it's well-known software and they gain an acknowledgement for their contribution.
A student as part of your team
We believe that it's best to bring the student into your team rather than treat their project as a separate, outside entity. If they feel like part of the team, the student will be more likely to contribute. Invite them to project meetings, encourage them to get involved in e-mail or blog discussions, give them access to internal project resources. This gives the student experience and insight into how software projects are run day-to-day, and it will show them that they are indeed contributing to a live project.
You have to decide how to integrate the student's code into your software. There are two main approaches: integration at the end or continuous integration.
Integrating the student's work at the end of their project gives you the chance to fully review the code before it's integrated with your software. However, by leaving everything to the end of the project, the student may have left before the code is integrated and taken their understanding of the code with them.
At the Software Sustainability Institute, we prefer the approach of continuous integration. This is where the student is given access to your code-base so they can contribute to your software from the outset of their project. This requires more frequent checking of their code to ensure that it is of sufficient quality, but it overcomes the rush to integrate code at the end of the project. This approach also means that the student will feel a trusted part of the team, which will motivate them to provide good code.
Words of caution
While students have the potential to make a significant contribution to your software, some problems could arise. Major pitfalls can be avoided by bearing a few important points in mind.
A student who is working on a project for their degree will primarily focus on what is needed to get their qualification. Keep in mind that apart from the code design and development, the student may also need to conduct a literature review and prepare a final report. Time will be needed to complete these extras (which do not directly contribute to your software). You might be asked to read their final report and possibly contribute to an assessment of the student's work.
As with any new employee, time and effort will be needed to induct the student into your project and software. Time is also needed to support the student and answer their questions.
It might be tempting to give students tasks that no one else on your team wants to do! This is not a good idea. The task that you set the student needs to be interesting. If it is not, the student will lose interest and the quality of their work will most likely suffer.
The quality of the student's contribution depends on the individual student. As with any recruitment, time invested in assessing the potential recruit's knowledge and working practices will pay off in the long term.
Google Summer of Code
Google Summer of Code (GSoC) was started in 2005 to encourage involvement in open-source projects. Google matches students to organisations and pay the students to work with the organisation for three months during the summer. The primary condition of GSoC is that the students must work on software that is released under a licence recognised by the Open Source Initiative. GSoC projects run from mid-May to mid-August, with an initial getting-to-know-each-other phase in early May.
Before taking part in GSoC, your organisation must be accepted as a GSoC mentoring organisation and you must propose some project ideas. Google decides whether to grant mentor status based on criteria such as the quality of your ideas and your work in the open-source field. If accepted, the next step is to register mentors with Google. It is a mentor's job to supervise the work of students. Your organisation is assigned a number of student places based on the number of students who apply for your GSoC. Simply being assigned a student place is no guarantee of recruiting a student, you must wait for a student to select one of your project ideas.
Students register with Google and, if accepted, choose the organisations they want to work with. They can choose one of your ideas or they can suggest a project of their own. Students can express interest in multiple organisations so some negotiation might be required to keep a good student interested in you!
It is assumed that the student will work remotely from you, so you must be comfortable with remote working and have the infrastructure to do so. At a minimum, you will need to support remote access to your code repository, e-mail and also some form of interactive chat, such as MSN or Skype.
To assess how the project is progressing, both the student and the organisation complete a questionnaire midway through the project. This ensures that the student is doing the work and your organisation is being open, helpful and cooperative. If the student is rated poorly, they won't be paid for the second half of the project. If a mentor is rated poorly, this will affect your organisation's chance of participating in future GSoCs. At the completion of the project, both parties complete an end-of-project questionnaire.
GSoC projects may prove appealing to students. If successfully accepted, they can add Google Summer of Code to their CV, which is a prestigious accomplishment. And, students get paid! They can expect to receive around $5000 and a sought-after T-shirt. The benefit for participating organisations is both the prestige of having mentored such a project, $500, a T-shirt and an invite for up to two mentors to attend a mentoring summit at Google in California (including free travel and two nights accommodation).
For more information on GSoC, see Google's GSoC website. We at the Software Sustainabilty Institute have had experience in applying for and acting as a mentoring organisation for GSoC projects, so feel free to contact us for information and advice.