Sub-organization information


Student Information

Name: Juhani Åhman

Email: juhanipm@…


IRC: fzzy@freenet/ircnet

XMPP: juhanipm@…

Source control usernames:, JuhaniAhman:


Project Proposal Information

Project Title: PySoy: Improve Android and HTML5 Soy clients

Organization: Python Software Foundation


I will finish PySoy's Android client (SweetSoy?) and HTML5 browser plug-in client (WebSoy?) so they are ready for general use. Basic, but unusable, clients for both platforms are already implemented.



XMPP Auto-Away: Add hooks to update a user's presence to "Away" when SweetSoy? is running in the background and "Available" when in the foreground.

Android Alerts: Enable SweetSoy? to push notifications to Android such as showing a game running in the background or incoming chat messages.

Game Metadata: Write a C function which parses out the metadata from .sgk files including game name, author(s), genre, description, and server JID(s).

Game Icons: PySoy game links are received both from the web and xmpp game catelogs as .sgk files, which are .svg (Scaled Vector Graphics) with game metadata added. Because SVG is XML, the game metadata is ignored by standard SVG viewers allowing the files to be used verbatim as game icons. Android, however, does not support using SVG for icons. The good news is SweetSoy? already embeds Cairo, a popular SVG library which can be used to generate bitmap icons for Android in a variety of sizes. Write a function using Cairo to convert SVG icons to Android's format.

USB controller support: Detect USB gamepad/joystick and implement support for them for soy input controllers (soy.controllers.*). (Detecting partially done already)

Touch controls: Implement support for touch controls for soy input controllers (soy.controllers.*).

Touch control on-screen buttons: Proper touch control support also needs an easy way to draw on-screen buttons for the touch controls. Should be flexible enough to support all controller arrangments (any shape and size of buttons, analog sticks, etc).

Buddy List: A list displaying XMPP buddies and their statutes. GUI Partially done already, but it doesn't actually show any real information.

Settings Screen: (Partially done already)

SGK Browser Support: Add .sgk support to the Android web browser. An SVG thumbnail should shown in the plugin block and, when launched, run SweetSoy?.

Improve GUI: Game browser page's columns need to be improved.

Fix exiting: Quitting sweetsoy seems to be a bit bugged, it keeps running on the background even after exiting?


If there is time left, I will work on WebSoy? client too. Websoy is lesser priority.

XSLT for SGK to HTML5: Write an XSLT file which provide both the SVG (as a cover image) and game metadata to an HTML/5 block suitable for browsing game catalogs or previews. Clicking on the block should activate the WebSoy? plugin.

Plugin Settings: The settings dialog should integrate well with both Gecko (Firefox) and Webkit (Chrome, Safari) browsers.

Improve GUI


GSoC work period length is about 13 weeks.

June 17: Start of GSoC

June 17-21 (week 1): Project setup, review documentation, confirm project timeline and basic structure.

June 24-28 (week 2): XMPP auto-away

July 1-5 (week 3): Android alerts

July 8-12 (weeks 4): Game metadata

July 15-19 (weeks 5): Game icons

July 22-26 (week 6): USB controllers

July 29 - August 2: Mid-term evaluation week

August 5-23 (weeks 7-9): Touch controls and on-screen overlay

August 26 - September 13 (weeks 10-12): Any remaining android tasks & Websoy tasks

September 16: GSoC ends (soft)

September 16-20 (week 13): Final week reserved cleanup and additional testing

September 23: GSoC ends (hard)

Links to patches/additional information

I've worked for PySoy in the last to GSoCs.

Other Schedule Informatione

I will be able to work on the project full-time through the summer without any major breaks.