Posts from October 2013

Google Doc Camp 2013 Wrapup

Wednesday, October 30, 2013

Last week three open source projects were invited to Google’s Mountain View, California headquarters for our 4th documentation camp where each organization was tasked with creating a comprehensive book about their project in a mere three days.  OpenMRS, BRL-CAD, and GNOME participated this year and the camp was facilitated by Adam Hyde of Floss Manuals and Allen Gunn of Aspiration.

This year all three projects decided to write books geared towards newcomers to their projects.

The OpenMRS team discusses their book making experience below.
The week was fast-paced and exciting! On Monday, we got to know each others’ projects, nailed down our target audience and desired outcomes, and brainstormed ways in which we might share this new resource after the week was over. By Tuesday mid-morning, we had a table of contents. We chose the sections we were each most excited about to write first. By the end of Tuesday we had our core chapters mostly written and spent Wednesday writing our introductory and supporting material. Thursday we spent the day editing and gearing up for our 6pm deadline to complete the book for it to go to print. The week was a lot of work and a lot of fun, we were all inspired and well fed.
And that is how our book titled “Contributing to OpenMRS: Getting Started as a Developer”came to be. Usually the hardest part of making meaningful contributions to any open source project is getting started. On behalf of the authors and broader OpenMRS community, we hope this book helps significantly lower the hurdles new OpenMRS developers encounter, whether they are new to open source projects, Health IT, OpenMRS, or all three. The book introduces OpenMRS development processes and architecture, walks the reader through setting up a development environment and building a basic module, overviews OpenMRS collaboration tools and where to go for support, and suggests a potential progression of becoming a seasoned developer community member.  
By Jordan Kellerstrass, OpenMRS team

Below the GNOME team members talk a bit about their experience writing their book about GNOME Mallard, a markup language for generating extra helpful, task-oriented software documentation.
Last week, a small troop of five GNOMies from the docs team (Sindhu Sundar, David King, Kat Gerasimova, Michael Hill and Aruna Sankaranarayanan) arrived at Google ready to write a book for our community. We were joined by two enthusiastic documenters, Amanda French and Heidi Waterhouse, who volunteered to help us with our book from the perspective of complete newbies to our project, which was perfect as they are the intended audience for the book. 
Our first day was spent getting to know the other teams, sharing our project with them and pinning down the table of contents. In the evening, Amanda and Heidi started setting up a working environment for using GNOME’s Yelp help viewer. It has been very useful to see how our tools are presented by the Internet at large to potential users. For the most part, the available information is accurate, although some details needed to be clarified. 
On Wednesday, halfway through our second full day of writing, we almost had our first version of the book completed. For Thursday, we refined the existing content and expanded the book where necessary, completing our book by the 6pm deadline to go to print. On Friday we got to see (at least on screen), the fruit of our labour: the Introduction to Mallard book. The printed copies were ready by 8pm Friday night.  
The week of book sprinting was a remarkable collaborative writing experience, and I can’t wait to recommend it to other projects I know. Thanks again to Allen Gunn for inspiring us and to Adam Hyde for getting a book out of us and to the Google Open Source Programs team for Doc Camp. 
By Michael Hill, Aruna Sankaranarayanan, and Kat Gerasimova, GNOME Mallard team

The folks from BRL-CAD talk about their Doc Camp experience below.
BRL-CAD, a computer-aided design open source software project, is ecstatic for having participated in the 2013 Google Doc Camp. BRL-CAD's team of seven individuals came together from four different countries, three continents and one oceanic island to produce a contributor's guide totaling more than 100 pages in length in less than one week. The inspiration, ideas, and productivity experienced throughout the week-long event has invigorated an effort to expand documentation and improve outreach for our project. Google Doc Camp introduced an exciting technique for documenting and sharing information which we are using to help grow our community. 
By Christopher Sean Morrison, BRL-CAD team

Congratulations to the GNOME Mallard team, OpenMRS and BRL-CAD for successfully completing their books. We hope these books will bring many more contributors to their open source communities.

By Stephanie Taylor, Google Open Source Programs

Google Summer of Code Veteran Org: Benetech

Friday, October 25, 2013

For our sixth guest post from veteran Google Summer of Code organizations the organization administrator from Benetech discusses his organization’s student projects below.

Benetech was founded to be a different kind of tech company—a nonprofit—with a pure focus on developing technology for social good. “Open Over Proprietary” is one of our Seven Benetech Truths, so we’re delighted to join Google Summer of Code in inspiring young developers.

In our second consecutive Google Summer of Code, our three students worked to enhance the tools and capabilities we provide as part of our Bookshare initiative. Bookshare is the world’s largest accessible online library for people with print disabilities and part of a broader effort to promote the development of accessibility standards and technology through Benetech’s Global Literacy Program.

We’ve been working with three amazing students on the following projects:

Integrate MathML support in Go Read – Student: Jordan Gould, Code
Go Read is our free, Android-based eBook reader that people with visual impairments can use to read Bookshare content. This integration will allow us to deliver better STEM (Science, Technology, Engineering & Math) educational content to our Bookshare users on a variety of Android smartphones and tablets.

Integrate Tecla Accessibility Support for Go Read – Student: Anuruddha Hettiarachchi Code 
Making Go Read Tecla-accessible will improve its usability for people who cannot read standard eBooks due to mobility impairments.

Extend Bookshare API – Student: Yashasvi Gridhar, Code
This enhancement will support the download of books with images, which, for example, are important to users who are dyslexic or have a motor related disability.

Our students’ efforts will create a lasting impact for the multitudes of people with print disabilities using Bookshare to access the books they need for education, employment and inclusion in society. And it’s not just our users who are positively impacted. We’ve learned that our students also gain a great deal from their summer’s work. Yashasvi, for example, told us:
“All the knowledge and skillset that I have learned will certainly help me in my career ahead. Working with a nonprofit organization like Benetech, you have that awesome feeling of being part of something big that is helping people across the globe. I sincerely hope to continue the same in the future.”  -- Yashasvi Gridhar
Thank you, Google Summer of Code, and best wishes to our three students!

By Gerardo Capiel, Benetech Vice President of Engineering

Google Summer of Code Veteran Orgs: Twitter

Friday, October 18, 2013

For our fifth guest post from veteran Google Summer of Code organizations the mentors and organization administrators from Twitter discuss their student’s projects below. 
For the second time, @TwitterOSS participated in the Google Summer of Code. Unlike many Google Summer of Code participating organizations that focus on a single ecosystem, we work on a variety of projects that span multiple programming languages and communities.

We worked on three projects with three amazing students over the summer.
Matrix optimizations for Scalding
Tomas Tauber worked closely with his mentor, Oscar Boykin, to improve the performance of Scalding by adding matrix optimizations (see the commits). For example, how should we multiply A*B*C? Perhaps (A*B)*C takes a lot longer than A*(B*C) due to the sizes of the matrices. What about matrices with huge skew, such as Twitter’s follower graph where some users have millions of followers, but most have only a handful? By optimizing at the Matrix API layer, we can easily reap the benefits at higher layers. This project added a scheduler to the formulas users write with Matrices, and performs the computation in the optimal order, where optimal is in terms of intermediate data size and formula tree-depth. See the performance results for more information.

Asynchronous DNS support for the Netty Project

Mohamed Bakkar worked with the lead of the Netty project Trustin Lee to add a built-in asynchronous DNS resolver. Instead of using the blocking DNS resolver provided by the JDK, the new resolver will prevent applications built on top of Netty from their performance being impacted by slow or overloaded DNS servers. As a result, Netty applications that rely on DNS should have a positive performance impact.

Authentication support for Apache Mesos
Ilim Ugur worked with Mesos committer Vinod Kone to add an authentication stage in Mesos before letting frameworks and slaves talk to the master(s) thereby making the communication between the modules forming Mesos (masters, slaves and frameworks) more secure.

As part of Google Summer of Code, students and mentoring organizations receive a stipend. We are donating our portion of the stipend to the Software Freedom Conservancy which is a 501(c)(3) organization that helps provide a non-profit home and infrastructure for open source projects like Git and Selenium.

We really enjoyed the opportunity to take part in Google Summer of Code. Thanks again to our three students, mentors and to Google for the amazing program.

By Chris Aniszczyk, Head of Open Source at Twitter

Google Summer of Code Veteran Orgs: QEMU

Friday, October 11, 2013

For our fourth guest post highlighting veteran Google Summer of Code organizations from this year’s program the organization administrators from QEMU discuss their student's projects below.

QEMU is an open source machine emulator and virtualizer that can run programs written for one type of machine on another using dynamic translation, like ARM Linux on x86 Windows.  Hypervisors such as KVM and Xen also use QEMU to run guest code at native speed, like a Debian Linux guest on a Fedora Linux host. has participated in Google Summer of Code for three years and has helped over 15 talented students contribute to open source. This year we are also acting as an umbrella organization for the KVM Linux kernel module ( and the libvirt virtualization API (

This summer we worked with nine students, we describe two of the projects below.

Integrated copy/paste - Students: Pallav Agrawal and Ozan Caglayan
Up until now QEMU has not supported easy copy/paste between the guest and the host (for example, copying text from a web browser in the guest and pasting it into a text editor on the host).

In order to make this work there are a couple of requirements:
1) Provide a way for a guest's application window to transmit the contents of its clipboard to the host interface.
2) Provide a way for the host interface to transmit the contents of its clipboard to the guest.

Both sides of the problem require considerable work so we had two students, Pallav Agrawal and Ozan Caglayan, working on each end of the equation.

After completing the initial prototype, Ozan saw the potential for some major performance issues transferring potentially large clipboards on every 'copy' event, and reached out to another member of the QEMU community with experience working on clipboard syncing on another project called SPICE. Together they worked out a much more efficient API. Unfortunately, late in the project we ran into implementation issues with the new API that seemed to require some invasive modifications to core QEMU code. We weren't able to work out a feasible solution in time to complete integration of Ozan and Pallav's work and submission of their code upstream before the end of Google Summer of Code 2013.

Both Ozan and Pallav have shown interest in carrying on their work however, and we plan to pick up the task of getting their code merged in the near future. It was a great experience working with both of them, and we look forward to working with them more in the future.

Introduce API to query IP addresses for given domain - Student: Nehal J. Wani
One of the most desired APIs in libvirt that still hasn't been implemented is to get/guess a list of IP addresses assigned to a domain. This project's aim is to implement the API.  There are several ways to get the addresses information: asking a guest agent, snooping domain traffic, parsing the dnsmasq lease file, etc.

Nehal implemented a new 'domifaddr' command and API to query IP addresses used by a domain. These patches contain support for getting IP addresses from the guest agent. The API is designed to allow adding more methods to query IP addresses in the future.  Nehal did just that with another patch series that finds IP addresses by parsing the DHCP leases file.

Both patch series are currently undergoing community code review and we hope to include them in the next libvirt release. has had a terrific summer and all of our students are making significant progress.  Our project offers an exciting opportunity to work with machine emulation and virtualization.

By Osier Yang, Michael Roth, and Stefan Hajnoczi, Mentors

RProtoBuf & HistogramTools: Statistical Analysis Tools for Large Data Sets

Thursday, October 10, 2013

At Google, building, managing and safely securing some of the world’s largest storage systems requires complex analysis of filesystem metadata. This is an important part of making sure that the information stored within those systems is quickly accessible and always secure. We're always looking for ways to make our data storage systems more efficient, and often times, this requires understanding the age, size and access patterns of the data stored, the failure rates of servers and disks, and more. You can imagine how complex this becomes with each new data center added.

Given the number of files and servers that are relevant for this performance analysis, we bin the metadata into a compact histogram form. We use these output histograms for many purposes, such as (i) building Markov models of data availability, (ii) statistical forecasting of resource usage, and (iii) formulating and solving optimization problems to determine optimal allocation of flash devices.

We rely on several open source tools to make our work easier. The most common tool we use for statistical analysis of the performance, availability, and resource needs of our internal systems is the R programming language. We’ve released two package updates that make R particularly suitable for interacting with other distributed systems.
  • RProtoBuf is an R package for Google’s Protocol Buffer library that allows one to define simple data structures with intuitive getter and setter methods. These data structures can be serialized into an extremely compact format for sending to other distributed systems. Recent releases include improved support for 64-bit integers, protocol buffer extensions, and more.
  • HistogramTools is a new R package I have released that uses RProtoBuf to read in a compact protocol buffer representation of binned data and includes a number of helpful functions for manipulating, plotting, and measuring the statistical information loss due to the binning. In addition to protocol buffers, it also supports importing aggregate performance data directly from DTrace output.
Both packages are available on CRAN and include extensive documentation and examples.

If you're interested to learn more, we have shared some of our research findings at conferences such as OSDI, USENIX ATC, and JSM.

By Murray Stokely, Storage Analytics Team Lead

Google Code-in 2013 and Google Summer of Code 2014 are on

Tuesday, October 8, 2013

At Google we are passionate about introducing students from around the world to open source software development. Since 2005, Google has worked with over 10,000 students and over 440 open source projects in a variety of fields to create more code for the masses.

A call out to all students: if you have ever thought it would be cool to write code and see it make a difference in the world then please keep reading. We are excited to announce the next editions of  two programs designed to introduce students to open source software development, Google Summer of Code (for university students) and Google Code-in (for 13-17 year old students).

Google Summer of Code 

Back in 2005, Google made a commitment to support open source software contributors. In addition to our other programs to build and support the contributor base, we thought a great way to increase awareness was to introduce the wide world of open source to college students. Google Summer of Code was born: match student developers from around the world with open source software organizations to work on a project while on break from their universities. 
With over 8,300 mentors in 100 countries around the world, the 8,500 student developers have produced a stunning 50 million lines of code. The program will now be reaching its 10th instance in 2014. 

We told you on the Official Google Blog just a few highlights of what we’ll be up to this year, and now we want to tell you all the details:  
  1. 10 visits to countries with high participation throughout the year.
  2. 10 developer events in promotion of the program. 
  3. 10 mentors who have participated in Google Summer of Code will be featured on our open source blog.
  4. 10% additional student stipend (a total of $5500 for students who successfully complete the whole program).
  5. 10% more students than we’ve ever had participate in the program before.
  6. 10 more mentoring organizations than we’ve ever had in the program will be participating in Google Summer of Code 2014
  7. 10 year student reunion event will be held on Google’s Mountain View campus next year for all the students who have participated in the program. 
  8. 10 year reunion mentor summit will be held on Google’s Mountain View campus for all our Google Summer of Code organization alumni.
  9. 10 students/organizations will be chosen to highlight their work at the Google booths at open source events throughout the year.
  10. 10 student projects from the past nine years will be highlighted on the open source blog and YouTube.
We’re pleased to be running a program that touches a lot of lives around the world, and we hope this will be a celebration of all the accomplishments we’ve seen from so many of our participants. Watch this blog for announcements about our travel and our efforts over the next year. Here’s to 10 Things! 

Google Code-in - Program starts for students November 18th

For the fourth consecutive year we are thrilled to announce Google Code-in, an international contest designed to introduce 13-17 year old pre-university students to the world of open source development. Open source projects are about more than just coding, and this contest highlights a variety of ways to contribute to open source projects. Every year, open source software is becoming more important around the globe; from government, healthcare, relief efforts, gaming, to large tech companies and everything in between. 
When you read the term open source do you think:
  • What is open source?
  • What types of work do open source projects do?
  • I’ve only taken one computer science class, can I contribute to an open source project?
  • I’m not really into coding, what else can I do to contribute to open source?
  • I’ve never participated in open source or an online contest before, can someone help guide me?
  • Open source sounds cool, how can I get started?
If you’ve wondered about any of these questions and are a pre-university student (age 13-17) then we hope you will join in the fun and excitement of the Google Code-in contest starting Monday, November 18th

For seven weeks from mid November to early January, the Google Code-in contest will have students working with 10 selected open source projects on a variety of tasks. These projects have all successfully served as mentoring organizations in previous Google Code-in contests or have worked with university students in our sister program, Google Summer of Code. 
The different categories of tasks that students will be able to work on include:
  1. Code: Tasks related to writing or refactoring code
  2. Documentation/Training: Tasks related to creating/editing documents and helping others learn more
  3. Outreach/research: Tasks related to community management, outreach/marketing, or studying problems and recommending solutions
  4. Quality Assurance: Tasks related to testing and ensuring code is of high quality
  5. User Interface: Tasks related to user experience research or user interface design and interaction
Over the past 3 years we have had over 1200 students from 71 countries complete tasks in the contest. In April, we flew the 20 Google Code-in 2012 Grand Prize winners and a parent to Google’s Mountain View, CA headquarters for a 5 day/4 night trip where they enjoyed talking with Google engineers, an awards ceremony, a Google campus tour, and a full day of fun in San Francisco. 
Visit the Frequently Asked Questions page on the Google Code-in 2013 site for more details on how to sign up and participate. And please help us spread the word to your friends around the globe! If you are a teacher that would like to encourage your students to participate, please send an email to our team at We would be happy to answer any questions you may have. 
Stay tuned to the contest site and subscribe to our mailing list for more updates on the contest. We will announce the 10 open source organizations that will be participating in the contest on November 1. The Google Code-in contest starts for students on November 18, 2013. We look forward to welcoming hundreds of students from around the world into the open source family again this year.
We hope you will help us spread the word about these two programs to all the pre-university and university students in your life. Stay tuned to this blog for more announcements in the coming weeks about both programs.

By Carol Smith and Stephanie Taylor, Open Source Programs

Google Summer of Code Veteran Orgs: Apache Software Foundation

Friday, October 4, 2013

The Apache Software Foundation has been participating in Google Summer of Code since its inception in 2005. Over the years members of our projects’ communities have mentored hundreds of students and their projects with dozens of past students now involved as active contributors, committers and members. This year we accepted 51 students mentored by 78 mentors. Of these, four of the mentors would like to take this opportunity to present their student’s projects.
Apache Isis  -- Students: Bhargav Golla and Dimuthu Upeksha

Apache Isis is a Java framework for rapidly developing domain-driven apps. This summer we had two students working on new “viewers” that interact with a REST API that Isis automatically generates, reflecting the structure and behavior of the domain objects. In the past the Isis community has worked on single-page HTML5/JS viewer and on a Windows Store App viewer. For Google Summer of Code our two students are each building their own viewers, one for Android, and one using JQueryMobile (to be packaged using Apache Cordova/PhoneGap). 

Both students have become quite fluent in the REST API, and both have a viewer running that is quite usable and can be deployed to an Android mobile device.  The two viewers are broadly similar in terms of features implemented, and indeed towards the end of the project hit the limits of the available features in the REST API.  Both students have said they are keen to continue developing their viewers after the Google Summer of Code program ends. 
By Dan Haywood, Apache Mentor

Apache OODT -- Student: Rajith Siriwardana
Some exciting work to make Apache OODT interoperate with the scalable Ganglia open source resource monitoring system has been undertaken by Rajith Siriwardana. Rajith and his mentor, Chris Mattmann, divided the project up into several manageable milestones, first developing a fast Java parsing library for Ganglia's XML based response format. This is one of the first modular Java-based Ganglia clients that exists, and to our knowledge is the first one to exist at Apache.

With the Ganglia Java client in hand, Rajith and Chris worked to develop a weighted average load balancing algorithm that plugged into Apache OODT's Resource Monitor interface, allowing it to poll Ganglia for current metrics like 5-min, 1-min avg load, and current disk capacity and space. The algorithm then takes this information into account, along with the requirement for job load, and plugs into the Capacity based scheduler part of the OODT Resource Manager, thereby allowing OODT to poll its resource monitoring information from Ganglia.

We are excited that Rajith is now a member of the Apache OODT Project Management Committee (PMC) and a committer on the project. Apache OODT is a better overall project because of his efforts this summer.
By Chris Mattmann, Apache Mentor 
Apache OODT -- Student Ross Laidlaw
Just as a pencil needs to be kept sharp in order to be useful, computer software needs to be regularly improved and polished in order to stay relevant. Fortunately for the Apache OODT project, this is exactly the type of work Ross Laidlaw, under the mentorship of Rishi Verma, has performed over the past few months through the Google Summer of Code program. Ross has taken a component of the OODT framework called the Product Server, and sculpted it into a more intuitive and usable package. He's taken the Java servlet-based set of web applications constituting the Product Server framework, and ported them to easier-to-maintain JAX-RS RESTful end-points. Moreover, Ross has advanced the content dissemination package, that's a part of the framework, to help make available OODT metadata in various forms like: JSON, RSS, and RDF.  
Why perform all this refactoring as well as new development work? Simple: it helps to keep the OODT Product Server framework relevant, maintainable, and sharp. Ross has done an excellent job through his Google Summer of Code project, and we're definitely looking forward to his continuing involvement with OODT. 
By Rishi Verma, Apache Mentor 
Apache Gora -- Apostolos Giannakidis
Data volumes have been growing at an astronomical rate in recent years with the term 'Big Data' being used ubiquitously within tech circles, mainstream media, governments and society alike. Apache Gora is an open source object-to-datastore mapping framework providing an in-memory data model and persistence for big data. Gora supports persisting to column stores, key value stores, document stores and RDBMSs, and analyzing the data with extensive Apache Hadoop™ MapReduce support.  

Apostolos Giannakidis’ project involved extending datastore support for Oracle's NoSQL database as part of the Gora suite of datastore modules. Work on the design and implementation of the gora-oracle module included the provision of full CRUD operations while exploiting the ACID transactions, flexible consistency options and the simple data mode of Oracle NoSQL database. With these, Apache Gora will be able to integrate seamlessly with the Oracle stack and the Big Data Appliance. Also, this module is one step further toward rendering Apache Gora as the standard persistence framework for NoSQL databases. 
By Lewis John Mcgibbney, Apache Mentor
We are pleased to announce that Apache had 44 students successfully complete this year’s Google Summer of Code program. If you would like to read more about the work students completed on Apache CloudStack, during this year’s program, you can check out our blog post.

By Ulrich Stärk Apache Organization Administrator for Google Summer of Code

9th Year of Google Summer of Code draws to a close

Tuesday, October 1, 2013

The end of summer in the Northern Hemisphere also signals the end of the 2013 Google Summer of Code, our program designed to introduce university students from around the world to open source development.

In June, 1,192 university students from 69 countries began writing code for 177 open source organizations with the help of 2,218 mentors from 71 countries -- quite the team effort! We are excited to announce that 88.6%* (1056) of the students passed their final evaluations. If you would like to read about more numbers on the Google Summer of Code program you can view a variety of statistics on the previous eight years of the program.

Stay tuned to this blog each Friday until the end of the year for wrap up posts from many of this year’s Mentoring organizations.

Now that the program has concluded, the students are busy preparing their code samples for all eyes to see. Soon you will be able to go to the program site where organizations will have links to the student’s code repositories.

Thank you to all of the students, mentors and organization administrators that have helped to make this 9th year of the Google Summer of Code a great success!

By Carol Smith, Open Source Programs

* This number could change slightly in the next few weeks.