Cómo gestionar con éxito un proyecto de software libre - Servicio

Cómo gestionar con éxito
un proyecto de software libre
Manuel Palomo Duarte
Oficina Software Libre y
Conocimiento Abierto
Universidad de Cádiz
Índice
●
Modelos de desarrollo de software libre
●
Tecnologías que dan soporte
●
Buenas prácticas
●
Emprender con software libre
●
Referencias
© Hans Lohninger y Allie_Caulfield respectivamente
Modelo de desarrollo “Catedral”
●
●
Un grupo reducido de personas controlan el desarrollo
Liberaciones de código en momentos concretos (cuando ellos deciden)
●
Toma de decisiones muy centralizada
●
Difícil formar parte del núcleo
© Ra Boe Modelo de desarrollo “Bazar”
●
Modelo descentralizado
●
Todo el código está accesible en tiempo real
●
Decisiones más consensuadas
●
Más ojos mirando, más manos programando
●
Más asequible colaborar con el proyecto (pero no fácil)
¿Quien crea las definiciones de catedral y bazar?
© RussNelson
●
Definiciones creadas por Eric S. Raymond
–
“Open Source” ¿diferencia con SL?
–
Un testigo accidental
–
Cuidado que dispara ...
Libro: La Catedral y el bazar (gratis digital)
Lecciones de Raymond en CATB
Claves del funcionamiento del bazar
Lecciones de Raymond en CATB
1. Todo buen trabajo de software comienza a partir de las necesidades personales del programador.
2. Los buenos programadores saben qué escribir. Los mejores, que reescribir (y reutilizar).
3. "Contemple desecharlo; de todos modos tendrá que hacerlo." (Fred Brooks, The Mythical Man­Month)
4. Si tienes la actitud adecuada, encontrarás problemas interesantes.
5. Cuando se pierde el interés en un programa, el último deber es heredarlo a un sucesor competente.
Lecciones de Raymond en CATB
6. Tratar a los usuarios como colaboradores es la forma más apropiada de mejorar el código, y la más efectiva de depurarlo.
7. Libere rápido y a menudo, y escuche a sus clientes. 8. Dada una base suficiente de desarrolladores asistentes y beta­testers, casi cualquier problema puede ser caracterizado rápidamente, y su solución ser obvia al menos para alguien.
9. Las estructuras de datos inteligentes y el código burdo funcionan mucho mejor que en el caso inverso.
Lecciones de Raymond en CATB
10. Si usted trata a sus analistas (beta­testers) como si fueran su recurso más valioso, ellos le responderán convirtiéndose en su recurso más valioso.
11. Lo más grande, después de tener buenas ideas, es reconocer las buenas ideas de sus usuarios. Esto último es a veces lo mejor.
12. Frecuentemente, las soluciones más innovadoras y espectaculares provienen de comprender que la concepción del problema era errónea.
Lecciones de Raymond en CATB
13. "La perfección (en diseño) se alcanza no cuando ya no hay nada que agregar, sino cuando ya no hay algo que quitar."
14. Toda herramienta es útil empleándose de la forma prevista, pero una gran herramienta es la que se presta a ser utilizada de la manera menos esperada.
15. Cuándo se escribe software para una puerta de enlace de cualquier tipo, hay que tomar la precaución de alterar el flujo de datos lo menos posible, y ¡nunca eliminar información a menos que los receptores obliguen a hacerlo!
Lecciones de Raymond en CATB
16. Cuando su lenguaje está lejos de un Turing completo, entonces el azúcar sintáctico puede ser su amigo.
–
Equilibrio entre cercanía a lenguaje natural y tiempo de procesamiento en fich. de config. (quizás desfasado)
17. Un sistema de seguridad es tan seguro como secreto. Evite los secretos a medias.
18. Para resolver un problema interesante, comience por encontrar un problema que le resulte interesante.
19. Si el coordinador de desarrollo tiene un medio al menos tan bueno como lo es Internet, y sabe dirigir sin coerción, muchas cabezas serán, inevitablemente, mejor que una.
¿Ejemplos de software libre desarrollado en catedral?
... ¿y bazar?
Ejemplos de software libre ●
Desarrollado en catedral:
–
●
Desarrollado en bazar:
–
●
El núcleo Linux
¿Cuántos hay de cada tipo?
–
Muchos de los programas de GNU: GNU Emacs, gcc, tar
... ¿en Sourceforge.net?
Desarrolladores por proyecto en SF.net (Herráiz, FLOSSMole)
>=6
5
4
3
2
1
Llega una amenaza ...
●
●
Hay más bien pocos desarrolladores en los proyectos libres
¿Qué pasará si pagaran unas vacaciones a todos los desarrolladores de uno de ellos ... y el avión que los llevara sobrevolara el Triángulo de las Bermudas?
A statistical examination of the properties and evolution of libre software. Israel Herráiz (tesis)
Herráiz
Catedral ¿vs? bazar
¿Modelos contrapuestos?
●
●
Catedral puede ser adecuado para proyectos
–
De requisitos fijos: software “a medida”
–
De cierta complejidad: software de investigación
–
Con responsabilidad: plazos de entrega, estándares de calidad, etc
–
Que necesiten asegurarse una rentabilidad antes de liberar
Se pierde el “genio” del bazar
¿Modelos contrapuestos?
●
Si me pongo yo y mi compadre a vender fruta en la calle (léase programar software libre “en equipo”) ...
–
¿Es eso un bazar?
–
¿Puede llegar a serlo?
–
¿Cómo?
De la catedral al bazar
●
●
●
Evidentemente casi ningún proyecto empieza con muchos colaboradores ...
... pero la mayoría suele tener como objetivo conseguirlos ¿los consiguen?
Existen estudios sobre el tema:
–
De la catedral al bazar: un estudio empírico del ciclo de vida de los proyectos basados en comunidades de voluntarios. Andrea Capiluppi y Martin Michlmayr (Novática nº 190)
Estudio de evolución
●
Se estudiaron dos sistemas: Wine y el sistema de ficheros Arla
–
●
Análisis de los Changelog (no había información SVN de toda la historia de los proyectos)
Se miden, por cada mes
–
Input: desarrolladores distintos (sin repeticiones)
–
Output: módulos modificados
–
Input/Output: módulos en que trabajan los desarrolladores que se han incorporado ese mes
Estados
●
Paso 1: catedral
–
●
Paso 2: transición
–
●
El sistema es estable y modular, pero tiene líneas claras de ampliación
Paso 3: bazar
–
Una persona tiene una idea “original” y desarrolla con un equipo reducido
Se crea comunidad. Se desarrolla en paralelo y el número de revisiones aumenta
Estudio de evolución
●
Conclusiones:
–
Los desarrolladores nuevos quieren trabajar en módulos nuevos
–
O lo que es lo mismo: “si quieres que se una gente al proyecto señala líneas interesantes para que trabajen”
–
No pasar a bazar no es un fracaso, pero sí una oportunidad perdida: la fase de transición es clave
¿Por dónde empiezo?
●
Estoy en una carrera de Ingeniería Informática y quiero empezar en esto ...
–
Aprende a leer y escribir inglés
–
Echa una mano en un proyecto existente: Cómo colaborar en un proyecto libre como KDE. Pedro Jurado Maqueda, Actas JASL4
–
Pero sobre todo ¿cómo se aprende a capar? ...
Visibilidad del trabajo
●
●
●
Vale, programo software libre en mi casa y lo subo a mi web
Para darle visibilidad y buscar usuarios y colaboradores:
–
Mando correos a todos mis sufridos conocidos
–
En el Tuenti y el Facebook hago toda la publicidad que puedo (arriesgando mi escaso karma)
–
Pongo trípticos en la coches aparcados en mi calle
¿Lo estoy haciendo bien?
La Forja
●
●
Es clave para el desarrollo de software bazar
Son sistemas web que proporcionan (gratis) muchos recursos para trabajo colaborativo:
–
Repositorio de software
–
Foros, listas de correo, wikis
–
Web
–
Asignación de tareas y seguimiento de errores
–
Noticias RSS
–
...
Forjas más populares
●
●
En inglés
–
Sourceforge
–
Freshmeat
–
GNU Savannah
En español:
–
RedIRIS (Universidad e investigación española)
–
Guadalinex
–
Proyecto Morfeo
Programación colaborativa
●
Bien, ya somos dos para programar.
●
¿Cómo nos coordinamos?
●
–
Nos mandamos unos ficheros .zip cada vez más grandes por las noches
–
El que va a modificar la última versión del código le da un toque al móvil al otro, y así no hay modificamos el código fuente los dos a la vez
Me da que esto no es escalable ...
Programación colaborativa
●
●
Existen sistemas para colaborar en el desarrollo de código:
–
Centralizados: sencillos, pero limitados (siempre todo el código “definitivo” está en un servidor). Suelen valer para la mayoría de casos. Ej: SVN
–
Distribuidos: complejos, pero muy potentes (roles, código distribuido). Suelen preferirlo los hardcore programmers. Ej: Git, Mercurial, Bazaar, etc
Veremos SVN, el más extendido ...
Programación colaborativa con SVN
●
●
Permite a los desarrolladores trabajar en un proyecto común de manera:
–
Dispersa: en cualquier sitio con conexión a Internet
–
Asíncrona: a cualquier hora del día
–
Registrada: se registran todas las aportaciones
–
Pública: cualquier persona puede ver su trabajo
Existen herramientas de análisis de SVN
–
StatSVN: perfiles de programadores y grupos
Colaboración con SVN
Repositorio
centralizado
(3)
Cambios
fundidos
(1)
Aportación
(“commit”)
(2)
Aportación
(“commit”)
(3)
Cambios
fundidos
Copia
Modif 1
Copia
Modif 2
Usuario1
Usuario2
Atrae a la gente
●
Actividades fáciles
–
●
Forma desarrolladores
–
●
Proyecto de tutorización OO.org
La gente quiere hacer tareas nuevas
–
Gnome Love
A nadie le gusta ordenar las chapuzas de otros ...
Analiza
●
Se muy crítico con tu trabajo
–
StatSVN
–
Ve por las metodologías mejores, siempre que existan tecnologías que las soporten
Hazte ver
●
Forja + web
●
Genera noticias y publícalas en RSS
●
●
Acuerdos con asociaciones, otros desarrolladores, etc
Asiste a conferencias y eventos
Que trabaje el ordenador
●
●
Intenta automatizar todo lo que puedas
–
SVN
–
Doxygen
Ejemplo del campo de conocimiento abierto: bots de Wikipedia
SL para todos
●
Empaquetado
–
●
.DEB, .RPM
¿Es difícil? => busca aliados
–
Gente con experiencia e interés en ello
–
En Andalucía tenemos a la gente de Guadalinex: compromiso de integrar aplicaciones bien hechas en Guadalinex. Y, si merecen la pena, intentar promocionarlas a Ubuntu
Evolución
●
●
Correctiva
–
Haz mucho caso a los informes de errores que te lleguen
–
Es importante priorizarlos bien
Evolutiva
–
Ten siempre actualizada la lista de funciones deseables para tu sistema en el futuro
Define tu impacto
●
●
No es complicado internacionalizar una aplicación
–
Ficheros i18
–
Se puede conseguir muchísima colaboración. Ejemplo: SMB Web Client, Victor M. Varela
¡Por favor, inglés de tu pueblo NO!
Buena imagen
●
Página atractiva
–
Si es posible sin publicidad
–
Capturas de pantalla o screencast
–
Manuales de instalación
●
White papers
●
Casos de éxito
●
Referencias
Normas
●
●
Establece normas de codificación
–
Que sean fáciles de usar
–
Que tengan soporte de programas
Intenta seguir normas establecidas:
–
Debian Policy
–
Free Desktop
Estándares abiertos
●
No discriminación
–
●
La ley a nuestro favor
–
●
También los “maqueros”, etc
¿Creéis que esto da para vivir?
–
Futuro
Opentia
Compórtate según las reglas
●
Raymond (Noosfera): “propiedad del sistema”
–
Lee mucho en la lista de correo antes de escribir
–
Estructura meritocrática: “Cultura de los regalos”
●
Cuanto más des, mejor serás
–
A todos nos gusta que nos alaguen
–
No distribuyas parches por tu cuenta, intenta que se acepten oficialmente
–
Crear un fork no gusta
Propiedad de un proyecto
●
●
El software libre no tiene dueño ... pero los proyectos sí.
El dueño es:
–
Quien ha creado el proyecto
–
Aquel que ha recibido “los poderes” del creador (anunciándolo públicamente)
–
Si el proyecto está abandonado, intenta contactar con el dueño y, si no puedes, anuncia públicamente tu intención de adueñarte de él
¿Por qué hacer software libre?
●
●
●
Mide bien tu motivación:
–
Aprobar una asignatura
–
Poner mi granito de arena para devolver parte de lo recibido
–
Pagar la hipoteca
Cuantifica tu posible esfuerzo en tiempo (e intenta prever tu rendimiento)
Ponte un calendario
Pagar la hipoteca con SL
●
Modelos de negocio (Caldero mágico, Raymond)
●
Trabajar por cuenta ajena
●
Universidad ­ Investigación
●
Emprender
Modelos de negocio con SL propuestos por Raymond
●
Compartir costes (ej: Apache)
–
●
Ninguna empresa costea todo su desarrollo
Extender el riesgo (ej: colas de impresión remotas Cisco)
–
Si sólo yo uso un software y se deja de mantener (porque los desarrolladores me abandonan) es costoso para mi.
–
Si lo usan más empresas habrá más interés en que siga manteniéndose
Modelos de negocio con SL propuestos por Raymond
●
Liberar parte del software (C/S, instalador, ...)
●
Si vendes hardware, que programen por ti
●
Coloca a tu producto como líder y cobra por servicios (ejemplo MySQL)
●
Venta de accesorios (manuales, gadgets, etc)
●
Ahora vende, en el futuro libera (ej Ghostscript)
●
Libera software, vende certificaciones
●
Libero el software, vendo datos que consume
Trabajar por cuenta ajena
●
●
Colabora con algún proyecto libre
Ve a congresos y ferias de software libre con un montón de currículums y habla con la gente
–
●
Lo mejor de tu currículum es que puedes demostrar lo que has hecho
Si no eres muy malo tienes trabajo seguro
Universidad ­ Investigación
●
●
A día de hoy el camino para entrar en la Universidad es la investigación
Hay grupo de investigación que usan software libre y están deseando tener gente competente:
–
Grupo LibreSoft (Univ. Rey Juan Carlos)
–
Geneura (Univ. de Granada)
–
Grupo SPI&FM (Univ. de Cádiz)
–
...
Emprender con software libre
●
Busca apoyo de expertos:
–
Asociaciones de empresarios / emprendedores
–
Cámaras de Comercio
–
Institutos de fomento, crédito, etc
–
Gobiernos locales, regionales, nacionales
●
–
¡Cuidado con los plazos y las promesas!
Viveros de empresa
Emprender con software libre
●
Busca apoyo de “los de software libre”
–
–
Andalibre
●
Asociación de empresas de software libre de Andalucía
●
Se consigue visibilidad
ASOLIF
●
Asociación de empresas de software libre de España
●
Se hace fuerza
Emprender con software libre
●
●
Analiza quien es tu público objetivo
–
Número
–
Ingresos
–
Rendimiento que sacan a las TIC
–
Futuro
–
...
Ejemplo: ACL2 ...
Emprender con software libre
●
●
Busca quien es tu cliente y ve a por él
Hay que estar al nivel del cliente. Por ejemplo, no es lo mismo vender a:
–
Carpintería metálica
–
Abogados
–
Habla, viste como ellos. Está donde ellos.
Emprender con software libre
●
Ofrece al cliente “lo que quiere”:
–
Software + asesoría
–
Precio final
–
Normalmente no quiere “ética” ...
–
Formación (rendimiento, trabajo de calidad)
–
Asesoría
Emprender con software libre
●
Aprovecha tu entorno al máximo
–
Entorno personal
●
–
Amigos, familiares, etc. Que todos sepas que tienes una empresa
Universidad: ●
Concurso Universitario de Software Libre
●
Spin off
Evita problemas
●
Usa correctamente las licencias
–
Entiende sus implicaciones
–
Selecciona una adecuada
–
Una licencia libre es una cesión de derechos mínimos (si quieren más que contacten contigo)
–
¿Qué pasa si no pongo el mensaje completo ...?
●
¿Cómo demuestras que tu código es tuyo?
●
No dudes en liberar. –
Ej. “Introducción informal ...”
Certificaciones
●
●
●
El software libre necesita certificaciones ... que pueden abrir vías de negocio
Por ejemplo: –
Demostrar que tal software pasa un conjunto de pruebas
–
Comprometerte a ofrecer un servicio determinado sobre el código
Ejemplo: banco ING en Rusia
Para callar bocas ...
●
The economic impact of OSS on innovation and the competitiveness of the ICT sector in Europe
–
●
Estudio económico encargado por la Unión Europea (EU) ¿cómo ser competitivos en TIC?
–
MERIT at the University of Maastricht
Única alternativa: software libre
Para callar más bocas ...
●
Empresas que usan Linux:
–
●
●
IBM, Oracle, HP, etc
Linux está en más del 90% de los equipos del “TOP 500” de ordenadores más potentes del mundo
Linux ha llegado a Marte Bibliografía básica
●
●
●
●
La catedral y el bazar. Eric S. Raymond (libro completo, no sólo el ensayo homónimo)
Novática nº 190 especial “Software libre: investigación y desarrollo”. Varios
A statistical examination of the properties and evolution of libre software. Israel Herráiz (tesis)
Cómo colaborar en un proyecto libre como KDE. Pedro Jurado Maqueda, Actas JASL4
Bibliografía adicional
●
●
●
●
●
Software Libre para una sociedad libre, Richard Stallman
El Código 2.0. Lawrence Lessig
Free for all (La ofensiva del software libre). Peter Wayner
Sobre software libre. J.M. G. Barahona y otros
Understanding Open Source and Free Software Licensing. Laurent (O'Reilly Open books)
Gracias por vuestra atención
¿Preguntas?
Con 20 años Bill Gates había hecho más por el software privativo que TÚ por el libre hasta hoy
© Manuel Palomo Duarte, 2009
Disponible bajo licencia Creative Commons Attribution­Share Alike 3.0
La Batalla del Guadalete
Versión 0.1 (modo texto)
© Manuel Palomo, 2007
“Si mi madre me hubiera visto con 8 tíos más gritando y saltando delante de una pantalla negra con letritas se moría del disgusto”
La Batalla del Guadalete
Versión 0.1.1 (modo texto + gráfico)
© Manuel Palomo, Roberto García, 2008
Alumno colaborador
La Batalla del Guadalete
© Manuel Palomo, Roberto García, Jesús Soriano, 2009 (PFC)
Versión 1.0 Reconquista
(aplic. gráfica interact.)
La Batalla del Guadalete
Versión 2.0 Resistencia en Cádiz: 1812 © Pablo Recio
Reingeniería a fondo, recodificación en Python