Posts from October 2011

Monday, October 31, 2011

We’ve been busy compiling some more cool statistics from this year’s 7th iteration of the Google Summer of Code program: enjoy!

This year we had a total of 595 different universities participating in the program, 160 of which were new to the program. The 13 universities with the highest number of students accepted into this year’s Google Summer of Code account for 14.5% of the students. These universities are listed below.

The breakdown of college degrees for the 2011 Google Summer of Code program was as follows: 55% of the students were undergraduates, 23.3% were pursuing their Masters degrees, 10.2% were working on their PhD’s and 11.5% did not specify which degree they were working toward.

For the first time since starting Google Summer of Code in 2005, we asked the participants their gender. (Previously we had “guess-timated” based upon the style of tee shirt they requested). This year we had 7.1% female, 89.3% male and 3.6% that declined to state their gender. In previous years of the program the percentages of women based upon t-shirt requests was as follows: 7% in 2010, 6% in 2009, 5% in 2008, 4% in 2007, 3% in 2006 an 6% in 2005.

Thank you to all of the students for another great “summer” filled with code!

Friday, October 28, 2011

Mobile testing has come a long way since the days when testing mobile web applications was mostly manual and took days to complete. Selenium WebDriver is a browser automation tool that provides an elegant way of testing web applications. WebDriver makes it easy to write automated tests that ensure your site works correctly when viewed from an Android or iOS browser.

For those of you new to WebDriver, here are a few basics about how it helps you test your web application. WebDriver tests are end-to-end tests that exercise a web application just like a real user would. There is a comprehensive user guide on the Selenium site that covers the core APIs.

Now let’s talk about mobile! WebDriver provides a touch API that allows the test to interact with the web page through finger taps, flicks, finger scrolls, and long presses. It can rotate the display and provides a friendly API to interact with HTML5 features such as local storage, session storage and application cache. Mobile WebDrivers use the remote WebDriver server, following a client/server architecture. The client piece consists of the test code, while the server piece is the application that is installed on the device.

Get Started

WebDriver for Android and iPhone can be installed following these instructions. Once you’ve done that, you will be ready to write tests. Let’s start with a basic example using www.google.com to give you a taste of what’s possible.

The test below opens www.google.com on Android and issues a query for “weather in san francisco”. The test will verify that Google returns search results and that the first result returned is giving the weather in San Francisco.

public void testGoogleCanGiveWeatherResults() { // Create a WebDriver instance with the activity in which we want the test to run. WebDriver driver = new AndroidDriver(getActivity()); // Let’s open a web page driver.get("http://www.google.com");

// Lookup for the search box by its name WebElement searchBox = driver.findElement(By.name("q")); // Enter a search query and submit searchBox.sendKeys("weather in san francisco"); searchBox.submit();

Now let's see our test in action! When you launch your test through your favorite IDE or using the command line, WebDriver will bring up a WebView in the foreground allowing you to see your web application as the test code is executing. You will see www.google.com loading, and the search query being typed in the search box.

We mentioned above that the WebDriver supports creating advanced gestures to interact with the device. Let's use WebDriver to throw an image across the screen by flicking horizontally, and ensure that the next image in the gallery is displayed.

WebDriver has two main components: the server and the tests themselves. The server is an application that runs on the phone, tablet, emulator, or simulator and listens for incoming requests. It runs the tests against a WebView (the rendering component of mobile Android and iOS) configured like the browsers. Your tests run on the client side, and can be written in any languages supported by WebDriver, including Java and Python. The WebDriver tests communicate with the server by sending RESTful JSON requests over HTTP. The tests and server pieces don't have to be on the same physical machine, although they can be. For Android you can also run the tests using the Android test framework instead of the remote WebDriver server.

Infrastructure Setup

At Google, we have wired WebDriver tests to our cloud infrastructure allowing those tests to run at scale and making it possible to have them run in our continuous integration system. External developers can run their mobile tests either on emulators/simulators or real devices for Android and iOS phones and tablets.

Android emulators can run on most OSes because they are virtualized, so we run them on our generic cloud setup. Though there are many advantages to using Android emulators because they emulate a complete virtual device (including the virtual CPU, MMU, and hardware devices), it makes the test environment slower. You can speed up the tests by disabling animations, audio, skins, or even by running in the emulator headless mode. To do so, start the emulator with the options --no-boot-anim, --no-audio, --noskin, and --no-window. If you would like your tests to run even faster, start the emulator from a previously created snapshot image. That reduces the emulator startup time from 2 minutes to less than 2 seconds!

iOS simulators can't be virtualized and hence need to run on Mac machines. However, because iOS simulators don't try to emulate the virtual device or CPU at all, they can run as applications at "full speed," this allows the test to run much faster.

Stay tuned for more mobile feature in Selenium WebDriver, and updates on the Selenium blog. For questions and feedback not only of the Android WebDriver but also its desktop brethren, please join the community.

Thursday, October 27, 2011

Recently, I had the rare privilege of attending the annual Implementers meeting of OpenMRS, my Google Summer of Code mentoring organization. Thanks largely to the conference sponsorship by Google, OpenMRS was able to fund my week-long visit to Kigali, Rwanda. I traveled over 4,500 miles to meet with core OpenMRS developers, other volunteers, implementers (people with both IT skills and health care experience who work to deploy OpenMRS in their hospital, clinic, laboratory, etc.), service providers and researchers who had gathered there for the conference.

Arriving at Kigali, I was amazed at the diversity and fellowship amongst the community, and of how happy they were to accept me as one of their own. I took part in a pre-conference hackathon and visited the OpenMRS Implementation meeting at Rwanda’s TRAC Plus health clinic. I listened to why implementers from Village Health Works used an Access database for their Burundi clinic, and to Dr. Joaquin Blaya’s work with Interactive Voice Response. Eduardo Jezierski, the CTO of InSTEDD, talked to me about their work in Haiti, while Christopher Bailey of the World Health Organization spoke of his experience working with developing countries.

I also enjoyed a Chinese meal with a group of US-based developers for the AMPATH program in Western Kenya. I visited the Kigali Genocide museum, played cards with a group of research scientists, academics and other developers and spilled my drink all over a director’s laptop. I had dinner with OpenMRS co-founder Dr. Burke Mamlin, brought a drink for co-founder Dr. Paul Biondrich and had breakfast with an MIT graduate who explained why he quit building space satellites and an engineering career to enroll in medical school.

My participation at the conference was an eye opener for several reasons. First of all, it helped me make the transition from Google Summer of Code student to full fledged community member. I stopped being just an offshore volunteer, and understood my organization for what it really was. I saw my project as a community, a group of vibrant, talented and extremely capable people with a wide range of interests in software development, research, medicine, health informatics and public health. I understood that OpenMRS is not “just” OpenMRS, but a massive network of implementers, developers, healthcare workers and other organizations. I saw the dedication and professionalism of community members and their sincere concern to help make the world a better place. I also realized how community members were supporting themselves while enjoying what they do by serving as consultants, developers and service providers.

One of the goals of Google Summer of Code is to encourage students to contribute to open source projects. I believe that my experience at the conference highlights something that is an important part of the Google Summer of Code experience – helping students integrate into their project’s community so that they are more likely to stay involved long after the program deadlines have passed. I think program administrators could help facilitate this transition from student to community member by introducing more flexible methods of student evaluation and by giving more weight to community participation in the evaluations.

By Suranga Kasthurirathne, Google Summer of Code student and OpenMRS community member

Wednesday, October 26, 2011

We are pleased to announce the open source release of a Javascript coverage analysis tool called ScriptCover. It is a Chrome extension that provides line-by-line Javascript code coverage statistics for web pages in real time without user modification of the site. Results are collected when the page loads and continue to be updated as users interact with the page. These results can be viewed in real time through a reporting tool which highlights the executed lines of code for detailed analysis. ScriptCover is useful when performing manual and automated testing and in understanding and debugging complex code.

Short report in Chrome extension popup, detailing both overall scores and per-script coverage.

Sample of annotated source code from the detailed report. First two columns are line number and number of times each instruction has been executed.

We envision many potential features and improvements for ScriptCover, e.g.:

support other coverage metrics, e.g. path coverage and condition coverage

Sunday, October 23, 2011

We are pleased to announce the final results of this year's OpenICC participation in the Google Summer of Codeprogram. OpenICC mentored two students directly and one student through collaboration with the openSUSE organization. All three of our students successfully met their project goals and completed their colour management projects.

Yiannis Belias worked on the API stabilization for Oyranos Colour Management System II project. The new classes, code generator improvements, and tools he worked on will be integrated into the Oyranos master branch in upcoming months. This project helps in stabilizing the CMS core, which covers a great foundation of functionality.

Joseph Simon worked on the XCPD project. The goal of his project was to implement a prototype printing dialog based on The Linux Foundation's Common Printing Dialog (CPD) project code to allow a standards based color managed PDF based printing workflow. The PDF spool file created by the modified CPD follows the PDF/X specification for embedding user side colour managed content and color related remote printer configuration information for a complete solution to printing color managed content in a standard Linux/Unix environment.

Sebastian Oliva implemented an ICC device profile database, called taxi that is intended to share vendor and user created ICC profiles across platforms in an automated fashion. The online database is designed to cover metadata about the device driver calibration status alongside the characterization information in the corresponding ICC profiles. The project idea and student slot was provided by the openSUSE distribution project and mentored by an OpenICC member.

Many thanks to all the students for their great work, all the people who helped in shaping the basic ideas and devising the projects for the program, Google for providing the stipends for the students, and open SUSE for inviting the students to the European openSUSE Conference.

Monday, October 17, 2011

A few weeks ago we told you about the Hack4Transparancy event, bringing techies together November 8th and 9th in the European Parliament for an all-expenses-paid good time eating, talking, and making important data accessible to everyone.

Well, now we’ve got more exciting news. We’ve broadened the scope of the event and extended the application deadline for those wishing to make data on Internet performance visible and meaningful.

What’s changed?

•The application deadline for the Internet Quality track has been extended through noon, CET, Friday October 21st (that's this coming Friday).

Friday, October 14, 2011

Listen up, future coders of the world: today we’re launching the second annual Google Code-in competition, an open source development contest for 13-17 year old students around the world. The purpose of the Google Code-in competition is to give students everywhere an opportunity to explore the world of open source development. We not only run open source software throughout our business, we also value the way the open source model encourages people to work together on shared goals over the Internet.

Open source development involves much more than just computer programming, and the Google Code-in competition reflects that by having lots of different tasks to choose from. We organize the tasks into eight major categories:

On November 9, we’ll announce the participating mentoring organizations. Mentoring organizations are open source software organizations chosen from a pool of applicants who have participated in our Google Summer of Code program in the past. Last year we had 20 organizations participate.

Last year’s competition drew 361 participating students from 48 countries, who worked for two months on a wide variety of brain-teasing tasks ranging from coding to video editing, all in support of open source software. In January, we announced the 14 grand prize winners, who we flew to our headquarters in Mountain View, California to enjoy a day talking to Google engineers and learning what it’s like to work at Google, and another day enjoying the northern California sights and sun.

Visit the Frequently Asked Questions page on the Google Code-in site for more details on how to sign up and participate. Our goal this year is to have even more pre-university students in the contest than last time around, so help us spread the word, too.

Stay tuned to the contest site and subscribe to our mailing list for more updates on the contest. The Google Code-in contest starts on November 21, 2011, and we look forward to seeing the clever and creative ways all of the participants tackle their open source challenges.

Thursday, October 13, 2011

Here at Google, we use Eclipse every day to build our external and internal products, as well as building and releasing Eclipse tools. We are delighted to announce that we will be hosting Eclipse Day at Googleplex on November 30th. Hosting this event is one way to say “thank you” and contribute back to the community.

Eclipse Day is a 1-day conference that highlights Eclipse projects and Eclipse-based products created here at Google. It is also a great opportunity for both Eclipse contributors and users to network and share ideas.

This year we have sessions that cover Android Development Tools, Google Plug-in for Eclipse, WindowBuilder, EGit, m2eclipse, Eclipse 4, SWTBot, Orion, Hudson, a case study by NASA and Google’s use of Xtext.

In previous years some of the most popular sessions have been our Eclipse Ignite talks: 5-minute, 20-slide presentations by attendees that wish to show-off what they are doing with Eclipse.

All of us at Google would like to thank Ian Skerrett and everyone at the Eclipse Foundation for assembling this great event. We are happy to welcome the Eclipse community to our campus. We are always looking for ways to make this conference better! Please share your ideas and let us know your thoughts about this year’s program.

The conference is free, but you do need to pre-register. We strongly recommend you register early as we have run out of all of our slots every year.

Wednesday, October 12, 2011

What's the best way to wrap up a fantastic conference? With an even more fantastic sprint! DjangoCon US 2011 was recently held in Portland, Oregon, and on September 9 and 10, DjangoCon attendees crammed into the offices of Urban Airship to sprint on Django. At the peak of the sprint, over 120 people — almost one third of the conference attendees — were at the sprint venue. Even more people joined in online, using IRC to communicate with those at the

sprint venue.

The sprints were an excellent opportunity for the international Django community to gather and make plans for the future. Over the two day sprint, there were breakout sessions discussing a possible new template tag syntax, the requirements for a next-generation admin system, and the needs of a User model. Some people contributed to infrastructure, such as greasing the gears

connecting Django's ticket system to code sharing sites like GitHub. There was a group brainstorming about the possibility of replacing Django's ticket tracker with something better. Others made contributions to documentation, working on draft tutorials, topic guides, and improving the 'out of the box' experience for new Django users. And, of course, there was the usual sprinting fare of bug squashing and feature construction.

Attendees ranged from long-time Django veterans to recent Django converts; from twenty-somethings to seasoned software veterans. People came from all corners of the globe to attend the conference — South America, Australia, South Africa, Europe, Canada and all parts of the United States.

Portland is a great town for food lovers, and as a result, it's easy for "lets pop out for a quick bite" to turn into a 3 hour lunch break, eating up valuable sprinting time. Thanks to the generous sponsorship of Google, and Emma, the sprints were a fully catered event -- so Portland's excellent food came to us, and no time and energy was lost in the hunt for sustenance!

The DjangoCon US 2011 sprints were an incredibly successful event; organizers for DjangoCon US 2012 in Washington DC, and DjangoCon Europe 2012 in Zurich, Switzerland have a lot to live up to. Here's hoping next year's events will be just as successful!

Monday, October 10, 2011

KDE took part in its 7th year as a mentoring organization for the Google Summer of Code. Thanks to Google's generous funding and KDE's mentors we were able to work with 51 students over the summer, once again making KDE the largest organization taking part in Google Summer of Code. Choosing the right students was hard but the selection turned out well. The students coded in nearly all areas of KDE from Calligra and Rekonq to Amarok and KStars. Their projects turned out very well, and we've once again been impressed with the talent and dedication of the students. All 51 students passed their mid-term evaluation and 47 successfully passed their final evaluation. Valorie Zimmerman, KDE Administrator for Google Summer of Code, says: “KDE got forty-seven completed projects, which is tremendous. Our focus though is not on the code itself, but on the students and their involvement with KDE. However, their projects enrich KDE immensely, and you’ll be seeing their code integrated into our codebase over the next few months. “

Similar to previous years, KDE received many more great student applications for Google Summer of Code than we were able to accept into the program. To welcome these remaining students to our community and to give them mentoring, support, and a project to work on, we ran Season of KDE again. It is a program similar to Google Summer of Code where students receive a certificate and limited-edition t-shirt for completing their project successfully. The response was overwhelming this year and we had to close applications after 100 submissions. Nearly all of them were matched up with a mentor and project to work on. The students still have a few more weeks to work on their projects but results are looking fantastic so far.

Lydia Pintscher, KDE Administrator for Google Summer of Code and Season of KDE, says: “What makes me proud about this is the fact that KDE as a community is able and willing to teach newcomers to Free Software on a scale like few other projects while delivering high-quality results in terms of code produced and students mentored. What makes me even more proud is the overwhelming success of Season of KDE even without the monetary incentive but just because people want to work on something amazing in an amazing community.”

Thursday, October 6, 2011

Are you a website developer that wants to know if Chrome updates will break your website before they reach the stable release channel? Have you ever wished there was an easy way to compare how your website appears in all channels of Chrome? Now you can!

QualityBots is a new open source tool for web developers created by the Web Testing team at Google. It’s a comparison tool that examines web pages across different Chrome channels using pixel-based DOM analysis. As new versions of Chrome are pushed, QualityBots serves as an early warning system for breakages. Additionally, it helps developers quickly and easily understand how their pages appear across Chrome channels.

QualityBots is built on top of Google AppEngine for the frontend and Amazon EC2 for the backend workers that crawl the web pages. Using QualityBots requires an Amazon EC2 account to run the virtual machines that will crawl public web pages with different versions of Chrome. The tool provides a web frontend where users can log on and request URLs that they want to crawl, see the results from the latest run on a dashboard, and drill down to get detailed information about what elements on the page are causing the trouble.

Developers and testers can use these results to identify sites that need attention due to a high amount of change and to highlight the pages that can be safely ignored when they render identically across Chrome channels. This saves time and the need for tedious compatibility testing of sites when nothing has changed.

We hope that interested website developers will take a deeper look and even join the project at the QualityBots project page. Feedback is more than welcome at qualitybots-discuss@googlegroups.com.

Tuesday, October 4, 2011

Gnucash, a free accounting program for Linux, Microsoft Windows, and Apple Macintosh OSX, had its second opportunity to mentor students in the Google Summer of Code program this summer. Two of our three students successfully completed their projects.

Muslim Chochlov wrote unit tests for several critical modules of Gnucash's core Query Object Framework. This is an important first step to some necessary refactoring of the framework so that Gnucash can move from an in-memory processing model to a transactional database model allowing simultaneous multiple user access.

Nitish Dodagetta extended the experimental Qt GUI "Cutecash" (Gnucash's primary GUI is Gtk+) by writing a unified accounting transaction entry window. The Gnucash development team is investigating Qt and C++ as a future direction for Gnucash, and this struck a chord for Google Summer of Code students: half of the proposals we received from the student applicants prior to the start of the program were for Cutecash projects.

Overall we were pleased with the progress we made this summer; we found that the successful students leveraged the work of their mentors and moved forward some important aspects of the project. We're continuing to work with the students this fall, integrating them into the regular development team. Mentoring up-and-coming programmers is very rewarding, and we enjoy encouraging them to use their skills for altruistic goals.

Monday, October 3, 2011

This year HelenOS, an operating system based on a multiserver microkernel design originating from Charles University, Prague, had the privilege of becoming a mentoring organization in the Google Summer of Code program. Our preparation began a couple of months before mentoring organizations started submitting their applications, but the real fun hit us when we were accepted as a mentoring organization and when the students started sending us their project proposals.

We put together about a dozen ideas for student projects and received about twenty or so official proposals. HelenOS had three mentors and we were thrilled to be given three student slots for our first year in the program. During the student application period we received a lot of patches from candidate students determined to prove their motivation and ability to work with us. It was no coincidence that the three students we chose submitted some of the most interesting patches and did the most thorough research. Two students sent us enough material to seriously attack the first milestones of their respective projects and the third student fixed several bugs, one of them on the MIPS architecture.

The three selected students were Petr Koupy, Oleg Romanenko and Jiri Zarevucky. Petr and Jiri worked on related projects focused on delivering parts of the C compiler toolchain to HelenOS while also improving our C library and improving compatibility with C and POSIX standards. Oleg chose to further extend our FAT file system server by implementing support for FAT12, FAT32, long file name extension and initial support for the exFAT file system.

When the community bonding period began and we started regular communication with our students, all three mentors, Martin Decky, Jiri Svoboda and Jakub Jermar, noticed an interesting phenomenon. Our students seemed a little shy at first, preferring one-on-one communication with their mentor, as opposed to more open communication on the mailing list. This bore some signs of the students expecting the same kind of interaction a student receives while working on a school project with a single supervisor and evaluator. Even though not entirely unexpected, this was not exactly how we intended for the students to communicate with the HelenOS team but we eventually managed to change this trend.

In short, all three of our students were pretty much technically trouble-free and met their mid-term and final milestones securely. To our relief, this was thanks to the students’ skills rather than projects being too easy. Two of our students were geographically close to their mentors so Jiri and Petr attended one or two regular HelenOS onsite project meetings held in Prague.

Besides the regular monthly team meetings, the HelenOS developers met for an annual coding week event called HelenOS Camp. This year the camp took place during the last coding week of the program and we were excited that one of our Google Summer of Code students, Petr Koupy, was able to join us for the event and hack with the rest of the HelenOS team.

Shortly after Google Summer of Code ended we merged contributions of all three students to our development branch, making their work part of the future HelenOS 0.5.0 release.

Below is a screencast showing HelenOS in its brand new role of a development platform, courtesy of Petr Koupy.

By Jakub Jermar, HelenOS Org Administrator and Mentor for Google Summer of Code