Instalar el entorno de desarrollo.
Aunque desarrollar actividades para la XO en la propia XO no es la opción más práctica, no deja de ser posible. Es más fácil y aumenta la productividad de tu desarrollo, escribirlo y testearlo en una máquina que use un OS (sistema operativo) convencional. Esto te dará acceso a mejores herramientas y podrás, incluso, simular la colaboración entre dos computadoras-Sugar usando sólo tu máquina.
¿Instalar Linux o usar una máquina virtual?
Aunque Sugar corre sobre Linux, es posible correr una instancia completa de Sugar sobre una máquina virtual con Windows.
Una máquina virtual es una forma de utilizar un sistema operativo encima de otro. El sistema operativo virtual es engañado y cree ser el único que controla la computadora. Los gurús de la industria de la computación dicen que esto lo más nuevo que hay, pero los viejos como yo sabemos que IBM ya lo utilizaba en sus computadoras centrales en los años 70.
Esta forma de proceder fue, durante algún tiempo, la más recomendable. La versión de Linux que Sugar usa era lo suficientemente distinta de los Linux regulares que incluso los usuarios Linux corrían Sugar con una máquina virtual arriba de su Linux habitual.
La situación mejoró y ahora la mayoría de las distribuciones corrientes de Linux incluyen un entorno Sugar usable.
Si estás muy acostumbrado a Windows, podrías pensar que en vez de instalarte Linux, la opción más sencilla sería correr Sugar sobre una VM (Máquina Virtual). Pero en la práctica no lo es. Linux sobre una VM es Linux igual y tendrás que aprender algunas cosas sobre Linux si piensas en el desarrollo de Actividades Sugar. Además, correr un segundo OS en una VM requiere una máquina poderosa y unos cuantos gigabytes de memoria. Personalmente, hago mis desarrollos Sugar usando Linux sobre una IBM NetVista Pentium IV que me compré por poquito más que cien dólares -embarque incluido- y me resulta más que adecuada.
Instalar Linux no es ahora la prueba de fuego que alguna vez fue. Cualquiera puede lograrlo. El escritorio GNOME que Linux provee es tan similar a Windows que el usuario no siente la diferencia.
También está la opción de instalar Linux y agregarle un booteo dual para poder correr Linux y Windows en la misma computadora (no al mismo tiempo). Para esto se precisa dejar una partición del disco para el uso del Linux y luego elegir, sobre un menú que se verá al arranque de la computadora, cuál OS (sistema operativo) lanzar. Los mismos instaladores de Linux sirven para crear la partición y un par de gigabytes de espacio en disco es más que suficiente. La instalación de Linux comparte la computadora sin afectar en lo absoluto a la instalación Windows.
Sugar Labs ha trabajado para tener a Sugar incluido en todas las distribuciones de Linux. Si ya tenés una distro favorita, hay buenas chances de que en su última versión ya traiga Sugar incluido. Fedora, openSuse, Debian y Ubuntu incluyen Sugar. Si ya tenés un Linux instalado averigua si no tiene Sugar ya incluido. Si no, Fedora es el que usa la laptop XO, de modo que Fedora 10 o posterior sería la mejor opción. Se puede descargar un CD o DVD de instalación de Fedora desde: https://fedoraproject.org/get-fedora.
Es importante aclarar que todas las otras herramientas que recomiendo vienen incluidas en cualquier distribución de Linux y se instalan sin mayor esfuerzo que el de tildar unas casillas (check boxes en inglés). Estas mismas herramientas podrían funcionar en Windows pero instalarlas va a implicar mucho más trabajo que el habitual para programas Windows.
Si no deseas instalar y aprender nada de Linux, pero igual quieres desarrollar Actividades, te queda la opción de desarrollar un programa Python independiente que use PyGame o PyGTK y que haga lo que tu Actividad haría. Puedes darle tu programa a otra persona para que lo convierta en una Actividad Sugar. Este programa Python puede escribirse en Windows o en una Macintosh.
Si quieres desarrollar en una Macintosh, la opción más elegante es correr Sugar en una máquina virtual. Si te interesa hacer la prueba hay más detalles en este link: http://wiki.laptop.org/go/Developers/Setup. También es posible instalar usando un booteo dual con Linux Fedora sobre una Intel o Power PC Macintosh. Hay detalles de esto en el sitio web de Fedora.
Otra opción para los usuarios de Mac es utilizar como entorno de testeo a Sugar on a Stick. Para informarte acerca de esto: http://wiki.sugarlabs.org/go/Sugar_on_a_Stick.
¿Qué tal usar sugar-jhbuild?
Sugar-jhbuild es un script que descarga el código fuente de las últimas versiones de los módulos de Sugar y los compila en un subdirectorio de tu directorio Home (hogar en inglés). No instala Sugar en tu sistema. Lo que hace es correr Sugar desde el directorio donde se compiló. Por la forma en la que viene construido y como se ejecuta, no interfiere con los módulos que levantan el escritorio que normalmente utilizas. Si vas a desarrollar para Sugar mismo o para Actividades que requieran las características más recientes de Sugar, vas a necesitar sugar-jhbuild.
Correr este script es un poquito más difícil que instalar los paquetes de Sugar que vienen con tu distribución de Linux. Vas a necesitar primero instalar Git y Subversion, luego ejecutar un comando Git desde terminal y descargar el script sugar-jhbuild, en tercer lugar correr el script -que te presenta varias opciones para descargar e instalar paquetes distintos- y por último compilar todo. Puede tomarte un par de horas completar todos los pasos. Al terminar tendrás un entorno actualizado de testeo que puede funcionar como un emulador de Sugar. No hay necesidad de desinstalar el emulador, si existiera uno, emulador y jhbuild pueden coexistir.
Debes ejecutarlo con estos comandos:
cd sugar-jhbuild ./sugar-jhbuild run sugar-emulator
¿Me conviene usarlo? La respuesta corta es no. Una respuesta más larga probablemente sea todavía no.
Si deseas que tus Actividades alcancen el mayor número de usuarios no te conviene usar el Sugar más reciente. De hecho, si quieres un entorno de testeo que imite lo que la mayoría de las XO usan ahora, te conviene usar Fedora 10. Esto sucede porque, para las escuelas, es una difícil tarea actualizar los sistemas operativos de las XO y la mayoría de ellas quedarán corriendo Sugar.82, o incluso anterior, por bastante tiempo.
Por supuesto también es importante tener desarrolladores dispuestos a ampliar las fronteras de lo que Sugar puede hacer. Si después de desarrollar algunas Actividades, concluyes que tu eres uno de ese grupo, puedes aprender sobre sugar-jhbuild en este link:: http://wiki.sugarlabs.org/go/DevelopmentTeam/Jhbuild.
Estrictamente hablando, sugar-jhbuild es tan solo un script que descarga y compila Sugar. De forma correcta deberíamos decir: "Ejecuto la copia del emulador de Sugar que se construyó con sugar-jhbuild", pero la mayoría de los desarrolladores Sugar dicen: "Ejecuto sugar -jhbuild" y esta es la expresión que usaré en este libro.
Python
Todos los ejemplos de código los haremos en Python, así que debes tener Python instalado. Python viene con todas las distribuciones de Linux pero también se pueden descargar los instaladores para Windows o Macintosh en http://www.python.org/.
Eric
Los desarrolladores esperan que los lenguajes que usan sean soportados por un IDE (Entorno de Desarrollo Integrado, Integrated Development Enviroment en inglés). Python no es una excepción. Un IDE te ayuda a organizar el trabajo y además incorpora un editor de texto y un set de herramientas de programación y de debugging (depuración).
Hay dos IDE para Python que personalmente probé: Idle y Eric. Eric, es el más recomendable de los dos. Todas las distros de Linux deberían incluirlo. Parece que también funciona sobre Windows. Puedes informarte mejor en el sitio de Eric: http://eric-ide.python-projects.org/.

SPE (Stani's Python Editor)
Esta es un IDE que descubrí mientras escribía este libro. Viene con Fedora y además de ser un editor Python hace diagramas UML para tu código y los muestra en PyDoc. Este es SPE mostrando un diagrama UML para una de las Actividades comentadas en este libro:
Si sos un desarrollador muy experimentado puedes encontrar en SPE una alternativa útil, en cambio si estás comenzando, Eric será seguramente suficiente.

Otros IDE's
Hay también un IDE comercial de Python llamado Wingware, el cual tiene una versión que puedes usar sin costo. Puedes aprender más sobre él en http://www.wingware.com/.
Inkscape
Inkscape es una herramienta para crear imágnes en formato SVG. Sugar usa SVG para los íconos de las Actividades y otros gráficos. El ícono "XO" que caracteriza a cada niño en la vista vecindario es un SVG que puede ser modificado.
Inkscape se utiliza para crear el ícono de la Actividad.
Inkscape viene con toda distribución de Linux y puede instalarse también en Windows. Más información en este sitio: http://www.inkscape.org/.
Git
Git es un controlador de versiones. Git guarda una versión del código de tu programa de forma que te sea fácil recuperarla. Cada vez que hagas un cambio debes pedirle a Git que guarde tu código en su repositorio. Si precisas recurrir a una versión anterior estará disponible. Mejor todavía, si surge un problema en tu código, Git lo compara con cualquier versión anterior y te muestra exactamente las líneas que cambiaste.
Si hubieran dos personas trabajando sobre el mismo programa de forma independiente, un sistema de control de versiones combinaría sus cambios de forma automática.
Imagina que alguien te reporta un bug vergonzoso mientras estás trabajando en una versión nueva y más poderosa de una Actividad que recién lanzaste. Si usaste Git, no precisás pedirle a las personas que esperen hasta el lanzamiento de tu nueva versión, alcanza con crear una bifurcación de la versión anterior y trabajarla en paralelo con la versión que estás mejorando. De hecho Git, tratará a la versión vieja que estás arreglando y a la nueva como dos proyectos separados.
Puedes aprender más de Git en su sitio web: http://git-scm.com/.
Cuando estés pronto para usar un repositorio Git en tu proyecto puedes crear uno acá: http://git.sugarlabs.org/. Volveré al tema de cómo crear y cómo usar el repositorio un poco más adelante en este libro.
Hay un repositorio Git conteniendo todos los ejemplos de código de este libro. Después de que tengas Git instalado puedes copiar este repositorio a tu computadora con este comando:
git clone git://git.sugarlabs.org/\ myo-sugar-activities-examples/mainline.git
Este comando deber ser tipeado en una única línea. La retrobarra (\) al final de la primera línea se usa en Linux para continuar un comando largo en otro renglón. Está usada acá para lograr que el comando entre en el ancho de página en la versión impresa de este libro. Cuando escribas el comando puedes dejarla de lado y escribir myo-sugar-activities-examples/mainline.git inmediatamente después de git.sugarlabs.org/.
Esta convención para partir comandos largos en múltiples líneas será usada muchas veces a lo largo del libro. Vas a ver que el código del Git generalmente tiene líneas más largas que el de los ejemplos del libro. Por esta razón te recomiendo no tratar de copiar el código de estos ejemplos y usar en cambio el código que descargaste del repositorio Git.
GIMP
Gimp es uno de los programas más útiles y peor nombrados de la historia 1 . Se puede decir que es una versión abierta y libre del Adobe Photoshop. Para manipular imágenes distintas a las SVG necesitarás este programa.
Se puede usar GIMP para editar las capturas de pantalla.
Nunca vas a necesitar este programa para el desarrollo mismo de una Actividad, pero si será útil a la hora de organizar las capturas de pantalla que muestren tu Actividad en acción y de distribuirla. Nada vende tanto una Actividad a los usuarios potenciales como las buenas capturas de pantalla.

Emulación de Sugar
La mayoría de las distros Linux vienen con Sugar incluido. Incluso en Fedora se puede correr Sugar como una alternativa al entorno de escritorio. Al loggearte en el GDM, te aparece Sugar como una opción de escritorio junto con GNOME, KDE, Window Maker y otros manejadores de ventanas que hayas instalado.
Este no es el procedimiento estándar para testear Sugar. Lo normal es usar una herramienta llamada Xephyr y correr el entorno Sugar como una ventana en tu equipo. Xephyr corre una sesión-X dentro de una ventana y ahí adentro se ejecuta Sugar. De esta manera es sencillo obtener capturas de pantalla de Sugar, detener o reiniciar las sesiones de Sugar sin tener que reiniciar la máquina, también es sencillo correr varias copias simultáneas de Sugar para testear colaboración.

Volveremos a esto cuando sea el momento de probar tu primer Actividad.
2




