Posts from December 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