panorama de herramientas y buenas prácticas en el...
Embed Size (px)
TRANSCRIPT
-
1
Panorama de herramientas y buenasprcticas en el desarrollo de software
Libre
Manuel Dvila [email protected]
Grupo Linux S.A.
Tel. 3132952
Bogot
-
XXVII Saln de Informtica - 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 estndares muy bien definidos Repositorios de software libre
-
XXVII Saln de Informtica - Septiembre'2007 3
La catedral y el Bazar de Erik Raymond
Linux es subversivo. Quin hubierapensado hace apenas cinco aos que unsistema operativo de talla mundial surgira,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 Saln de Informtica - 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
econmicos Pero estos no se descartan
-
XXVII Saln de Informtica - Septiembre'2007 5
Reutilizacin de cdigo propio y de terceros
Cobra un valor superlativo en el software libre Va ms all de las propias libreras, de aumentar
la productividad, del mantenimiento futuro, de unnico sitio de solucin de los algoritmos
Trasciende a la reutilizacin del cdigo de otros A los hackers se les identifica por su vanidad
excesiva, pero no sienten pena de reutilzar elcdigo de otros
Buscar el camino ms fcil es un sntoma deinteligencia. Lo pregona Linus Torvalds
-
XXVII Saln de Informtica - Septiembre'2007 6
Problemas de consciencia
Caminos tormentosos Hay veces en que la mejor solucin es la de
desechar Botar al cesto de la basura lo realizado Recomensar Es un momento de reconciliacin con uno mismo Beneficioso para el espritu y para el proyecto.
Como perdonar
-
XXVII Saln de Informtica - Septiembre'2007 7
Todo debe ser interesante
Trabajo de alto nivel de abstraccin Actividad de comportamiento humano (Complejo)? No al sndrome de querer terminar Como un escritor: solo le interesa el prrafo actual Al programador solo le debe interesar el mdulo
actual Las dificultades no son problema para resolver Son momentos de recreacin De diversin intelectual Libertad: sensacin cercana a la felicidad, Jiddu
Krishnamurti
-
XXVII Saln de Informtica - Septiembre'2007 8
Del inters por el proyecto al inters por quese lleve a cabo
El gestor ejerce un liderazgo en el proyecto Liderzgo no autoritario Motivaciones: Seguir al lder, ser su coautor,aprender Si el lder pierde el inters 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 Saln de Informtica - Septiembre'2007 9
La transformacin de los clientes a colaboradores
En el mundo propietario cliente el lo ms cercanoun jefe, hay jefes buenos y jefes malos
Relaciones programador - cliente Se pueden deteriorar y hacerle dao 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 Saln de Informtica - Septiembre'2007 10
Software a la medida
Cortesa de:Manuel Dvila yJairo Rueda
-
XXVII Saln de Informtica - 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 aparicin 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
Psicologa del programador de Gerald Weimberg:Programacin sin ego. Cuando no hay propiedaddel cdigo y se estimula la bsqueda de loserrores y el avance es ms rpido.
-
XXVII Saln de Informtica - Septiembre'2007 12
Cortesa de:Manuel Dvila yJairo Rueda
-
XXVII Saln de Informtica - 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 desinters por parte de
lder O abandono por parte de los coautores Se da si se escucha a los colaboradores No olvidar que son beta-testers
-
XXVII Saln de Informtica - Septiembre'2007 14
Cortesa de:Manuel Dvila yJairo Rueda
-
XXVII Saln de Informtica - Septiembre'2007 15
Ensame tu cdigo y te dir quin eres
Exponer las facetas de la personalidad Weimberg: un algoritmo es resuelto de formas
diferentes, es una expresin de la personalidad
En el software propietario el cdigo fuente pocose expone, en el libre esta sujeto a estaexposicin de si mismo
Rasmus Lerdorf el creador del lenguaje php:La comunidad de desarrolladores acepta orechaza, es una decisin de tipo social Raymond: Dime cmo son las estructurasinteligentes de tus datos y te dir quin eres
-
XXVII Saln de Informtica - Septiembre'2007 16
La experiencia:archivo de errores bien organizado
Usar los errores en el proceso de aprendizaje En investigacin 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 concepcin del problema es errada Antoine De Saint-Exupry en el Principito: "La
perfeccin se alcanza no cuando ya no hay nadaque agregar, sino cuando ya no hay algo quequitar
-
XXVII Saln de Informtica - Septiembre'2007 17
Muchas ms 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 ms all de lo econmico
La satisfaccin personal, ms halla del deber Es vlido actuar por ego si los resultados son
exitosos
-
XXVII Saln de Informtica - Septiembre'2007 18
El acrnimo LAM
El acrnimo LAMP se refiere a un conjunto desubsistemas de software necesarios paraalcanzar una solucin global, en este casoconfigurar sitios web o servidores dinmicos conun esfuerzo reducido
En las tecnologas LAMP esto se consiguemediante la unin de las siguientes tecnologas:Linux, Apache, MySQL, Php
C, C++, Python
-
XXVII Saln de Informtica - 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 mquinas econmicas El modelo de desarrollo es distribuido en todo el
mundo Preferencia por herramientas de colaboracin
asincrnicas
-
XXVII Saln de Informtica - Septiembre'2007 20
Tendencias
Tiobe: http://www.tiobe.com/tpci.htm Google: http://www.google.com/trends
-
XXVII Saln de Informtica - Septiembre'2007 21
Tendencias tiobe.com
-
XXVII Saln de Informtica - Septiembre'2007 22
Tendencias-1 google.com
-
XXVII Saln de Informtica - Septiembre'2007 23
Tendencias-2 google.com
-
XXVII Saln de Informtica - Septiembre'2007 24
Construccin 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 recompilarn solamente los mdulosafectados y se volver a montar el objeto final
Es muy complicado y muy dependiente deentornos tipo Unix
Otras alternativas: ant
-
XXVII Saln de Informtica - Septiembre'2007 25
Herramientas para hacer porttiles a los programas:
Autoconf: Herramienta para producir shell scriptsque configura paquetes desde el cdigo 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 programacin paraproducir archivos portables para ser usados pormake
-
XXVII Saln de Informtica - Septiembre'2007 26
Compresin y descompresin
Compresin: tar cvf paquete-1.2.1.tar paquete Crea: paquete-1.2.1.tar Compresin: 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 Saln de Informtica - Septiembre'2007 27
Colaboracin
1970: uucp para transferencia de archivos Unix 1979: el primer enlace USENET sobre UUCP news (noticias) de USENET, foros temticos 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
temticos, no son comunes por sincrniaMultimedia: no son comunes por disponibilidad
-
XXVII Saln de Informtica - Septiembre'2007 28
Sistemas de control de versiones:cvs, subversion
-
XXVII Saln de Informtica - Septiembre'2007 29
Herramientas cvs
Eclipse: http://www.eclipse.org/ Cvsweb:
http://www.freebsd.org/projects/cvsweb.html Wincvs: http://www.wincvs.org/
-
XXVII Saln de Informtica - Septiembre'2007 30
cvs y el administrador del desarrollo
Debe manejar permisos, coordinar desarrolladores Definir nmeros de versiones Crear ramas para versiones estndar y
experimentales Mezclar ramas Facilitar la coordinacin del equipo: Mecanismos automticos: correo electrnicos por eventos, forzar a acciones automticas antes de realizar un compromiso, como comprobaciones automticas de estilo, compilaciones o pruebas.
-
XXVII Saln de Informtica - Septiembre'2007 31
CVS usando Eclipse
-
XXVII Saln de Informtica - Septiembre'2007 32
cvs usando cvsweb
-
XXVII Saln de Informtica - Septiembre'2007 33
cvs usando cvsgraph
-
XXVII Saln de Informtica - Septiembre'2007 34
Editor de texto gedit
-
XXVII Saln de Informtica - Septiembre'2007 35
Editor de texto vim
-
XXVII Saln de Informtica - Septiembre'2007 36
Editor de texto Blue Fish
-
XXVII Saln de Informtica - Septiembre'2007 37
Todos los editores
-
XXVII Saln de Informtica - Septiembre'2007 38
Sitios de soporte de desarrollo
sourceforge.net Pginas estticas o dinmicas, 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 Publicacin de documentos en HTML Backup
-
XXVII Saln de Informtica - Septiembre'2007 39
Punto de entrada a bluefish en sourceforge
-
XXVII Saln de Informtica - Septiembre'2007 40
Area pblica bluefish en sourceforge.net
-
XXVII Saln de Informtica - Septiembre'2007 41
cvs de bluefish en sourceforge.net
-
XXVII Saln de Informtica - Septiembre'2007 42
Directorio programas fuente bluefish ensourceforge.net
-
XXVII Saln de Informtica - Septiembre'2007 43
Los fuentes de bluefish en sourceforge.net
-
XXVII Saln de Informtica - Septiembre'2007 44
Conclusiones
Los grupos de trabajo han creado reglas de tiposocial
La decisin de trabajar en un proyecto es libreconlleva circunstancias diferentes a lo tradicional
Hay un lder Se debe tener una actitud para exponer su cdigo 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 econmico