opensource.google.com

Menu

Posts from November 2015

Google Summer of Code wrap-up: Drupal

Friday, November 20, 2015


Drupal is our featured Google Summer of Code organization this week. A long time Google Summer of Code and Google Code-in mentoring organization, they worked with 12 students last summer.
drupal_logo-blue.png
Hi, we're Drupal, a PHP-based content management system powering roughly 2% of all websites on the Internet and we participated in Google Summer of Code 2015 (GSoC) with a dozen projects! We have participated in 10 out of 11 years and this is no easy accomplishment. It is the dedication of each and every student who inspire us to volunteer our time year after year. Every GSoC excites us as we discover the next generation of programmers who will hopefully integrate themselves within our community.

Student work was focused on porting common modules to Drupal 8 (our newest version). Drupal 8 is a major change from a coding and systems architecture point of view, forcing students to resolve advanced logic issues on their own. Not only did students learn best practices of Drupal, but they adapted our new core technologies Symfony2 and Twig. Below is a list of our projects completed in GSoC 2015.

  • Shitiz Garg aka Dragoon: Hawk Authentication Integration for Drupal 8 - created a module to support HAWK, an HTTP authentication scheme using a message authentication code (MAC) algorithm to provide partial HTTP request cryptographic verification.

  • Lucian Hangea aka lhangea: Making Drupal smarter by learning from users’ behavior - provided a general framework to conduct experiments for advanced AI usages in Drupal by using a class of algorithms called multi-armed bandit algorithms which use reinforcement learning to display content variations based on user behavior.

  • Palash Vijay aka Palashvijay4O: Port Quick Tabs module to Drupal 8 - updated module to newest version providing an easy way to render tabs using Ajax as blocks of content.

  • Abhishek Kumar aka abhishek.kumar: Content Staging Solution for Drupal 8 - managed the transfer of content between sites based on CouchDB Replication Protocol in Drupal 8 with simple admin user interface plus command line options in Drush.

  • Sachini Herath aka sachini: Linked Data mapping tool for Drupal 8 and the Google Knowledge Graph - allows site builders to map their content to Freebase and WikiData from Drupal 8 with two options: 1. Map entity types such as nodes and taxonomy terms with Knowledge Graph. 2. Map content created using built-in WYSIWYG editor to Knowledge Graph.

  • Shivanshu Agrawal aka shivanshuag: Extending Site Audit and porting to Drupal 8 - updated an analysis platform that generates reports with actionable best practice recommendations in Drupal 8 plus implemented additional tests requested by top development agencies already familiar with the system who were surveyed by the student during proposal research.

  • Prateek Mehta aka prateekmehta: URL Embed Module for Drupal 8 - built a framework for CKEditor allowing users to display an embedded representation of a URL. Content of the URL can be video, images, rich text or a link.

  • Viktor Bán aka banviktor: Port Security Review to Drupal 8 - port new version of this module that helps site administrators automate testing for many of the easy-to-make mistakes that render your site insecure and create new tests to verify current best practices in security.

  • Alok Pandey aka zealfire: Port Print Module to Drupal 8 - update module to newest version utilizing APIs made available in Drupal 8 to make the architecture more stable and pre-processing of node's content into more robust printable formats.

Growth is critical to any community and we're proud that three of our 2014 students returned in 2015. In addition, student-alumni continue to become mentors after graduation and we're thrilled to see alumni-mentors returning annually who ultimately push this cycle of innovation forward. Most specifically, Drupal was lucky to find Chandan Singh aka cs_shadow who went from student to mentor and recently became our backup organization administrator. The system works!

A tip to mentoring organisations: utilize an org admin who does not mentor any specific project yet overlooks all projects with all students in a weekly check-in meeting. It was clear after the first and second weeks that our check-in meeting was effective. A few students needed a bit of guidance when it came to summarizing work and providing code to review (working with every student is a full time job in itself). However, by the end of summer students provided professional weekly reports that project managers in a real job would love to review. Plus students were able to share resources and peer review each other's work in meetings. Win win.

Thank you to Google for making all of this happen. It is exciting to watch this program grow and we're already planning for 2016. Learn more about contributing with us specifically at https://groups.drupal.org/google-summer-code or help us prepare for Google Code-in at https://groups.drupal.org/google-code-in.

By Matthew Lechleider, Drupal Org Admin

Hungering for Game Utilities?

Wednesday, November 18, 2015

At Fun Propulsion Labs we spend some of our time building sample games to help demonstrate how to make easy-to-build, performant, cross-platform games. With the growth of Google Cardboard, we got to work and over many long evenings, feeding our animal hunger on sushi, we came up with Zooshi. Zooshi is an open source, cross-platform game written in C++ which supports:
  • Android, Android TV, Windows, OSX, and Linux
  • Google Cardboard
  • Google Play Games Services sign-in and leaderboards on Android
  • Level customization
Zooshi serves as a demonstration of how to build Android games using a suite of newly released and updated open source game technologies from Google:
  • Motive drives our Animation system, giving life and movement to the characters and environment.
  • CORGI, the Component Oriented Reusable Game Interface, is an Entity-Component system designed to allow users to define complicated game objects as collections of modular, custom-defined behaviors.
  • FlatUI is a straightforward immediate mode GUI system with a light footprint that makes building up user interfaces a breeze.
  • Scene Lab allows designers to design levels and edit entities from right in the game without needing to use an external editor.
  • Breadboard provides an easy to use node based scripting system for editing entity behaviors that's accessible to designers without deep knowledge of programming.
  • FPLBase is a cross-platform API layer, for abstracting low-level tasks like reading input and creation of graphical contexts.
As in our previous release, PieNoon, we also made extensive use of Flatbuffers, Mathfu, fplutil, and WebP.

You can download the game in the Play Store and the latest open source release from our GitHub page. We invite you to learn from the code to see how you can apply these libraries and utilities in your own Android games. Take advantage of our discussion list if you have any questions, and don’t forget to toss some sushi around while you’re at it!

Posted by Alex Ames, Fun Propulsion Labs*

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

New open source tools to import mail to Gmail

Tuesday, November 17, 2015

We have two new open-source projects to help people import their existing email into Gmail using the Gmail API: mail-importer and import-mailbox-to-gmail.


Do you have an old Thunderbird mail archive that you downloaded from an old email account? Do you want to move those old messages to Gmail so that you can use the Gmail app on your phone and still have access to everything? Then maybe mail-importer is for you! The project aims to make it easy for users to import mailbox files from their computer to Gmail. The project is in early development and only has command-line support right now.


Or maybe you are a Google Apps administrator trying to import all of your users’ old mbox files into Google Apps for Work? Then import-mailbox-to-gmail is probably what you’re looking for. It is a Python script that will do bulk imports of multiple mailboxes into multiple accounts in a domain. It's admin-managed, so your users won't have to individually import their archives. To migrate from other types of archives or mail servers to Google Apps, see the Help Center.


For developers, import-mailbox-to-gmail can be used as an example of how to perform domain-wide delegation for the Gmail API. mail-importer shows how to use batching and retries to efficiently query the Gmail API.


Interested? Want to contribute? Fork the projects on GitHub, send us pull requests, file issues and share your tricks on the wiki for each of the projects. See the CONTRIBUTING files for more details.

By Ian Flanigan, Software Engineer, Gmail and Liron Newman, Technical Solutions Engineer, Google for Work

Introducing the Google Code-in 2015 Mentoring Organizations

Friday, November 13, 2015

Today we are happy to announce the 14 open source organizations that are participating as mentoring organizations for Google Code-in 2015! The contest, entering its sixth year, introduces 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 and apply them to a real open source software project. Experienced mentors are available to help the students if they have questions while working on each task.


Google Code-in officially starts for students on December 7, but before the contest begins, students can learn more about each of the mentoring organizations by clicking on the links below.
  • GCI vertical. 1142x994dp.png
    Apertium - rule-based machine translation platform
  • Copyleft Games Group - building game development platforms for tomorrow
  • Drupal -  content management platform
  • FOSSASIA - developing communities across all ages and borders to form a better future with Open Technologies and ICT
  • Haiku - operating system specifically targeting personal computing
  • KDE -  team that creates Free Software for desktop and portable computing
  • MetaBrainz - builds community maintained databases
  • OpenMRS - open source medical records system for the world
  • RTEMS - operating system used in satellites, particle accelerators, robots, racing motorcycles, medical devices and more
  • SCoRe - research lab that seeks sustainable solutions for problems faced by developing countries
  • Sugar Labs -  learning platform and activities for elementary education
  • Systers -  community for women involved in the technical aspects of computing
  • Ubuntu - open source operating system
  • Wikimedia Foundation - non-profit foundation dedicated to bringing free content to the world, operating Wikipedia


The mentoring organizations are currently busy creating hundreds of coding, documentation, user interface, quality assurance, outreach, research, and training tasks. The contest officially starts for students on Monday, December 7th at 9:00 PST.

For important contest information please check out the contest site for Contest Rules, Frequently Asked Questions and Important Dates. You can also find flyers and other helpful information including the new Getting Started Guide on the contest site. Join our announcement and discussion lists to talk with other students, mentors and organization administrators about the contest. For questions about eligibility or other general questions, you can contact us at gci-support@google.com.

By Stephanie Taylor, Open Source Programs

Google Summer of Code wrap-up: RoboComp

We continue our Google Summer of Code wrap-up series with RoboComp, an open source robotics development project. Check out their students’ work below.


RoboComp is a robotics development framework that uses distributed components over the Ice communications middleware. RoboComp also provides a set of useful tools that facilitate the life-cycle of robotics software components.  


We participated in Google Summer of Code (GSoC) for the second time in 2015. The students working with us completed four projects and all showed great enthusiasm and dedication. One of the most remarkable experiences this year was watching the students work together, supporting one another in several situations. Their projects are briefly described below.


Symbolic Planning in perception: Mercedes Paoletti
Mercedes improved RoboComp’s symbolic planner and its AGM domain description language (pdf) to allow domains to include abstract actions. These actions can be used to reason about how robots can achieve tasks without specifying details until necessary (to some extent similar to lazy evaluation in general programming languages). For example, if you need to go to San Francisco you can plan two abstract actions: one to get to the airport and another to fly to SF. You then try to solve the first one, leaving the details of the second for later. In order to test it in a real robot with our cognitive robotics architecture CORTEX (pdf), Mercedes implemented a generalized inverse kinematics solver based on regularized non-linear optimization. This algorithm is used to move the arms of our robot Shelly (in the image).
ursus3-hall-informatica.jpg
RoboComp Building and Deployment System Design: Nithin Murali
Nithin Murali made contributions in several areas. The current CMake building scripts were greatly improved, so that Debian packages can now be easily generated for the project. Additionally, Nithin created an Ubuntu PPA for the project with these packages. He also developed a workspace model and several tools to ease the deployment of components.


Computer Vision Components and Libraries Management: Kripasindhu Sarkar
Kripasindhu wrote a library to manage computer vision algorithms in RoboComp. He added all the library support tools as well as most of the main 2D and 3D recognition algorithms that we use. Kripasindhu developed a polymorphic and repeatable class design, yielding code that is easier to use and understand.


RoboComp Tutorial, Social Management and Documentation: Rajath Kumar M.P
Rajath greatly improved RoboComp’s documentation system and social media presence. He had the difficult task of learning about RoboComp yet at the same time writing a long series of tutorials of increasing difficulty. He also fixed several bugs in the installation system and has enthusiastically verified that everything now works as intended. As a result, RoboComp is much easier to install and many more people across the world have started to use it.


by Luis Manso and Pablo Bustos, RoboLab, Universidad de Extremadura, Spain

TensorFlow - Google’s latest machine learning system, open sourced for everyone

Tuesday, November 10, 2015

Cross posted from the Google Research blog 

Deep Learning has had a huge impact on computer science, making it possible to explore new frontiers of research and to develop amazingly useful products that millions of people use every day. Our internal deep learning infrastructure DistBelief, developed in 2011, has allowed Googlers to build ever larger neural networks and scale training to thousands of cores in our datacenters. We’ve used it to demonstrate that concepts like “cat” can be learned from unlabeled YouTube images, to improve speech recognition in the Google app by 25%, and to build image search in Google Photos. DistBelief also trained the Inception model that won Imagenet’s Large Scale Visual Recognition Challenge in 2014, and drove our experiments in automated image captioning as well as DeepDream.

While DistBelief was very successful, it had some limitations. It was narrowly targeted to neural networks, it was difficult to configure, and it was tightly coupled to Google’s internal infrastructure -- making it nearly impossible to share research code externally.

Today we’re proud to announce the open source release of TensorFlow -- our second-generation machine learning system, specifically designed to correct these shortcomings. TensorFlow is general, flexible, portable, easy-to-use, and completely open source. We added all this while improving upon DistBelief’s speed, scalability, and production readiness -- in fact, on some benchmarks, TensorFlow is twice as fast as DistBelief (see the whitepaper for details of TensorFlow’s programming model and implementation).
TensorFlow has extensive built-in support for deep learning, but is far more general than that -- any computation that you can express as a computational flow graph, you can compute with TensorFlow (see some examples). Any gradient-based machine learning algorithm will benefit from TensorFlow’s auto-differentiation and suite of first-rate optimizers. And it’s easy to express your new ideas in TensorFlow via the flexible Python interface.
Inspecting a model with TensorBoard, the visualization tool
TensorFlow is great for research, but it’s ready for use in real products too. TensorFlow was built from the ground up to be fast, portable, and ready for production service. You can move your idea seamlessly from training on your desktop GPU to running on your mobile phone. And you can get started quickly with powerful machine learning tech by using our state-of-the-art example model architectures. For example, we plan to release our complete, top shelf ImageNet computer vision model on TensorFlow soon.

But the most important thing about TensorFlow is that it’s yours. We’ve open-sourced TensorFlow as a standalone library and associated tools, tutorials, and examples with the Apache 2.0 license so you’re free to use TensorFlow at your institution (no matter where you work).

Our deep learning researchers all use TensorFlow in their experiments. Our engineers use it to infuse Google Search with signals derived from deep neural networks, and to power the magic features of tomorrow. We’ll continue to use TensorFlow to serve machine learning in products, and our research team is committed to sharing TensorFlow implementations of our published ideas. We hope you’ll join us at www.tensorflow.org.

 

Google Summer of Code wrap-up: OpenKeychain

Friday, November 6, 2015

This week we feature OpenKeychain, an open source project that “helps users communicate more privately and securely”. Read more below about the exciting work their students completed last summer during Google Summer of Code.

OpenKeychain helps you communicate more privately and securely. It uses high-quality modern encryption to ensure that:
  • your messages can be read only by the people you send them to
  • others can send you messages that only you can read
  • these messages can be digitally signed so the people getting them are sure who sent them.
OpenKeychain is based on the well established OpenPGP standard making encryption compatible across all of your devices and operating systems.

This was OpenKeychain’s second year participating in the Google Summer of Code program. Two of our students did particularly great work which has been released in OpenKeychain 3.6.

Adithya Abraham Philip focused on OpenKeychain's interaction with keyservers. He implemented an automatic, periodic sync of keys that requires no user interaction. Since this potentially exposes a user's contacts, he implemented Tor and proxy support using the OkHttp library and the Orbot app. Adithya also implemented a more user friendly way to revoke and upload keys to keyservers. While adding the required settings for these features, he also created a UI redesign of the preference screen allowing better keyserver management.

Daniel Ramos worked on password alternatives by adding new key unlocking methods that the user can choose from. Specifically, this adds support for pattern, PIN, and NFC-based key protection mechanisms besides using a classic password. The methods have been implemented into OpenKeychain's key creation wizard. His work will be continued by the
main developers and integrated in future versions of OpenKeychain.

By Vincent Breitmoser and Dominik Schürmann, main developers of OpenKeychain


.