Posts from 2012

Google Code-in 2012 - Halfway Home

Friday, December 21, 2012

We are at the halfway point of the Google Code-in 2012 contest and we wanted to share some exciting stats with you. The contest is designed to introduce 13-17 year old pre-university students to the world of open source software development. During the first few weeks we have had 297 students complete at least one task in the contest. For many students this is their first introduction to the open source community.

Along with striving for certificates and t-shirts, many students are working toward the grand prize trip to Google’s Mountain View, California Campus for 20 hard working contestants next spring.

Google Code-in 2012 by the numbers

Registered Students 
  • Currently over 1900 students from 81 countries have registered for the contest. 
  • There are two new countries to add to the list this year- United Arab Emirates and Zimbabwe
  • The countries with the most registered students are (in order): 
United States    877
India                 208
Canada               92
Bulgaria              81
United Kingdom 72
Romania              68
Australia              35
Poland                 29
South Korea        29
Spain                   29

Students who have already completed tasks
  • We are excited to announce we have students completing tasks for the first time from the following countries: China, Kenya (6 students so far), Kuwait, Peru, Trinidad and Tobago, and Uruguay
  • For the following countries the student participation in 2012 has already at least doubled from earlier years: Argentina, Australia, Ireland, Singapore, and South Korea. 
Students still have plenty of time to participate in the contest. The last day to register as a student and claim a task is January 13, 2012 and all work must be submitted by January 14, 2012 at 17:00 UTC

Students can join the Google Code-in discussion list to ask questions of other students and program administrators.  We have a short screencast that describes the details of the contest and you can check out the Frequently Asked Questions and Contest Rules on the program site for more details.

Good luck and have fun!

By Stephanie Taylor, Open Source Programs

CERN Summer Thrills

Tuesday, December 18, 2012

For the physics software development group at CERN, our second year of Google Summer of Code couldn’t have come at a better time. Motivated by CernVM's awesome experience in 2011, our colleagues from the Geant4 and ROOT software projects joined us as mentors this summer. And while physicists around the world snatched the first evidence of a long-sought Higgs boson from the Large Hadron Collider (LHC), our seven Google Summer of Code students worked on core parts of the open source software engine that makes LHC data processing possible.

Two of our students worked with the Geant4 team at CERN. Geant4 is a toolkit for the simulation of the response of a material when high-energetic particles are passing through it. Geant4 can be used to model a gas detector, a gamma-ray telescope, an electronic device next to an accelerator or the inside of a satellite. In order to keep up with the rate of real data coming from the LHC detectors, Geant4 has to be both accurate and fast.

  • Stathis Kamperis improved the speed of Geant4 by re-ordering the simulation of particles according to particle type. By simulating, for instance, first all electrons, than all photons, and so on, the number of instruction cache misses decreases. In the course of this work, Stathis also ported Geant4 to Solaris which gives us access to the very powerful DTrace profiling machinery.
  • Dhruva Tirumala Bukkapatnam contemplated Geant4 pointers and data structures. He developed code for a particle navigation algorithm optimized for use on GPU architectures.

Two more students were working together with the ROOT team. The ROOT framework is the main working horse for LHC experiments to store, analyze, and visualize their data.

  • Omar Zapata Mesa worked on an MPI interface for ROOT. On a cluster of machines, the MPI interface enables ROOT to toss around its C++ objects from node to node while also integrating with ROOT's C++ interpreter.
  • Eamon Ford worked on the CERN iOS App.The App brings CERN news and information on an iPad or iPhone. In case you can’t sleep at night, you can now peek at the live display of particle collisions from inside the LHC.
For the CernVM base technology, we had three more students working with us this summer. CernVM provides a virtual appliance used to develop and run LHC data processing applications on the distributed and heterogeneous computing infrastructure that is provided by hundreds of physics institutes and research labs around the world.

  • Josip Lisec, back for his second Google Summer of Code, worked on the log analysis and visualization of CernVM Co-Pilot, the job distribution system which powers the LHC@home Test4Theory volunteer computing project. Want to see the world map of active volunteers from the 19th of November at 3:07pm?  Check out the Co-Pilot dashboard.
  • Francesco Ruvolo worked on broken network services, such as misconfigured DNS or HTTP servers. Breaking such services in a controlled way comes in handy when simulating the behavior of a CernVM running on a hotel WiFi.
  • Rachee Singh programmed maintenance tools for the content distribution network that is used by the CernVM File System to distribute terabytes of experiment software to all the worker nodes. All the proxy servers of the content distribution network can now be plotted on a map and every CernVM can automatically find a close proxy by means of a Voronoi diagram produced by Rachee's code.

Overall, we were very glad to see so much interest and enthusiasm from the student programmers in LHC software tools. We'd like to congratulate all of our students on their hard work and on successfully completing the program!

By Jacob Blomer, CERN Organization Administrator

2's Company, 3+ is a Crowd

Thursday, December 6, 2012

The Crowdsourcing Biology team at the Scripps Research Institute participated in the Google Summer of Code for the first time this year.  Five students contributed to efforts to harness the power of community intelligence to advance biomedical science.

Maximilian Ludvigsson took the first steps in the creation of Semantic BioGPS.  BioGPS is a user-extensible Web portal that provides easy access to information about genes from hundreds of different websites.  Maxmilian produced a tool that allows BioGPS users to annotate regions of gene-centric Web pages to state, computationally, what different areas of the page ‘mean’.  These semantic annotations enable scripts to extract structured content about genes from these Web pages, paving the way for a new version of BioGPS that provides integrated views across multiple data sources.

Karthik G developed an interactive network visualization for the data linking genes to diseases in the GeneWiki+.  The GeneWiki+ is a Semantic Media Wiki (SMW) installation that dynamically integrates data about human genes from Wikipedia and from SNPedia.  While SMW queries provide a great way for programmers and advanced wiki users to interact with data, the graphical network that Karthik created gives ordinary biologists a new, intuitive, and sometimes beautiful way to explore connections between genes and disease.

Clarence Leung began the development of a new version of the crowdsourcing game Dizeez.  In this new two-player game, players are challenged to get their partner to guess a particular disease by prompting them with related genes.  This game follows in the tradition of ‘games with a purpose’ such as Foldit and the ESP game by producing novel, validated gene-disease associations as a result of game play.

Shivansh Srivastava worked on migrating BioGPS’s gene report layout windowing system from ExtJS to both a jQuery windowing environment and a Yahoo User Interface-based approach.  This view in BioGPS provides biologists with a customizable environment for accessing gene-centric data from a diverse collection of sources.  Shivansh’s efforts provided BioGPS developers with insight into the technical limitations of each solution, as compared to the current BioGPS ExtJS codebase.

Kevin Wu developed a scalable and efficient system for storing and analyzing biologically meaningful sets of genes.  Accessible via a RESTful HTTP interface, the system uses MongoDB for storage and custom code for distributed computing that executes statistical comparisons across thousands of gene sets in parallel.  For any particular gene set, Kevin’s code makes it possible to rapidly identify similar gene sets and to calculate the ‘enrichment’ (a statistical measure of overlap) of that gene set with respect to any other.  This work will soon be integrated into BioGPS to allow users to save their own gene sets and to query for similar gene sets from others.

Thanks to all of our excellent students for their great contributions and to Google for sponsoring this unique program.  We are looking forward to participating in future editions of Google Summer of Code for many years to come!

By Benjamin Good and the Crowdsourcing Biology Google Summer of Code mentors

Eclipse Day at the Googleplex 2012

Tuesday, December 4, 2012

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 December 12th, 2012. Hosting this event is one way to say “thank you” and contribute back to the developer community.

Eclipse Day is a great opportunity for both Eclipse users and contributors to network and share ideas. This year we have sessions that cover Orion, the Eclipse M2M tools, BIRT, Gerrit, CDT, Dart, WindowBuilder, performance tuning in Eclipse, and the future of ALM. During the one day conference, Eclipse projects and Eclipse-based products created here at Google will also be highlighted.

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

A big thank you to Ian Skerrett and everyone at the Eclipse Foundation for assembling this great event. We are happy to welcome the Eclipse community to our campus and 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.

Pre-registration, which includes a $40 contribution to the Eclipse Foundation, is required for attendance. You may pre-register until December 11, 2012, 2pm PST.

By Alex Ruiz, Google Engineering Tools

SWIG Swings into another Successful Summer

Friday, November 30, 2012

SWIG is a software development tool that connects programs written in  C/C++ with a variety of high-level programming languages.These so called ‘target languages’ vary enormously. The most popular being the scripting languages Python, Perl, Ruby, PHP & Tcl and the strongly typed languages, Java & C#. The full list of target languages also includes various Scheme and Common Lisp languages as well as XML.

This year was SWIG's third Google Summer of Code, and out of our five students, four completed the program successfully with valuable additions to SWIG base.

Dmitry Kabak worked on SWIG internals to parse the source code documentation comments within the C/C++ header files and use them to document the target language wrapper classes/functions. Dmitry's efforts complemented the existing support added in Google Summer of Code 2008. In summary, all previously known bugs have been fixed and original source code for comment translation re-factored to improve performance and maintainability. Parsing of C/C++ source code has been improved, so that every declaration/definition can now be commented. Translation of Doxygen tags to Javadoc and Python docstrings has been improved and corresponding regression tests have been implemented. The work can be tried out on the branch gsoc2012-doxygen.

Leif Middelschulte worked on C module for SWIG. Initially this project was supposed to be about implementing missing support for "advanced" C++ features because this module was thought to already be in very good shape. Unfortunately, this was not the case so Leif's task was changed to achieve at least a minimal level of module functionality which he accomplished. Leif also rationalized and documented the use of C typemaps and more generally improved documentation and testing support. Finally, the generated C bindings were made more type-safe to disallow passing objects of different types without so much as a warning from the compiler. Leif's Google Summer of Code work can be accessed in the subversion branch gsoc2012-c.

Neha Narang worked on a JavaScript module for SWIG, particularly addressing the JavaScript Core engine. Based on the prototypical work of Ashish Sharma and Oliver Buchtala, Neha implemented basic features: global functions and variables, classes, single inheritance, constants, enums, exception handling. She added 12 common examples and started the test-suite, currently having 32 tests. Additionally, Neha created detailed documentation describing design rationale and module usage. The module is in good shape but more tasks are left to complement the test-suite and add director support. Neha's work in Google Summer of Code is available in the branch gsoc2012-javascript.

Swati Sharma spent her summer working on the Objective C module for SWIG. SWIG had an initial support for generating Objective C wrappers over C++ which was added in Google Summer of Code 2009. These wrappers will be used to make C/C++ objects available to MacOS X, iPhone, and iPad applications. Swati’s goal for the summer was to have a cleaner implementation over the existing source code and get the code ready to merge into trunk. Swati finished close to the goal with almost completely rewritten, clean implementation. Much of the source code is new and fixes a lot of rough edges. We now have a more comprehensive set of typemaps for Objective- C and C++ type conversions. Almost 90% of the test-suite works and a number of new runtime tests have been added. Makefiles have been reorganized and the structure of the generated code re-designed to equally support Apple’s cocoa framework on Macos x and GNUStep on Linux/ Windows. Swati is very keen to add more features in coming months, especially the director support, support for clang, and updated module documentation. Swati’s work can be accessed in the branch gsoc2012-objc.

We would like to thank Google for sponsoring the Google Summer of Code. A special thanks to all the mentors for their hard work and William Fulton, the co-administrator, for his guidance and support.

By Ashish Sharma, SWIG Organization administrator 

Google Code-in 2012 contest starts today!

Monday, November 26, 2012

… and Go! The Google Code-in 2012 contest has officially started!  If you are a 13-17 year old pre-university (high school) student interested in computer science who would like to learn more about open source software development while earning cool prizes, sign up on our program site today.  Students have the opportunity to select tasks from 5 categories (coding, documentation/training, quality assurance, research/outreach and user interface) that are designed by 10 open source organizations that will provide mentors for the students.  Students earn certificates, t-shirts and Grand Prize Winners will win a trip for themselves and a parent or legal guardian to Google’s Mountain View California campus in 2013. Each of the 10 open source organizations will choose 2 of the 5 students that complete the most tasks with their organization as their Grand Prize Winners for a total of 20 Grand Prize Winners for Google Code-in 2012- that’s twice as many Grand Prize Winners as last year!

Last year, 542 students from 56 countries competed in the contest: this year you could be one of the students from around the world learning new skills and making new friends by experiencing the awesome world of open source development.

If you’d like to sign up, please review the Contest Rules and Frequently Asked Questions (FAQ) on our program site. You can join our discussion list to ask any other questions. For details on important dates for the contest, see the calendar. If you meet the eligibility requirements you can create your account on the program site and start claiming tasks today!

Join us today, Nov 26th, as members of Google’s Open Source Programs Office host a Live Google Code-in Hangout on Air on the Google Education page at 2pm PST to discuss details of the contest and to answer questions from viewers. If you can’t make the live Hangout on Air it will be recorded and posted on our Google Open Source Student Programs YouTube Channel within a couple of days.

The contest ends on January 14, 2013 so start claiming tasks today.  Good luck and have fun!

By Stephanie Taylor, Google Open Source Programs

Discover the world of open source with Google Code-in 2012

Tuesday, November 20, 2012

Cross posted from the Official Google Blog

Every time you send a text, check a webpage or post a status update, you’re using open source software. The Internet is made of open source. But have you ever created any yourself? With the Google Code-in contest, pre-university students (13-17 years old) can learn more and create open source software that people all over the world can use—and win cool prizes along the way.
Starting Monday, November 26 and for the following 50 days, contest participants will work on fun online tasks for 10 different open source organizations. Possible challenges include documentation, marketing outreach, software coding, user experience research and more.

Participants earn points for each task they successfully complete and can earn prizes like T-shirts and certificates of completion. This year we’re doubling the number of grand prize winners to 20 talented students, who will win a trip to Google’s headquarters in Mountain View, Calif. They’ll spend a day getting a tour of the “Googleplex,” meeting and talking with Google engineers, plus enjoy another full day exploring San Francisco and other surprises.
Some of the 2011 Google Code-in Grand Prize Winners by the Golden Gate Bridge

Last year, 542 students from 56 countries and 360 schools completed 3,054 tasks during the eight-week contest. This year we want to encourage even more students to participate in the contest and learn about open source development. If you’d like to sign up, please review our Frequently Asked Questions and the contest rules on our program site. You can also watch our screencast, check out some sample tasks from last year’s contest and join our discussion list for any other questions. For details on important dates for the contest, see the timeline. You can register for your account on the program site when the contest opens on Monday, November 26 at 9:00am PST.

Finally, our Open Source Programs team will be hosting a Hangout on Air on the Google Education page November 26 at 2:00pm PST to discuss the details of the Google Code-in contest and answer any questions.

We hope you’ll spend your winter (or summer, for our friends in the southern hemisphere) learning about the ins and outs of open source development through hands-on experience. Ready...set...

By Stephanie Taylor, Open Source Programs

Wikimedia Students Share their Knowledge this Summer

Friday, November 16, 2012

This year the Wikimedia Foundation selected nine students to work on new features and specific improvements to the software for Google Summer of Code. The students were mentored by experienced developers who helped them become part of the development community and helped guide their code development.

Congratulations to the eight students who made it through the summer of 2012, our seventh year participating in Google Summer of Code. The students all accomplished a great deal, and many of them are working to improve their projects to benefit the Wikimedia community beyond the initial goals of their summer project.

  • Ankur Anand worked on integrating Flickr upload and geolocation into UploadWizard. Ankur made it easier for Wikimedia contributors to contribute media files and metadata. You can read his wrap-up as we anticipate the merge of his code into the main UploadWizard codebase.
  • Harry Burt worked on TranslateSvg (“Bringing the translation revolution to Wikimedia Commons”). When his work is complete and deployed, we will more easily be able to use a single picture or animation in different language wikis. See this image of the anatomy of a human kidney, for example; it has a description in eight languages, so it benefits multiple language Wikipedias (e.g., Spanish and Russian). Harry aims to allow contributors to localize the text embedded within vector files (SVGs); you can watch a demo video, try out the test site, or just read Harry’s wrap-up post
  • Akshay Chugh worked on a convention/conference extension for MediaWiki. Wikimedia conferences like Wikimania often use MediaWiki to help organize their conferences, but it takes a lot of custom programming. Akshay created the beta of an extension that a webmaster could install to provide conference-related features automatically. See his wrap-up post.
  • Ashish Dubey worked on real time collaboration in the upcoming Visual Editor (you may have seen “real-time collaborative editing” in tools like Etherpad and Google Docs). Ashish has implemented a collaboration server and other features (see his wrap-up post) and has achieved real-time “spectation,” in which readers can see an editor’s changes in real time. 

Ashish is working on the architecture that will support real-time collaboration.

As further progress happens, we’ll update our page about past Google Summer of Code students. Congratulations again to the students and their mentors. And thanks to volunteer Greg Varnum, who helped me administer this year’s Google Summer of Code, and to all the staffers and volunteers who helped students learn our ways.

By Sumana Harihareswara, Engineering Community Manager and Organization Administrator for Wikimedia Foundation

Mentoring Organizations for Google Code-in 2012 are announced

Monday, November 12, 2012

We are thrilled to announce the 10 open source organizations that will mentor students for the Google Code-in 2012, a contest introducing 13-17 year old students to open source development. Each organization will design tasks for students to work on and even though the contest begins November 26 you can now view a preliminary task list for each organization by clicking on their name below. The organizations will be busy adding more tasks to their lists in the coming weeks.

Copyleft Games Group
RTEMS Project
Sahana Software Foundation
The Fedora Project
The NetBSD Project

Starting Monday, November 26, students that meet the eligibility requirements can register on the Google Code-in program site and start claiming tasks and earning prizes.

For more important contest information please see our timeline, view our screencast, and check out the Frequently Asked Questions. You can also join our announcement and discussion lists.

You can also join the Google Code-in Administrators for a Google Code-in Hangout on Air Nov 26 at 2pm PST.

By Stephanie Taylor, Open Source Programs

Students Mixxx it up over the summer

Wednesday, November 7, 2012

Mixxx is free and open source DJ software that gives you everything you need to perform live mixes. With millions of downloads yearly and a comprehensive set of professional features, Mixxx is driving increased competition in the DJ software industry. Google Summer of Code season is always an exciting time of the year for the Mixxx team and 2012 was no exception. This is our fifth year in Google Summer of Code and we had four stellar students -- Max Linke, Matthew Mikolay, Scott Stewart, and Varun Jewalikar.

Since Mixxx is a cross-platform, performance-critical and heavily multi-threaded C++ application it can often be a daunting task for Google Summer of Code students to get acclimated to the codebase and begin contributing. This year's crop of students hit the ground running and Max, Varun, and Matthew had nearly finished their proposed projects by the time the summer started! We had to come up with extensions and follow-on projects to keep them busy.

Varun Jewalikar, from Spain, added a harmonic mixing framework to Mixxx. This highly requested feature allows DJs to see the harmonic key of songs that they are mixing and adjust the pitch in real-time so that songs are harmonically compatible. By the start of the summer Varun had already integrated 3 open source key detection libraries into Mixxx so that we could see which one worked best. He spent the rest of the summer building the pitch-adjustment feature, integration and polish.

Scott Stewart, from the USA, spent the summer revamping our Auto-DJ algorithm in Mixxx to support more advanced transitions allowing DJs to take even more breaks.

Matthew Mikolay, also from the USA, finished his project of adding a vinyl-passthrough mode to allow DJs to seamlessly switch between DJing with vinyl timecode records and their vinyl collection on the fly within the first few weeks of the summer! He spent the rest of the summer building a modular compressor into Mixxx's audio processing engine. This prevents distortion and clipping while allowing a higher dynamic range of audio in the mix.

Last but not least, Max Linke, from Germany, completed his official project before Google Summer of Code even started! He added a preview deck which allows DJs to preview a track before loading it into a real deck or sampler. For the rest of the summer Max was a solid contributor of fixes to our library system and worked on adding support for multiple library folders, improving our library scanner, and more.

In addition to their projects, the group fixed a bunch of bugs and their fixes are about to ship in our latest major release, Mixxx 1.11. We were extremely pleased with our students' progress this summer and can't wait to see what they come up with next.

Mixxx 1.10.1 with the Deere skin

Mixxx has been significantly shaped by Google Summer of Code. Two out of our four mentors this summer were previous Google Summer of Code students and Mixxx's current lead developer (yours truly) joined the project as a Google Summer of Code student in 2008. We are very grateful to Google for continuing to provide this incredible program for getting students involved in open source software.

By RJ Ryan, Mixxx Lead Developer and Google Summer of Code Organization Administrator

ns-3 networks with students over the summer

Wednesday, October 31, 2012

ns-3 is a discrete-event network simulator, with a particular emphasis on network research and education. ns-3 aims to allow researchers to move effortlessly between simulations, testbeds, and live experiments. It is designed to offer a high degree of realism in its models, through frameworks for running real application and kernel code, and also for integrating with virtual machine environments and testbeds.

At the end of the summer, we asked mentors of each of our Google Summer of Code projects to provide summaries of their respective students’ contributions over the summer, each of which is listed below.
Dizhi Zhou developed a set of MAC schedulers to be used with the ns-3 LTE module. The ns-3 LTE module already supported a real-world API (the FemtoForum LTE MAC Scheduler Interface Specification) for the implementation of LTE MAC schedulers. When the summer started only a couple of simple scheduler implementations were available (Round Robin and Proportional Fair). To address this problem, Dizhi implemented eight schedulers (FDMT, TDMT, TTA, FDBET, TDBET, FDTBFQ, TDTBFQ, PSS). In addition to the implementations, Dizhi put a significant effort into writing documentation and validating the performance of the new schedulers using some known reference scenarios. The result is a set of well-documented and well-tested scheduler models that are expected to be merged with the main ns-3 code soon, and will be very useful for many ns-3 users.
By Nicola Baldo, Mentor
Sindhuja Venkatesh developed IPv4 Netfilter and NAT code for ns-3 during her 2012 Google Summer of Code project. This project started by picking up netfilter and connection tracking code that had been partially completed during a previous Google Summer of Code project by Qasim Javed. The first portion of the program worked on updating and refining the Netfilter portion of the code, which provides an extensible mechanism for inserting packet filtering and mangling operations into well-defined locations in the IPv4 stack.  As proof-of-concept, a basic NAT was written on top of this framework.  After the midterm exam, Sindhu continued to work on more complete NAT models by writing dedicated IPv4 NAT code hooked into the netfilter framework.  Two primary modes of NAT were implemented, a static one-to-one NAT and a dynamic NAT with port translation.  A NAT helper object was also written, along with a few examples and documentation for the models.  While there remain a few loose ends to complete before merging to ns-3-dev, we are hopeful to be able to complete and merge these models in the next ns-3 release cycle.
By Tom Henderson, Mentor
Mudit Gupta spent his summer designing and developing interfaces aimed at integrating ns-3 with an HLA (High Level Architecture) Federation. The first issue Mudit was faced with was how to communicate between the various federates. Although ns-3 is compliant with the latest LLVM compilers, the HLA components are not. Hence it was impossible to simply integrate the C++ HLA interfaces into ns-3. The chosen workaround was to build a Java ns-3 Federate object acting as a stub and communicating with the main ns-3 code through “normal” sockets. This solution is sub-optimal and the plan is to move to proper C++ interfeces as soon as the HLA implementations (i.e., Portico or CERTI) will be updated to support LLVM. The second problem was to synchronize the ns-3 time reference with the Federation one. The solution relies on a modification of the real-time ns-3 scheduler, with a virtual clock advanced by the RTI Federation messages rather than the hardware PC clock. The last issue Mudit worked on was the interaction between the Federates. The ns-3 module is able to receive Objects from the Federates along with their Attributes but such Objects and Attributes are currently unspecified, as there is no actual ns-3 module using them. A proof-of-concept module has been developed, showing how to receive the Object and its Attributes.
By Tommaso Pecorella, Mentor

We hope Dizhi, Sindhujha, and Mudit will continue their involvement with the ns-3 project, and community outside of Google Summer of Code as well. On a concluding note, we’d like to thank Google once again for accepting us into the program this year. We look forward to applying for Google Summer of Code 2013!

By Lalith Suresh, ns-3 Organization Administrator

Get Ready to Vote with Google

Monday, October 29, 2012

(Cross-posted from the Official Google Blog and the Politics and Elections blog)
Every four years in the United States, people prepare to head to the polls and increasingly search for information about how to register to vote, where to vote and who is on their ballot. Even though it is 2012, important voting information is disorganized and hard to find on the Internet. To help voters research candidates and successfully cast their ballot on Election Day, we’ve launched our new Voter Information Tool

You can enter your address to find information on your polling place, early vote locations, ballot information with links to candidates’ social media sites and voting rules and requirements. The tool is easy to embed on any website and is open source so developers can modify it to create custom versions. We're working with a number of media partners to ensure the tool is accessible across the web, and partners like Foursquare and AT&T are doing great work building apps on our Civic Information API

We hope this tool will help make getting to the polls and casting your ballot as simple as possible.

Lenses, Folds, and Traversals: Haskell Meet-up

Wednesday, October 24, 2012

The Google San Francisco office hosted a talk by Edward Kmett called "Lenses, Folds, and Traversals" which was well attended by the local Bay Area Haskell Users group as well as Google employees on Thursday, October 18,  2012. Almost 100 people turned up to hear why the power is in the dot (as explained by Gavin Bierman, Erik Meijer and Wolfram Schulte in their 2002 paper "The essence of data access in Cω: The power is in the dot"). This paper pushed the boundaries of our understanding of how to build data-access features for programming languages that go beyond naıve access via simple APIs) by greatly generalizing member access (e.g. over choice types). Although this paper resorted to the creation of a new language to support innovations in data-access (and concurrency) this talk by Edward showed how generalized member-access could be achieved using just a regular library in Haskell as exemplified by his lens library.

Edward presented a beautifully crafted set of APL-like combinators that allow programmers to navigate through structured data and perform generalized operations for access and modification. The core concept in the library is of a lens which groups together a 'setter' and a 'getter':

data Lens a b = Lens { set :: a -> b -> a
                    , view :: a -> b

where informally the idea is that a lens give you a way to extract from an object (of type a) some information (of type b) by using the view function and also to let you perform the reverse i.e. using the set function, take an object of type a and a value of type b and return a new object of type a with the sub-information about type b suitably incorporated. The actual definition of lens in Edward's library is different (it is cast in terms of a functor). Lenses are essentially composable functional references. The talk showed how lenses can be composed using the ordinary function composition operator (.) in Haskell. The talk then illustrated a scheme for performing lens-based folds and traversals in a highly composable manner and climaxed with the impossible: the overloading of function application. For the grand finale, Edward explained how lenses are just the functors, foldables, traversals and functions that (hard-core Haskell) people already know how to use.

Here is a specific example which shows the result of computing an expression using Haskell's command-line interpreter:

ghci> over (mapped._2) succ [(1,2),(3,4)]

Informally, here we see the successor function succ applied to the second element of every structure contained by the top-level structure i.e. 2 is mapped to 3 and 4 is mapped to 5. The over function is used to modify the target of a lens (or all the targets of setters or traversals) with a function. The mapped function is a setter that can be used to map over all the values in a functor. The _2 operation accesses the second field of a tuple.

You can view Edward's slides and an earlier talk on the subject. Alternatively, @PLT_Borat could have just told you that "Costate Comonad Coalgebra is the equivalent of Java's member variable update technology for Haskell".

By Satnam Singh, Google

Ashier: Automating Terminal Interactions with Templates

Sunday, October 21, 2012

We are pleased to announce the open source release of Ashier, a utility that allows users to automate terminal interactions with templates.

Have you ever returned from lunch, only to find that the program you started an hour ago had made no progress because it was waiting for you to answer a trivial question?  Terminal interaction automation is a technique that automatically enters commands and answers program prompts in a terminal even when you are away from the keyboard.

Ashier offers several advantages over traditional tools (such as expect): a template language that replaces regular expressions in many situations, support for nested multiline textual data parsing, and the ability to integrate with response logic implemented in any language.

Ashier aims to make terminal interaction automation simpler and more accessible to users — so you can spend less time at your computer and still get more work done.

By Chuan-kai Lin, Site Reliability Engineering Team

Celebrating Dart’s birthday with the first release of the Dart SDK

Tuesday, October 16, 2012

Working with a combination of small scripts to create large web apps is no easy task.  This is why a year ago we released a technology preview of Dart, a project that includes a modern language, libraries and tools for building complex web applications. Today, after plowing through thousands of bug reports and feature requests from the web community, a new, more stable and comprehensive version of Dart is now available and ready to use.

Dart is carefully designed so that you can build your web apps without having to choose between static and dynamic languages. With Dart, you can start coding simple scripts on your own and scale seamlessly to building large apps with hundreds of thousands of lines of code.  These complex apps can also be supported by a big team with a significantly reduced debugging and maintenance overhead.

With this first developer-oriented version of the Dart SDK, we’ve made several improvements and added many features:

A faster Dart Virtual Machine that outperforms even V8 on some Octane tests.
A new Dart to JavaScript translator that generates fast and compact output.
An HTML library that works transparently on modern browsers.
A library to interoperate with JavaScript code.
An easy to use editor.
Pub, a new package manager
Dartium, a Chromium build with native Dart support.
A server-side I/O library.
A language specification describing the Dart semantics, including new features.

Over the following months, we will continue to work hard to evolve the SDK, improve Dart’s robustness and performance, and fine-tune the language while maintaining backwards compatibility.

You can download the Dart Editor from It comes with a copy of the open-source SDK and Dartium. Thanks again for all your feedback - keep it coming.

Posted by Lars Bak, Software Engineer

Introducing Supersonic Query Engine

Monday, October 15, 2012

We are happy to announce the open source release of Supersonic, a query engine library, that is extremely useful for creating a column oriented database back-end.

Supersonic’s main strength lies in its speed. It is a cache-aware engine which exploits several low-level optimization techniques to ensure second-to-none execution times and high throughput. By making use of SIMD instructions and efficient pipelining we make columnar data processing very fast.

The engine supports a wide variety of typical columnar operations as well as many other specialized functionalities. We believe it to be a useful tool for those of you working on new DBMS solutions to help handle your data more effectively.

For some pointers on how to get started with the library visit the project page on Google Code. We also host a discussion group where you can get up to speed on the latest development news.

By Supersonic Team

Opening doors for students this summer

Wednesday, October 10, 2012

This summer, openSUSE had another great experience participating in the Google Summer of Code. While working on the list of ideas for our fifth year of Google Summer of Code projects, we decided to encourage students to apply not only for openSUSE-specific projects, but also for projects that would be useful to our upstreams and to other distributions. We love working with other organizations, which is why we always try to push for more collaboration.

Nine of our students successfully completed their projects, and we’d like to share their accomplishments with you below.

Beautiful 1-Click Install, by Saurabh Sood
One of openSUSE’s features is the “one click installer” which needed a visual refresh.  Saurabh made a great deal of progress on the installer, as you can see in some of the screenshots on his weblog, and we’re all looking forward to getting it into the main distribution.

Complete AppStream/Software-Center, by Matthias Klumpp
Matthias tackled the challenge of making the PackageKit-based software center work nicely on several distributions by improving the performance of PackageKit, adding new support for parallel transactions and making backend API changes. He also made improvements to the software center itself making it super fast and able to work better on non-Ubuntu distributions. On top of that, he created a new library to handle the appstream metadata that will be used by several other projects.

openSUSE Karma plugin for openSUSE Connect, by Priyanka M
openSUSE has a social network called “Connect”.  This summer, Priyanka wrote a karma plugin that functions similarly to StackOverflow’s reputation system.  openSUSE users get karma points for things like Bugzilla activity, or promoting openSUSE in social media.

osc2 client, by Marcus Hüwe
The Open Build Service is a service openSUSE provides to allow people to easily build packages for a variety of distributions like openSUSE, SLES, Fedora, and Ubuntu.  The command line client for interacting with this service is osc.  This summer, Marcus continued his previous Google Summer of Code work on the second version of the client.

Popularity Contest for RPM (popcorn), by Akshit Khurana
Akshit spent his summer improving Popcorn, which is inspired by Debian’s “popcon”, a system of (voluntarily) tracking how popular packages are in the install base, which is very useful information for a distro.

Redesign fdisk to be more extensible and implement GPT support, by Davidlohr Bueso
Davidlohr worked upstream on refactoring and modernising fdisk. He managed to clean up and modularize a lot of complicated fdisk code, which will make it easier in the future to support more disklabels and add more functionality, as well as creating a planned libfdisk library.

Scanny, by Piotr Niełacny
Scanny is a Ruby on Rails security scanner, which parses Ruby files, looks for suspicious patterns, and produces a report.  Piotr added new security checks, designed and implemented a proper command-line interface, and tested the project on several real-world applications which led to various performance gains and other improvements.

Upstream/Downstream Tracker, by N.B. Prashanth
Distributions usually have tools for tracking new versions upstream, but the existing tools are all pretty much limited to one distribution, and have some limitations.  The goal for this project was to take some existing work done for openSUSE, and turn it into the backend of a more complete system. A rails web application was also created to be able to see the upstream versions as well as administer the packages to be tracked.

Writable snapshot support for ext4, by Yongqiang Yang
Yongqiang worked on adding writable snapshot support to ext4. The code written during the project is available here, and people can test it with packages from the openSUSE Build Service repository.

It has been an exciting summer for all of us - students, mentors and administrators, and the openSUSE community. openSUSE will benefit greatly from the results of these projects, and we do hope the larger free software community will also enjoy what our students produced. Many thanks to Google for organizing Google Summer of Code, and we look forward to another wonderful summer next year!

By Matt Barringer and Vincent Untz, openSUSE Organization Administrators

ReFr: A New Open-Source Framework for Building Reranking Models

Thursday, October 4, 2012

We are pleased to announce the release of an open source, general-purpose framework designed for reranking problems, ReFr (Reranker Framework), now available at:

Many types of systems capable of processing speech and human language text produce multiple hypothesized outputs for a given input, each with a score. In the case of machine translation systems, these hypotheses correspond to possible translations from some sentence in a source language to a target language. In the case of speech recognition, the hypotheses are possible word sequences of what was said derived from the input audio. The goal of such systems is usually to produce a single output for a given input, and so they almost always just pick the highest-scoring hypothesis.

A reranker is a system that uses a trained model to rerank these scored hypotheses, possibly inducing a different ranked order. The goal is that by employing a second model after the fact, one can make use of additional information not available to the original model, and produce better overall results. This approach has been shown to be useful for a wide variety of speech and natural language processing problems, and was the subject of one of the groups at the 2011 summer workshop at Johns Hopkins’ Center for Language and Speech Processing. At that workshop, led by Professor Brian Roark of Oregon Health & Science University, we began building a general-purpose framework for training and using reranking models. The result of all this work is ReFr.

From the outset, we designed ReFr with both speed and flexibility in mind. The core implementation is entirely in C++, with a flexible architecture allowing rich experimentation with both features and learning methods. The framework also employs a powerful runtime configuration mechanism to make experimentation even easier. Finally, ReFr leverages the parallel processing power of Hadoop to train and use large-scale reranking models in a distributed computing environment.

By Dan Bikel and Keith Hall, Research Scientists at Google

Who’s New in Google Summer of Code 2012: Part 6

Wednesday, October 3, 2012

For our final installment of our summer series featuring new organizations that participated in Google Summer of Code 2012 we have wrap up posts from OWASP, Outercurve and 52°North.
Being part of Google Summer of Code this year was truly an awesome experience both for students and OWASP mentors alike. OWASP is an open source community dedicated to enabling organizations to conceive, develop, acquire, operate, and maintain applications that can be trusted. However, it is usually challenging getting students to develop code for OWASP projects because application security is considered a difficult, and sometimes complex subject. 
Google Summer of Code acted as a window between OWASP and the academic world, enabling students to work first-hand with highly skilled application security professionals. 
The following OWASP projects took part in Google Summer of Code 2012: 
OWASP Zed Attack Proxy
  • Cosmin Stefan rewrote the existing ZAP spider, making it it much faster and more accurate. He also enhanced ZAP to manage HTTP sessions, which will be a key feature that we can build on for future releases.
  • Guifre Ruiz added a new Ajax spider to ZAP by integrating with crawljax project, which will allow ZAP to spider AJAX applications much more effectively. He not only had to understand the ZAP code but also delved into the crawljax code and has submitted a series of enhancements back to the crawljax project as well.
  • Robert Koch (c/o Mozilla) added Web Sockets support to ZAP, exceeding the capabilities of any other  security tool in this aspect, free or commercial.
"This is the first year I've been involved in Google Summer of Code, and I'm delighted to say it has been an overwhelming success. We had 3 students working on the Zed Attack Proxy project, and I have been very impressed with the quality of their work. They all required a lot less hand-holding than I expected - they all just got stuck in, while still keeping their mentors up to date and asking questions when necessary. They were all very dedicated and produced code which has significantly enhanced the project. While I'm obviously hoping that they will carry on contributing, even if they don't I'll still consider this to have been very worthwhile and will be very keen to participate next year." - Simon Bennetts, mentor 
OWASP AppSensorRauf Butt extended the AppSensor project by building a SOAP-based web service in Java to allow multiple Java applications to access the same AppSensor detection engine. 
"The Google Summer of Code was a good experience for the AppSensor project. We had lots of needs to cover, so our scope was initially too large. Through the course of the first half of the summer, it became evident that this was the case. Through helpful discussions with our student as well as experiences related from those who had been through the process before, we were able to narrow our focus and produce a more defined project that will serve as the basis for the next version of AppSensor." - John Melton, mentor 
OWASP Hackademics “Pragya Gupta developed a new frontend for the OWASP Hackademic Challenges which implements CMS-like functionality, simplifies installation and facilitates the automated addition of new challenges. The additional functionality will significantly help professors and tutors in real class environments.” - Konstantinos Papapanagiotou, mentor 
Kudos to the Open Source Team at Google and special thanks to Carol Smith who guided us through this initiative! 
By Fabio Cerullo, OWASP Google Summer of Code 2012 Org Administrator
The Outercurve Foundation provides software IP management and project development governance to enable and encourage organizations to develop software collaboratively in open source communities.  Outercurve was accepted as a mentoring organization for our first Google Summer of Code in 2012, being awarded two slots for student projects.  
Of the project proposals we received, a number of students stood out in discussing and evolving their proposals with Outercurve mentors during the submissions period.  The two projects we chose were: 
  • Irina Grosu from Romania with her project to add modules to Outercurve Mayhem to integrate Microsoft Office, the Google API, Bluetooth connectivity, and Skype.   
  • Cristina Turken, also from Romania, worked on creating a GUI-based desktop application that allows software publishers to create an Outercurve CoApp package, (instead of using the command line tools).  
While we were very excited to participate in the Google Summer of Code, we had a problem: these were not the only two excellent proposals we received from students. The Outercurve Mayhem and Outercurve CoApp projects each wanted to support at least one more student proposal. The project leaders (finding budget at Microsoft) and Outercurve jointly funded two more student proposals. 
The two "Outercurve" Summer of Code projects accepted were:  
  • Henrik Juvonen in Finland wanted to build CoApp for Visual Studio so that CoApp library packages (native C/C++ and .NET) can be discovered, installed, and updated without ever having to leave the development environment.
  • Anirudh Ranganath India wanted to add a number of events and responses to Mayhem for monitoring charging states, noting USB device connect/disconnect, and an Alarm event, as well as putting the computer in different power modes (sleep, hibernation, shut down) and setting the volume level.
Over the next few weeks we will showcase all of our students’ work. I’d like to thank Google for the opportunity to participate, the project leaders for finding the funds to co-sponsor additional student projects, and our mentors.  I would especially like to thank our students for all their hard work. I hope they all found the summer worthwhile and will continue to participate with their Outercurve Foundation projects of choice. 
By Stephen R. Walli, Outercurve Foundation Technical Director 
The open source software initiative 52°North is an open international network of partners from research, industry and public administration. Its main purpose is to foster innovation in the field of Geoinformatics through a collaborative R&D process. The R&D process takes place within 52°North R&D communities, which develop new concepts and technologies such as for managing near real-time sensor data, integrating geoprocessing technologies into SDIs, making use of GRID and Cloud technologies. The developers evaluate new macro trends, such as the Internet of Things, the Semantic Web or Linked Open Data, and find ways to unfold their use in practice. 
As a Google Summer of Code first-timer, 52°North was thrilled to be chosen as a mentoring organization and particularly proud to welcome four students to work on different projects in the fields of Sensor Web, Web of Things and Geoprocessing this summer. 52°North’s overall goals with the student projects this summer was to improve the usability of the products and extend the user base to new domains. 
  • Sarah Harvey’s project, On-demand transformation of Open Street Map Data into common GIS format, brings the power of the 52°North WPS to the popular Open Source Mapping project. It deals primarily with providing bindings for OpenStreetMap data so that they may be used within the Web Processing Service (WPS).
  • Alexander Kmoch enabled easy integration of user implemented encodings for observations to the 52°North Sensor Observation Service (SOS). In his “Exchangeable Encodings for SOS” project, he developed and integrated a plugin mechanism into an SOS server for plain CSV (comma separated values), as well as WaterML 2.0 response formats.
  • In his project, GIS link to the Web of Things, Sidhant Hasija created a link between the rising Web of Things with standard GIS by implementing the GeoServices REST Specification for the Arduino-powered SenseBox devices.
  • Shubham Sachdeva focused on 52°North Sensor Observation Services installation and subsequent maintenance issues. In his project, "SOS Administrator", he developed an initial configuration and installation wizard, as well as a powerful administrative back-end, both browser-based and platform independent.
By Daniel Nüst, 52°North Google Summer of Code Organization Administrator

We will start posting more Google Summer of Code wrap-ups from returning organizations later this week.

By Stephanie Taylor, Open Source Programs

Google Code-in Contest for High School Students Starts this November

Monday, September 24, 2012

Today marks the launch of the third Google Code-in, an international contest introducing 13-17 year old pre-university students to the world of open source software development. The goal of the contest is to give students the opportunity to explore the many types of projects and tasks involved in open source software development. Globally, open source software development is becoming a major factor in all industries from governments, healthcare, and relief efforts to gaming and large tech companies.

When you hear the term “open source” do you ask yourself:

  • What exactly is open source?  
  • How can I get involved in open source software development if I’m just starting to learn how to code?
  • What types of work do open source projects do?  
  • I’d like to work on open source but I’m not really a coder, what else can I do?
  • I’ve never worked on a global project using IRC and chat groups: can someone help me?

If you’ve wondered about any of these questions and are a pre-university student (age 13-17) then you should join in on the fun with the Google Code-in contest starting November 26, 2012.

From late November to mid January, students will be able to work with 10 open source projects on a variety of tasks. These projects have all successfully served as mentoring organizations working with university students in our Google Summer of Code program.

The types of tasks students will be working on will fall into the following categories:

  1. Code: Tasks related to writing or refactoring code
  2. Documentation/Training: Tasks related to creating/editing documents and helping others learn more
  3. Outreach/research: Tasks related to community management, outreach/marketing, or studying problems and recommending solutions
  4. Quality Assurance: Tasks related to testing and ensuring code is of high quality
  5. User Interface: Tasks related to user experience research or user interface design and interaction

Over the last two years we have had 904 students compete in the contest from 65 countries. This past January we announced the 10 Grand Prize Winners for the 2011 Google Code-in. In June, we flew the winners and a parent/legal guardian to Google’s Mountain View, CA headquarters for a 5 day/4 night trip complete with an awards ceremony, talks with Google engineers, Google campus tour, and a full day of fun in San Francisco.

Visit the Frequently Asked Questions page on the Google Code-in site for more details on how to sign up and participate. Please help us spread the word to your friends around the globe. If you are a teacher that would like to encourage your students to participate, please send an email to our team at We would be happy to answer any questions you may have.

Stay tuned to the contest site and subscribe to our mailing list for more updates on the contest. We will announce the 10 open source organizations that will be participating in the contest on November 12. The Google Code-in contest starts on November 26, 2012, and we look forward to welcoming hundreds of students from around the world into the open source family.

By Stephanie Taylor, Open Source Programs