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.

  1. 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.
  2. 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.
  3. 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.
  4. Desarrollo de software para dispositivos móviles. Estudio de las plataformas Tizen (MeeGo) y Android.
  5. 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.