This information page is for people who would like to apply for Google Summer of Code positions working on MIT App Inventor at the MIT Media Lab in summer 2012. Use the form at the bottom of this page to apply. The application period runs from March 26 to April 6.
MIT App Inventor is a graphical integrated development environment designed to make it easy for beginning students and others without prior programming experience to create apps for Android smartphones. The project began at Google Research three years ago, and was transferred to the MIT Center for Mobile Learning at the Media Lab last fall, where it is being continued as an open-source project.
App Inventor is implemented as a cloud-based web service whose back-end runs on Google App Engine. People create projects in their web browser using a graphical "blocks" language, package the results to produce Android apps, and download these to their phones. MIT maintains the web hosting, project management, and compilation as a service. If you work on App Inventor, you'll not only get a chance to do open-source development in an extensive project, but you'll be involved in the back-end running of a major hosted cloud service, currently serving more than 70,000 people, who will be using your code almost as soon as you release it.
There are two broad project areas where we are looking for Summer of Code contributors.
The first area is extending App Inventor's capabilities to include more features of the Android platform. The way this works in App Inventor is through creating components -- Java classes that encapsulate portions of the Android SDK so they can be accessed through the graphical "blocks" UI. There's a long list of features that users are calling for, and you can see some of these at our public issues list. Here are here are some particular ones where we're looking for contributors:
The above projects all require the ability to program in Java and the ability to dive in and find your way around a large code base (more than 2000 files).
The second area where we're looking for help is people who would like to dive into the back end service and the issues around hosting. Two particular areas are:
Whichever area you are interested in, if you're selected for the Summer of Code, we'll work with you to find a specific project that matches your interests and abilities. We strongly prefer people who have had some experience creating Android apps with Java and the Android SDK. Experience teaching others how to program is also a big plus.
If you work with us, we'll assign you a project mentor, typically faculty or staff at MIT and our cooperating institutions (Wellesley, Mills, and UMass Lowell), who will work with you closely. There's a rigorous code review process (we use Mercurial and Rietveld), where nothing gets committed until it has been through a review cycle. You'll also become part of our dev team and meet frequently with the entire team and participate in the overall project, not just your particular piece. We use a scrum development process where there are several team meetings a week using Google hangouts.
Sorry, but we're not accepting applications to be mentors, just to be part of the development team.
First get some experience using App Inventor, which you can do by going to http://beta.appinventor.mit.edu/about. Follow the "Get Started" instructions and build a couple of apps. In your application, we’ll be asking you to provide a URL where we can see the project source and APK of an app you’ve built with App Inventor.
Next, pull down a copy of the App Inventor source code, which is available as a Mercurial repository at
This is the code base you’d be working with, so look through it and play with it. You should also try building it to see how far you get. In your application, we’ll be including a design question where you can demonstrate your familiarity with the code.
When you are ready, you can go to the instructions and fill out the application form. Note that there are several long-answer questions to prepare before you will be ready to submit the form.