Módulo desktop/mobile
Objetivos:
- Dominar herramientas libres para la coordinación de proyectos (herramientas agile, wikis, trackers, etc.)
- Familiarizarse con las herramientas libres para el desarrollo de proyectos con sistemas GNU/Linux (entornos de desarrollo, depuradores, profilers, etc.)
- Conocer las principales tecnologías libres de desarrollo para el desktop: GNOME, KDE, Freedesktop.org, C, Mono y Python
- Conocer las principales tecnologías libres de desarrollo para dispositivos mobile: GNOME Mobile, QML, (Maemo/MeeGo), Tizen, Android.
- Aplicar los conocimientos en sesiones prácticas en las que se creará una aplicación libre multiplataforma (para desktop y mobile, basada en GNOME), con las tecnologías, herramientas y metodologías de trabajo que existen en las empresas y comunidades de software libre
- Comprender los conceptos importantes en el desarrollo software: documentación, accesibilidad, localización, empaquetado, gestión de bugs, testing e integración continua
- Participar en charlas complementarias de personalidades involucradas en la comunidad y empresas relevantes del sector (GNOME, KDE, Nokia)
Temario del curso:
Conocimientos previos necesarios: nociones básicas de software libre, conocimiento del entorno de trabajo en sistemas libres. Alguna experiencia genérica en programación y coordinación de proyectos resulta positiva pero no es imprescindible.
- Introducción. Introducción a las tecnologías que se van a ver durante el curso. Revisión de las principales herramientas de coordinación y desarrollo.
- Principales tecnologías libres para el desarrollo. La plataforma GNOME (con C como lenguaje y su relación con Freedesktop.org). La plataforma KDE (con C++ como lenguaje y su relación con Freedesktop.org). Python como lenguaje de alto nivel para programar en el desktop. Android y Tizen (MeeGo) como plataformas libres para dispositivos móviles.
- Desarrollo de software para el desktop. Estudio de las tecnologías GNOME y Freedesktop en profundidad. Creación del demonio cliente con C, GNOME y tecnologías Freedesktop.org. Creación de la UI para el desktop con Python.
- Desarrollo de software para dispositivos móviles. Estudio de las plataformas Tizen (MeeGo) y Android.
- Conceptos importantes de desarrollo de software. Internacionalización y localización. Accesibilidad en desktop y mobile. Documentación avanzada de proyectos. Testing e integración continua. Empaquetado y publicación. Gestión de bugs y mantenimiento.

