Posts from 2010

Geek Time with Chris DiBona

Tuesday, December 28, 2010

The end of the year is always a great time to take a moment and look back at the developments of the past twelve months. Two members of the Google Open Source Programs Office, Chris DiBona and Jeremy Allison, sat down together for a review of open source accomplishments in 2010, and the conversation is shared with you here. Chris is the Open Source Programs Manager at Google, which means he directs Google’s open source compliance, releasing, and outreach efforts. He reveals lots of insights into Google’s approach towards open source and the influence of open source on technology and business.

The video of their discussion is separated into five parts, with descriptions below.
Part 1
Chris and Jeremy discuss their favorite open source projects of 2010, including GoogleCL, Android, Chromium, Chrome OS, and WebM. Together they ponder the future of computing, debating whether or not 2011 will be “the year of the Linux desktop.”

Part 2
Chris explains how Google decides what software to open source and under which licenses. He also mentions tools such as Make Open Easy (MOE) that are used to help engineers release and maintain their code. The topic eventually turns to license defragmentation, and Chris describes his efforts to streamline the number of licenses that Google releases under. In the process he shares his theory about what makes open source projects succeed.

Part 3
Chris and Jeremy talk about Google Summer of Code, its history, and the impact it has on the open source community.

Part 4
Chris and Jeremy are old friends who met in the 90’s at a Silicon Valley Linux Users Group meeting. While reminiscing about the early days of Silicon Valley, they discuss the modern role of user groups, both here and abroad. Chris visited Qatar, Egypt, and Jordan earlier this year, and he compares the tech atmosphere in those countries to Silicon Valley in the late 90’s, with both open source and entrepreneurship developing simultaneously.

Part 5
Chris gives an overview of his career and explains how he came to be the Open Source Programs Manager at Google.
Happy New Year, and see you in 2011!

By Ellen Ko, Open Source Team

Notes from the 2010 LLVM Developers' Meeting

Thursday, December 23, 2010

My name is Lang Hames, and I am a PhD student at the University of Sydney where I research aggressive register allocation techniques. Last year I completed a six month internship with the LLVM team improving their register allocation infrastructure, and last month Google sponsored my attendance at the 2010 LLVM Developers’ Meeting.

I had a fantastic time at the meeting. Californian hospitality always makes me feel right at home, and it was great to see all my friends from previous Dev Meetings and my internship with the LLVM team.

The meeting was huge this year, with over 190 attendees and such a abundance of talks it was impossible to make it around to everything on the day. It's a good thing the entire proceedings are up on the web. The talks this year were impressive and diverse, including introductions to major new LLVM-family projects, new applications leveraging LLVM technology, and targets ranging from GPUs to FPGAs.

A few of my favourite talks:

Doug Gregor, a member of the Clang team at Apple and code owner of the Clang libraries, gave a great talk on "libclang: Thinking Beyond the Compiler.” (PDF) libclang is the Clang compiler's functionality packaged as a library. It lets you parse source, access diagnostics, examine ASTs and even find code completion targets. This raises the really exciting prospect of building new development tools on top of a feature complete front-end. Imagine having syntax highlighting, code-completion and cross-reference all handled by the same parser that's in the compiler. It's difficult to over-state how cool this is, and I say that as an optimization guy (I thought the front end was just there to feed me CFGs). I'd highly recommend checking out a copy of Clang and playing with it. Doug's talk included plenty of code snippets, and I've found reading through them to be a great way to get started.

Craig Silverstein of Google gave a talk on "Implementing Include-what-you-use Using Clang” (PDF). Include-what-you-use is the principle that C/C++ source files should directly #include header files that provide declarations/definitions that they use, rather than relying on transitive #includes. Building on Clang, Craig has developed a tool to analyse C++ code to detect and correct violations of this principle. This looks like a really handy and great example of what you can build on top of libclang.

Howard Hinnant of Apple introduced us to libc++ (PDF), a new C++ standard library built from the ground up with C++0x in mind. It has a lot of cool features, including fast default constructors, minimal memory footprints for default constructed objects, and fast move constructors. Dependence on libstdc++ is no barrier to trying it out: you can happily link your project against both libraries (libc++ uses inline namespaces to avoid confusion over ABI incompatible objects). One feature I thought was particularly neat was the adaptive sort: the sorting algorithms in libc++ automatically recognize partially sorted ranges and optimize their behavior to exploit the partial sorting for better performance. Howard's test cases showed impressive speedups (over 2x in a lot of cases). I'm really looking forward to trying this out in some of my code.

Greg Clayton, also of Apple, introduced LLDB (PDF), a debugger built on Clang and LLVM libraries. This looks incredible and deserves a blog post of its own, but I'll mention a few of my favorite features here. By building on libclang, LLDB is able to parse complex C++ expressions, up to and including multi-line expressions with local variables and control flow. It has been built from scratch to support a multicore, multithreaded world, with per-thread state and runtime control. Symbolic breakpoints allow you to set breakpoints with everything from File and Line to regular expressions (great for breaking on getters, setters, handlers, etc). Finally, following LLVM's design philosophy all this functionality will be available via a C-API, with python bindings provided too. Looks like another excellent base for new developer tools, and I can't wait to see what people do with it.

Other talks I particularly enjoyed included Nadav Rotem's talk (PDF) on using LLVM for C-to-Verilog synthesis (aka building circuits out of C-code). Nadav ran us though some of the optimizations necessary to prepare LLVM IR for efficient hardware synthesis. Xuejun Yang's talk, "Hardening LLVM with Random Testing" (PDF), was also fantastic. Xuejun's team have developed a system for generating expressive, unambiguous C programs with defined meanings which can be used to test compiler correctness. Since March, 2008 they've helped find and fix over 170 bugs in LLVM.

Slides and videos of the talks I mentioned, and many others, are available on the LLVM Dev Meeting 2010 website. I highly encourage you to check them out.

The Dev Meeting doesn't stop at the talks of course. It's an invaluable opportunity to meet and swap ideas with other LLVM developers. I got a chance to meet Jakob Olesen and Andy Trick, who have been doing great things with LLVM's register allocation framework (my PhD research area). I also chatted with some of the Google devs who are using Clang to tackle issues such as include-what-you-use in the Google codebase. Finally I attended “Birds of a Feather” meetings on LLVM optimizations, and on the progress that's been made (and plans for the future) in building Linux with Clang.

Many thanks to Google, Apple, Qualcomm, and the Qualcomm Innovation Center for making such an amazing event possible. I'd also like to add very special thank you to Google for sponsoring me to attend this event. At the end of the day I walked out amazed at what has been achieved in the last year, and how active the LLVM community has been. I look forward to trying out all these new tools for myself, and I can't wait for next year!

By Lang Hames, LLVM Developer

Now on YouTube: googleOSPO

Monday, December 20, 2010

You may have noticed that this blog has been featuring more videos recently. Today we are launching a new YouTube channel, googleOSPO, to organize videos relating to Google and open source in one place. There are playlists of Google Tech Talks that feature open source projects, Googlers speaking at open source conferences, and of course original content like Jeremy Allison’s Geek Time series.

In addition to our new channel, our student programs channel continues to grow with videos, screencasts, and presentations from our Google Summer of Code community. As the Google Code-in program wraps up, we hope to add more videos from those participants as well. Both channels will have content added on a regular basis, so subscribe if you don’t want to miss anything!

By Ellen Ko, Open Source Team

Geek Time with Peter Brown

Friday, December 17, 2010

When the Free Software Foundation’s executive director, Peter Brown, visited the Google offices last week, he graciously offered his time for an interview with Samba co-founder and Open Source Programs Office team member Jeremy Allison. Peter and Jeremy spoke for quite a while about several of the hot topics facing free software today. Some highlights of their conversation include:

• A brief history of the free software movement (0:14)
• The difference between open source and free software (4:12),
• The importance of specifying “GNU/Linux” when referring to the first fully free operating system (7:42),
Linux Libre, a fully free kernel distribution, including the drivers (12:29)
• The Free Software Foundation’s hardware endorsement program, Respects Your Freedom (13:54)
• Unexpected places that free software is appearing around the world (18:42)
• Peter’s career with the Free Software Foundation (20:50).
• Ways that non-programmers can get involved and support the free software movement (26:23)

Throughout the conversation, both Jeremy and Peter provide fascinating anecdotes about ways that free software is shaping society. The video is an effective introduction to software freedom for those who have just discovered the concept, but it's also a great way for everyone to learn more about free software.

UPDATE: The video is now also available in the open video format WebM.

By Ellen Ko, Open Source Team

WindowBuilder becomes new open source project

Wednesday, December 15, 2010

When Google acquired Instantiations, the maker of a suite of Java development tools, we made many of their Java Eclipse tools available for free as part of the Google Web Toolkit. Today, Google is donating the source code for WindowBuilder, an Eclipse Java GUI design tool, and CodePro Profiler, an analytics tool that identifies code performance issues, to the Eclipse Foundation. This represents a major code contribution–learn more about this release on the Google Code Blog.

By Eric Clayberg and the Google Developer Tools Team

Postini EZCommand Shell makes things even easier

Today, we are open sourcing the Postini EZCommand Shell, a Perl script allowing Postini administrators to issue EZCommands to Postini from a command line.

The script is useful in two ways. First, it allows Postini administrators to make Postini EZCommands from a terminal. Second, it provides sample code for developers. For years we’ve had the Postini EZCommand, but never out-of-the-box sample code that companies could use. This code gives developers a helpful guide to integrate EZCommand with their internal systems.

Postini EZCommand Shell version 1.0.0 supports the following EZCommands:


For more information, see our site on Google Project Hosting.

By Jeff Pickhardt, Enterprise Sales Engineering Team

Google Code-in Check-in

Monday, December 13, 2010

Google Days in the Middle East

Tuesday, December 7, 2010

Chris DiBona, head of the Google Open Source Programs Office, is in the Middle East this week to talk to attendees at G-Egypt and G-Jordan, Google’s first ever Google Days hosted in those countries. The G-days will be held in Cairo between December 8th and 10th for G-Egypt, and in Amman between December 12th and 14th for G-Jordan.

Both events are 3-day conferences, with each day catering to a different audience. Day 1 is for Computer Science Students and Professors, Day 2 is for Software Developers, and Day 3 is for tech entrepreneurs, small businesses, and marketers. Chris will be discussing “Work in Open Source” each day, so there are lots of opportunities for attendees to listen to his talk or introduce themselves.

Registration for G-Egypt and G-Jordan is currently full, but you can discover other events coming up near you on our Google Developer Events Calendar.

By Ellen Ko, Open Source Team

A Summer of Accessibility

Monday, December 6, 2010

Tekla (formerly mEADL) is a collection of open hardware and open source applications that may be used to enable access to mobile devices for people with motor impairments. The idea for Tekla was the brainchild of the mobile accessibility team at the Inclusive Design Institute (IDI), which became a new mentoring organization for Google Summer of Code in 2010. Our goal has been to bridge some of the gaps currently preventing people with disabilities from using mobile devices.

Google Summer of Code student Eric Wan is a developer who employs accessibility switch access in his daily life. Having him on our team was incredibly valuable because he has a personal understanding of the practical issues involved in creating an accessibility solution. Google Summer of Code provided the means for Eric to "scratch his own itch" and now many more switch users may potentially benefit as the IDI is working with Komodo OpenLab to commercialize the technology.

The video above shows Eric using the “sip and puff” switches attached to his wheelchair to send commands to his Android handset in order to start the phone's SMS application and compose a text message - all without ever touching the phone!

How it works:
Switch events from Eric's wheelchair are sent to the phone via the Tekla shield, a bluetooth interface based on the Arduino open-hardware platform. Once on the phone, these switch events are used to navigate an on-screen keyboard provided by the Tekla open-source app, which is available for free from the Android market.

There is still some accessibility work to do on Android devices. For example, menus that appear when pressing the device MENU key and some pop-up windows will block the on-screen keyboard, sometimes locking switch users out of the phone. Also, some third-party application developers will disable access features in their interfaces, making their apps unusable with the Tekla shield. For example, Eric can sign in to Skype, but he cannot use the "call" button or the dialer due to limitations of the user interface. Luckily though, most functions and apps are accessible because developers generally have to go out of their way to make their apps inaccessible.

Eric is an engineering grad student at the University of Toronto, and he helped develop Tekla with me (his mentor) and Zongyi Yang, another U of T student. In addition to funding from the 2010 Google Summer of Code program, development on Tekla has been funded by the Ontario Ministry of Research and Innovation. Tekla is also being developed as part of the AEGIS Project.

By Jorge Silva, Google Summer of Code Mentor for Inclusive Design Institute

Gulliver powers Lonely Planet’s Trippy travel planning apps

Tuesday, November 30, 2010

Gulliver is an open source platform from Google that helps users plan trips in real time with their friends. Using Gulliver, you can create applications for mobile, iGoogle, and mobile web platforms that make it easy to build and share itineraries using Google Maps resources and Lonely Planet recommended itinerary items.

You can use Gulliver to:
• Create, share, and sync trips between the AppEngine web application, iGoogle, and the Android application
• Create scheduled and unscheduled trips
• See Lonely Planet recommendations for hotels, activities, sights, restaurants, and more for top destinations
• Seamlessly show parallel Google results when there are no Lonely Planet results
• Rate and comment on items
• Create custom items
• On iGoogle, drag and drop items from the map into the itinerary list
• On Android phones, take photos from within the app
A fully functional consumer app has been built on the Gulliver code base: Lonely Planet’s Trippy. Trippy combines the travel expertise of Lonely Planet with the power of Google web search and Google Maps.

Trippy for iGoogle (click image to enlarge)

Trippy for mobile web (click image to enlarge)

Guilliver was created as a 20% time project, a well-known part of our philosophy and company culture which enables engineers to spend one day a week working on projects that aren't necessarily in our job descriptions. We can use the time to develop something new, or if we see something that's broken, we can use the time to fix it. And now you can take these open source apps and run with them! We’re making that possible by rolling them out to the open source community under the Apache license.

Want to get involved with Gulliver and help us make it an even better application? Join the Gulliver team! To get started, just visit our project page, join the community, and download the code.

By David Yu Chen and Alex Cuthbert, Google Gulliver 20% time team

Life after Google Summer of Code

Monday, November 29, 2010

My name is Oscar Castañeda, I am a student from Guatemala currently doing a master’s in Computer Science at Delft University of Technology (TU Delft) in The Netherlands. For the 2010 Google Summer of Code I completed a project with the Google Open Source Programs Office as my mentoring organization and professor Michel van Eeten (TUDelft) and Nitin Bhide (Founder SVNPlot) as my project mentors.

In my research I study behavior in code production for all open source projects in the Apache Software Foundation (ASF) from 2004 to 2009, and this research was the subject of my Google Summer of Code project. I contributed to SVNPlot, a tool that creates various type of graphs and statistics from Subversion logs. My contributions enable SVNPlot users and developers to generate networks of file co-authorship that can be used to study behavior in code production, like the graph below which shows code production in the Apache Hadoop community and sub-communities in 2009.

After having finished my project in August, one remaining goal I had was to give a talk about my project, so presenting at ApacheCon NA this year was a good opportunity to accomplish that task.

I was able to travel to Atlanta and attend ApacheCon thanks to sponsorship from the ASF’s Travel Assistance Committee (TAC). The experience has been outstanding and packed with lots of fun. Other students and open source enthusiasts from all over the world were also sponsored by the ASF. We assembled into what became known as the “TAC Team.” As part of the TAC Team, we were in charge of chairing conference sessions, hosting Meetups and helping out behind the scenes. Best of all, we could attend the full conference and all the fun events that followed.

For me the experience was particularly interesting because I met many of the committers that power the ASF. Having done research on how ASF developers organize into communities, attending ApacheCon allowed me to put faces to usernames several times.

My challenge at ApacheCon was to give a talk to the very people whose code production behavior I had studied. The approach I took was to practice, practice, practice.

BarCamp offered an initial ice breaker in the preparations for my talk. The unconference style of BarCamp made it easy to propose a topic to talk about for 30 minutes. I simply posted a sticky note on the white board with the title “What is Meritocracy?” As soon as my slot started I noticed that BarCamp would be an interesting experience. Rather than just a presentation, the BarCamp talk I had proposed turned into an active exchange of ideas where I received many challenging questions.

Chairing conference sessions also helped me prepare for my talk. As session chair I was introducing speakers and assisting them with time management. In addition, I was sitting in on sessions, and seeing the speakers present helped me get into the flow of speaking at a conference. I found extraordinary examples in talks on Hadoop, Tuscany, and Mahout. And finally, the day came for me to present.

I was scheduled for the first morning session in the community track. It was a pleasant surprise to see that over 30 attendees showed up for my talk. All of them were well-prepared with mugs full of coffee, ready to listen to my morning talk. And in the end I found that practice does pay off. I wasn’t nervous and felt confident giving my presentation, a feeling that was reinforced when I saw that the audience was actually awake! However, deeper into the session I lost track of time. Luckily a fellow TAC team flashed the 20 minutes card, showing me that I could finish all my slides and still leave time for questions. The slides and a recording of my talk are available for those who want to know more.

Overall the experience has been very gratifying. I met lots of interesting people and learned more about open source and new developments there from the developers themselves. I highly recommend future Google Summer of Code students to consider including presenting their project at a conference as one of their project goals.

By Oscar Castañeda, 2010 Google Summer of Code Student

Objects in mirror...

Wednesday, November 24, 2010

Nearly a year in the making, has announced four new machines coming online in November of 2010. This is quite the change in infrastructure, covering two new "heavy lifting machines" and two new backend machines to round out's infrastructure of 12 boxes running worldwide.

As many people know, particularly if you are reading this blog, runs the infrastructure that the Linux Kernel community uses to develop and maintain a core piece of the operating system. That said, provides a lot more services than just a couple of git repositories and a place to download kernel releases. It hosts the Android source, provides Internet bootable utilities and installers, one of the fastest and most comprehensive mirrors of Linux distros, a plethora of wikis, and the Linux Kernel bugzilla. It also hosts and maintains a variety of other websites that are central to the development of the Linux Kernel or to the greater Linux ecosystem.

The four new machines that have fully come online in November were donated by Google with a generous discount from HP, and they are some impressive pieces of hardware to say the least!

Mirrors1 and Mirrors2, the two machines in the United States that service, fully replace machines that had been in service for 5 years. The new machines live up to their names of the “heavy lifting machines” (both because they move the most data for, but lifting 6-10u worth of equipment is actually quite heavy)! Specs for those are:

DL380 G7
2 x E5640 Intel Xeon Processors
2 x MSA70 external drive chassis
2 x P812 Array controllers
66 x 300GB 10K RPM SAS drives

DL380 G6
2 x X5550 Intel Xeon Processors
2 x MSA70 external drive chassis
2 x P812 Array controllers
66 x 300GB 10K RPM SAS drives

Each setup uses up 6u of space now, saving us about 4u per-setup over our old equipment, and they give us a lot more storage space and a lot more RAM to be able to handle mirroring for so many people.

We also upgraded the master backend machine for, and took our still-awesome previous master backend and turned it into a live spare should anything ever happen to the primary machine. We added a second dynamic web infrastructure box as well, to help host the wikis and things like bugzilla, giving us an active fail over as well as a load balanced system.

With these two additional boxes coming online, reached a milestone as we now have a redundant machine for everything currently in our inventory. We've been quite successful with the redundancy we have with our frontend facing machines, and now we have that same level of redundancy available to us on our backend machines.

DL380 G6
2 x X5550 Intel Xeon Processors
1 x MSA60 external drive chassis
2 x P812 Array controllers
8 x 300G 10K RPM SAS drives
12 x 300G 15K RPM SAS drives

dynamic web box 2:
DL380 G6
2 x X5550 Intel Xeon Processors
1 x MSA60 external drive chassis
1 x P812 Array controller
8 x 300G 10K RPM SAS drives

Needless to say we can talk a lot about specs and numbers. But really, a photo is worth a thousand words:

Those are the new backend boxes hosted at OSUOSL.

Our thanks go out to Google and HP for helping make this happen, with special thanks going to
Chris DiBona of Google for making this happen, Shawn Pearce of Google for putting up with with me through all of this, and Bdale Garbee of HP for helping us get the equipment we need and being such a great friend of for so many years!

To quote our saying on, “Objects in mirrors may be closer than they appear!”

By John “Warthog9” Hawley, Chief Administrator

Google Code-in: Contest is Open!

Monday, November 22, 2010

We’re pleased to announce that today marks the start of the Google Code-in contest. Students who are at least 13 years old and not more than 18 years old and are currently enrolled in a pre-university school on November 22, 2010 are eligible to participate. Start claiming tasks to work on for our participating mentor organizations right now.

Tasks are sorted according to organization, difficulty level, type of task, and point value. If you are considering participating, take a look at the tasks list and see what you’re interested in claiming. You can comment on the task if you have questions about the task for the organization.

For successful completion of just one task you will receive a t-shirt and certificate of participation. For every three tasks you complete you’ll receive $100, up to a maximum of $500. Our 10 contestants with the most points at the end of the contest win the Grand Prize: an all-expenses paid trip with a family member to Google’s Headquarters in Mountain View, California!

The contest ends on January 10, 2011. So don’t delay, claim a task today!

If you have questions, please review our Frequently Asked Questions and the Rules page, or take a look at the video above. You can also join our discussion list and ask your question there.

Have fun, and meet you on the list or in Mountain View!
By Carol Smith, Open Source Team

TYPO3’s Huge Summer Success

Friday, November 19, 2010

After having participated in Google Summer of Code for the second time, TYPO3 is now looking back at a truly successful summer where five students worked on projects for TYPO3 4.x, FLOW3, and TYPO3 5.0. Now that the summer has come to an end, we would like to give you an overview of the achievements our students made this summer.

Enhanced Usability for the List Module
Nuwan's proposal for the project included ideas to introduce collapsing and expanding tables in the list module by using AJAX, introducing modal dialogs for detailed information instead of the currently used pop-up windows, in-place editing, drag & drop sorting, and a quick search feature. At the end of the summer Nuwan completed all the tasks except the quick search, but added dynamic selection of columns to display on top of the planned feature set. Being completely new to TYPO3 Nuwan first struggled with current documentation, missing tutorials, and getting into TYPO3 development in general. Thanks to the help by his mentors, Thomas and Tobias, he got moving in the right direction. The feature is available as an extension and Nuwan is looking forward to finishing the missing features and providing more extensions for the core.

Generic i18n and l10n strategy for FLOW3 and TYPO3 v5
Karol reports that Google Summer of Code was a great experience, as it made him learn many new things and improved his programming skills. Looking back to his initial proposal he completed most of the tasks. Some details changed during implementation while others became harder than expected and again other tasks turned out to be easier. For more details you can take a look at Karol's weekly reports. As it looks now, Karol will also stay around with the FLOW3 project, taking further care of his project. All of Karol’s code has been integrated into FLOW3.

Enhanced Media Content Element with oEmbed
Aishwarya was not able to reach all of the goals for the enhanced media content element, but the finished ones are quite nice. It now supports oEmbed, which allows you to use a video's page URL like YouTube URLs to embed the video on a page, whereas before you needed to know the exact URL of the video file itself. For such videos the media content element will now also fetch preview thumbnails where possible. The feature is integrated in TYPO3 core and will ship with version 4.5 in January 2011.

Modular Community System
Pascal managed to create a community extension based on extbase and fluid. As he had experience with the new MVC framework for extension development he found it quite easy. Most of the basic features for a community system are implemented. However, to eventually make everything work we need to wait for two issues in extbase to be fixed. The extension is available at

Private Resource Handling for FLOW3 / TYPO3 5.0
Andreas and his mentor Robert discussed implementing a solution for content security in general, as resources in FLOW3 are represented by persisted “Resource” objects. They came to the conclusion to first implement a solution for generic security policies for persistable objects. Andreas found a solution to automatically rewrite queries by using FLOW3's AOP mechanism so that now there is no need to explicitly write security constraints for queries to the persistence layer anymore. The publishing process is also intercepted using AOP and their publishing path is being extended by a security component to eventually protect private resources from unauthorized access. The publishing feature was finished for the FLOW3 release at T3CON10 in Frankfurt.
Looking back at what has been achieved by the students and having won new contributors for the TYPO3 project we see this year's Google Summer of Code as a huge success for TYPO3 and its community. Students come for the code, then stay for the fun and the great community. All the students passed the final evaluation, so congrats to all of them! We’d also like to express thanks to the mentors who helped the students to find their way into TYPO3 and offering a guiding hand.

By Ingo Renner, TYPO3 Google Summer of Code Mentor

Cross posted from the TYPO3 blog

A name check, no more

Monday, November 15, 2010

When we first launched Google Project Hosting back in 2006, we wanted to do what we could to encourage best practices around open source development. This was expressed in a variety of ways, one of which was tied into SourceForge’s namespace.

Here's how it used to work: people would create a project on Google Project Hosting, and if that project’s name was already in use at SourceForge, we would email that project’s administrator and ask them if it was cool to use the name again. Most of the time, the person creating the project on Google Project Hosting was the same person on SourceForge, looking to reserve the name on both.

Sometimes though, the project on SourceForge was inactive or had never been active, so we would manually approve the name on Google Project Hosting. In the last few years, it's almost always been the latter case where people want to use a name that has never been active, so we've stepped in to allocate that name to the new project leader.

Since this is, by a long shot, how most of these name arbitration requests have turned out, in the spirit of efficiency we've decided to shut down the SourceForge name check on November 22nd.

Happy hacking this Thanksgiving* and we hope you enjoy Google Project Hosting!

By Chris DiBona for the Google Project Hosting Team

Announcing Google Refine 2.0, a power tool for data wranglers

Wednesday, November 10, 2010

Our acquisition of Metaweb back in July also brought along Freebase Gridworks, an open source software project for cleaning and enhancing entire data sets. Today we’re announcing that the project has been renamed to Google Refine and version 2.0 is now available.

Google Refine is a power tool for working with messy data sets, including cleaning up inconsistencies, transforming them from one format into another, and extending them with new data from external web services or other databases. Version 2.0 introduces a new extensions architecture, a reconciliation framework for linking records to other databases (like Freebase), and a ton of new transformation commands and expressions.

Freebase Gridworks 1.0 has already been well received by the data journalism and open government data communities (you can read how the Chicago Tribune, ProPublica and have used it) and we are very excited by what they and others will be able to do with this new release. To learn more about what you can do with Google Refine 2.0, watch the following screencasts: (7 min) (9 min) (6 min)

The project is open source and its code and downloads are available here. Changes from version 1.1 to 2.0 are listed here.

Adding Robots to Wave in a Box

Starting this past July, I had the opportunity to spend some time "Down Under" working as an intern on Google Wave. Since I had worked with Google before on building the open source software that runs the Google Summer of Code and Google Code-in, I joined the Wave open source effort this time. I was primarily focused on open sourcing the Robots API, so that non-Google wave servers could support robots for their users.

One month into my internship, Google announced its plan to discontinue developing Wave as a standalone product, however Wave technology will continue to move forward as an open source project.

The Wave open source project, renamed Wave in a Box, is aiming to become a server for hosting waves inside a small company or community. With a few extra steps you will even be able to talk to other wave servers all over the world, based on a concept called “federation.” Over the past few months the Wave in a Box team has made a lot of improvements, for instance the panel for viewing waves now supports much more of the functionality from Google Wave, and it looks better and is a lot faster too!

The Robots API has now also been included in Wave in a Box and has most of the functionality available on Google Wave. One of our example robots, Echoey, for Google Wave also works on Wave in a Box. This robot -- as the name might suggest -- echoes whatever is being typed. Due to the realtime nature of Wave, the echoing happens while you type!

Wave in a Box still has a ways to go and the future of the project is being discussed at this week’s Wave Summit in San Francisco. Keep an eye on the Wave in a Box website for videos of the sessions. If you are interested in running your own wave server or want to help make Wave in a Box better, take a look at our repository and mailing list.

Announcing Accepted Organizations for Google Code-in

Friday, November 5, 2010

We’re pleased to announce that today we have chosen 20 open source organizations to participate as mentoring organizations in Google Code-in.

Here’s a list of our participating organizations this year:

1. The Apertium Project
2. The Battle for Wesnoth
3. Debian Project
4. Dragonfly BSD
5. Drupal
7. Haiku
8. KDE
9. LimeSurvey
10. MoinMoin
11. Mono Project
13. Parrot Foundation and The Perl Foundation
14. Plone Foundation
15. RTEMS Project
16. Sahana Software Foundation
17. Tux4Kids
18. VideoLAN
19. WordPress
20. WorldForge

These organizations will be creating tasks for the student participants in the contest to work on and submit to earn prizes. We’ll be having tasks from all 8 categories in our task tracker: code, documentation, outreach, quality assurance, research, training, translation, user interface.

We encourage you to sign up now if you would like to participate in the contest! Simply visit Melange and click on “Sign In.” Log in or create a Google account, and then click on “Create Profile” on the left. Once you’ve done that you’re ready to start claiming tasks on November 22!

GitTogether ‘10 at Google

Thursday, November 4, 2010

Last week around 30 Git developers and users gathered for GitTogether ‘10 at Google’s headquarters in Mountain View, CA for three days of hacking, sharing ideas, and making plans for the future of Git and its supporting tool ecosystem. This was the third time we’ve hosted a GitTogether, and we were really excited about the turnout this year. Based on attendees’ $DAY_JOB employers, Git is becoming much more popular in commercial development organizations, demonstrating yet-again how open source can be an effective alternative to traditional propriety development methods.

Here at Google we use Git on our big open source projects like Android and Chromium OS, but also for smaller projects like Gerrit Code Review or the Eclipse Git plugin, as well as our continuing contributions to the Linux Kernel. During my last 2 years at Google, I ( Shawn) have been working on Gerrit Code Review (a web based code review system for Git), as well as maintaining and improving JGit (a pure Java reimplementation of Git). Junio C Hamano, one of the earliest Git contributors and the current Git maintainer, also joined Google last May and continues to contribute to Git as part of his job duties.

The schedule for the three day conference was determined in “unconference” style, with topics for discussion originally suggested on the wiki and later developed in-person through sticky notes posted on a white board. Attendees also took advantage of the #gittogether IRC channel on freenode and an Etherpad server hosted by the OSUOSL, allowing individuals who couldn’t make it in-person to at least have a virtual presence.

The session scheduling process

In addition to the technical discussions, we had a chance to get to know each other socially, enjoying lunches in Google cafés and dinners at some local restaurants. Unfortunately the group failed to develop a “patch of questionable value,” where in prior years Sverre wore a hat, diff learned --pirate, bash completion earned a splash screen, and git auto-upgraded itself.

Photo by Thomas Rast

by Shawn Pearce, Open Source Team

Test your app from right to left

Wednesday, November 3, 2010

Can you spot the error in the following webpage?

Unless you are one of the 56 million Internet users who read Arabic, the answer is probably no. But BidiChecker, a tool for checking webpages for errors in handling of bidirectional text, can find it:

Oops! The Arabic movie title causes the line to be laid out in the wrong order, with half of the phrase "57 reviews" on one side of it and half on the other.

As this example demonstrates, text transposition errors can occur even if your web application is entirely in a left-to-right language. If the application accepts user input or displays multilingual content, this data may be in one of the right-to-left languages, such as Arabic, Hebrew, Farsi or Urdu. Displaying right-to-left text in a left-to-right environment, or vice versa, is likely to cause text garbling if not done correctly. So most user interfaces, whether left-to-right or right-to-left, need to be able to deal with bidirectional (BiDi) text.

Handling BiDi text can be tricky and requires special processing at every appearance of potentially BiDi data in the UI. As a result, BiDi text support often regresses when a developer adds a new feature–and fails to include BiDi support in the updated code.

Called from your automated test suite, BidiChecker can catch regressions before they go live. It features a pure JavaScript API which can easily be integrated into a test suite based on common JavaScript test frameworks such as JSUnit. Here's a sample test for the above scenario:

// Check for BiDi errors with Arabic data in an English UI.
function testArabicDataEnglishUi() {

 // User reviews data to display; includes Arabic data.

 var reviewsData = [


 {'title': 'The Princess Bride', 'reviews': '23'},


 {'title': '20,000 Leagues Under the Sea', 'reviews': '17'},


 {'title': 'ستار تريك', 'reviews': '57'} // “Star Trek”


 // Render the reviews in an English UI.

 var app = new ReviewsApp(reviewsData, testDiv);



 // Run BidiChecker.

 var errors = bidichecker.checkPage(/* shouldBeRtl= */ false, testDiv);

 // This assertion will fail due to BiDi errors!

 assertArrayEquals([], errors);


We’ve just released BidiChecker as an open source project on Google Code, so web developers everywhere can take advantage of it. We hope it makes the web a friendlier place for users of right-to-left languages and the developers who support them.

By Jason Elbaum, Internationalization Team

2010 Google Summer of Code Mentor Summit

Tuesday, November 2, 2010

The 2010 Google Summer of Code Mentor Summit was held Saturday and Sunday, October 23rd and 24th, 2010 at Google’s headquarters (the “Googleplex”) in Mountain View, California. 230 Mentors and Organization Admins from over 120 open source projects attended the summit, once again demonstrating how productive, vibrant, and creative our community is.

The conference was organized as an "unconference," where attendees were responsible for deciding on and providing content for sessions on site. This format works very well because FOSS community members naturally seem to enjoy taking initiative to effect positive change. From organizing conference sessions, to solving logistical issues, to cleaning up conference rooms after the event, everyone helped to efficiently get things done.

The major activities of the conference can be summed up in three words: fellowship, food, and fun.

Attendees began arriving on Friday evening to the meet-and-greet party by the hotel pool, where old friendships were renewed and new ones were formed. Guests turned in relatively early though, as two very full days lay ahead...

Saturday Highlights

• Saturday morning breakfast and lunch at Charlie's Cafe at the Googleplex. Great fuel!
Saturday unconference session selection process - A surprisingly efficient way to schedule conference sessions very quickly, and with good humor.
• 56 scheduled conference sessions were interesting and well-attended. Notes from many sessions are on the Mentor Summit wiki.
• Although it was a rainy Saturday night, you would never have known it from the amount of fun we had 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 happening at tables in the lounge, in the hot tub, and in the covered tents 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:

• More great sessions!
• The Google on-site store was open for business and many summit attendees loaded up with top quality swag. Android figurines proved to be extremely popular this year.
• A guided tour of the Googleplex.
• We received our 2010 Mentor Summit t-shirts!
• 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 unusual, but very popular summit sessions:

• A chocolate session was presented by Robert Kaye of MusicBrainz. This mouth-watering session included massive amounts of chocolate combined with stimulating discussion of the many merits and uses of this wonderful confection.
• An Advanced Trolling Session, presented by Bart Massey, Jonathan "Duke" Leto, and Selena Deckelmann, explored the fine art of trolling, complete with live examples, and demonstrations of how to deflect, defeat, or subvert trolls, while protecting the host venue. This session was great fun with a serious message.

Some things we learned about ourselves:

• We are part of an incredibly energetic and self-motivated community.
• Given minimal structure we are able to create a productive and enjoyable event.
• There is magic in getting together so many passionate, productive FOSS community members in one place, and allowing them the space to network and create together.
• We can squeeze a lot of practical work and good fun into just two days.
• We are always looking to improve, and given the opportunity we can create solutions and invent better ways of doing things.
• 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 go out to Carol Smith and Cat Allman for all the energy and care they put into the event.
• To OSUOSL for for ongoing hosting of the Google Summer of Code Wiki and setting up an EtherPad instance for note taking use during the conference!
• To the organization Mentors and Admins who attended for making this another productive Mentor Summit!
• To everyone who has supported Google Summer of Code through the years -- you have made a big difference countless ways!

We’re already looking forward to next year!

By Marty Connor, Corporate Operations Engineering team