Skip to content

Google Open Source Blog
Syndicate content
News about Google's Open Source projects and programs.
Updated: 2 hours 40 min ago

Google Summer of Code 2012 is on!

Sat, 02/04/2012 - 17:37

I am proud to share the news that Google Summer of Code 2012 was announced this morning at FOSDEM.

This will be the 8th year for Google Summer of Code, an innovative program dedicated to introducing students from colleges and universities around the world to open source software development. The program offers student developers stipends to write code for various open source projects with the help of mentoring organizations from all around the globe. Over the past seven years Google Summer of Code has had 6,000 students from over 90 countries complete the program. Our goal is to help these students pursue academic challenges over the summer break while they create and release open source code for the benefit of all.

Spread the word to your friends! If you know of a university student that would be interested in working on open source projects this summer, or if you know of an organization that might want to mentor students to work on their open source projects, please direct them to our Google Summer of Code 2012 website where they can find our timeline along with the FAQs. And stay tuned for more details coming soon!

By Carol Smith, Open Source Team
Categories: Open Source

Sahana and Students: Saving the world one task at a time

Wed, 02/01/2012 - 01:30


For the second year, the Sahana Software Foundation participated in Google Code-in (GCI), a program which gives pre-university students the chance to get involved in open source projects. I was Sahana’s Administrator for this program and am incredibly happy with how well the program went for us. Out of the 208 tasks that we posted for students, 193 were completed – which is an amazing effort!

After last year, we knew that Google Code-in wasn’t for the faint of heart as it would require responding to students, answering their questions and reviewing work around the clock, so we reached out to our volunteer community and gathered a team of 11 mentors together. We put together a roster with 3-4 mentors covering each week to ensure that there was always someone on duty, while also ensuring that mentors would be able to have some time off. A big thank you goes out to all our mentors: Dominc König, Fran Boon, Graeme Foster, Nuwan Waidyanatha, Pat Tressel, four former Google Summer of Code students: Praneeth Bodduluri (‘09), Pratyush Nigam (‘11), Robert O’Connor (‘10), Shikhar Kohli (‘10) and Tony Young (a Google Code-in student last year). Sahana’s participation in Google Code-in couldn’t have happened without all of you!

But the biggest thank you goes out to all the students who have completed tasks – unfortunately/fortunately there are too many of you to name! We had many students review chapters in the Sahana Eden Essential Guide to make sure that the instructions were clear enough for them to follow. I was really pleased to see that the book was easy for students to use plus we also got some great feedback on how to improve it. Once again the translation tasks were very popular and we have complete translations of Sahana Eden in Romanian, Bulgarian and Hindi. Abhishek Arora and Leizel Puzon completed one of the more interesting tasks; taking minutes during our community calls – which gave them insight into how our community works. For me the highlight was the task completed by Daniel Klischies (Nostraa) to design a theme for the Sahana Eden wiki to align with the Sahana Software Foundation’s branding. Daniel’s work transformed our wiki into a very professional looking site which I get  great pleasure using and sharing with others. I’m also glad to see that for some students, their involvement with Sahana doesn’t end with the end of this year’s Google Code-in, such as Sriram Raghu who is giving a talk on Sahana Eden to other students at his school.

I would like to pass on a big thanks to everyone behind the scenes who made this happen: Sverre Rabbelier, Daniel Hans, Madhusudan. C.S and the rest of the Melange team who were under extreme pressure from students and mentors alike to ensure that Melange was running smoothly throughout Google Code-in. And, of course, the Google Open Source team whose continued support of open source projects is what makes great programs like this possible!

By Michael Howden, Sahana Software Foundation Google Code-in Organization Administrator
Categories: Open Source

Data and code open sourced from Google's Renewable Energy Cheaper than Coal project

Mon, 01/30/2012 - 17:12

Google’s RE<C renewable energy research project has recently open sourced a new tool and a significant amount of data to support future CSP (concentrating solar power) heliostat development.



HOpS Open Source Site

HOpS, heliostat optical simulation, is an open source software tool for accurately and efficiently performing optical simulations of fields of heliostats, the actuated mirror assemblies that direct sunlight onto a target in CSP applications.

Google used this tool to help evaluate heliostat field layouts and calculate heat input into a CSP receiver for power production. HOpS works by passing "packets" of light between optical elements (the sun, heliostats, and elements of the target surface), tracking shadowing and blocking masks along the way. For our analysis goals, this approach gave our researchers more flexibility and accuracy than analytic tools (such as DELSOL or HFLCAL), and it was easier to set up for thousands of runs than using ray tracers. Output from the simulation includes heliostat efficiency, target irradiance, and more, while an included shell script facilitates plotting heat maps of the output data using gnuplot.


REC-CSP Open Source Site
The REC_CSP open source project contains data sets and software useful for designing cheaper heliostats.

Available on the project site are:
1. Thirty days of three-dimensional wind measurement data taken with ultrasonic anemometers (sampled at ~7 Hz), recorded at several near surface elevations.  The data is presented in the RE<C wind data collection document and is available for download on the open source site here.


2. A collection of heliostat aerodynamic load data obtained in a NASA wind tunnel and graphically represented in the appendix.  This data is available for download on the open source site here.


3. Matlab software for high-precision, on-target heliostat control with built-in simulation for testing. This is essentially the same software used in the RE<C heliostat control demonstrations and described in the accelerometer sensing and control system design documents.  The source code is available for download here.


Video: Demonstrating single and multiple heliostat control

By Ross Koningstein, Engineer, Google RE<C team
Categories: Open Source

Drupal usability study at Google

Sat, 01/28/2012 - 01:30


Drupal is an open source content management system with thousands of active community members behind it. A popular solution for both small and large scale websites, Drupal is extremely flexible and offers thousands of add-on modules.  Drupal’s user experience (UX) layer, however, can be daunting and frustrating for beginners to learn. I am working on an exciting project in conjunction with the Drupal User Experience team and the Google Open Source team to help determine some of the key UX issues new users of Drupal encounter. The usability study will have participants (all Googlers) building a website and will help to gain insight into the stumbling blocks users encounter along the way.

The usability study will be streamed live and available for everyone to watch. The usability study is planned to take place February 1-3. Details about the live stream will be posted in the comments section below in the coming days. You can follow the discussion about this study on the Drupal.org wiki page.

Saturday, January 28 at Drupal Camp San Diego (SANDCamp) I will be presenting a talk called “Usability Studies for you and Drupal too!” on the fundamental principles of user experience and an introduction to the usability study. Jen Lampton from Chapter Three is co-presenting with me to talk about why UX is so important to Drupal, what the Drupal UX team has discovered through past studies, and how to get involved with the project.

Stay tuned for another post on the results, and make sure to check back on the Drupal.org wiki for details on how to watch live!

By Becky Gessler, Google Search Quality team
Categories: Open Source

Google Code-in 2011-2012 Concludes

Tue, 01/17/2012 - 23:30


Over eight busy weeks, 545 high school (pre-university) students competed in the Google Code-in contest completing tasks for 18 open source projects. The Google Code-in contest is designed to introduce high school students to the world of open source software development by having them complete ‘bite sized’ tasks while gaining knowledge and earning prizes along the way.

Stay tuned to this blog as we will be announcing the 10 grand prize winners on February 14. The grand prize winners will win a trip for themselves and a parent or legal guardian to Google’s Mountain View, California campus in June.

Congratulations to all of the students who completed tasks during this year’s contest. We hope you all learned more about open source and will continue to work with the organizations you built relationships with during the contest and with other open source projects in the future.

And a hearty thank you to all of the mentors and organization administrators who helped the students these past couple of months. We couldn’t do this contest without all of your incredible work!

For more information on the Google Code-in contest check out our site. We will post more statistics from this year’s Google Code-in in the coming weeks, stay tuned.

By Stephanie Taylor, Open Source Programs

Categories: Open Source

Announcing DartBox2D

Wed, 01/11/2012 - 19:13

Today, we’d like to announce the release of DartBox2D, a port of the wildly successful Box2D physics engine to Dart, Google’s new language for the web.


Box2D has been ported to other languages, including JavaScript, but this release opens the door to Dart becoming a language for games on the web, which, as we all know, is what the web is really for (that and pictures of cats, of course). The work was started by two interns at Google, Greg Bigelow and Ahmed Hussein, continued by Joel Webber, and finished up by Dominic Hamon.


DartBox2D is a straight port from the Java version and isn’t yet using all of the great features the Dart developers have built into Dart, but moving forward it will become a template for how to write great Dart code. The ease with which this port was developed speaks to the great job the Dart team have done with the language.

As developers, we’re always wary of premature optimization even when working on a codebase like this one where performance is a key feature. Fortunately, it is already performing well with almost all of the included demos hitting a solid 60 FPS, though optimization efforts are a large part of the ongoing work on the project. You can see for yourself by viewing the demos and more in-depth benchmark results.

All feedback is more than welcome, and you can discuss the project either by joining the dartbox2d-discuss Google Group or the #dartbox2d IRC channel on FreeNode.

By Dominic Hamon, Google, Make the Web Faster team
Categories: Open Source

Google Body becomes Zygote Body; built on open source 3D viewer

Mon, 01/09/2012 - 20:00

Google Body was built by Google engineers in their “20% time” and was retired along with Google Labs last year. Today we’re pleased to announce that the software underlying Google Body is now open source.

Zygote Media Group, which provided the imagery for Google Body, has used this open source code to build Zygote Body (zygotebody.com). Zygote Body offers the same navigation, layering, and instant search as Google Body. Like Google Body, Zygote Body can be used in browsers that support WebGL, like Chrome and Firefox, without needing to install additional software.


To support the release of Zygote Body, the Google Body team built a new open source 3D viewer, now available at open-3d-viewer.googlecode.com. This viewer provides a standard way to create and view 3D models in a Web browser, with multiple layers and instant search. A sample model (by 3D artist Leo White) is included; Google Body users may recognize it as the Google Cow, first seen on April Fool's Day 2011.


By Roni Zeiger, Google Body 20% team
Categories: Open Source

Introducing Video Player Sample

Sat, 01/07/2012 - 01:36
Have you ever wanted a fun and beautiful way to publish videos on your own site like the new 60 Minutes or RedBull.tv apps from the Chrome Web Store? I'm excited to announce the release of The Video Player Sample! The Video Player Sample is an open source video player web app built using the same architecture as the 60 Minutes and RedBull.tv apps. It can be customized, extended, or just used out of the box and populated with your own content.




How it works
When a user opens the Video Player Sample web app, they can choose to watch a single video or create a playlist of videos/episodes from a list that they have uploaded and populated to the app. The Video Player Sample is configured and information about the videos is stored in JSON files (config.json and data.json respectively), both of which are located in the data directory.

Key features
  • A beautiful video watching experience, including a full screen view
  • Ability to subscribe to shows, watch episodes, create play lists
  • Support for multiple video formats depending on what the user’s browser supports (including WebM, Ogg, MP4, and even a Flash fallback)
  • A Categories page with an overview of the different shows/categories available in the app
  • Notifications of new episodes (when the app is installed via the Chrome Web Store)
  • Built in support for sharing to Google+, Twitter and Facebook
  • To ensure easy customization, all source files, including the Photoshop PSD’s, are included


How it's built
The Google Video Application is written for the open web platform using HTML and JavaScript, broadly following the MVC (Model View Controller) pattern and structure.
Browser Support
In addition to working as an app that can be installed through the Chrome Web Store, the Video Player Web App has been tested and works in all of the modern browsers.

Try it out
You can see a demo of the video player in action in the demo app, or by Adding it to Chrome through the Chrome Web Store. To learn more about how the app works, check out the documentation.

You can grab the code from Google Code.

Enjoy!

By Pete LePage, Chrome Web Store Developer Relations Team

Categories: Open Source

CernVM’s fruitful summer

Wed, 12/28/2011 - 19:00
This was the first year CERN participated in Google Summer of Code, and it turned out to be an amazing experience for us! We were given four students to mentor, all of whom proved to be very skilled developers. The students quickly familiarized themselves with our code base and managed to make valuable contributions within the three month time frame of Google Summer of Code. Our students were very open and willing to learn and spent a considerable amount of their time researching tools, libraries, and the latest technological developments. As a result, all four students were able to solve their problems and come up with interesting ideas for future development. The code and the documentation they produced is available here. The specific problems (projects) that we suggested to our students spanned several domains, ranging from consistent replication of terabytes of data across several remote sites to automated testing of virtual machine releases.
                                           

Josip Lisec was working on the development of the monitoring system for the CernVM Co-Pilot framework, which is mainly used as a distributed computing platform within the LHC@home 2.0 volunteer computing project. The LHC@home 2.0 project currently has more than 9,000 registered users who contribute their spare CPU cycles for the simulation of the particle collision events in CERN's Large Hadron Collider (LHC). After some research, Josip decided to integrate existing tools with the Co-Pilot as opposed to trying to reinvent the wheel by rewriting everything from scratch. This resulted in a nicely engineered monitoring framework, parts of which were put into production while the Google Summer of Code was still going on (Josip's developments have now been fully integrated after completion of the program). Since this was Josip's first encounter with Perl, he has been seen adding support for 'my' keyword to every other major programming language since the Google Summer of Code concluded.

The goal of Yin Qiu's project was to devise a mechanism for a consistent replication of changes made to the central repository of CernVM File System (CernVM-FS) to a globally distributed set of mirror servers. CernVM-FS is used to host and distribute the application software of CERN LHC experiments to hundreds of Grid sites, as well as the laptops and workstations of users worldwide. As such, it is currently one of the central components of the distributed computing infrastructures on which CERN ATLAS and LHCb experiments rely. Yin's approach was to organize CernVM-FS mirrors into a Paxos-managed replication network and to enforce state machine version transitions on them. Following the suggestion of Jakob, his mentor, Yin implemented a messaging framework which is used to orchestrate the replication process and facilitates the implementation of new features. He also managed to implement a couple of Python plugins which ensure the consistency of data across replicas. The project is currently in the state of a working prototype.

Jesse Williamson took up the challenge of designing a new library for CernVM-FS to consolidate support for various cryptographic hashing algorithms. The first task was to survey the implementation of CernVM-FS and establish a list of requirements. Next, quite a bit of effort was spent on designing the library specifically so that it would be easy to use, comparatively simple to extend, and robust enough to support extensions like a streaming interface and compression. Since CernVM-FS is heavily used in production, it has been very important to make sure that the new developments do not break anything. Jesse has developed a set of unit tests which ensure that all the existing features and properties were maintained.

The design of new C++ libraries was certainly an improvement, but it also became clear late in the cycle that a further abstraction to fully separate digests and hash functions will be necessary to avoid memory fragmentation issues and ensure stronger const-correctness

Jonathan Gillet worked on implementing a solution for automating the testing of CernVM virtual machine images on multiple hypervisors and operating systems. The solution, which is a ready to use testing infrastructure for CernVM, was developed in collaboration with other open source projects such as AMD Tapper (used for the reports and web interface), libvirt (interaction with hypervisors), and Homebrew (OS X support).  The main goals of the project were accomplished with support for all major hypervisors running on Linux and OS X platforms. The framework automates the task of downloading and configuring the CernVM images on the fly, and executing a series of thorough tests which check various features of CernVM images before release. Documentation was also an important goal of the project; in total there are now over two hundred pages of documentation which cover everything from setting up the testing infrastructure and virtual machines to a complete API reference.

We certainly enjoyed Google Summer of Code 2011, and we sincerely congratulate all of our students and mentors for successfully completing the program!

By Artem Harutyunyan, Senior Fellow, CernVM Project (CERN) and Google Summer of Code Mentor

Categories: Open Source

How the world was open sourced

Thu, 12/22/2011 - 08:00

Once in awhile at Google our illustrators get excited about lasers, Morse code, H. G. Wells’s The War of the Worlds – and then come up with beautiful Google doodles that find their way onto our homepage. Sometimes our programmers also get excited and team up with the illustrators, and that’s how we found ourselves with Google doodles celebrating Les Paul’s guitar, Pac-Man, Jules Verne’s bathyscaphe, and even your own customized turkey that you could then share on Google+.

I’m one of those people who is more comfortable with 80 monospaced characters endlessly repeated than with a paintbrush. Earlier this year I worked with Sophia Foster-Dimino from the Google doodle team on a doodle celebrating Stanisław Lem, my favorite sci-fi writer and philosopher.

 
Just like picking the right paintbrush and palette is important for all our doodles, so is figuring out the right technologies and proper user interface for those we want to make interactive. That’s something I’m personally really excited about and that’s why today I wanted to share that excitement and the entire source code of the Stanisław Lem doodle with you – accompanied with an article explaining HTML5 technologies that we used… or didn’t use:


Please note: We are sharing the code of the doodle under the Apache 2.0 License, but the images and animations accompanying the doodle under the Creative Commons BY-NC-SA 3.0 License. The big difference between those two is that the first one allows commercial re-use, whereas the second one forbids it.

So take it for a spin, play with it, and if you do something interesting, find a flaw, or have a comment – let us know at stanislaw-lem-google-doodle@googlegroups.com. Thanks!

By Marcin Wichary, Senior user experience designer, Chrome
Categories: Open Source

Teaching with Mobile

Mon, 12/19/2011 - 21:30
Ever wish you could get your students to stop texting and start using their phones productively in the classroom? Do you ever wish for an easy and quick way to measure what your students have learned? If so, you’ll be excited to learn that we recently open-sourced our internal Quiz & Poll App for Android. Developed by our internal learning systems team, “Quiz & Poll” enables educators to engage and challenge their students inside the classroom (using polls) and outside the classroom (using quizzes).

How it works
With Quiz & Poll, teachers & educators can create quizzes and polls easily using Google Spreadsheets. Quizzes and Polls are distributed to students via the Android app or an embeddable webplayer. Statistics data is written back to the spreadsheet so the instructor can track student responses and understanding.

Key Features
  • Quizzes and polls are easily created and administered on Google Spreadsheets. 
  • Students can download the Android App to take the quiz or live classroom poll. 
  • For students without Android phones, quizzes and polls can be accessed via a web interface (works on laptops, iPhones, iPads etc.).
  • Administrators can view quiz and poll statistics on the same Spreadsheet.




  • The quizzing app and leaderboard How it’s built The Quiz & Poll application showcases how you can combine several Google technologies to make an easy to use app. The code is useful for developers curious about following technologies and how they interact:
    Try it out To see the app in action watch our how-to demo videos:
    Polling   or    Quiz Games
    If you’d like to explore the project code and documentation, check it out on Google Code, where you can also find a sample implementation that you can try out. 
    Happy quizzing!
    By Bridget Campbell, The Learning Technology Team
    Categories: Open Source

    Only Halfway to the Finish Line for Google Code-in

    Sat, 12/17/2011 - 00:11

    We are almost halfway through the Google Code-in contest and we are excited to announce that over 480 pre-university students from 55 countries have completed a total of 1615 tasks in just under four weeks. The students are working with 18 different open source organizations on a variety of tasks such as quality assurance issues, writing pieces of code, developing materials for outreach efforts, translating documents, and other tasks all related to open source development.

    With students from 55 countries this truly is a global program. This year the following 16 countries have their first student participating in the Google Code-in: Algeria, Argentina, Bahrain, Bosnia-Herzegovina, Colombia, Croatia, Honduras, Ireland, Macedonia, Malaysia, Nepal, Puerto Rico, South Africa, South Korea, Sri Lanka, and Venezuela.

    The Google Code-in contest ends on January 16, 2012 so there is still plenty of time to get involved and spread the word to the pre-university students (ages 13-17) in your life.  Please visit the program site for more information regarding eligibility requirements and the program timeline. You can read our Frequently Asked Questions and join the discussion list for any additional questions about the program.

    There are plenty of tasks for students to choose from, in fact, today the organizations released a large group of new tasks for students to work on. Register and claim a task today!

    By Stephanie Taylor, Open Source Programs

    Categories: Open Source

    Students add to SymPy

    Tue, 12/13/2011 - 01:01


    SymPy is a computer algebra system (CAS) written in pure Python. The core allows basic manipulation of expressions (like differentiation or expansion) and it contains many modules for common tasks (limits, integrals, differential equations, series, matrices, quantum physics, geometry, plotting, and code generation).
    SymPy has participated in the Google Summer of Code program in previous years under the umbrellas of Python Software Foundation, Portland State University, and the Space Telescope Science Institute, where we were very successful. In fact, several of our core developers, including four of the mentors from this year, started working with SymPy as Google Summer of Code students. This was our first year participating as a standalone organization, and we would like to share our experience.
    As part of the application process we required each student to submit a patch (as a GitHub pull request) that had to be reviewed and accepted. This allowed us to see that each applicant knew how to use git as well as communicate effectively during the review process.This also encouraged only serious applicants to apply. We had over 10 mentors available and we ended up with 9 students, all of whom were successful at final evaluations.
    Tom Bachmann - Definite Integration using Meijer G-functions, mentored by Aaron Meurer Tom implemented an algorithm for computing symbolic definite integrals that uses so-called Meijer G-functions. This is the state-of-the-art algorithm for computing definite integrals, and indeed the results of his project are very impressive. This project has pushed SymPy forward a long way to becoming the strongest open source computer algebra system with respect to symbolic definite integration.
    Vladimir Peric - Porting to Python 3, mentored by Ronan Lamy Vladimir ported SymPy to work on Python 3 and ported all testing infrastructure so that SymPy gets regularly tested in Python 2.x, 3.2 and PyPy. Thanks to Vladimir’s work, the next version of SymPy, 0.7.2, which will hopefully be released later this year, will work in both Python 2 and Python 3, and it may support PyPy as well.
    Gilbert Gede - PyDy, mentored by Luke Peterson Gilbert implemented a physics module to assist in generating symbolic equations of motion for complex multibody systems using Kane's Method. He expanded on the code written by his mentor, Luke, in 2009, and the module can now generate equations of motion for a bicycle. Gilbert also wrote very thorough documentation both for the Kane’s Method and the module in SymPy.
    Tomo Lazovich - Position and Momentum Bases for Quantum Mechanics, mentored by Brian Granger Tomo has greatly improved the quantum mechanics module by implementing position/momentum representations for operators and eigenstates in various coordinate systems (including cartesian, cylindrical, and spherical) that allows you to easily represent many of the "textbook" quantum mechanics systems, including particle in a box, simple harmonic oscillator, hydrogen atom, etc.
    Saptarshi Mandal - Combinatorics package for Sympy, mentored by Christian Muise Saptarshi’s project was to mimic the various capabilities of Combinatorica, a Mathematica package for combinatorics. Most of the functionality involving elementary combinatorial objects such as Permutations, Partitions, Subsets, Gray codes and Prufer codes are complete.
    Sherjil Ozair - Symbolic Linear Algebra, mentored by Vinzent Steinberg Sherjil improved the speed of the linear algebra module by using efficient coefficient types for values of entries of matrices. Previously, SymPy used generic expressions in this place, which slowed down computations considerably and caused trouble with solving of the zero equivalence problem. He also implemented sparse matrix representation and unified the API with dense matrices. In addition, Sherjil also added a few linear algebra related algorithms (e.g. Cholesky decomposition).
    Matthew Rocklin - SymPy Stats: Random Variables, mentored by Andy Terrel Matthew improved the statistics module to use symbolics and introduced a Random Variable type, with support for finite, continuous, and multivariable normal random variables. With these you can symbolically compute things like probabilities of a given condition, conditional spaces, and expectation values. As a side consequence of this project, he also improved some of our Sets classes and implemented a MatrixExpr class, which allows you to compute with matrices symbolically, including computing with block matrices.
    Sean Vig - Symbolic Clebsch-Gordon coefficients/Wigner symbols and Implementing Addition of Spin Angular Momenta, mentored by Ondřej Čertík Sean was working on the quantum mechanics module and has implemented symbolic Clebsch-Gordan coefficients, Wigner D function, and related mathematical concepts that are used very often in quantum physics when dealing with angular momentum and then the necessary classes to support coupled spin algebra.
    Jeremias Yehdegho - Implementing F5, mentored by Mateusz Paprocki Jeremias worked on implementing algorithms related to Groebner bases. Groebner bases are a useful tool in many areas of computer algebra. He implemented the F5B algorithm, which is an improved version of the classical Buchberger’s algorithm that was previously implemented in SymPy, and an algorithm for converting Groebner bases between different orders of monomials and worked on applications of Groebner bases. This allowed for handling problems of much larger size in SymPy.
    The full report can be found here, where each student wrote a wiki page about their experience during the summer and you can also find their blogs and links to applications. Each student was required to blog about their progress each week and all blogs were synchronized at planet.sympy.org.
    In previous years, there was usually one student from each summer who became a regular contributor and also a mentor for the next year. It has been a rewarding experience for the whole SymPy community.
    By Ondřej Čertík, Aaron Meurer and Mateusz Paprocki, SymPy Google Summer of Code Mentors
    Categories: Open Source

    GitTogether 2011

    Fri, 12/09/2011 - 01:56
    It has become an autumn tradition to host GitTogether, two days of unconference where Git developers, enthusiasts, and users gather at Google’s headquarters in Mountain View, California to share ideas on future directions of Git and to discuss the tools that support the larger ecosystem. This year was no exception. More than 55 people showed up for GitTogether 2011, and one thing that is notable is that at many of the attendees’ $DAY_JOB, the combination of Git on the desktop with Gerrit Code Review on the server side has become the standard set-up to run development work.
    Photo by Brandon Casey
    Google’s Dave Borowitz gave a talk about the recent addition of Git support to Google Code Project Hosting. Google also recently moved the Git server that hosts the Android open source community from kernel.org to an in-house Git server, which was the topic of Shawn Pearce’s talk. Junio C Hamano briefly described additional workflow elements being designed to help the kernel developers ensure the authenticity of the patch-flow after the recent break-in incident at kernel.org.

    Since last year’s GitTogether, submodule support has been heavily enhanced. Jens Lehmann and Heiko Voigt, two Git developers who have been primarily working on the submodule support, gave an overview of where we are and what the future entails. The general direction is to make it easier to run various operations from the top-level superproject and have it go into submodules recursively when the project and the user choose to. There has been interest in using the native submodule support to update the implementation of “repo” wrapper used in Android and other projects. It seems that we are getting closer.

    Support for large blobs that would not fit in the memory has been always lacking in Git. There recently has been a lot of work in the native support (e.g. storing them straight to the object store without having to read and hold the whole thing in core, checking out from the object store to the working tree without having to hold the whole thing in core, etc.). There are a few third-party tools and approaches with their own pros-and-cons, but it was generally agreed that adding a split-object encoding like Avery Pennarun’s “bup” tools uses would be the right way to help support object transfer between repositories to advance the native support of large objects in Git further.

    The animated diff in Roberto Tyley’s Agit (git running on Android) demo was cool and received warm applause.

    In addition to the technical discussions, we had a chance to get to know each other socially, enjoying lunches in the conference room (unlike the previous years, the group has grown too large to visit Google cafes without disturbing other Googlers) and dinners at some local restaurants. True to the tradition, there was a “patch of questionable value” to add different hash algorithm to Git in case SHA-1 hash collisions are found.

    By Junio C Hamano, Open Source Programs
    Categories: Open Source

    Students write code and save lives with OpenMRS

    Mon, 12/05/2011 - 23:00

    Earlier this year OpenMRS participated in Google Summer of Code, a worldwide program organized by Google’s Open Source Programs Office to expose university students to the world of free and open source software, and encourage those students to become long-term contributors to projects that interest them. OpenMRS is a web-based medical record system originally designed for use in the developing world, and is now used on every continent on the globe. OpenMRS is used in all kinds of health care environments, from research laboratories to hospitals to small clinics in remote villages, and even via mobile devices that collect data door-to-door.
    OpenMRS has been participating in Google Summer of Code every year since 2007, and our 5th year was arguably our most successful yet. This year, 15 motivated students successfully completed projects to focus or extend the OpenMRS health care IT platform in ways that will have significant impact for our global community of users. Throughout the summer our students became full contributors in good standing in the OpenMRS community. They presented their projects’ work in progress to other developers and users and often contributed their code to our software releases to support health care professionals saving lives around the world. Unlike many other summer internships that students may have during the summer, our students were responsible for planning and delivery of “real-life projects” that came from needs and requests from people installing and using OpenMRS.
    Some projects were dedicated to improving the core OpenMRS platform, and some built add-on modules to support specific types of clinical activities. There were projects focused on making the installation of OpenMRS easier, and others focused on helping improve collaboration for our volunteer community. And if the presentations our students made this semester were any indication, all of the projects were exciting ways to write code and save lives. There’s not space here to describe each project in detail, but we encourage you to check out our students and their projects on the OpenMRS Wiki and learn more about them:
    • Balachandiran Ajanthan created an add-on module to deploy reusable “SMART” health care apps inside OpenMRS.
    • Christopher Zakian reimagined a “universal” search within OpenMRS that allows users to search for any system data from anywhere within the system
    • Gaurav Paliwal created an add-on module to allow OpenMRS users to provide application feedback to their system administrators and the larger open source community.
    • Gauthami Pingili improved both the UI of the OpenMRS Patient Matching module and improved its accuracy of finding duplicate patients.
    • Goutham Vasireddi helped make it faster and easier for developers to write add-on modules for OpenMRS by creating a “wizard” for Maven.
    • Jelena Skorucak reworked the attributes a person has within OpenMRS, giving clinics the flexibility to record more information about the persons.
    • João Portela made significant improvements to our HTML Form Entry editor, allowing non-programmers to create more detailed, useful data collection forms for health care.
    • Piotr Bryk enhanced our Metadata Sharing module to make it easier to manage the export and import of OpenMRS system configurations.
    • Rahul Akula’s work helped make it possible for OpenMRS to interoperate with external laboratory information systems.
    • Sai Manohar Nethi worked to create a framework for a comprehensive Human Resource add-on module for OpenMRS, allowing the system to help manage clinic personnel.
    • Sreya Janaswamy created a way for OpenMRS users to translate phrases used by the application into other languages, inside the application itself.
    • Sriskandarajah Suhothayan created a way for the OpenMRS Notifiable Condition Detector module to watch for certain large-scale patterns and send notifications to clinicians via SMS or e-mail.
    • Suranga Kasthurirathne created a new way for OpenMRS to store clinical observations that reference other people or locations.
    • Taras Chorny built a system to allow OpenMRS to be installed and upgraded using a variety of languages.
    • Victor Chircu built an “Atlas” add-on module that allows OpenMRS users to opt-in to report their location, type of clinic, and number of patients on a shared map to represent the active OpenMRS community.
    Since we started participating in Google Summer of Code, we’re very proud that so many of our students have stayed active in the OpenMRS community and continued to contribute their talents after the program ended. In fact, three of our students have gone on to become full-time OpenMRS developers paid by various organizations involved in our community.
    We continue to be more and more impressed with the students who are interested in our work, and are proud to welcome them into the OpenMRS family! In fact, this year, 2011 Google Summer of Code student Suranga Kasthurirathne was able to join us in October for our annual OpenMRS implementers meeting in Kigali, Rwanda. Suranga provided some excellent feedback about his involvement in Google Summer of Code this year, and about his experience meeting the OpenMRS community face to face. Read his blog post for more of his thoughts.
    Once again, this year we were blown away by our amazing students during Google Summer of Code. Thanks to both our students who participated, and our community mentors who gave much of their time and talents to help spread the good work of the OpenMRS community!
    By Michael Downey, Google Summer of Code Program Administrator for OpenMRS
    Categories: Open Source

    Bringing 64-bit data to R

    Thu, 11/24/2011 - 19:00

    The R programming language has become one of the standard tools for statistical data analysis and visualization, and is widely used by Google and many others. The language includes extensive support for working with vectors of integers, numerics (doubles), and many other types, but has lacked support for 64-bit integers. Romain Francois has recently uploaded the int64 package to CRAN as well as updated versions of the Rcpp and RProtobuf packages to make use of this package. Inside Google, this is important when interacting with other engineering systems such as Dremel and Protocol Buffers, where our engineers and quantitative analysts often need to read in 64-bit quantities from a datastore and perform statistical analysis inside R.

    Romain has taken the approach of storing int64 vectors as S4 objects with a pair of R’s default 32-bit integers to store the high and low-order bits. Almost all of the standard arithmetic operations built into the R language have been extended to work with this new class. The design is such that the necessary bit-artihmetic is done behind the scenes in high-performance C++ code, but the higher-level R functions work transparently. This means, for example, that you can:
    • Perform arithmetic operations between 64-bit operands or between int64 objects and integer or numeric types in R.
    • Read and write CSV files including 64-bit values by specifying int64 as a colClasses argument to read.csv and write.csv (with int64 version 1.1).
    • Load and save 64-bit types with the built-in serialization methods of R.
    • Compute summary statistics of int64 vectors, such as max, min, range, sum, and the other standard R functions in the Summary Group Generic.

    For even higher levels of precision, there is also the venerable and powerful GNU Multiple Precision Arithmetic Library and the R GMP package on CRAN, although Romain’s new int64 package is a better fit for the 64-bit case.

    We’ve had to work around the lack of 64-bit integers in R for several years at Google. And after several discussions with Romain, we were very happy to be able to fund his development of this package to solve the problem not just for us, but for the broader open-source community as well. Enjoy!

    By Murray Stokely, Software Engineer, Infrastructure Quantitative Team
    Categories: Open Source

    Gathering of the Mentor Minds

    Wed, 11/23/2011 - 19:00
    The sixth annual Google Summer of Code Mentor Summit was held Saturday and Sunday, October 22rd and 23th, 2011 at Google headquarters in Mountain View, California.
    Over 285 mentors and organization admins from over 145 Open Source organizations attended, again demonstrated how vibrant, creative, and productive Free and Open Source (FOSS) community members are.
    Picture taken by Arthur Liu
    This was one of our largest gatherings of mentors yet and it produced 62 diverse sessions over the course of a two day “unconference.” Topics included:
    • Community building and successful Google Summer of Code how to’s
    • Open Source gaming
    • Git and submodules for large projects
    • Humanitarian FOSS
    • Teaching with Open Source
    • Recruiting long term contributors
    • … and many more
    Conference attendees actively participated in the event — organizing sessions, solving logistical issues, cleaning up rooms, and generally pitching in to keep things running smoothly.
    Friday Night Meet and Greet
    • Mentors began arriving on Friday and in the early evening attended a meet-and-greet party by the hotel pool, where old friendships were renewed and new ones were formed.
    • Large quantities of Thai food and refreshing beverages were consumed by mentors amid sounds of laughter and some decidedly technical conversations.
    • Mentors turned in relatively early, as two very full days of excitement lay ahead, and considering the distances many had travelled to attend, sleep was very welcome
    Chocolate!
    With the success of the chocolate session at last year’s Mentor Summit this year an entire room was reserved for participants to bring their favorite chocolates from their country and share with the group.
    The response was staggering! Hundreds of pounds of chocolate from all over the world were brought for everyone to sample. From dark, milk, and white chocolate and lots of chocolate hazelnut goodness to unusual offerings such as fish chocolate (it must be an acquired taste), anything your heart desired resided somewhere in that glorious mound of chocolate.
    Picture taken by Robert Kaye
    Saturday Highlights
    • Saturday morning breakfast and lunch at Charlie's Cafe at the Googleplex. Great fuel!
    • Saturday welcome and unconference session selection process - A surprisingly efficient way to schedule conference sessions, with good humor.
    • Sessions were interesting and well-attended. Notes from many sessions are on the Mentor Summit wiki.
    • We received our orange 2011 Mentor Summit t-shirts!
    • Saturday night back at the hotel, massive amounts of pizza (and quite a bit of beer) was consumed while equally impressive amounts of social and technical networking was going on in the lounge, in the pool and hot tub, and at tables all around the pool.
    • Live musical entertainment was provided by Bart Massey, David Percy, myself, and lots of people who sat in on guitar, bass, and keyboards. Thank you all!
    Sunday Highlights
    • Many more great sessions!
    • The Google on-site store was open for business both days and many summit attendees loaded up with top quality swag!
    • The summit wrap-up session was built around the question "How can we make the Mentor Summit better?" Many interesting suggestions were discussed during this introspective, conversational talk, and will no doubt be incorporated into future Mentor Summits.
    Some things we learned about ourselves:
    • We are part of an incredibly creative, energetic and self-motivated community.
    • Given minimal structure we are able to create a productive and enjoyable event.
    • Magic happens when so many passionate, productive FOSS community members meet in one place with the space, time, and infrastructure to network and create together.
    • We can squeeze a lot of practical work and good fun into just two days.
    • One attendee described the Mentor Summit as "a rare place where pretty much everybody understands what you're talking about when you discuss code and community."
    Major Thanks:
    • To the Google Open Source Programs Office for providing the venue, meals, travel reimbursements, and local transportation for the weekend.
    • Special thanks to Carol Smith, Cat Allman, Stephanie Taylor, and Wolf Bergenheim, for all the time, energy and care they put into this event.
    • To the OSUOSL for ongoing hosting of the Google Summer of Code Wiki.
    • To all the organization Mentors and Admins who attended, for making this another productive and fun Mentor Summit!
    • To everyone who has supported Google Summer of Code through the years -- you have made a big difference in countless ways!
    We’re already looking forward to next year!
    By Marty Connor, Mentor, Etherboot Project
    Categories: Open Source

    And we’re off! Google Code-in contest opens for students today

    Mon, 11/21/2011 - 19:00

    And we’re off! Starting today, 13-17 year old students enrolled in a pre-university program (high school, etc.) as of November 21, 2011 can begin working on tasks for Google Code-in. The contest introduces students to the world of open source software development by having students claim tasks involving things like translating documents, writing pieces of code, developing materials for outreach efforts, working on quality assurance issues and user interface projects among many other types of tasks. 18 open source organizations will provide mentors for the students as they work through tasks over the next two months.
    Students will learn more about the many different activities involved in open source software development while also earning fun prizes during the contest. For successfully completing one task students will receive a certificate of participation and a tee shirt. For completing three tasks students will receive the tee shirt, certificate and 100 USD. Students can receive up to 500 USD when they complete 15 tasks. Each task is assigned a point value and students will receive the prize money, tee shirts and certificates based on the number of tasks they complete, regardless of the point values. Point values will be used to select the grand prize winners. The 10 students with the most points at the end of the contest period will win a grand prize trip to Google’s Mountain View, California campus for themselves and a parent or legal guardian late next spring.
    For more information please visit our program site and read the contest rules and our Frequently Asked Questions. Join our discussion list to ask any additional questions. If you meet the eligibility requirements you can create your account and start claiming tasks today!
    The contest will end on January 16, 2012 so get busy claiming those tasks and have fun!
    By Stephanie Taylor, Open Source Programs
    Categories: Open Source

    Doc Summit Wrap up: 4 Books written in 3 days!

    Sat, 11/19/2011 - 02:00

    In mid October a Document Summit was held at Google headquarters in Mountain View, California where documentation teams from 4 open source projects, KDE, OpenStreetMap, OpenMRS and Sahana Eden as well as a few documentation ‘free agents’ gathered to a write 4 books in the course of three days and take part in a two day unconference. Below, one of the dedicated documentation volunteers and the FLOSS Manuals founder/organizer recount their experiences over the course of the week.
    This past month, Google took a big step toward giving documentation its due with a five-day Google Summer of Code Document Sprint. The event was inspired and driven by FLOSS Manuals, an organization of volunteers (of which I'm one) that has received increasing recognition for its documentation projects and the related community-building they stimulate.
    It was predicated on the realization at Google (and at least among pockets of open source developers) that free software needed more than good coders to be successful. It needs communities of people caring for each other and guiding each other through the best use of the software, and part of this community effort is good documentation.
    To understand the five-day conference itself (which I wrote about extensively on Radar), you have to know something about FLOSS Manuals and its intense "book sprint" process. FLOSS Manuals was started by artist Adam Hyde several years ago to fill the gap in free software's documentation. From the start it focused not on small articles or wikis but on full manuals. Adam developed the book sprint as a way to pull together a community and get something done quickly that everybody could point to as an achievement for their community.
    Five to ten developers, power users, and core supporters meet in a workplace for three to five days and write, sharing their work. Remote contributions are encouraged, and outsiders often weigh in with key points. It's a chaotic process that converges suddenly on the last day into a 80-page to 150-page book, and it leaves a high-endorphin sensation among the participants that propels them toward other community-related activities. Books are frequently translated into other languages, are available both on web sites running FLOSS Manuals software and in print, and are kept "live" so that people can contribute to them later.
    My Radar articles contain my own lessons from the Google/FLOSS Manuals sprint. The four projects that participated took back not only a book but guidelines for keeping it alive and capitalizing on the educational and promotional activities that a book permits.
    By Andy Oram, O’Reilly Editor
    -----
    The Google Summer of Code Document Summit was the first of its kind - a special mix of formats with an unconference and book sprint tied together. This promised to be not only intensive and productive but exhausting!
    We kicked off the first day of the summit with a one day unconference facilitated by Allen Gunn. It was a great way to get started, we covered many interesting topics related to free documentation. At the end of the day everyone was tired yet inspired. We also started to really come together as a group quite quickly under Allen’s guidance and there were many smiling faces and intensive discussions on the bus back to the hotel.
    Day two - start sprinting! Well, the start of an ambitious process - 4 parallel book sprints. Zero to book in 3 days with 4 concurrent projects. I had a pretty good feeling it was going to work, having now done 30 or so sprints, but facilitating 4 sprints concurrently is extra tricky. Thankfully Anne Goldenberg (on the board of the French FLOSS Manuals) was there as I am training her to facilitate Book Sprints. I briefed Anne and she started working through the sprint with the OpenStreetMap team and I began facilitating Sahana and KDE while Allen helped here and there a lot for the first day especially with the generation of the table of contents and oiling the engine for OpenMRS. We also divided the "free agents" (people not affiliated to projects) to the groups.
    Well, the rest is more or less the Book Sprint process. Writing, reviewing, discussing, workshopping and using the various tricks and methods developed over the last 3 or so years with this methodology. All went pretty smoothly. We finished 4 great books in 3 days. I think the final word counts were something like 25,000 words or so for each of OpenStreetMap, OpenMRS, and Sahana Eden; 10,000 or so words for KDE.
    Laleh Torabi designed some wonderful covers for the books and Tuukka Hastrup was there working on a special new development for Booki (the platform we use for Book Sprints). Tuukka finished the beta and implemented it about 35 seconds before we were planning to use it and he didn’t even sweat!
    After dinner on the 3rd sprint day we invited Sahana Eden up to the front of the group and they used the new Booki feature to export the book directly to lulu.com (a print on demand service). Thats right, one push of the button and their book was IMMEDIATELY for sale as a paper book online - it was magic!
    The last day was feedback and a debrief unconference facilitated by Allen and then... you thought it had ended? No! The Google Open Source Programs Office team had agreed to get paper books printed so we distributed 20 each of the four *beautiful* books to the mentor summit the next day. All bound and shiny...they looked amazing and set off quite a buzz.
    Many thanks to everyone involved. Especially the fabulous Google Open Source Program team.
    By Adam Hyde, FLOSS ManualsWith this Document Summit, Google had the opportunity to support 4 important projects and the overarching need for good documentation of free and open source software.
    By Stephanie Taylor, Open Source Programs
    Categories: Open Source

    Build great font tools and services with sfntly

    Fri, 11/18/2011 - 20:30
    Earlier this month we released the sfntly font programming library as open source. Created by the Google Internationalization Engineering team, the sfntly Java and C++ library makes it easy for programmers to build high performance font manipulation applications and services. sfntly is really, really fast: Raph Levien, Google Web Fonts Engineer, says, "Using sfntly we can subset a large font in a millisecond. It’s faster than gzip'ing the result."
    Now, both Java and C++ programmers can use sfntly to quickly and easily develop code to read, edit, and subset OpenType and TrueType fonts. The Google Web Fonts team uses the Java version to dynamically subset fonts, and the Chrome/Chromium browser uses the C++ version to subset fonts for PDF printing.
    sfntly (\s-’font-lē\) was built from the ground up to provide high performance, an easy to use API, and both high-level and low-level access to font data. Font objects are both thread safe and high performance while still providing access for editing. After about a year of internal development sfntly is stable enough to move it into open source and share with others.
    Currently, sfntly has editing support for most core TrueType and OpenType tables, with support for more tables being added. Using sfntly’s basic sfnt table read and write capability, programmers can do basic manipulation of any of the many font formats that use the sfnt container, including TrueType, OpenType, AAT/GX, and Graphite. Tables that aren’t specifically supported can still be handled and round-tripped by the library without risk of corruption.
    sfntly is already capable of allowing many really exciting things to be done with fonts, but there is much more planned: expanding support for the rest of the OpenType spec and other sfnt-container font formats, other serialization forms, better higher level abstractions, and more.
    I encourage you to you join us on our journey as a user or a contributor.
    By Stuart Gill, sfntly Architect
    - Cross posted from the official Google Code blog
    Categories: Open Source