jueves, 27 de mayo de 2010

self.showOff(:sugarlabs)

Hiho! its been a while (again) since my last update! In the last weeks I have been very busy (yeah, again) with work and thesis research. I had my first thesis presentation, and I did just well. Also submitted a scientific paper with some of my research results to the Latin American Conference of Informatics, also known as CLEI, cross you fingers! so it gets accepted :)

Well, well, where I was... oh ya... Paraguay Educa and OLPC. In case you haven't heard of it, this project is being implemented world wide, in many different social and economic conditions. Its main purpose is to provide a first world class education to all the childrens in the planet, and therefore help them to overcome poverty.



One of the most attractive aspects of this project is the Sugar Learning Plaform. Technically it is a simplified Desktop Environment inspired by the principles of construcionism and collaborative work. This platform also provides a huge set of programs (or Activities, as they are called inside of Sugar).



Sugar was originally design and implemented by the OLPC employees, and later on became a whole open source software project by its own. Now literally millions of kids are enjoying this platform, letting their imagination fly as high as they want. I am really envious :), I wish I had such a cool laptop when I was 7.



From the very beginning Paraguay Educa has tried to put their effort to promote this platform development and use. Thats why, once I was done with the first Inventory System version, they let me "play" with the Sugar source. On November of 2009 my first challenge was to provide a easy way to let the kids use 3G devices, since Sugar was only supporting ethernet and wifi devices.

At the beginning I though we wouldn't be the first deployment trying to do this, and I was right. Most of the deployments had something in common, GSM devices were the most common and cheap devices available at their areas. So I started writing to sugar development mailing list, and many people responded me, such as Daniel Castelo from Uruguay's Plan Ceibal project. Most of the other deployments were trying to achieve this by using external programs or such, so I thought it would be great if we could put a common effort and have this feature integrated into the Sugar core.



After a couple weeks, I was done with the first working prototype. I have to say it was very challenging since I did not much about Python, Dbus, Network Manager and the Sugar core source code. But I got to that point thanks to the help of Tomeu Vizoso, Dan Williams and Daniel Castelo. Because of an huge coincide Tomeu was traveling to Uruguay to meet Daniel Castelo and the Plan Ceibal development team.



I took a fly to Motevideo Uruguay and meet everyone. Spent 5 days working with them preparing the code for the upstreaming. Here comes the most important lesson, or how I would like to call it, the funny part. Making code for Open source projects is just hard. Just to let me say this, having a piece of code that works, is only 20% of the effort it takes.

Adapting the functionalities for general purposes, adapting the code to fit inside the current modules, and respecting the coding standards and style... is, honestly, the hardest part for the beginners like me. Took me almost 2 weeks to have it working, but took me 2 months to have the code ready and accepted.



I can't complain, I learn to much during that period, from technical stuff to programming style matters, hehe. All the hard work was very well rewarded, the GSM support was complete success, it was one of the key features of the Sugar 0.88 release and I am very proud of it. :)

The most remarkable places where I found this feature mentioned are: