Czeching It Out at LinuxExpo in Prague

Friday, May 23, 2008 at 11:34 AM



I was recently invited to give a keynote at the LinuxExpo - the largest central European Linux and Open Source Software conference that was recently held in Prague (Czech Republic). The event was well received, and our very own Open Source Team also provided some gifts for the attendees.

The event consisted of two conferences (LinuxExpo and Open Government) running in parallel and both were kicked off by presentations from Googlers. Attendees were treated to a choice of two concurrent panel discussions one on document exchange formats, the other on adoption of Open Source by users.

I had a full room - around 300 people - with typical Czech crowd of government representatives mixed in with our fellow geeks and Open Source enthusiasts. I gave my talk in Slovak and after my 45 minutes ended, one person in the audience was sleeping. I chalked it up to the lights in the room being off, but was delighted when a crowd of people followed me, excited about the talk I had given, hoping to get their questions answered. I later learned from Prague Googlers that it is very rare to get questions from the audience right after your presentation, and I was glad this cultural nuance meant I got to have such great one-on-one time with the folks who attended my session.

Petra Packs the House at LinuxExpo Prague
(photo credit: LinuxExpo Organizer Team)

Most of the questions were about programs for students, and the Czech tech-crowd was mostly excited to hear about Google Summer of Code™. Six days later I gave the very same talk in Bratislava, Slovakia to students of Computer Science at Slovak Technical University. This crowd was quite interested in various Wine projects that Google contributes to and their questions were generally more technical.

Many thanks to my fellow Googlers our Prague office for their hospitality and to everyone I spoke with for making me feel so welcome. Thanks for helping me spread the Open Source love.

London Open Source Jam 8

at 10:48 AM



Last week Google's Open Source Team hosted the London Open Source Jam 8 (the 9th in the series - we started at zero, of course).


The London Open Source Jam - worth writing home about

This event was started as an experiment back in September 2006 by a bunch of volunteers in the (then fairly new) London Google engineering office to try to better connect with the local Open Source community. Since then we've been running them roughly every 2-3 months.

It's free and open for anyone to sign-up to on a first-come-first-served basis. It's on a weekday in the evening, so you don't need to take time off work or away from your weekend family/code-hacking time to attend. We'll even feed and beer you.

The evening is structured around a sequence of informal lightning talks (5 minutes maximum). Anyone can give a talk (though please at least pretend to be roughly on topic). Some people come prepared with slides and demos and stuff. Others make it up as they go. If you've got something you think will be of interest, it's a good place to talk about it.

You can expect the talks to be technical - it's a developer event, arranged by developers, for developers. If you want to work on some code, bring your laptop along. Read all about it on the OSJam page and check out photos from the most recent Jam.

The topic for OSJam 8 was developer productivity. A quick summary of the talks:

  • Steven Goodwin - Practical development tips. Principle of least surprise, write for maintainability, think about debugging, etc.

  • Nicolas Roard - Literate Programming (PDF). Introduction to the 80's paradigm and how it applies to modern day development.

  • Upayavira - A potential Open Source project to manage post-build incremental deployment tasks such cluster management, database upgrades, etc.

  • Alastair Maw - Building web-apps with Apache Wicket: how the API was designed for discoverability.

  • Tim Emiola - Typing. Not that kind of typing: actual keyboard typing skills. How being a faster typer can help your productivity.

  • Nigel Runnels-Moss - The paradox of productivity - an investigation into measurements and metrics for knowledge workers.

  • Douglas Squirrel - Spent 5 minutes listing and explaining every tool his development team uses to improve productivity.

  • Ade Oshineye - How a simple script and a culture of continuous feedback can help new team members get up to speed.

  • Ivan Moore - Build-o-matic. An Open Source distributed continuous integration server, with nice features like showing pictures of who checked in and binary searching to quickly determine which change broke a build.

  • James Broad - Using a great diff/merge tool that's available everywhere:
    vim -d.

  • John Adams - Synchronicity.

  • Neil Dunn - Domain specific languages for testing - is it worth building a framework? (no. well... maybe.)


If you're near the London area and want to hear about future Open Source Jam Events, join our Google Group or monitor the feed on the OSJam page.

Nominate Your Favorite Open Source Project Today

Tuesday, May 20, 2008 at 8:33 PM



We're glad to see that our friends over at SourceForge have announced that their Community Choice Awards are open for nominations this year. In the past, the awards have been open to all projects hosted at SourceForge, but this year they've opened up the nomination process to all Open Source projects, regardless of where on the web they call home.

We're pretty excited about this, so we're encouraging everyone to nominate their favorite Open Source project for the awards. Also, if you have an Open Source project and you'd like to encourage people to nominate you, there are various web badges that you can put on your site as well. The awards will be presented at OSCON 2008, so we hope to see you there!

Develop with Git on a Google Code Project

at 8:48 AM



Do you often work offline? Wish you could make local commits that you can reorganize and upload later? Would you like to have your own copy of the entire history of the project which you can peruse at your leisure?

Do you want to serve code and its history to others? Have changes you want to share but it's too early for the public?

Working on several issues in parallel? Need to save some of those experimental changes after all? Need to create, merge, clone and otherwise manipulate branches cheaply and offline?

You can do all this, and more, with Git, a version control system rapidly growing in popularity. You can readily find Git tutorials, but since I'm writing this post, I'll shamelessly plug my own guide to Git!

Although Google Code natively speaks Subversion, you can easily use Git during development. Searching for "git svn" suggests this practice is widespread, and we too encourage you to experiment with it.

We focus on importing a complete Git repository from a Google Code project organized in the recommended fashion. The git-svn manpage thoroughly describes how to handle other cases such as nonstandard layouts, importing only a few revisions, sharing exported repositories, and so on.

1. Import

First we perform the equivalent of a svn checkout. In an empty subdirectory, run:
$ git svn clone --username your-name -s https://your-project.googlecode.com/svn
# older versions of git: replace "-s" with "-Ttrunk -bbranches -ttags"
Like a Subversion checkout, you now have a local copy of your project. Unlike a Subversion checkout, you also have a local copy of the entire history of the project. Try:
$ git log          # print summary of history
$ git diff HEAD^^ # diff against two revisions ago
$ gitk # graphical history browser
$ qgit # Qt-based history browser
These read from local disk, and work even when you're offline.

2. Develop

You now have a fully fledged version control system at your fingertips. You can checkpoint locally. You can create, merge, and destroy branches cheaply. You can checkout long-lost ancient code. You can stockpile and reorganize your commits.

Any Git tutorial teaches these abilities. We'll content ourselves with simple examples.

First, the basics. Edit code as usual, but if you add or remove files, type:
$ git add FILENAME...
or
$ git rm FILENAME...
There's no need to inform Subversion as git-svn will do so later. In fact, we only talk to Subversion via git-svn, and never run pure svn commands.

The only other git command you must know is:
$ git commit -a
which saves the current state of your project locally. You can see them with git log. Commit early and commit often!

Now for a couple of tricks. Let's say you've made several commits and suppose you want to undo the last one:
$ git reset --hard HEAD^
Or suppose you want to get a certain file from five commits ago:
$ git checkout HEAD~5 foo.c
We've barely scratched the surface. There are countless other features worth learning, particularly Git's extraordinary lightweight branches.

3. Update

Periodically, you should get online and fetch the latest changes from Google Code with:
$ git svn rebase   # think "svn update"

4. Export

Submit your commits to Google Code with:
$ git svn dcommit  # think "svn commit"
This converts each of your Git commits into Subversion commits and uploads them, provided your repository is up-to-date. To keep working, go back to step 2.

Stay Tuned!

We've seen it's easy to setup Git with a Google Code project. If distributed version control systems sound intimidating, the above is a great way to get your feet wet. You can always delete the directory and go back to Subversion.

But what if you keep your project in a Git repository, and you want to export it to Google Code? So you'd have a canonical read-only Subversion mirror of your project?

Exporting a Git project to Google Code requires only a handful of commands. We'll show you how in a future post.

Accelerate Your Maps with GeoWebCache

Monday, May 19, 2008 at 12:59 PM



As far as web browsers are concerned, our maps don't change all that often, and rendering map images can be very time-consuming. Serving images, on the other hand, requires no computation and is trivial to implement. Google Maps is a good example of this, as all of the maps are pre-rendered and divided into smaller images (tiles). In 2006, a group of Open Source Geo developers met at the annual FOSS4G conference to figure out how to turn the Web Map Service (WMS) standard that all projects implemented in to a tile based service, hatching the WMS-C recommendation. OpenLayers had a quick client side implementation, and soon TileCache provided a Python implementation to cache any WMS Server. Many GeoServer users started using TileCache, but a pure Java solution was desired to ease deployment.

Enter Google's Summer of Code. Through OSGeo, Chris Whitney was mentored by GeoServer developers to build JTileCache, a standalone web application for caching WMS tiles that works in any Java servlet container. Not bad for one summer, right? After the project's completion it was picked up by OpenGeo, the geospatial division of The Open Planning Project, for integration with GeoServer. Arne Kepp took over as lead developer, evolving it to become GeoWebCache, using the same framework and libraries as GeoServer. This means installation with GeoServer is as easy as downloading (.zip) a plug-in and dropping it in. It is completely standards based, so the standalone download can be run in its own server against any compliant WMS.

GeoWebCache not only turns any dynamic mapping server in to a high performance cache for the WMS-C recommendation, but the tiles are also is instantly available for direct use in Google Maps, Virtual Earth and as Super-Overlays in Google Earth. Other features include pluggable caching backends, like JCS and a pure disk cache, and support for 'MetaTiling' for better labels across tiles.

With the 0.8 release (download) GeoWebCache is quickly approaching maturity, and already an outside contributor has contributed a patch - for Mobile Google Maps compatibility - a great sign for a young open source project. Google's Open Source Programs Office is also currently funding investigation to have GeoServer make placemarks and vector data available through Super Overlays, potentially with GeoWebCache integrated for accelerating the responses.

Best Practices: Archival Downloads

Wednesday, May 14, 2008 at 11:44 AM



It's an Internet world now, we're all just living in it. The cumulation of many software projects used to be RTM: the point at which the team could "release to manufacturing", meaning that someone burned a CD and put it in a box with shrink-wrap. Today, much of the most exciting software is on-line only, and that trend is only going to continue. So, doing a good job with the on-line release of software is more important than ever.

In building Google Code's project hosting feature, we've occasionally needed to balance the needs of developers and the needs of end-users of the software being developed. We aim to make it as easy as possible for developers to participate in open source projects. But, we also keep in mind that developers develop software for users to use. Sometimes we've had to force developers to plan ahead a bit so that they do a better job for end-users. Specifically, when it comes to releasing open source software, we had a mini-bill-of-rights in mind for the benefit of end-users:

  • If you download something, you can unambiguously tell someone else exactly what version you downloaded. For example, when filing an issue about it.

  • If you downloaded a release, you can always download that exact same release again. For example, if you need to reinstall and you can't upgrade.

  • You can tell someone to download a certain version that you downloaded, and they will be able to do it, even later. For example, in written installation instructions.

  • You can refer to a release by URL in a build script or a web page client-side include, and the same version will still be at that URL later. For example, when offering a Java or Javascript library for other developers to reuse in their own applications, without forcing each of them to set up a new way to redistribute your library.


This all points to the need for archival downloads: downloads that, once released, stay released. We strongly discourage the projects that we host from deleting downloads, and the contents of a download cannot be swapped out for other contents. Instead, each download must have a unique name, usually including a release number. And, old versions can only be marked as "deprecated" to keep the list of current downloads clean and let end-users know that that download is no longer supported. We make exceptions for common errors, such as uploading the wrong file. When active open source projects release regularly, they naturally use up their download space quota, and we happily grant them larger quotas rather than ask them to delete any part of their project's history.

Summer of Coders at the Libre Graphics Meeting

Tuesday, May 13, 2008 at 2:46 PM



Last weekend, the Libre Graphics Meeting (LGM) gathered developers, users and designers representing all of the major free graphics applications like Blender, the GIMP, Inkscape, Krita, Scribus and many more. The conference, now in its third year, was held at Wroclaw University of Technology in Poland, which you may remember as one of our top ten universities for Google Summer of Code™ 2008. Two former Summer of Code students, Michael Dominic Kostrzewa and Pawel Solyga, attended the meeting and were kind enough to send us their impressions of the conference.

Pawel, Co-Founder of the Natural User Interface Group and one of their mentors for Summer of Code this year, gave us some general background on the meeting:

The purpose of the LGM is to allow developers from diverse projects to collaborate, share ideas and code, co-operate on cross-application standards, and simply get to know one another. It is
also a great place to get feedback from live end users and artists, all of who are considered an integral part of the conference. We also had a chance to watch the pre-screening of the Peach open movie project's Big Buck Bunny on the local cinema big screen. As usual, LGM was free to attend, open to all and a useful three days for everyone involved.

Michael adds:

At LGM, key members of the community presented the current state of their projects and talked about future developments. Software packages ranging from font-design applications to digital publishing were demoed. The most interesting topics included vector-based sketching using tablets. Thanks to the latest code in the Inkscape project artists can create scalable, fully editable pen-alike renderings with same quality and feeling as traditional raster-based canvas. Another highlight was Krita - an application using advanced physical model to simulate the look & feeling of real-world brushes and paints.

The Libre Graphics Meeting 2008 was a nice, successful event. It was exciting to see designers and coders talking to each other, sharing visions & ideas.


Have you been working on a cool open graphics project or were you one of the attendees of LGM? As always, we'd love to hear your thoughts on the conference or the coolest new work you've produced using FOSS tools.

Open Source Googlers at Large

Monday, May 12, 2008 at 4:34 PM

Cat Allman,

There is lots going on in May, starting this week with Connectathon in San Jose, California, USA from Thursday, May 8th through Thursday, May 15th. Samba guy Jeremy Allison will be taking part Monday - Thursday in this network proving ground which allows vendors to test their interoperability solutions, with special emphasis on NFS and Internet protocols.

On Wednesday, May 14th BSDCan, an annual gathering of 4.4BSD based operating systems developers, kicks off in Ottawa, Ontario, Canada with two days of tutorials, followed by 2 days of talks, including one by our own Leslie Hawthorn on Google Summer of Code
, currently under way for it's fourth year.

The Summer of Code goodness doesn't stop there: other past GSoCers also speaking include past mentors
Poul-Henning Kamp speaking on "Measured (almost) does Air Traffic Control", and Pawel Jakub Dawidek on the ZFS file system. Past student participant Constantine A. Murenin will be speaking on the past and present history of OpenBSD's hardware sensors framework, and Ivan Voras will be present on "finstall" - the new FreeBSD installer he's began working on as a Summer of Code project in 2007.

It shouldn't be too hard to find members of the Open Source Team if you're in San Jose or Ottawa over the next few days. Stop by, introduce yourself and let us know what's on your mind.

Ed. note: updated post with corrected typo.

Moments of Inspiration

Friday, May 9, 2008 at 2:39 PM



Sometimes you have a good week, other times a great week. This week has definitely been one of the latter.

We spent Monday morning with some incredibly bright youngsters from the Watershed School in Colorado, all of whom had spent the past three days exploring the joys of the Maker Faire. Our conversation bounced from how the students use Google Apps for their school projects to extending this non-profit school's computer budget by using Open Source software. The best part of the day, though, had to have been the campus tour; as we showed off the Growing Connection Garden on our HQ's main campus, we were greeted with many stories of how these students had recently begun exploring issues around food production in their course "From Farm to Table"; needless to say, a lively discussion ensued over lunch about sustainable agriculture and alternative educational strategies.

Not long after returning to the usual swing of things Open Source, full of both organic produce and inspiration, Maital Ashkenazi, Google Summer of Code™ student in 2007 for the GenMAPP project, pinged. Maital, whom you may remember from her report on last year's Cytoscape Developer Retreat, let us know that the two plugins she produced for her project have been downloaded more than 800 times and will likely soon replace the current search functionality in Cytoscape. We were also proud to hear that an article on her work had recently been published in Oxford's Bioinformatics Journal. The best news of all, though, is that Maital has gone on to mentor for GenMAPP for this year's Summer of Code.

In other news from mentors, Colin Charles, former mentor and 2008 organization administrator for MySQL dropped a note to let us know that their Community Bonding period is moving along swimmingly. So well, in fact, that their students are already delivering weekly status reports. Colin mentioned that their student Filippo Bollini had crafted a particularly well written update; it's worth checking out for mentors wondering what sorts of information to collect from students or for students wondering what kind of details are most useful to their mentors.

Getting back to great news from the younger crowd, Wilco Jansen, one of Joomla!'s mentors and organization administrators for both Summer of Code and the Google Highly Open Participation Contest™ (GHOP), wrote in to share some great news about their Grand Prize Winner, Tomasz DobrzyƄski. Two of Tomasz's recently written plugins for Joomla! are community favorites, and Tomasz should soon be back to developing 'full-time' as his school holidays approach. Our Polish speaking readers may be interested in reading more about Tomasz and his two fellow Polish GHOP Grand Prize Winners, Jaroslaw Tworek and Wojtek Szkutnik. (Alternatively, now may be a great time to phone or make some friends in Poland.)

With so many great things happening this week, we knew we wanted to share it with all of you. We hope you too find these notes inspirational, and that you're now fully primed to go scratch your own itch. If you have a story like these you'd like to share, we would love to hear from you.

Happy Hacking this weekend!

This Week's Top 10's: Universities for Google Summer of Code 2008

Thursday, May 8, 2008 at 3:25 PM



Last Monday, we brought you news on the Top 10 countries from which we're welcoming this year's Google Summer of Code™ students. Many thanks to everyone from the community for their suggestions about which program statistics they'd like to see next. By popular demand, this week we're showcasing data about which schools our Summer of Coders are attending.








Many thanks to David Anderson, currently on his third internship with Google and organization administrator for the Subversion project, for his help in getting these statistics together. As always, we welcome your comments; let us know what information from Google Summer of Code you'd like to see featured.