GSoC/GCI Archive
Google Summer of Code 2014

Catrobat (formerly Catroid Project)

License: Affero GNU Public License

Web Page: http://developer.catrobat.org/gsoc_2014_ideas_page

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

Catrobat is a visual programming language and set of creativity tools for smartphones, tablets, and mobile browsers. Catrobat and the software developed by the Catrobat team are inspired by the Scratch programming system developed by the Lifelong Kindergarten Group at the MIT Media Lab. Pocket Code is an Android app that allows to create and execute Catrobat programs on Android phones and tablets. Pocket Code allows kids and teens (from age 8 up) to easily create Android apps using only their mobile device, without the need for an additional PC. Catrobat programs are created in a visual “Lego”-type style as known from Scratch (only for PCs) or AppInventor (also needs a PC for development and is less oriented towards kids or teens). Pocket Paint is part of the Catrobat 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. Pocket Code’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 Catrobat programs under the AGPL open source license, the aim being to facilitate the learning of programming skills among kids and teens (and also older users) as well as spreading and popularizing the free and open source movement among all children and teenagers of the world. Typical users of Pocket Code 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 has top priority. The motivation behind the Catrobat 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. Pocket Code was released in summer 2013 via Google Play to the public, selected in November 2013 by Google as the only programming language in the STEM category for Google Play for Education, and has won the Austrian National Innovation Award 2013. 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 Pocket Code project as an apk file (i.e., as a stand-alone Android app), an HTML5 player (though not supporting all Pocket Code 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), 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, a Physics Engine based on Box2D allowing to easily create games such as Pinball, MusicDroid that allows to enter musical notation by singing and Near Field Communication (NFC) support for multiplayer coordination. The Catrobat team is composed of more than 200 developers. We use a 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 git, 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

  • Adding a Time Capsule (History) to Catroid This proposal is for the project idea of adding a simple undo/redo functionality (time capsule) to catroid project. This feature enables the user to revert the mistakes done while building up a game. This functionality will be added to scripts, sounds and looks.
  • Assessment for the Idea "Apk Generator" Dear Sir, I want to contribute on Catrobat for Google Summer of Code on the Idea "Apk Generator" Please read my proposal for further information and thoughts on how to implement this topic. Kind regards, Roland Urbano
  • COLLISION FILTERING IN PHYSICENGINE 1.1 Brief explanation: Use libgdx-wrapper-methods of box2D to provide collision filtering in Pocket Code. 1.2 Expected results: Let's take an example: we have three kinds of objects in a simple game: players, monsters, and scenery. We can implement rules like: players should not collide with each others, neither do monsters, but players should collide with monsters (and vice-versa). And both have to collide with the scenery.
  • Computer Vision Enhancement This is my proposal for Computer Vision Enhancement. Because the photos are not uploaded i added an additional url to the proposal (below).
  • GSOC PROPOSAL FOR LIST SUPPORT IN FORMULA EDITOR I would like to implement “List support in Formula Editor”. It would be a very interesting task for me, since I and my colleagues Franz Schreiner and Peter Tielsch, coded large parts of the formula editor. So I know the intern structure of the formula editor and how to extend it, in order to support lists.
  • Make Pocket Code Bricks feature-complete to Scratch Pocket Code is missing the popular show/hide variable as well as Userbricks(self-defined functions) from scratch. Show and hide variable bricks are necessary to display, e.g., game statistics. Userbricks are used to create self-defined functions. http://wiki.scratch.mit.edu/wiki/Show_Variable_()_(block) http://wiki.scratch.mit.edu/wiki/Define_()_(block)
  • Scratch to Catrobat Converter I am planning the following converter extensions: As Scratch projects are generally in the landscape format, while with mobile phones a portrait mode is encouraged, currently half of the screen is unused with converted Scratch projects. Further Scratch features I am planning to implement are variables and formula elements. Supporting those would greatly increase the number of Scratch projects suitable for converting. The priority of other open Scratch features is best discussed in the team.