Posts from June 2008

Stylish C++ Code

Monday, June 30, 2008

Even when you speak the same language as someone else, you may find differences in spelling, pronunciation, or even vocabulary. While the difference between "color" and "colour" isn't likely to confuse anyone, you might run into trouble if your audience doesn't realize that a car's "boot" is the same as its "trunk." Some of us are still trying to figure out whether we wait "on line," "in line," or whether we simply "queue up."

Computer languages are no different in this regard. When you're working on a large software project, how you express something may be a vital part of the code. At Google, we've adopted a set of conventions intended to give all contributors a common coding vocabulary. This ensures that it's as easy as possible to understand code quickly when reading it, both for the original author and later reviewers. Our coding style covers many areas from formatting (we prefer two-space indentation) to use of language and library features (we only allow multiple interface inheritance, not multiple implementation inheritance).

When we release our own code to the public at Google, we're not just sharing our work with the world, we begin to accept contributions to that code base from the public. Naturally, our own code follows our style guidelines, but until now, contributors to Google Open Source projects haven't had a reference for the Google coding style. This has led to frustration for coders and reviewers, and we believe that it's unfair to ask contributors to use a set of rules that haven't been defined for them. With the recent release of the Google C++ Style Guide, we're changing that.

We don't think that our own style of C++ is the only way to write C++, or even necessarily the best, but we do believe that a style guide to define readability and consistency is a tool we can all use to improve software quality. If you're contributing to a Google Open Source project, you may be referred to our guide sometime soon. We're proud of our Open Source contributions, and we're glad we can make life easier for all of our community contributors.

PyPy Progress: Python Fast and Flexible

Thursday, June 26, 2008

As readers of the PyPy blog already know, PyPy development has recently focused on getting the code base to a more usable state. One of the most important parts of this work was creating an implementation of the ctypes_ module for PyPy, which provides a realistic way to interface with external libraries. The module is now fairly complete (if somewhat slow, but now up to only twice as slow as CPython), and has generated a great deal of community interest. One of the main reasons this work progressed so well was that we received funding from Google's Open Source Programs Office. This is really fantastic for us, and we cannot thank Google and Guido enough for helping PyPy progress more rapidly than we could have with volunteer-only time!

This funding opportunity arose from the PyPy US road trip at the end of last year, which included a visit to Google. You can check out the video of the talk we gave during our visit. We wrapped up our day with discussions about the possibility of Google funding some PyPy work and soon after a we were at work on the proposal for improvements we'd submitted.

One nice side-effect of the funding is indeed that we can use some of the money for funding travels of contributors to our sprint meetings. The next scheduled Google funding proposal also aims at making our Python interpreter more usable and compliant with CPython. This will be done by trying to fully run Django on top of PyPy. With more efforts like this one we're hoping that PyPy can start to be used as a CPython replacement before the end of 2008.

Many thanks to the teams at merlinux and Open End for making this development possible, including Carl Friedrich Bolz, Antonio Cuni, Holger Krekel, Maciek Fijalkowski, Samuele Pedroni and yours truly. We always love to hear feedback from the community, and you can get the latest word on our development and let us know your thoughts on the PyPy Status Blog.

EclipseDay at the Googleplex

Wednesday, June 25, 2008

What did you do to celebrate the release of Eclipse Ganymede? We celebrated by opening the Googleplex to the public and hosting EclipseDay, a free half-day conference!

(Ganymede is the code name for this year's release of software from the Eclipse Foundation, based around the 3.4 platform.)

I appreciated that the speakers were experts in their respective domains. Their presentations were polished and solid. The sessions covered a wide variety of Eclipse projects; including CDT, Mylyn, Equinox, OSGI, ATF and ECF; one about becoming a wicked plug-in developer; and two Google products that rely heavily on the Eclipse platform: Android and the Google Web Toolkit. The keynote, given by Michael Galpin, taught us how eBay has made Eclipse an integral and critical part of their development process.

I must specifically acknowledge one presenter, Mustafa Isik (he's my former Google intern!) He, along with Scott Lewis, gave one of the best presentations of the day: "Wiring Hacker Synapses: Collaborative Coding and Team Tooling in Eclipse." If you missed the presentation, you can check out Mustafa's popular code sharing screencast. My intern's all grown up! (*sniff*)

Any good trip to Google includes lots of yummy snacks and beverages. This visit was no exception!

Thanks to our speakers and guests, particularly Ian Skerrett and the Eclipse Foundation. Congratulations on releasing Ganymede!

Another Busy "While" for Open Source Googlers

Friday, June 20, 2008

With a tip of the hat to Lewis Carroll's Mad Hatter, it's a busy "while" for the Open Source Team here at Google.

Leslie Hawthorn is in Durban, South Africa, speaking at the Third OpenMRS Implementers Meeting, 17-20 June 2008. The meeting is being held in conjunction with HISA 2008, the annual conference of the South African Health Informatics Association. OpenMRS is a community developed, Open Source, enterprise electronic medical record system framework, specifically intended to help those actively building and managing health systems in the developing world, where AIDS, tuberculosis, and malaria afflict the lives of millions. If you are interested in Open Source health informatics and/or health care in developing parts of the world, take a look at the project.

Yesterday our office in Mountain View CA hosted the Creative Commons Technology Summit. Creative Commons is a non-profit organization that builds tools that help realize the full potential of the commons in the age of digital networks. Their first technology summit brought together many parties interested in making sure "Copyright 2.0" facilitates rather than hinders innovation and the open web. The summit included an update and overview of Creative Commons technologies, panels featuring other leaders in open digital rights technologies, and a look at the future, including the role of digital copyright registries (and similar animals). Check out the online coverage, and stay tuned for the video of the event, which we will post soon.

Also this week, the GCC Developers Summit, sponsored in part by Google, returned to Ottawa, Ontario, Canada for a 3 day "meeting of the minds" by the core development team behind the GNU Compiler Collection. Several Googlers presented; Vinodha Ramasamy spoke on Feedback Directed Optimization using Synthetic Edge Profiles from Hardware Event Sampling, Ian Lance Taylor gave a talk about A New ELF Linker, and Diego Novillo gave a tutorial on Tuples - A new data structure and API for GIMPLE.

Next week we are hosting another conclave in Mountain View, California, USA; Eclipse Day will be held on June 24. This half day event for developers is a chance to learn about different Eclipse projects and related technologies. Googlers speaking include Sergey Prigogin on What's New in CDT Ganymede , Bruce Johnson on Tools Make the Difference: GWT in Eclipse, and Xavier Ducrohet on Android's Eclipse Toolset . Unfortunately / fortunately, the event is completely full, and registration including the waiting list is closed, so if you are not already registered you can't join us, but watch for reports on the event later next week.

Also next week, USENIX Annual Technical Conference will be held in Boston, Massachusetts, USA. Googler David Presotto is chairing the Short Paper Session at this venerable but always tasty technical conference.

It's shaping up to be a busy summer... :)

Ed. Note: Post updated to fix formatting.

AOP 2008: Free and Open Source in Finland

Wednesday, June 18, 2008

Tero Kuusela Turuxi-vastaava, Linux-Aktivaattori ry

Turuxi is the local Free and Open Source user group in the general area of Turku, Finland. We function as a working group of a nationwide non-profit organization Linux-Aktivaattori ry (in Finnish).

As one of the most active FOSS groups in Finland, Turuxi's mailing list now has 56 subscribers. Our monthly meetings are regularly attended by 6-15 people depending on the topic. The topics cover a wide range of FOSS-related -- and unrelated -- stuff.

Perhaps the most visible part of Turuxi's activity has been event-organizing. After our first event -- a local gathering to celebrate Debian's 10th birthday -- soon after the group was founded, we've been organizing several small events. And since 2003, we have also held yearly a larger event called "Avoimien ohjelmien päivä" (AOP for short). The name can be roughly translated as "Open Source Software Day", but in Finnish it's also a play on words about free and open attendance.

The theme of this year's AOP (in Finnish) was "FOSS in professional use". The schedule was built around four presentations (some of the links in Finnish only):

  • Arto Teräs introduced the many faces of Linux from mobile devices to supercomputers (slides available in english)

  • Asmo Koskinen gave a presentation about the Edubuntu project

  • Teemu Välimäki explained the economical and ethical benefits of FOSS to businesses

  • Tommi Virtanen discussed developing for embedded Linux

In addition, there were lightning talks about various topics. And of course the 11 booths, where people from various Finnish community and business groups had many interesting discussions with our visitors and each other.

We had secured a very nice place for the event -- the common ICT-building of 3 universities of Turku. We were thus hoping for a good student attendance, but unfortunately we got a murky day with some sleet which crushed those dreams. Most of our about 60 visitors ended up being FOSS users from other cities around Finland and not many fresh faces from Turku had decided to battle the weather.

Google supported AOP 2008 as our first ever international sponsor. Our visitors were clearly glad of the fact, since the nice handouts sent by Google ended up being the most coveted in the event. They even sent something special for female visitors, since this year's event coincided with the International Women's Day :)

We were pleasantly surprised by the enthusiasm Google's Open Source team showed to support our small group's modest event. Encouraged by this experience, we're looking forward to making AOP 2009 even better -- with hopefully even stronger involvement from our new friends at Google.

FOSS Gaming for Friday

Friday, June 13, 2008

Tim Ansell, Google Summer of Code™ mentor and organization administrator for the Thousand Parsec project recently visited Google Mountain View, so we took the opportunity to sit down with him and catch up with him about the universe of FOSS gaming. In Episode 17 of the Summer of Code podcast, you'll hear from Tim about the history of the Thousand Parsec project and how participating in the program has helped grow and shape the project over the past two years. Tim also shares some amazing student commit statistics as discovered while exploring Ohloh and some insights into working with universities to get more students involved with the Thousand Parsec project and Open Source.

You can download the podcast in mp3 or ogg formats. Alternatively, you can subscribe to it.

Many thanks to Tim for joining us for the podcast. If audio-only isn't enough to satisfy your cravings for FOSS gaming, you're in luck. Tim was also kind enough to give a technical talk during his visit and you can check out the video. In Gaming for Freedom, the latest presentation in the Open Source Developers @ Google Speaker Series, you'll get an overview of Free and Open Source games, tips on growing a gaming community and a bit more about Thousand Parsec and Summer of Code.

We always love to hear from you! If there's a particular Google Open Sourcerer you'd like to see give a talk or a particular Summer of Code podcast you'd like to see us produce, post a comment and let us know.

Ed. Note: Updated post to fix a broken link.

Season of Usability 2008 Kicks Off

Thursday, June 12, 2008

Inspired by Google's Summer of Code, the OpenUsability project - an initiative to bring more emphasis on usability to FLOSS development - offers a similar student programme: the Season of Usability. The program is aimed at students of usability, user-interface design, and interaction design and has just kicked off for 2008. We're pleased to be funding 10 students focused on user experience research, UI analysis and design tasks in FLOSS projects. From May until August, the students will work closely with experienced professionals and get insights in to their way of work while improving the usability of many different FLOSS applications, ranging from instant messaging in office suites to web applications. Student participants receive a stipend of $1000 USD, kindly sponsored by Google's Open Source Programs Office, the Open Society Institute and Trolltech. We're proud to share more details on this year's student projects with all of you:

Redesigning DrProject’s Administration Interface

Along with mentors Paula Bach & Greg Wilson, Liz Blankenship, a student of Science in Information at the University of Michigan (USA), will redesign the web-based administration interface for DrProject. DrProject is a web-based project management system and Liz will perform user research, create design solutions and test them along usability methods.

Redesigning Gallery’s Image Upload Tool

Along with mentors Katrin Goetzer and Chris Kelly, Jakob Hilden will be creating and testing an improved interaction design for the image upload of Gallery, a web-based image gallery. As a first step, Jakob will conduct an expert benchmark analysis of 3 upload interfaces like Flickr and Facebook, and compare them to Gallery’s upload options. The progress is documented in Gallery's wiki. Jakob is a student of Communication and Media Science at the University of Michigan (USA).

Improving Jeliot User Interface and Workflows

Along with mentors Roman Bednarik, Andres Moreno and Niko Myller, Sharad Baliyan will perform a user interface redesign and analyse cross cultural issues in Jeliot, a Java Program Visualisation application. Sharad, who studies Interaction Design at the National Institute of Design in Ahmedabad (India), will be helping make Jeliot more usable for teachers and students of Computer Science, who use this tool to visualise how a Java program is executed and interpreted step-by-step.

Human Interface Guidelines and Design Patterns for KDE4

Becca Scollan, a student of Science and Information at the University of Baltimore (USA), and Thomas Pfeiffer, currently studying Psychology at the Technical University of Darmstadt (Germany), will team up to complete the Human Interface Guidelines and define interaction paradigms for the Linux Desktop environment KDE. They will serve as a reference for developers and help them to develop more consistent user interfaces. Their mentors for the project will be Celeste Lyn Paul and yours truly.

Toolbox and Palette Interaction for KOffice

Along with mentors Celeste Lyn Paul, Ellen Reitmayr and Boudewijn Remp, Neha Pahwa will analyse the interaction paradigm of four core applications of the KDE Office suite - KWord, KPresenter,the image manipulation application Krita, and the vector graphics application Karbon. Currently studying Information Technology at the Rochester Institute of Technology (USA), Neha's plan is to interview the developers to identify the major project goals and target users as a first step.

3d Widgets for MakeHuman

MakeHuman is a 3d modelling software, which Eugenio Passacantilli, currently studying Science in Communications at the University La Sapienza di Roma (Italy), will focus on for Season of Usability 2008. Along with mentors Stefano Fabri, Manuel Bastioni and Simone Re, Eugenio will perform a usability study of MakeHuman’s 3-d interaction elements that have recently been added. The progress can be monitored in the MakeHuman blog.

Handheld-Mode Interface for the OLPC XO Laptops

Mentors Eben Eliason and Marco Gritti will oversee this project with an eye to the final goal of producing specifications for handheld interactions for the OLPC desktop. As a first step, Alessandro Vona, student of Science in Communications, will analyse various handheld devices and their input methods to gain an understanding of some potential challenges as well as some potential solutions.

Improving HDR imaging with Qtpfsgui

Along with mentors Roman Bednark, Giuseppe Rota, and Alexadre Prokoudine, Vladimir Smida will optimise workflows and improve the usability of different tools in Qtpfsgui, an HDR imaging application. Vladimir is currently studying Computer Graphics at the Brno University of Technology (Czech Republic).

Instant Messaging and VoIP with SIP Communicator

Mike Oren
, who is also working toward his Doctorate in Philosophy at Iowa State University (USA), will spend the next few months working on the usability of SIP-Communicator, an instant messaging and VoIP client. Under the tutelage of Raphael Wimmer and Emil Ivov, Mike will focus on integrating multi-protocol features into a unified UI. As this is a major issue with various multi-protocol IM applications, his work will probably apply to other IM apps like Kopete and Pidgin, as well.

Many congratulations to all of our student participants and many thanks to all of our mentors for helping to make the Season of Usability 2008 a success!

Debuting dcs-bwt, An Experimental Burrows-Wheeler Compressor

Wednesday, June 11, 2008

Today we've released dcs-bwt, a C++ implementation of a data compressor based on the Burrows-Wheeler compression technique. The compressor is intended for experimentation with different algorithms and parameter combinations.

To support experimentation, the compressor has a modular structure that separates the Burrows-Wheeler transform stage from the compression stage. There are multiple algorithms for each stage and new algorithms can be added with minimal changes to the existing code. Any combination of algorithms and their parameters can be chosen at run-time.

The compressor contains a high-performance implementation of an advanced algorithm for the Burrows-Wheeler transform stage. (The "dcs" in the name stands for Difference Cover Sampling and refers to this advanced algorithm.) It can efficiently handle blocks of hundreds of megabytes even for highly redundant data. The use of very large blocks improves the compression rate dramatically in some cases.

We hope you'll find dcs-bwt useful. Check out the code and let us know what you think, either in the dcs-bwt Google Group or the comments section.
. Training at Google New York

Tuesday, June 10, 2008

On June 5, 2008, a new model of technology training was tried out. It was inspired by the "unconference" and "camp" models of technology conferences, and we called it an "untraining." It was designed to be created by the participants, where they would work together to learn what they needed to know.

The software was and the setting was Central Park, in Google's NYC offices. It was organized by the Nonprofit Open Source Initiative and sponsored by Google's Open Source Programs Office. Many thanks also to our friends at Aspiration for their generous in-kind support of the event. The participants were mostly a mix of librarians and non-profit folks.

The day was, in the view of the participants, a qualified success. They learned a lot about, got just about all of their questions answered, and forged new alliances in the process. There were a few tweaks that the participants suggested at the end of the day, which they felt would make the model more useful; they suggested that the structure of the day worked well, with three sessions completely defined by the participants. They also suggested an addition of a set of concrete tasks that were sent ahead of time, where people could choose the tasks more connected to their own set of uses for, then one or more of the groups could use those tasks as organizing principles.

There was a short and Open Source 101 class at the beginning of the day to orient everyone. Also, many notes were taken during the event, so if you would be interested in organizing an Open Source untraining, check the wiki for inspiration.

We were really happy to get to try this model out, and happy that Google helped us to get more people up to speed in using the great open source tool, Plus, we learned a lot about a good training model for applications of this sort, and we hope to use this model again in the near future.

SSL Certificate for Project Hosting on Google Code

Friday, June 6, 2008

If you have Open Source projects hosted on Google Code, you may have noticed that the SSL certificate changed for the domain. (The old certificate expired, and a new one was generated.)

The Google Code Blog has more details.

The University of Chicago Meets Google

Thursday, June 5, 2008

A few weeks ago, I was sitting around a table with the other three officers of the University of Chicago's ACM student chapter, pondering what our "big event" for the quarter could be. "Maybe bring in an invited speaker?" "No, not enough time to find someone." "Perhaps a panel discussion?" "Wait, didn't we already do that in the Fall?". With just a few weeks before the end of the quarter, it seemed unlikely that we could organize a fun and interesting event on time.

Oh man, were we wrong...

At one point in the meeting someone bounced a simple idea: "Hey, why not do something at Google's Chicago offices? They do cool Open Source stuff and are full of Googley wonderfulness!" Since any sentence including the words "Google's Chicago offices" tends to be followed by "Google has offices in Chicago??", allow me to pause and clarify: Yes, Google has an office right in the middle of downtown Chicago. It's filled with developers and, as it turns out, a couple of UChicago alums. So we asked around and one of our CS professors put us in touch with one of said alums, Jon Trowbridge. We contacted Jon and crossed our fingers, half-expecting that we'd be told that setting up an event on such relatively short notice was just not doable. Jon turned out to be an organizer extraordinaire, and outright enthusiastic about having a group of UChicago undergrads and grad students drop by the office.

When organizing the visit, our goal was very simple: let's talk about cool tech and share knowledge in both directions. While we were initially content to just take a tour of the premises and bask in all the Google glory, Jon suggested an ideal format for knowledge-sharing: a 90-minute session of lightning talks. Since five UChicago undergrads were accepted to Google Summer of Code™ 2008, we asked our GSoC students to give lightning talks about their upcoming summer work, and Jon recruited a couple of developers from Google to talk about their work, or simply about cool stuff they were interested in.

So, on the evening of May 22nd, an eclectic mix of about 30 UChicago CS undergrads, not-technically-in-CS-but-I-have-mad-coding-skills-anyway undergrads, and grad students made their way downtown to the Google offices, where we were greeted by oodles of food and drinks. The lightning talks were both instructional and lots of fun; we got to hear about all sorts of stuff, ranging from Zork virtual machines to "Do You Believe in the Users?", and the Google folks got to hear about cool summer projects. In sum, a great time was had by all.

Finally, here are a couple photos showing the highlights of the evening:


Oodles of food. Behold the awesomeness of the Chinese food tower.

Google Summer of Code Students

Lightning Talks

General Good Times and Silliness All Around

Google and Open Source Down Under: Open CeBIT 2008 in Sydney

Wednesday, June 4, 2008

I was invited to talk at Open CeBIT in Sydney, Australia in May, and with the help of Chris DiBona and Leslie Hawthorn from Google's Open Source Team, I delivered a presentation on "Google and Open Source," complete with some of Chris' jokes and stories (though with an Australian accent). About 100 people, including politicians, government representatives, business leaders and members of the public were present, and had lots of interesting questions about Google Summer of Code™, Google Code, and how businesses in all forms of enterprise can learn from how Google has built on Open Source for its success. There were also lots of people interested in how to get started giving back to the Open Source community, with many people showing interest in the sheer number of Open Source projects to which Googlers contribute. Open CeBIT was a lot of fun and brought back fond memories of my past life having organized Open Source conferences.

Google Gadgets for Linux

Tuesday, June 3, 2008

Since releasing Google Desktop for Linux, we've added almost all of our most requested features, like 64-bit support and the ability to search applications and documents. All except one major exception: Desktop Gadgets. Gadget support is not just a single feature, but rather an entire platform for miniature applications. It's a complex undertaking, but we're now putting the finishing touches on the product.

Come see the results yourself at our project site, where you can check out the source code to the entire product. For Gadgets for Linux, we don't just want to simply release the final offering, but we also want to give everyone a chance to tinker with the code powering the gadgets. For this project, fostering a transparent and lively developer community is just as important as serving our users.

So give Google Gadgets for Linux a try. We're happy to welcome new community members, and could certainly use some help in ironing out the last couple of issues before our next release.

Open Source Developers @ Google Speaker Series: Tim Ansell

Monday, June 2, 2008

Following a brief hiatus, we're excited to announce the return of the Open Source Developers @ Google Speaker Series. Please join us this Thursday, June 5th for Tim Ansell's presentation "Gaming for Freedom." Tim, Founder of the Thousand Parsec project, will explore the universe of Free and Open Source computer games, drawing on his personal experience as a case study for successfully building and contributing to an Open Source game project. He will also explore how the project's participation in the Google Summer of Code™ program over the past two years has shaped the Thousand Parsec code base and community.

As with all sessions of the Open Source Developers @ Google Speaker Series, Tim's presentation will be open to the public. Doors open at 6:30 PM at our Mountain View, California, USA Headquarters; guests should plan to sign it at Building 43 reception upon arrival. Refreshments will be served and all are welcome and encouraged to attend. For those of you who cannot join us in person, the presentation will be taped and published along with all public Google Tech Talks.

We're working on lining up a host of Googler Open Sourcerers for you to learn from over the next few months. Anyone in particular you'd like to hear from? Let us know in the comments section.