GSoC/GCI Archive
Google Summer of Code 2012

Catroid Project

Web Page: http://goo.gl/FD2Sl

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

Catroid is an on-device visual programming language for Android smartphones and tablets that is inspired by the Scratch programming language for PCs developed by the Lifelong Kindergarten Group at the MIT Media Lab.

Catroid allows kids and teens from age 8 up to easily write Android apps using only their mobile device, without the need for an additional PC. Catroid projects are written in a graphical “Lego”-type style as known from Scratch or AppInventor.

Paintroid is part of the Catroid project and is a graphical paint editor for the Android platform that, among others, allows setting parts of pictures to transparent (pinch zoom up to single pixel level), which is an important feature if one wants to extract, e.g., one’s own head from a photograph while deleting all the background, or some other part from any image, in order to use the resulting shape as a graphical element inside one’s app.

Catroid’s Web 2.0 community site allows kids and teens to share their apps in a way similar to Scratch's community site, including the sharing and remixing of Catroid project files under the AGPL license, the aim being to facilitate the learning of programming skills among kids and teens (and also older users).

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 from an early age on in a fun and engaging way that will facilitate the spread of its adoption among young people all over the world.

The Catroid team released a first public beta in March 2012. There are several subprojects involving, e.g. the bidirectional coupling with an AR.Drone quadcopter, with a Lego Mindstorms 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 70 active developers. 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 ping pong pair programming in frequently changing pairs, kanban system, 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 usability tests with 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 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 high 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.

Projects

  • Drag & Drop in Pre-Stage Currently all Sprites have to be positioned by defining their X- and Y-coordinates. That is not very user-friendly. Like in Scratch there should be the possibility to see the complete Stage before the program starts where the user can arrange Sprites by drag & drop. It should also be possible to change size and rotation.
  • HTML 5 Player To get Catroid programs run on various platforms, and especially on mobile devices, the team is currently working on a HTML5 player. This is implemented by the Google Web Toolkit.
  • Native Catrobat implementation with cocos2d-x In this project I attempt to implement the Catrobat language as a standalone application for Android and iOS by using the open-source 2d framework cocos2d-x.
  • Project: Catroid -> Live Wallpaper A converter that can produce live wallpaper from catroid application.
  • Project: Music Composer for Catroid User Interface for the “Music Composer”: The user has the option, similar to the Scratch program to build on its various components individual music together. There should exist a various sort of blocks for melody input (to sing on, input via virtual keyboard), rhythm blocks, … The music input should extend over a maximum of 8 bars, which then can be looped without problems. Via an editing tool notes should be easily moved around and adjusted. The system maybe offers two modes, the amateur and the expert mode. The first one offers already given music pattern, which can be set easily under the existing construct. The other one offers more cus tomization options. One Crazy idea: the user puts his device in front of him on the table and knocks his rhythmic Idea on the desk board. The device records it via different sensors (microphone).
  • Project: Tablet Integration The aim of this project is to adapt Catroid application's UI and behavior to look more native on Android 3.0 and 4.0 and to use tablet's free screen space.
  • Replace current XML serializer of Catroid Replaces the current XML serializer which is XStream with a new custom developed library. This library also can convert XML to another schema and validate.
  • Scratch to Catroid Project Converter and Catroid as a Typeless Programming Language In project I want to implement a tool which will convert Scratch projects to Catroid projects. From the Scratch project file will be extracted the sounds, images and the list of bricks which are implemented in Catroid. Many Scratch projects rely on variables and operators which are not yet present in Catroid, for a correct functioning of the converter tool I will implement the variables, lists and all the operator blocks from Scratch.