Skip to content

Instantly share code, notes, and snippets.

@josmas
Created November 15, 2013 20:40
Show Gist options
  • Star 1 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save josmas/7491190 to your computer and use it in GitHub Desktop.
Save josmas/7491190 to your computer and use it in GitHub Desktop.
Description of App Inventor for Open Academy

#What is App Inventor? App Inventor is a drag and drop, blocks-based system, to easily create Android apps with little or no programming experience. The tool can be used for CS teaching purposes, but it's also being used to create apps that are being sold through the Google Play store. So App Inventor serves a broad spectrum of users.

#What's going on in this Project? App Inventor is a rather large project and different languages and technologies are used in different parts of it. For development purposes, we divide the project in three main parts: Components, the Designer, and the Blocks Editor.

##Components Components are abstracted pieces of functionality that wrap certain characteristics of mobile devices, for instance the accelerometer sensor, the NCF sensor, UI elements such as buttons, labels, and so on. Work in this area is created mostly with Java and the Android SDK.

##The Designer This is the area in which the layout of the app is created. Users can drag and drop components in a working area that acts as a mock of the device in which the app will be deployed. Work in this area is created mostly using Java and GWT.

##The Blocks Editor This is the area in which the blocks that drive the behavior of the app are assembled. These blocks are puzzle piece shapes that can be joined together to create certain behaviors. For instance you could create the following pseudocode with blocks:

When button1.clicked:
  set label1.text = 'Hello World!'

The blocks editor is a JavaScript application based on the Blockly library. We translate the blocks into an intermediate language called YAIL, which is a Scheme DSL created for the project. This allows to provide live development functionality when users attach their devices (or emulator) while they are working with App Inventor, by evaluating YAIL code in an interpreter that is running on the device. This is very helpful for debugging and testing, and it also makes the development cycle much shorter and faster.

##Other areas There are other areas of the project that could also be explored. We do a bit of rapid prototyping and also cover other topics such as analytics, UX user studies, and educational research.

#Your expected contribution Working on this project you'll be free to explore any of the areas of App Inventor. We would like to see your code being merged in the main repository, and used by thousands of users (we currently serve ~45K users on a weekly basis), but that is not the only way to contribute to the project. As mentioned above, many really important tasks such as research or prototyping only end up in the code in an indirect way, but they are of great benefit to it.

#Contact information Feel free to get in touch through our Open Source site, G+ Community, or Google group.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment