GSoC/GCI Archive
Google Summer of Code 2011

Catroid Project

Web Page: http://code.google.com/p/catroid/wiki/IdeasPage

Mailing List: http://groups.google.com/group/catroid/topics

Catroid is an on-device graphical programming language for Android devices that is inspired by the Scratch programming language for PCs, developed by the Lifelong Kindergarten Group at the MIT Media Lab. It is the aim of the Catroid project to facilitate the learning of programming skills among children and users of all ages.

Catroid allows children from the age of 8 to easily create Android apps using only their mobile device, without the need for an additional PC. Catroid projects are written in a graphical “Lego-style" as known from Scratch or Appinventor. Paintroid is part of the Catroid project and is a graphics painting and editing app for the Android platform. It is used for the creation of elements for Catroid projects. Catroid’s community website http://www.catroid.org/ allows users to share their apps in a way similar to Scratch's community site, including the sharing and remixing of Catroid project files under a creative commons license. Additionally, users can communicate via Catroid’s forums and organize themselves on our children-oriented community Wiki. Typical users of Catroid would be, e.g., an 11 year old girl wanting to share her Hannah Montana animation with her friends, or a 15 year old boy wanting to implement a multi-player, multi-touch space invaders game. Thus, usability is a major aspect of the project and is accorded top priority.

The motivation behind the Catroid project is that programming is an important cultural technique on the same level as mathematics and physics, from a practical as well as from a philosophical point of view. Our aim thus is to popularize the skills needed to program with children all over the world from an early age on in a fun and engaging way. The Catroid team has released an alpha version at the end of 2010. A first public beta release is planned for the end of October 2011.

There are several subprojects involving, e.g., the bidirectional coupling with an AR.Drone quadcopter, with a Lego Mindstorm robot, with a robocup soccer robot via the Arduino open-source electronics platform, a program that allows to package a Catroid project as an apk file (i.e., as a stand-alone Android app), an HTML5 player (though not supporting all Catroid features as not all sensors etc can be accessed), a localization / internationalization support site (we currently support several languages, with speakers of English, Mandarin, Cantonese, Hindi, Arabian, German, Turkish, French, Japanese, Urdu, and Malaysian in the team), and the building of an engaging tutorial game inspired by the funny tutorial of Nintendo’s Wario Ware: D.I.Y. programming game for the Nintendo DS.

The Catroid team currently is composed of more than 25 active developers. Now, since 25 sounds a lot, let us add that so far we worked for the most part closely together as we have a large common room (20 work places) at Graz University of Technology here in Austria which we can use 100% for our project, with 6 large magnetic whiteboards and a flip chart in the room. Also, we use the test-driven development method (test-first style; tests used as declarative executable program documentation) with several additional practices from extreme programming such as pair programming in frequently changing pairs, handwritten user stories on white boards, project velocity based planning, very clear self-explaining clean code (including test code; no comments in code unless not expressible in the code itself; no prose documentation), continuous usability consideration (paper prototyping on a daily basis, the personas method, usability expert feedbacks, and, less frequently, usability tests with real children), continuous integration using Mercurial on Google Code, automated unit-, functional-, regression-, and monkey-testing, permanent refactoring, the YAGNI principle, and collective code ownership.

External contributors at the very least will need to follow our test-driven development method. While we minimize the amount of test code and are very pragmatic, please understand that we are concerned of producing highest quality and highly maintainable code that can be extended and refactored without the need for direct human communication and without the need to refer to non-executable documents.

Our code sample repository can be found here: http://code.google.com/p/google-summer-of-code-2011-catroid/

 

Projects

  • Export Of The Catroid Project To Native App In this project I want to implement the exporting of Catroid projects as apk files. For this I will upload the project files to the Catroid web-server, and run it through a program which will generate the corresponding Android project. This program will synchronize with Catroid repositories in order to always have an up-to-date list of bricks with their functionality.
  • Improving the user interface My goal is to help this project get noticed even more by making it visually more appealing and intuitive to use.
  • Internationalization To be successful an international version of the website is important. I would like to do the internationalization of the Catroid community website. This can be done together with the internationalization of the MesswordFilter which was mentioned in another suggestion. It is also necessary to provide a usability recommendation for the main target group.
  • Using the Phone Sensors for Catroid Using the Sensor wich are build right into each phone for controlling some actions in catroid.