panorama de herramientas y buenas prácticas en el...

44
1 Panorama de herramientas y buenas prácticas en el desarrollo de software Libre Manuel Dávila Sguerra [email protected] Grupo Linux S.A. Tel. 3132952 Bogotá

Upload: haminh

Post on 02-Nov-2018

217 views

Category:

Documents


0 download

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 12

Cortesía de:Manuel Dávila yJairo Rueda

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 14

Cortesía de:Manuel Dávila yJairo Rueda

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 21

Tendencias tiobe.com

XXVII Salón de Informática - Septiembre'2007 22

Tendencias-1 google.com

XXVII Salón de Informática - Septiembre'2007 23

Tendencias-2 google.com

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 28

Sistemas de control de versiones:cvs, subversion

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 31

CVS usando Eclipse

XXVII Salón de Informática - Septiembre'2007 32

cvs usando cvsweb

XXVII Salón de Informática - Septiembre'2007 33

cvs usando cvsgraph

XXVII Salón de Informática - Septiembre'2007 34

Editor de texto gedit

XXVII Salón de Informática - Septiembre'2007 35

Editor de texto vim

XXVII Salón de Informática - Septiembre'2007 36

Editor de texto Blue Fish

XXVII Salón de Informática - Septiembre'2007 37

Todos los editores

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 39

Punto de entrada a bluefish en sourceforge

XXVII Salón de Informática - Septiembre'2007 40

Area pública bluefish en sourceforge.net

XXVII Salón de Informática - Septiembre'2007 41

cvs de bluefish en sourceforge.net

XXVII Salón de Informática - Septiembre'2007 42

Directorio programas fuente bluefish ensourceforge.net

XXVII Salón de Informática - Septiembre'2007 43

Los fuentes de bluefish en sourceforge.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