opensource.google.com

Menu

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.

QEMU.org 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 (http://www.linux-kvm.org/) and the libvirt virtualization API (http://libvirt.org/).

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.

QEMU.org 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, QEMU.org 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

.