opensource.google.com

Menu

Lovefield: a powerful Javascript SQL-like database query engine for the web

Monday, November 17, 2014

Today we are announcing the release of a powerful library to be added to the arsenal of every web developer's toolbox. Since WebSQL standardization efforts ceased in 2010, there has been no cross-browser relational database solution for web clients. Existing persistence solutions such as IndexedDB and LocalStorage fall under the category of object-oriented storage and therefore lack traditional relational database features.


Lovefield is finally closing that gap by providing a feature rich database query engine built using IndexedDB as a backend. It provides an intuitive SQL-like declarative syntax such that developers can pick it up with minimal effort. Its declarative form provides immunity to SQL injection attacks, since there is no query parsing involved. The feature list includes:


  • select, insert, update, delete queries.
  • atomicity with intuitive transaction semantics (unlike IndexedDB’s surprising auto-commit behavior).
  • integrity constraint checks (primary key, unique, nullable/not-nullable).
  • aggregators (count, min, max, sum, avg, stddev, distinct)
  • "group by" for select queries.
  • multi-table join
  • easier schema upgrade mechanism than IndexedDB.
  • cross browser support (Chrome, Firefox, IE10).


On the performance front, Lovefield includes a query optimizer which will evaluate different execution plans and finally pick the most promising. We are confident that current performance will satisfy the majority of use cases (less than 50k rows) and we plan to further improve the performance for larger datasets in the near future.


Lovefield’s vision is captured in this specification document and we are working to provide some more exciting features such as foreign keys, cascaded delete/update, self-table join, observers/data-binding, in the near future.


Lovefield is already successfully powering a few Google services, including Google Play Movies Chrome app. With this open source release we are hoping to enable the development of data-rich applications and to attract interest and feedback from developers which will allow us to better understand how to move forward.


By Demetrios Papadopoulos, Chrome team

Google Summer of Code Wrap up: Point Cloud Library

Friday, November 14, 2014

Today’s Google Summer of Code wrap up comes from Federico Tombari at the Point Cloud Library project, a 2D/3D image and point cloud processing framework.

pointcloudlibrary_horz_large_pos.png

For the third year, the Point Cloud Library (PCL) organization has been a participant in Google Summer of Code. We had the opportunity to mentor 12 students who spent the summer developing projects related to 3D computer vision and robotic perception.

This year, I had the pleasure to mentor two students: Manuel Gesto and Jilliam Diaz Barros. Manuel worked on porting a recent algorithm (proposed last year at the ICRA conference by Karphaty et al.) related to object discovery. The idea is that a robot can wander around a room or a building, reconstruct the surrounding environment through Kinect Fusion techniques and then try to extract interesting parts - possibly objects - out of this 3D representation without an explicit training set. Manuel worked well in implementing on his own a segmentation method that was required for the algorithm. Jilliam worked on stereo matching techniques. She implemented two state-of-the-art algorithms, one focused on efficiency and the other on accuracy, which will enrich the stereo module already present in PCL. Also, she validated her work with a comprehensive experimental evaluation using benchmark datasets.

Alex Ichim from our organization worked with Andrei Militaru, a BSc student in Computer Science from Jacobs University in Germany. We looked into efficient representations for head models in the context of face reconstruction using RGB-D devices such as the Microsoft Kinect. In order to counteract the heavy noise and missing data from this kind of camera, we employed the concept of statistical face models (first introduced by Blanz and Vetter at Siggraph ‘99). To demonstrate this, we built an application that uses live data from the camera, registers and integrates it into a point cloud using the Kinect Fusion implementation in PCL; in parallel, another thread uses the data and fits the statistical model to it, yielding a low resolution face model that updates in realtime as more views of the actor are acquired.

Markus Schoeler was another student working with us this year. His project consisted of two sub projects, namely implementing the Locally Convex Connected Patches (LCCP) algorithm and a shape generator. The LCCP algorithm was published on this year’s CVPR conference and aims at segmenting a scene into objects and parts (by tuning parameters, you can "select" the desired level of detail). The shape generator puts special emphasis on giving users full control of how they assign labels in scenes. This makes it possible to easily create annotated data and decide how coarse the segmentation should be.

Federico Tombari, Organization Co-Administrator, Point Cloud Library

Geometry Math Library for C++ Game Developers: MathFu

Thursday, November 13, 2014

(Cross-posted with the Google Developers Blog)

Today we're announcing the 1.0 release of MathFu, a cross-platform geometry math library for C++ game developers.  MathFu is a C++ math library developed primarily for games focused on simplicity and efficiency.


It provides a suite of vector, matrix and quaternion classes to perform basic geometry suitable for game developers.  This functionality can be used to construct geometry for graphics libraries like OpenGL or perform calculations for animation or physics systems.


The library is written in portable C++ with SIMD compiler intrinsics and has been tested on Android, Linux, OS X and Windows.


You can download the latest open source release from our GitHub page.  We invite you to contribute to the project and join our discussion list!


By Stewart Miles, Fun Propulsion Labs at Google*


*Fun Propulsion Labs is a team within Google that's dedicated to advancing gaming on Android and other platforms.


Get the scoop on the Mentoring Organizations for Google Code-in 2014

Wednesday, November 12, 2014

We are excited to announce the 12 open source projects that will be acting as mentoring organizations for the Google Code-in 2014 contest that starts December 1st. The contest is designed to introduce 13-17 year old pre-university students to open source software development, giving them the opportunity to take the skills they have been learning in the classroom (or on their own) and apply them to a real software project. These open source projects have experienced mentors available  all have participated in Google Summer of Code in the past with many also participating in previous years of Google Code-in.

GCI-2014-with border.jpg

Before the contest begins, students should read up on the different mentoring organizations participating this year by clicking on the links below.
Apertium - a platform for making rule-based machine translation systems
BRL-CAD - a computer aided solid modeling system
Copyleft Games Group - promotes players’ rights to create, play, modify, and share games
Drupal - a content management platform
FOSSASIA - a non-profit organization supporting developers and makers of the Free and Open Source community in Asia
Haiku - an operating system, fast and simple, inspired by BeOS
KDE -  a powerful graphical desktop environment for Unix-like workstations
Mifos - a non-profit org that brings technology-enabled financial services to the poor
OpenMRS - a medical records system platform for developing countries
Sahana Software Foundation - humanitarian open source disaster management software
Sugar Labs - a learning platform that reinvents how computers are used for primary education
Wikimedia Foundation - MediaWiki and extensions, powering Wikipedia and thousands of collaborative websites

Organizations will provide a list of tasks for students to work on during the contest in the following categories: coding, documentation, user interface, quality assurance, outreach, research, and training. Each task has at least one mentor assigned to it to help students should they have questions.  

The mentoring organizations are all busy working on identifying hundreds of tasks for students to chose from when the contest starts on December 1st. This year there are also beginner tasks available for students which are a great way for students to start working with the organizations and get a more complete understanding of the projects right away.

Starting on Monday, December 1st at 17:00 UTC, students that meet the eligibility requirements can register on the Google Code-in contest site and start claiming tasks and earning prizes.

For important contest information please check out the contest site for Contest Rules, Frequently Asked Questions and Important Dates.  We have a screencast about the contest available to view on our program site where you can also find flyers and other helpful information including the new Getting Started Guide. You can also join our announcement and discussion lists to talk with other students, mentors and organization administrators about the contest.

Students, join in the fun – Google Code-in starts Monday, December 1st!

By Stephanie Taylor, Open Source Programs

GSoC Reunion Recap with Cyrille Artho

Tuesday, November 11, 2014

To celebrate the tenth year of Google Summer of Code (GSoC), we recently welcomed over 500 people who’ve participated over the years to a special Reunion event. We’d like to share a few recaps of the event from the perspectives of students and mentors who joined us from 50 different countries. Today’s summary comes from Cyrille Artho, a five-year GSoC mentor from the Java PathFinder and LyX projects.

920x156xbanner-gsoc2014.png.pagespeed.ic.gdr4t3Igca.png

Having been a mentor for Google Summer of Code for five years, I had always wondered what the annual mentor summit was about. However, because October is usually a very busy time of the year, my schedule had never made it possible for me to join... until this year’s special reunion where both students and mentors from all years of the program were invited.

This year's event was the biggest one ever with a crowd so large that finding someone was not easy. I had never met anyone from the summit in person so it was nice to see Stefano, my fellow LyX project mentor, in the hotel lobby. From there we could proceed straight to registration and the reception, and finally discuss our experiences with GSoC face to face. Up to that point, thousands of kilometers and usually 7 or 8 time zones had always separated me from fellow developers and mentors, as I am located in Japan.
photo 2.JPG

The next day, I chose to stay in the event meeting rooms instead of going to the theme park so I could get some work done while also having a chance to see what other people are working on. It is interesting that Google does not restrict GSoC to “infrastructure-critical" projects, but also includes games. However, games are not necessarily simple software; some games require complex algorithms to keep information from many clients consistent, so some of the software can be just as complex as part of an OS kernel.

The second day ended with a big reception featuring guest speakers at the San Jose Tech Museum where it was interesting to see what can make a project successful in Linus Torvalds' opinion. The code has to fulfill certain quality standards --"good taste", as he called it -- but persistence is just as important as that. Nowadays, with so many projects being available as open source, something that is just released and then updated for a few weeks after that is just a blip on the radar that will no longer be noticed by the community.

The weekend was dedicated to the heart of the event, the "unconference" sessions, which were for me the highlight of the reunion. I was actually surprised that a few free slots were available early on (as I consider the early slots to be the most valuable ones), so I jumped in and proposed a session on testing. It was interesting for me to see that everybody who attended is using some sort of automated testing at some level, but almost nobody is happy with the tools that exist today. Although people see the benefit of testing, creating and maintaining test cases is still a burden and we need higher-level tools that help us with that. Unfortunately, if we move towards test case generation, it is impossible to create a single tool that caters to everyone, so we need tools that can interoperate. Open source is good at that, but the process can still take years or even decades, as we need to solve open research problems and then come up with some standards so we can (in the hopefully not-so-far future) combine partial solutions into a big ensemble.

Other sessions were dedicated to both technical and non-technical topics (for example, how to make our GSoC projects successful), and also included tutorial-like presentations. This helped me understand what some projects (such as crash reporting tools) or groups were about in a way that I would probably not have found when looking for information in the virtual world. I also liked that people could come up with suggestions on session topics in real time, although this sometimes meant that a session that I would have liked to join was canceled just as it was about to begin, or some sessions ended up drawing only a few people while others had more attendees than seats were available in the room.

All in all it was a very intense and enjoyable weekend, and I will try to keep that late October weekend free from now on to increase my chances of attending future summits!

By Cyrille Artho
.