GSoC 2012

1.  About GSoC

Google's summer of code is now in its 8th year, funding student positions over the summer, working with various open source development projects to produce code that benefits everyone. GSoC will put up $5000 US to cover the wage of a student during the period between the end of May and the end of August. Students who are interested in participating should scan through the GSoC FAQ for information about the program and how to apply, and scan through the "Project Ideas" listed below for potential projects they might participate in. Or, propose a project of their own and attach it to their application.

1.1  Important Dates

  • Mentoring Organisation Applications: March 9, 2012
  • Student Application Period: March 26 - April 6, 2012
  • Accepted Students Announced: April 23, 2012

2.  About Komodo OpenLab

Komodo OpenLab is a social enterprise that develops open and inclusive technologies that facilitate the daily lives of people with disabilities and also benefit everybody else.

Since 2011, Komodo has been working with the Inclusive Design Research Centre (IDRC) in the ongoing development of mobile accessibility projects. The goal of the IDRC is to ensure that information and communication technologies are designed to be accessible and usable by the full range of human diversity from the very beginning. This is fully in line with the goals of Komodo OpenLab so we are very excited to work with the IDRC!

3.  Project Ideas

This year, we will be focusing our GSoC coding efforts on the accelerated development of new features for Tecla. Tecla is a set of open software and hardware tools that facilitate switch access to electronic devices for people with mobility impairments.

Mentors: Jorge Silva, Mauricio Meza, Eric Wan, Jorge Torres

3.1  Make Irdroid fully switch accessible with Tecla

This project primarily consists on contributing the necessary changes and enhancements to the open source Irdroid Android app in order to ensure full compatibility with Tecla. This will effectively allow Tecla users to control many of their appliances remotely using the interfaces that have already been adapted to their particular abilities.

The first part of this project will involve completing the first version of the InputAccessLib library, which facilitates 3rd-party app integration with Tecla Access. For additional background on this library visit the Tecla for Android developers page and the original inaccessible popups & menu bug report. Depending on the amount of work required, the project may be extended to include full switch compatibility with the Google TV remote.

Successful candidate students will have robust experience in Android development.

3.2  Use Tecla to send mouse clicks and/or keystrokes to a desktop computer (Windows, Mac, Linux)

Many switch users rely on expensive, dedicated equipment to gain access to desktop operating systems. However, these devices simply provide a few mouse or keyboard events that assistive software in the host computer can turn into more complex commands. This project idea consist on using Tecla to turn switch events generated by our users into mouse clicks or keystrokes that can be used to access a desktop computer.

The main goal would be to create a cross-platform and configurable desktop client that can take input from either the Android/iOS device (e.g., through a client/server network bridge) or directly from the Tecla Shield (e.g., through a bluetooth socket) and can translate that input into keystrokes, text input, or mouse events on the desktop computer. The translation of input from either device into input events on the desktop OS should be fully configurable by the user, therefore, a simple preferences dialog is likely to be required.

Successful candidate students will have experience in Android/iPhone development as well as cross-platform development for desktop PC/Mac.

3.3  Use Tecla to play games and/or media on PS3/Wii/XBox

It is great that Tecla already enables access to Android and iOS devices, but this is just the beginning. We want Tecla to enable access to all sorts of appliances including ATMs, ticket vending machines and, of course, game consoles. This project consists on coding the appropriate routines for the Tecla Shield so that it can be used to send commands to the PS3, XBox and/or Wii consoles. This project will be developed in collaboration with our interaction designers.

One of the main functions we are aiming for with this project, is to allow the Tecla Shield to emulate a controller that is already connected to the console. That way we could enable collaborative gameplay (e.g., one person moves the character while the other one shoots). If that is not possible, then general navigation of the UI (i.e., remote functionality) should be the goal. That way users would at least be able to watch movies on Netflix or stream media content from their consoles.

Successful candidate students will have experience in Android/iPhone development as well as cross-platform development for desktop PC/Mac.

3.4  Transfer speech recognition text input on a mobile to a PC / Mac using Tecla

Speech recognition in mobile devices is constantly improving, and because the mobile is such a convenient tool, many people find it more comfortable to dictate an email, text, note and even parts of an essay, report or assignment, to a phone rather than to a computer. Tecla users are no exception, but because they have an increased level of convenience when using a mobile with Tecla, transferring dictated text from the mobile to a computer would make things sooo much easier when working on their computer. This project consist on developing a quick way (e.g., app) to use Tecla to transfer dictated text from a mobile device into any text field on a desktop PC/Mac.

Note that this project may be thought of as a subset of the second project above (i.e., sending mouse clicks and/or keystrokes to a desktop computer). So if you are interested in this idea, you should take a look at that idea too since it should be possible to combine them.

Successful candidate students will have extensive experience in Android/iPhone development as well as cross-platform development for desktop PC/Mac.

3.5  Turn an April's fool joke into the real thing

Just today (April 1st, 2012) Google announced a Morse input method as an April's fool joke, but they have no idea this can actually be very useful to switch users. This idea consists in incorporating their code into the Tecla Access app so that switch users with disabilities can actually take advantage of it.

This idea is not exclusive to Android, a Morse decoder can also be incorporated into the Tecla Shield for iOS by integrating with the Arduino codec libraries available here:

Successful candidate students will have extensive experience in Android and/or Arduino development.

4.  How to prepare your application

4.1  Become familiar with the project.

The best way to become familiar with the Tecla Access project is by using the Tecla Access app for Android. The video on the right will guide you through the process of downloading, installing and configuring the Tecla Access app on an Android device. The video also explains how to enable the full-screen switch mode, which will demonstrate how the device would be controlled using a single switch. Please note that it is not necessary to have an Android device, nor a Tecla Shield unit in order to understand how the Tecla Access system works. Students who do not have the hardware can still use the Android emulator from the Android SDK to run and test the application.

4.2  Sign up to the mailing list

Once you have a better idea of how the Tecla Access app works, you can sign up to the main development mailing list for Komodo OpenLab at:

Use this list to submit any questions you may have about using or developing for Tecla Access. Please make sure to browse through the archive first in case your questions have already been answered.

4.3  Set up your development environment.

  • If you are planning to work on the Tecla Access app for Android, then go to for instructions on how to set up the development environment and get started.
  • If you are planning to contribute to the Arduino code for the Tecla Access Shield, then go to for instructions on how to set up the Arduino development environment and get started.

Candidates working on Android should also consider setting up the InputAccessLib library, which facilitates 3rd-party app integration with Tecla Access. Project ideas that involve compatibility with other apps (e.g., Irdroid compatibility) will likely use this library:

4.4  Resolve an open bug.

This year we are requesting student candidates to resolve an open bug as part of their 'interview' for available GSoC positions. This will highly increase your chances of being selected as it will demonstrate many of the following:

  • That you have a clear understanding of the goals of our project,
  • That you have set up your development environment,
  • That you are familiar with distributed version control (i.e., git and github),
  • That you are ready to start coding from day 1 of the GSoC program,
  • That even if you didn't code for a particular platform or open source project before, you can learn quickly.

You are also welcome to work on an issue or suggested feature that you have identified as long as:

  1. A new issue has been opened for it, and
  2. The issue has been approved by a member of the core development team

The list of open bugs for the Tecla Access app for Android is available at:

The Tecla Shield has its own separate repo at:

If you are planning to work on the Tecla Shield, please contact the mailing list for advice on how to fulfil the bug fix requirement.

4.5  Write a 1-2 page proposal

Your proposal should include:

  1. Summary of the idea
  2. Proposed implementation
  3. Proposed timeline (with milestones/deliverables)
  4. Full contact details (including skype, irc or other IM handle)
  5. Link to pull request for a solved bug

Please include a link to your portfolio on your proposal.

If time allows, we will be providing feedback in the form of comments on your proposal page, so check back every few hours to see if we have managed to review it.

5.  Frequently Asked Questions

5.1  Can I propose a project that is not in your ideas page?

Answer: Definitely!, we are quite sure we couldn't possibly think of all of the best ideas on our own, but be aware that the project ideas described in this page reflect (more or less) our priorities, so your idea would have to be somewhat related or would really have to impress us in order to get picked. In any case, if you send a draft early, we can help you shape it into something that would be useful for the projects (if not already).

5.2  Do I need to have an Android / iPhone / iPad device or PS3 / Wii / XBox console?

Answer: Not necessarily, but it would make things a lot easier if you did have access to the device you are interested in working on. The main issue to consider is that since Tecla relies heavily on Bluetooth communication, it may not be possible to fully test your code with the emulators provided on the SDKs. However, if like Linus Torvalds you believe you can write perfect code on your first try, then we definitely want you on the team even if you don't have the device, so do apply!

5.3  Do I need access to a Tecla Shield?

Answer: No, we provide full specifications for the Tecla Shield so that it can be easily emulated. In fact, we do have a bare-bones python script that can turn your bluetooth-enabled PC or laptop into a fully featured Tecla Shield emulator. That said, this year we are seriously considering the possibility of shipping Tecla Shield development units to successful candidate students so they can complete their work more effectively.

5.4  Would you accept a hardware development project?

Answer: No. We would love to, but the Google Summer of Code program does not support projects with a heavy hardware development component. You can definitely work on hardware development as part of your project, but the hardware component cannot be the main focus of your proposal, nor should it be required for your final product to work.