opensource.google.com

Menu

Google Summer of Code Student Project Wins Statistical Software Award

Thursday, April 28, 2011

We are happy to report that one of the Google Summer of Code students from last year, Ian Fellows, has been awarded the John M. Chambers Statistical Software Award for his work with the R Project. This award will be presented at the annual Joint Statistical Meeting in August.

Ian’s project involved extending the scope of the Deducer cross-platform GUI interface to R by adding an intuitive plot builder for building up complex statistical graphics in a user friendly environment. Ian has described the plot builder as “a piece of software that simply wouldn't have been built except for the funding from Google.” In addition to the online documentation, Ian has put together a series of video tutorials on YouTube introducing the new software:

Deducer Video - Part 1

Console Video - Part 2

We’re also happy to report that once again Ian will be participating in the Google Summer of Code, this year as a mentor with the R Project.

I personally use ggplot2 frequently for visualizing complex data sets at Google, and I’m looking forward to utilizing the new GUI PlotBuilder for my work. Congratulations again, Ian.

By Murray Stokely, Software Engineering Team


Google Summer of Code Meetup in Belgium

Tuesday, April 26, 2011


On the 6th of April, Google Summer of Code veterans Vincent Verhoeven (student for both KDE and Thousand Parsec) and Bram Luyten (mentor for DSpace) gave a presentation about the Google Summer of Code 2011 program to an audience of interested students.

The Google Summer of Code schedule is quite challenging for Belgian students because of the large overlaps between the program and their examinations. However, the presenters made it clear that with careful planning in the application and transparent communication with mentors, successful participation is definitely possible. As an added bonus, if students are accepted in the Google Summer of Code program their participation can be counted as an internship for some of the master's programs at K.U. Leuven.

The presenters were struck by the fact that of the 30+ attendees, none of them had any experience contributing to open source projects. Each of the students used open source software on a daily basis (Firefox, Linux, etc.) so it seemed like a natural progression for this generation of developers to start contributing to the open source community and Google Summer of Code is a great way for that introduction.

Vincent's testimonial made it clear that participating in the Google Summer of Code can be just the start of a series of interesting experiences. Following up on his participation in the Google Summer of Code, Vincent and his buddies from the Thousand Parsac held a codesprint together at the GooglePlex. It's more than bits & bytes alone, it's about building relationships and friendships that last far beyond the span of one summer.

By Bram Luyten, past GSoC mentor for DSpace and Head of Sales and Marketing, @Mire

Students announced for 2011 Google Summer of Code

Monday, April 25, 2011


We have announced the 1,116 students that will be participating in this year’s Google Summer of Code program. Students will now start the community bonding period where they will get to know their mentors and prepare for the program by reading documentation, hanging out in the IRC channel and familiarizing themselves with their new community before beginning their actual coding at the end of May.

If you are interested in learning more about the 175 organizations that the students will be working with during the 2011 Google Summer of Code or important dates, please visit the program website.

Congratulations to our accepted students! We look forward to an exciting and productive summer of coding.

By Stephanie Taylor, Open Source Programs Office

The DOs and DON’Ts of Google Summer of Code: Mentor Edition

Thursday, April 21, 2011


This is the final post in a series of three posts on the DOs and DON’Ts for Google Summer of Code students, mentors, and organization administrators. This post deals with mentors; the first post dealt with students and the second post with organization administrators.

The role of a mentor is to monitor the progress of each accepted student and to mentor them as the project progresses. Based on our experience with Google Summer of Code, we’d like to share these tips and antipatterns with you to raise awareness and help mentors avoid the same mistakes that have been made by many others. For even more advice, check out the mentor/admin guide.

DODON’T
Be an active member of the community you are mentoring for. One of your goals should be to integrate your student in the project community. You can do this best if you are a part of it yourself. Introduce the student to the people in your community and your communication media. Also familiarize the student with the rules and norms that your community abides by and that they might not be aware of yet. Apply as a mentor only after interacting with the community.Apply as a mentor to organizations where you don’t contribute. Every year, a surprising number of people request to become mentors for nearly every organization in Google Summer of Code simultaneously. In general, this is treated as spam and you will be blacklisted for doing it. One of the goals of Google Summer of Code is to introduce the student to the community. You may be an expert in the code, but the goal is to integrate code and transform students into long-term contributors; if you don’t know the community, both of these are much harder.
Focus on one student. New mentors should concentrate on doing an amazing job mentoring one student instead of spreading themselves too thinly. Even experienced mentors should take caution when thinking about mentoring two projects—it’s not unusual for both projects to be mentoring-intensive. If that happens, you may not have the time to do your students justice, and it’s unfair to fail students because of your own difficulties. This is one reason backup mentors are critical.Take on too many students. Mentoring more than one student in your first year is a recipe for failure. Even if it’s your second year, this advice still stands, as the amount of time needed to mentor a student varies wildly between students, projects, ideas, etc. People mentor multiple students successfully each year, but many people fail at it every year too. If you have experience and still want to mentor two or more students, plan to set aside time during your full-time job because your free time probably won’t be sufficient.
Communicate frequently with your student and org admin(s). You’ll need to answer to both your org admin and student— make their lives easier by being available when they need you. Most admins will periodically check in to make sure all your organization’s projects are on track; if you don’t respond in a timely manner, they may think your project is failing. Your student often has a regular stream of questions, some of which can’t be answered by Google, so be available to avoid wasting your student’s time and delaying the project.Disappear. Some students will need constant access to their mentors. If you intend on being out of touch for even a relatively short period of time, even just a few days, let your student know ahead of time. Arrange it so that your student is able to reach a backup mentor during this time and having the student know about this backup mentor from the beginning of the project is also good advice. Although disappearing mentors are less common than disappearing students, they do happen. This can really put a strain on your org admin who has to replace you on short notice, maybe near a deadline.
Set aside at least 5 hours a week for mentoring. The student has to do the actual work over the summer but you’ve committed to help them along the way. Depending on how much help your student needs, this can be a significant task. Set aside at least 5 hours per week for mentoring unless you are certain the student is well integrated and supported by the whole community. And even then, plan for road-blocks along the way that you need to help with.Underestimate mentoring effort. Mentoring takes time. No, really, it does. You might be lucky and have a student who needs little mentoring, but you probably won’t. If you don’t have at least a few hours per week over the course of the program, you have two options. You can either choose not to mentor or you can team up with another member of your team as a back-up mentor. Be aware that ‘a few hours’ can grow quite significantly if you or the student overestimated their abilities, underestimated the project, or they need more significant help than you planned.
Give your student frequent feedback on performance. Let the student know whether you are happy or unhappy with his performance. Chances are he can’t properly judge his own performance and abilities yet. Make sure your student sees failure coming a mile away; it should never be a surprise. You also want to ensure your student knows his work is high-quality, if it is. Give feedback regularly. This goes both ways—ask your student if he is happy with your mentoring and where you might be able to improve.Provide zero feedback, then abruptly fail the student. The student depends on feedback from the mentor. This includes situations where things don’t go as planned. If it is the student’s fault, he should learn about it as soon as possible to be able to correct it, and more importantly, avoid repeating it. Failing your student by surprise is almost guaranteed to end up with bad feelings on both sides and can result in appeals to Google. It’s equally bad for a student to spend the summer frightened that they’re doing a terrible job because you haven’t told them that they are actually doing fine (or better). Communicate.
Ensure your student’s code is ready to integrate. Seeing code shipped in a release and then used by thousands of people is the ultimate motivation to continue being an active part of your community for many people. You should help and motivate your student to go those few extra steps and get their summer’s work into a release. You can jump-start this with small tasks and bug fixes before application time, or in the community bonding period. This way you can ensure your student has some code committed before even starting the project. Encourage students to keep code in a state where you can still integrate it if they leave the project immediately after, or even during, Google Summer of Code.Fail to ship your student’s code. Your student might not have gotten the code into a state that’s ready to release or integrate by the end of Google Summer of Code. Do not wait too long with this—if the goal isn’t the next release, it may never happen. Committing the result is an expectation worth setting, so ensure your student understands this from the beginning of the project. If your student forks or branches early and doesn’t track any changes to trunk it can be hard to integrate. If your student develops in a non-agile style where the code doesn’t work at all unless the whole project works perfectly, the same problem can arise.
Prevent your student from going down dead ends with code. Your student will make mistakes and wrong decisions. It is your job as his mentor to intervene when he is stuck or heading in the wrong direction. Do this early. Google Summer of Code is too short for anything else. This requires you to keep a close eye on what he is doing. Some teams prefer short daily meetings to make sure everyone is on top of things and know what everyone else is working on. It’s also important to reinforce good practices so the student can continue to use them.Review your student’s code for the first time at the end of the summer. Your student might be a genius and a mind reader but chances are that he isn’t. He probably won’t create an excellent design, write perfect code and deliver stunning documentation independently. He’s probably never done a project of this size before. If you don’t find problems early, they pile up and lead to a failed project with nobody to blame for it but yourself.
Promote your student’s independence. When your student encounters a problem and comes to you or the community for help, ask her to suggest a potential solution as well. This encourages your student to learn how to do research and to fully understand problems and how to get into the mindset of solving them. It also makes it much more likely that her questions are well-informed, giving the community a much better impression of your student. When possible, direct your student to participate directly in the community rather than acting as a conduit, because close ties to the community make it more likely that she will want to stay involved with the community after the summer.Get between your student and the community or the code. It’s easy to fall into the trap of writing tricky code or solving every difficult problem for your student. This prevents students from gaining skill and confidence by solving their own problems, or at least making progress toward a solution. One of the best ways to ensure your student disappears at the end of the summer is to never invite her into the broader community of your organization. Without social ties, students are much more likely to move on to other things and leave your organization behind.

Making Google Summer of Code the best possible program requires preparation and a commitment to excellence from all participants. Now that we’ve provided suggestions for mentors, org admins, and students, you should know how to avoid the most common problems at every level. Whatever role you would like to play in Google Summer of Code or a similar program, read everything you can so you are fully prepared for the experience. Good luck, and have fun in your endeavors.

By Donnie Berkholz, Lydia Pintscher, and Kevin Smith, Google Summer of Code Administrators for Gentoo & X.Org, KDE, and XMPP Standards Foundation, respectively

Former student pays it forward as a mentor for Google Code-in

Wednesday, April 20, 2011



Charlie Gordon was a student participant in the Google Highly Open Participation Contest, an earlier version of Google Code-in that pairs high school students with mentors in open source projects. Here he discusses his recent experience as a Mentor for the 2010-2011 Google Code-in.

There were so many great stories from Google Code-in that it's hard to pick out just a few. I'm always so excited to get young people involved in open source - I remember how excited I was when I participated in the Google Highly Open Participation Contest myself back in 2007-2008. The program opened many exciting doors for me, including going to Drupal conferences, becoming involved in Drupal core development, and even eventually going to college at MIT, where I am now. It brings me great joy to be able to help open the same doors for the next generation of bright young open source enthusiasts.

Now for the stories! I'm always impressed when students, who are used to doing only what they're specifically told to do for school assignments, go above and beyond. Especially in the format of a contest where the incentives lead students to do the bare minimum, I find those students who put in a real effort to go above and beyond are those who really care about the open source project, and are those who are most likely to stick with it after the contest ends. Here are some of these students:

A student from Thailand, "chalet16", worked on five complex coding tasks for Drupal's style guide module. Over many iterations with the tasks' mentor, the quality of chalet16's code improved, and he also became more comfortable with using drupal.org's issue queue, a key part of our development process. Not only were the tasks well done, but when chalet16 encountered software bugs in parts of the code that he wasn't working directly on, chalet16 had no problem taking the initiative and opening new issues for the bugs, even submitting additional patches to those issues that fixed the problem. That's exactly the kind of participation that we want to attract to our project, and to open source software development in general.

Despite not having very much experience in PHP, “aantn,” a student from Israel, found ways to contribute to the Drupal project, such as by writing a Python script to survey test coverage statistics for Drupal core and the top 50 or so modules. We now have a much better idea of where and to what extent our automated testing system is being used, and making such statistics public will hopefully encourage module maintainers to write more test coverage for their code.

We specified a task that called for a Drupal core patch to allow a "full preview" button on the content submission form. Halfway through the task, Romanian student "bluman," encountered big roadblocks to that patch. After discussing the issue, we realized that the task would not work as a patch for Drupal core, but would have to be rewritten from the ground up as a contributed module. However, rather than give up, bluman worked hard to redo the task as a module, and came up with fantastic results.

Finally, we set a task to translate a small to medium sized module into another language. Another student from Romania, “ungureanuvladvictor," went way above and beyond the task description, translating one of the largest and most widely used contributed Drupal modules into Romanian. The translation file had more than 1,000 translations in it, a very impressive feat for such a short period of time. I had to scramble to find a Romanian speaker willing to review such a large translation!

Really, there are so many impressive students out there.

By Charlie Gordon, Drupal.org mentor

We always hope that the students who participate in programs like Google Code-in and Google Summer of Code develop a bond with the open source community they work with during the program and continue to contribute to the community long after the contest ends. Charlie Gordon is a prime example; he not only continues to be actively involved in the Drupal community but he is also sharing his experience and wisdom with younger developers and helping them become contributors to open source. Great job, Charlie!

By Stephanie Taylor, Open Source Programs Office


.