panorama de herramientas y buenas prácticas en el...
TRANSCRIPT
1
Panorama de herramientas y buenasprácticas en el desarrollo de software
Libre
Manuel Dávila [email protected]
Grupo Linux S.A.
Tel. 3132952
Bogotá
XXVII Salón de Informática - Septiembre'2007 2
Contenido
● La Catedral y el Bazar de Erik Raymond● El mundo del programador
● Momentos que se viven● Liderazgo del gestor● Relaciones con los terceros
● Sinergias que se crean alrededor● Panorama de las herramientas preferidas● Creando estándares muy bien definidos● Repositorios de software libre
XXVII Salón de Informática - Septiembre'2007 3
La catedral y el Bazar de Erik Raymond
● “Linux es subversivo. ¿Quién hubierapensado hace apenas cinco años que unsistema operativo de talla mundial surgiría,como por arte de magia, gracias a laactividad hacker desplegada en ratos librespor varios miles de programadoresdiseminados en todo el planeta, conectadossolamente por los tenues hilos de laInternet?” 1997
XXVII Salón de Informática - Septiembre'2007 4
Los intereses del programador
● Desarrollo propietario: nace de las necesidades delcliente
● Desarrollo libre: nace de las necesidades delprogramador
● Esto define la manera de atacar un problema● Cambia las prioridades que se dan en los
desarrollos● Motivaciones: no predominan los intereses
económicos● Pero estos no se descartan
XXVII Salón de Informática - Septiembre'2007 5
Reutilización de código propio y de terceros
● Cobra un valor superlativo en el software libre● Va más allá de las propias librerías, de aumentar
la productividad, del mantenimiento futuro, de unúnico sitio de solución de los algoritmos
● Trasciende a la reutilización del código de otros● A los hackers se les identifica por su vanidad
excesiva, pero no sienten pena de reutilzar elcódigo de otros
● Buscar el camino más fácil es un síntoma deinteligencia. Lo pregona Linus Torvalds
XXVII Salón de Informática - Septiembre'2007 6
Problemas de consciencia
● Caminos tormentosos● Hay veces en que la mejor solución es la de
desechar● Botar al cesto de la basura lo realizado● Recomensar● Es un momento de reconciliación con uno mismo● Beneficioso para el espíritu y para el proyecto.
Como perdonar
XXVII Salón de Informática - Septiembre'2007 7
Todo debe ser interesante
● Trabajo de alto nivel de abstracción● Actividad de comportamiento humano (Complejo)?● No al síndrome de querer terminar● Como un escritor: solo le interesa el párrafo actual● Al programador solo le debe interesar el módulo
actual● Las dificultades no son problema para resolver● Son momentos de recreación● De diversión intelectual● Libertad: sensación cercana a la felicidad, Jiddu
Krishnamurti
XXVII Salón de Informática - Septiembre'2007 8
Del interés por el proyecto al interés por quese lleve a cabo
�El gestor ejerce un liderazgo en el proyecto� Liderázgo no autoritario� Motivaciones: Seguir al líder, ser su coautor,aprender� Si el líder pierde el interés por el proyecto este setransmitirá� Es un momento en el cual debe heredar elproyecto� Nombrar un sucesor que sea consideradocompetente� No hacerlo es acabar con el proyecto.
XXVII Salón de Informática - Septiembre'2007 9
La transformación de los clientes a colaboradores
● En el mundo propietario cliente el lo más cercanoun jefe, hay jefes buenos y jefes malos
● Relaciones programador - cliente● Se pueden deteriorar y hacerle daño al proyecto● En el software libre el cliente es el colaborador● Es un socio permanente● Un potencial coautor● No es quien le reclama por un error● Es quien le ayuda a detectarlo● Es quien de manera gratuita conforma su equipo
de pruebas
XXVII Salón de Informática - Septiembre'2007 10
Software a la medida
Cortesía de:Manuel Dávila yJairo Rueda
XXVII Salón de Informática - Septiembre'2007 11
El error como un elemento de oportunidad
● El error es parte de la naturaleza del software● Es un factor humano que siempre estará presente● Su aparición no golpea la vanidad del programador● Da oportunidades a los colaboradores● Ser aceptado dignamente como un coautor
apreciado, reconocer y escuchar las opiniones delos colaboradores
● Psicología del programador de Gerald Weimberg:Programación sin ego. Cuando no hay propiedaddel código y se estimula la búsqueda de loserrores y el avance es más rápido.
XXVII Salón de Informática - Septiembre'2007 13
Proyectos Beta permanentes
● El desarrollo de software no es un trabajo terminal● Es un proceso permanente, su estado preferido es
el beta● Debe liberar versiones frecuentemente● No hacerlo es transmitir desinterés por parte de
líder● O abandono por parte de los coautores● Se da si se escucha a los colaboradores● No olvidar que son beta-testers
XXVII Salón de Informática - Septiembre'2007 15
Enséñame tu código y te diré quién eres
● Exponer las facetas de la personalidad● Weimberg: un algoritmo es resuelto de formas
diferentes, es una expresión de la personalidad
● En el software propietario el código fuente pocose expone, en el libre esta sujeto a estaexposición de si mismo
● Rasmus Lerdorf el creador del lenguaje php:La comunidad de desarrolladores acepta orechaza, es una decisión de tipo social� Raymond: Dime cómo son las estructurasinteligentes de tus datos y te diré quién eres
XXVII Salón de Informática - Septiembre'2007 16
La experiencia:archivo de errores bien organizado
● Usar los errores en el proceso de aprendizaje● En investigación aplicada se está de buenas si no
funciona, de malas si funciona en el primer intento● El esfuerzo para resolver el problema: aprendizaje● En el software ha veces es preferible recomensar
sobre todo si la concepción del problema es errada● Antoine De Saint-Exupéry en el Principito: "La
perfección se alcanza no cuando ya no hay nadaque agregar, sino cuando ya no hay algo quequitar””
XXVII Salón de Informática - Septiembre'2007 17
Muchas más premisas
● El comportamiento de los colaboradores● Relaciones no basadas en las luchas de poder● Inexistencia de acciones coercitivas
● Actuar bajo las normas del entendimiento● No las del autoritarismo● Identificar voluntades convergentes● Motivaciones más allá de lo económico
● La satisfacción personal, más halla del deber● Es válido actuar por ego si los resultados son
exitosos
XXVII Salón de Informática - Septiembre'2007 18
El acrónimo LAM
● El acrónimo LAMP se refiere a “un conjunto desubsistemas de software necesarios paraalcanzar una solución global, en este casoconfigurar sitios web o servidores dinámicos conun esfuerzo reducido”
● En las tecnologías LAMP esto se consiguemediante la unión de las siguientes tecnologías:Linux, Apache, MySQL, Php
● C, C++, Python
XXVII Salón de Informática - Septiembre'2007 19
Entornos, herramientas y sistemas
● El mundo del software libre es conservador en:lenguajes, herramientas y entornos
● Plataformas difundidas: C, C++,Java, Python,Php, Perl
● Cualquiera las puede usar
● Necesitan máquinas económicas● El modelo de desarrollo es distribuido en todo el
mundo● Preferencia por herramientas de colaboración
asincrónicas
XXVII Salón de Informática - Septiembre'2007 20
Tendencias
● Tiobe: http://www.tiobe.com/tpci.htm● Google: http://www.google.com/trends
XXVII Salón de Informática - Septiembre'2007 24
Construcción de programas dados los fuentes
● Make● Especifica árboles de dependencias entre
archivos: x.o depende de los archivos x.c y x.h● Cuando se modifica un fuente y luego se ejecuta
make , se recompilarán solamente los módulosafectados y se volverá a montar el objeto final
● Es muy complicado y muy dependiente deentornos tipo Unix
● Otras alternativas: ant
XXVII Salón de Informática - Septiembre'2007 25
Herramientas para hacer portátiles a los programas:
● Autoconf: Herramienta para producir shell scriptsque configura paquetes desde el código fuentepara adaptarlos a sistemas tipo Unix produciendoscripts independientes.
● Usa el macro procesador m4 para transformasarchivos del tipo configure.ac en un script portable.
● Automake: herramienta de programación paraproducir archivos portables para ser usados pormake
XXVII Salón de Informática - Septiembre'2007 26
Compresión y descompresión
● Compresión: tar cvf paquete-1.2.1.tar paquete● Crea: paquete-1.2.1.tar● Compresión: gzip paquete-1.2.1.tar● Crea: paquete-1.2.1.tar.gz● Compilar con make:● Programa recibido: tar xzvf paquete-1.2.2.tar.gz● Crear el directorio: paquete.1.2.2/● Entrar al directorio: cd paquete-1.2.1 ./configure make make install
XXVII Salón de Informática - Septiembre'2007 27
Colaboración
● 1970: uucp para transferencia de archivos Unix● 1979: el primer enlace USENET sobre UUCP● news (noticias) de USENET, foros temáticos● estructurados jerarquicamente● 1981: BITNET (1981)● Hoy: listas de correo como mailman, majordomo● Foros Web o weblogs: barrapunto para noticias● Wikis : media wiki, moin moin● Chats: IRC Internet Relay Chat canales
temáticos, no son comunes por sincróniaMultimedia : no son comunes por disponibilidad
XXVII Salón de Informática - Septiembre'2007 29
Herramientas cvs
● Eclipse : http://www.eclipse.org/● Cvsweb:
http://www.freebsd.org/projects/cvsweb.html● Wincvs : http://www.wincvs.org/
XXVII Salón de Informática - Septiembre'2007 30
cvs y el administrador del desarrollo
● Debe manejar permisos, coordinar desarrolladores● Definir números de versiones● Crear ramas para versiones estándar y
experimentales● Mezclar ramas● Facilitar la coordinación del equipo:● Mecanismos automáticos: correo electrónicos por eventos, forzar a acciones automáticas antes de realizar un compromiso, como comprobaciones automáticas de estilo, compilaciones o pruebas.
XXVII Salón de Informática - Septiembre'2007 38
Sitios de soporte de desarrollo
● sourceforge.net● Páginas estáticas o dinámicas, CGI's con MySQL● Sesiones remotas usando ssh● cvs● Foros, listas de correos,Noticias, rastreadores de
errores● Gestores de tareas para definir subproyectos para
los desarrolladores● Servicio de transporte de paquetes de software● Publicación de documentos en HTML● Backup
XXVII Salón de Informática - Septiembre'2007 42
Directorio programas fuente bluefish ensourceforge.net
XXVII Salón de Informática - Septiembre'2007 44
Conclusiones
● Los grupos de trabajo han creado reglas de tiposocial
● La decisión de trabajar en un proyecto es libreconlleva circunstancias diferentes a lo tradicional
● Hay un líder● Se debe tener una actitud para exponer su código● La herramientas son conservadoras● El trabajo de grupo tiene un alto componente
relacionado con el factor humano● Las motivaciones son de índole personal● Los resultados son de índole social y económico