Post on 06-Jul-2015
Introducción al desarrollo con
Denis Fuenzalida <denis.fuenzalida@gmail.com / @dfuenzal>
01 de Octubre 2011
Acerca de mí
● Casi 10 años desarrollando aplicaciones [web]
● Primero programando en Perl, luego Java, Python … ultimamente Groovy y Ruby
● Usuario de Ubuntu desde 2005, colaborador esporádico (traducciones, foros, blog)
● Varios pequeños proyectos liberados en la web
● Actualmente, colaboro como editor en www.ManzanaMecanica.org
Acerca de la audiencia
¿Conoces acerca del software libre?
¿Usuario de software libre?
¿Alguna experiencia en programación?
¿Usuario de Linux? ¿Debian? ¿Ubuntu?
¿Qué es Launchpad?
● Plataforma web para colaborar y alojar proyectos de Software Libre*
● Desarrollada para Ubuntu, pero funciona con todo tipo de proyectos
● www.launchpad.net
* También hay suscripciones para proyectos de software cerrado desde 250 dólares/año
Launchpad para colaboradores
● Por mi interés en mejorar un proyecto● Averiguar cómo se realiza una tarea● Reportar un bug para que sea corregido● Solicitar que se agregue una funcionalidad a un
programa● Para que un proyecto esté disponible en mi idioma
o en uno que yo conozco● Ninguna de estas actividades requiere
conocimientos de programación
Launchpad para desarrolladores
● Por mi interés en crear o ayudar a completar un proyecto● Desarrollar un programa nuevo● Ayudar a programar a los desarrolladores de un
proyecto ya existente● Enviar una mejora a un proyecto que corrige un
bug● Para que un programa nuevo esté disponible para
instalarse en Ubuntu con facilidad (desde el Centro de Software de Ubuntu)
Servicios disponibles en LP● Bugs
● Reporte y seguimiento de errores
● Answers● Servicio de asistencia en línea● Base de Conocimiento
● Blueprints● Propuestas y especificación de nuevas funciones
● Translations● Traducciones del software a docenas de idiomas
● Code● Alojamiento de código● Repositorios PPA
Reporte y seguimiento de errores● Los errores se pueden reportar desde la misma aplicación
en la mayoría de los casos
Reporte y seguimiento de errores
Reporte y seguimiento de errores
Reporte y seguimiento de errores
● Suscribirse por mail a los cambios en un bug● Marcar bugs como duplicados de otros● Adjuntar archivos (videos, capturas de pantalla, logs)
● Adjuntar un parche que soluciona el problema
● Definir atributos● Urgencia (desde “muy importante” “bajo” y “no decidido”)→● Error o nueva funcionalidad (wishlist)● Error ya está confirmado (triage)
● Se puede integrar con otros sistemas de otros equipos de desarrollo: Bugzilla, Trac, Sourceforge, Google Code ...
Launchpad Answers
Launchpad Answers
Launchpad Blueprints
● Permite especificar ideas y tareas que se quieren implementar en un proyecto
● Se pueden usar para definir la orientación del proyecto, para ver en que etapa o hito se quiere completar una idea o funcionalidad
Traducciones en Launchpad
● Una de las funciones más potentes● No requiere conocimientos de
programación (sólo inglés)● Interfaz web● Reutiliza traducciones desde otros
proyectos● Se puede configurar de forma
completamente abierta o más restringida (equipos de traducción)
● Las traducciones se pueden descargar o integrar a una rama (branch) de código de forma automática
Traducciones en Launchpad
Traducciones en Launchpad
Traducciones en Launchpad
● Se puede reutilizar traducciones similares de otros proyectos
Alojamiento de código en LP
● Utiliza Bazaar (bazaar.canonical.com), pero se puede importar código de otras fuentes (Google Code, Sourceforge, SVN...)
● Desarollo distribuido (similar a Git, Mercurial, etc.)
● Se puede tener código personal/experimental y ramas de desarrollo oficiales de un proyecto
● Se puede operar con línea de comandos o con herramientas de escritorio (a-la TortoiseSVN...)
Alojamiento y construcción de proyectos
● En Ubuntu (y en casi todas las distribuciones de Linux), los programas se instalan en forma de paquetes de software
● Paquete de software = Archivos + Metadatos
● Los metadatos indican:
● Sección del catálogo al que pertenece este programa o paquete (utilidades, oficina, web, juegos...)
● Dependencia en otros paquetes (y versiones)● Pasos a seguir en la instalación (y desinstalación)● Otros: Autor(es), licencia, página web, etc.
Alojamiento y construcción de proyectos
● Los programas provienen de los repositorios en CD,DVD o de repositorios en línea
● Se pueden agregar repositorios llamados PPA (Personal Package Archive) que están alojados en Launchpad● Centro de software Editar Orígenes del Software→ →● $ sudo add-apt-repository ppa:usuario/repositorio
Alojamiento y construcción de proyectos
● Launchpad permite construir y distribuir programas que no forman parte de la distribución oficial de Ubuntu
● Sin problemas de hosting, ni de ancho de banda● Permite generar paquetes de software firmados digitalmente
y para diferentes procesadores (32 y 64 bits)● Puedo crear versiones optimizadas de programas ya
existentes, o empaquetar versiones más nuevas que las que están disponibles ahora o de programas ya no soportados
Alojamiento y construcción de proyectos
● Se obtiene el código del proyecto y se prepara para que sea instalable
● Se agregan metadatos para que se pueda convertir en un paquete de software (debianización)
● Se sube a Launchpad para su construcción automática y despliegue en nuestro repositorio PPA
Alojamiento y construcción de proyectos
● Se obtiene el código del proyecto y se prepara para que sea instalable
$ git clone https://github.com/dfuenzalida/gedit-git-branch-statusbar $ mv gedit-git-branch-statusbar gedit-git-branch-statusbar-1.0$ cd gedit-git-branch-statusbar-1.0
# Generar archivos para paquete .deb$ dh_make -c gpl -e denis.fuenzalida@gmail.com -s --createorig
Alojamiento y construcción de proyectos
● Se agregan metadatos para que se pueda convertir en un paquete de software (debianización)
Alojamiento y construcción de proyectos
● Se sube a LP para su construcción automática y despliegue en nuestro repositorio PPA
# Creo un paquete de código fuente con mi firma digital$ debuild -S -sa -kADF0F1AD. . .Successfully signed dsc and changes files
$ cd ..$ dput ppa:denis-fuenzalida/ppa gedit*.changes. . .
Uploading to ppa (via ftp to ppa.launchpad.net): Uploading gedit-git-branch-statusbar_1.0-1.dsc: done. Uploading gedit-git-branch-statusbar_1.0.orig.tar.gz: done. Uploading gedit-git-branch-statusbar_1.0-1.debian.tar.gz: done. Uploading gedit-git-branch-statusbar_1.0-1_source.changes: done.Successfully uploaded packages.
Alojamiento y construcción de proyectos
● Se sube a LP para su construcción automática y despliegue en nuestro repositorio PPA
Alojamiento y construcción de proyectos
● Para que otros usuarios instalen los programas de nuestro PPA:
● Centro de Software de Ubuntu Orígenes →del software Otro software→
Quickly
● Nueva herramienta para el desarrollo rápido de aplicaciones de escritorio
● Python, GTK, Gedit, Glade, Bazaar y Launchpad en un paquete más integrado
● Ver más en developer.ubuntu.com/get-started/
Sitio de desarrolladores de Ubuntu
● Recién estrenado: developer.ubuntu.com● Tutoriales sobre las tecnologías disponibles
para desarrollo de aplicaciones● Cómo crear un reproductor multimedia con Python
y GTK
Fin
Muchas gracias!