Posts from May 2010

A Bridge to Open Source

Thursday, May 27, 2010

Next week, several members of the Open Source Programs office will be in Portland, OR for the second Open Source Bridge conference which takes place over four days, June 1-4.

Carol Smith will be giving a talk called Foundations, Non-profits, and Open Source. Carol explains, “Figuring out whether to become a non-profit or a foundation can be a confusing topic for open source projects, and I hope to illuminate it based on my experience sitting on the Board of Directors for the Metabrainz Foundation.” Carol’s talk is on Wednesday, June 2 at 4:45 PM.

We’ll also be having a Google Summer of Code™ BoF (”Birds of a Feather” session) on Thursday, June 3, from 7 - 8:30 PM. Last year’s BoF had a great turnout and we loved meeting students, mentors and admins from the area. If you are a current, former, or potential Google Summer of Code participant, we’d love to see you and talk about the program!

Open Source Bridge is a volunteer-run conference mostly organized by a cohort of the very active open source community in the general Portland area. This year’s conference has 5 tracks of sessions plus BoFs and a hacker lounge. You can check out the schedule for an overview of all the session topics or learn more about the conference.

expect(easier testing).andReturn(Android Mock)

Wednesday, May 26, 2010

The Android development tools provide developers with a host of tools for creating fun, useful and compelling Android applications. Included in this tool-set are various testing tools that make it easier to ensure the quality of the applications. One tool that has been missing, however, is a mocking framework.

Objects Mocking is a common technique in the tester’s skillset. Mocks are simulated objects which mimic and take the place of real objects by replaying pre-recorded behavior. They are used to quickly build more focused tests that reflect better the behavior of the tested objects. This is achieved by breaking long object construction chains, isolating interesting behavior to tighten a test’s focus. “Mocking” various services such as a network connection, a database or even a per-use credit card charging service (the kind you don’t want to stress-test with your personal credit card number!) makes it possible to test real external interactions without ever touching the real thing.

Here at Google, we use mocking frameworks a lot when writing Java tests (for the reasons above, and more) but unfortunately, the solutions available only provide limited mocking capabilities for Android testing.

That is, until now:

Android Mock has been written as an extension of EasyMock to allow for the mocking of Java Interfaces and Classes on Android’s Dalvik VM. Check out the resources for how to use it and how to write tests, then get mocking.

Google Summer of Code 2010: Coding Starts Today!

Monday, May 24, 2010

Starting today all our students will formally begin coding their projects for Google Summer of Code™. Our students’ projects this year range from compilers to mobile applications, from web crawlers to virtual clusters, from APIs to social networking improvements, and more. We're really excited about the ever increasing variety of cool projects happening this year.

Take a look at the timeline to find out more about what’s coming up for Google Summer of Code.

CloudCourse: An Enterprise Application in the Cloud

Wednesday, May 19, 2010

At Google we have experts on everything from Python to penguins. However, connecting our expert teachers to eager students around the globe can be a complicated business. To that end, we are excited to release our new internal learning platform, CloudCourse under an open source license. Built entirely on App Engine, CloudCourse allows anyone to create and track learning activities. CloudCourse also offers calendaring, waitlist management and approval features.

CloudCourse is fully integrated with Google Calendar and can be further customized for your organization with the following service provider interfaces (replaceable components):
  • Sync service - to sync CloudCourse data with your internal systems
  • Room info service - to schedule classes in your locations
  • User info service - to look up user profile (employee title, picture, etc)
CloudCourse has been developed in Python, using the Django web application framework and the Closure Javascript library. Deploying CloudCourse on App Engine is a breeze, and should take less than 5 minutes.

We developed CloudCourse to:

• provide a course scheduling system fully integrated with Google services
• demonstrate what it takes to built an application using App Engine

By releasing CloudCourse as open source we hope to help developers who want to port or build enterprise applications on App Engine. Digging into the source code, you will find many examples of how we addressed challenges like long running processes, locking, synchronizing with external systems, high performance transactional workflows, and more.
All the techniques that we used can easily be applied to other applications.

CloudCourse is available for download now. If you would like to discuss the project or if you have any questions, please join the CloudCourse mailing list. Happy hacking!

Manage cloud storage from the command line with GSUtil

GSUtil is a command-line tool that helps developers manage their cloud storage. The tool makes it very easy to explore various features of Google Storage for Developers - in just a few minutes, you can learn how to create a storage bucket, upload objects, and set access controls.

GSUtil is implemented in Python using the popular boto open-source library. We added a new provider-agnostic StorageUri class hierarchy to the library as well as other enhancements that we’ll be giving back to the community. The URI abstraction lets developers use the same commands to access different data sources - including Google Storage, other cloud storage providers, and the local disk.

As developers move to the cloud, there’s a growing concern about getting locked into particular cloud providers. Google Storage supports Data Liberation, so it’s simple to take your data wherever you want with a single GSUtil command:

gsutil cp gs://bucket/* destination

Please sign up for the Google Storage for Developers preview and give GSUtil a try. We’ll also be demoing GSUtil in the Developer Sandbox at the Google I/O conference in San Francisco. We’re looking forward to meeting those of you who are attending.

The Ashpocalypse

Monday, May 17, 2010

Melange is the open source web app that runs Google Summer of Code™ each year. It is being developed and maintained by a volunteer team of student developers in several different countries. I try to meet with the Melange developers about every quarter in person to get hands-on time with the tool, suggest improvements, and give them time to code together and work out problems in person. It is usually relatively simple to bring us all together for a productive week, and get everyone home again. But then, usually we don’t have an erupting volcano to schedule around.

My trip to the Netherlands started out simply enough: I flew to Amsterdam, and took a train to Delft. On Sunday evening, I met up with the Melange developers for dinner. We started work bright and early on Monday morning, and spent the next few days working on Google Summer of Code and the Melange tool.

Unfortunately, while we were at TU Delft on Thursday, reports of airport closures started to reach us. By Friday morning, we were assured by the respective airlines that none of our developers would be flying out of Amsterdam that evening.

We took the train back to Amsterdam and spent the night in a hotel. On Saturday morning we had breakfast and went over to Amsterdam Centraal in the hopes of getting train tickets back to our international destinations. We got there around 11am to find that the wait was already three hours long and the line snaked out the door and through the station:

We waited. And waited. And waited.

The moment our number was called, we all ran over to the counter. Mario took a picture. That's our number at the top (C037):

Sverre and Lennard, based in the Netherlands, were both lucky and able to travel back home by local train and bike. But eventually Mario, Madhusudan, and Daniel got their respective train tickets home as well.

After all the developers were safely en route, I started my own trip. I ended up opting for a ferry ride from mainland Europe to England, in the hopes of getting a flight home from there. My wait in Calais was just as bad as the wait in Amsterdam Centraal. Another 3-hour line, in Calais:

By the time I got to London, most airports had reopened. My flight home was uneventful. I promptly slept for 12 hours once happily ensconced in my own bed.

Introducing the Workspace Mechanic for Eclipse

Thursday, May 13, 2010

Hi Internet! I’m Robert Konigsberg, and I’ve spent the last four years working on a team that writes Eclipse plug-ins for our coworkers here at Google. I’m happy to announce that we’re open sourcing one of the tools our colleagues use every day: the Workspace Mechanic for Eclipse. I’m also excited that it is being released under version 1 of the Eclipse Public License (EPL).

The Workspace Mechanic is a publicly-released version of a tool we use at Google to automate maintenance of our engineers’ Eclipse environments. With the Mechanic, you can:
  • Create a consistent environment for your entire company, your local team, or your own workspaces
  • Save time setting up new workspaces
  • Create tasks that ensure your favorite new preferences are applied to all your current and future workspaces. (This is one of our favorite features!)
We’re not the only ones who want a tool like this. In 2009, Ivar Meikas wrote a blog post titled “Wanted dead or alive - Eclipse configuration synchronizer!
... why do I have to change the fonts each time I create a new workspace or turn on editor line numbers? There are some tricks, by specifying properties in some ini files, but this is really clumsy (Do you know the property name for the fonts? Without searching?). I think this is something that should be achievable without hacking.

So does anyone know if there is such a plugin that would help synchronize common properties or if there is interest for such a plugin?
Ivar, you want editor line numbers enabled in all your workspaces? Perfect; enabling that is documented as one of our examples. I hope this helps.

My colleague, Terry Parker, and I described the Workspace Mechanic at Eclipse Day at the Googleplex and at EclipseCon. Both times, people asked if we had plans to open source it. Well, yes. Yes we did.

I’m also proud that today’s announcement is part of the long-awaited launch of Eclipse Labs. The Workspace Mechanic is a perfect candidate for the Eclipse Labs, which brings the power of Google Code Project Hosting to a focused Eclipse community.

Today we are providing a code-only release. Enhancements and a p2 repository are on their way. Please check out the source code, join the mailing list, and send us your feedback.

Google Summer of Code 2010: Meet the Students!

Wednesday, May 12, 2010

We’ve had a great showing from students around the world for Google Summer of Code™ this year. In all, we accepted 1,026 students from 69 countries worldwide. Our top ten countries by number of students accepted this year are: United States (197), India (125), Germany (57), Brazil (50), Poland (46), Canada (40), China (39), United Kingdom (36), France (35), Sri Lanka(34).

145 of the students this year also completed projects as part of Google Summer of Code in 2009.

Meanwhile, since acceptance, all the students have been getting to know their mentors and organizations. Our Community Bonding Period ends on May 24 and coding officially starts the same day. You can find more about the upcoming events in our timeline.

Google I/O 2010

Monday, May 10, 2010

Google I/O, Google’s largest annual developer conference, will take place on May 19-20 at Moscone West San Francisco, and nearly all of the tracks feature open sourced products -- Android, GWT, Chrome, Wave and Google APIs. We are very excited about the amount of content for open source developers this year.

Feel free to take a look at the full schedule that was recently announced. The event is completely sold out, but you can still catch the keynote presentations as they will be streamed live on the Google Developers YouTube Channel. You can also watch last year’s keynotes and session videos. Recordings from this year’s sessions will be posted on YouTube as well.

For those of you attending, Open Source Programs Manager Chris DiBona will be moderating a fireside chat with the Android team on Thursday, and he and members of the Open Source Programs Office will be present throughout the conference.

After many years of hard work from Googlers and the entire open source community, Chris DiBona is now ready to say, “Open Source is everywhere at Google I/O.”

Hope to see you there!

Don't Copy This Code

Tuesday, May 4, 2010

UPDATE July 13: We have changed the name of the codelab application to Gruyere. The codelab is now located at

Normally, when we release source code we're hoping that other people will build on it and improve it. Today's release of Gruyere, a small yet full-featured microblogging application, is a code release of a different sort entirely.

Gruyere has one feature that most applications usually do their best to avoid: lots of security bugs.

In fact, Gruyere was written specifically to teach about security. More specifically, it is a tool to show how to exploit web applications and, in turn, protect against those exploits when developing software. Gruyere is the software component of the "Web Application Exploits and Defenses" codelab being released today on Google Labs in cooperation with Google Code University. The codelab walks participants through a number of common web application vulnerability types and demonstrates how an attacker could exploit such vulnerabilities.

So while we don't want you to copy the code in Gruyere, we do hope you'll check it out and learn from it.

Shawn Pearce on FLOSS Weekly

Monday, May 3, 2010

Recently, the Google Open Source Programs Office’s Shawn Pearce appeared on FLOSS Weekly for the show’s 118th episode. FLOSS Weekly was started by Leo Laporte and Open Source Programs Manager Chris DiBona in 2006, and in 2009 it was nominated for a Podcast Award in the Technology/Science category.

Shawn is the creator of JGit, a reimplementation git in Java, and he spoke to hosts Randal Schwartz and Randi Harper on version control systems, including Gerrit Code Review, JGit, EGit, and Git.