Copyright (c) 25/06/2004 Juan Cépedes.
Modificaciones y adaptaciones.
Copyright (c) 2006 - 2009 Leonardo Caballero.
Permission is granted to copy, distribute and/or modify this document under the terms of the GNU Free Documentation License, Version 1.2 or any later version published by the Free Software Foundation; with no Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts. A copy of the license is included in the section entitled "GNU Free Documentation License".
Ponencia de Montaje de un proyecto de Software libre, la cual toca los siguientes temas: Introducción al tema, ¿Cómo montar un proyecto de software libre?, lo que hay que hacer antes de comenzar el proyecto se explican los temas de: Lenguaje de programación, Plataforma, Especificaciones, Luego se debe definir algunas metodologías de desarrollos que se asemejen a SL y las herramientas de trabajo colaborativo para el desarrollo y control de gestión y proyectos para definir roles del proyecto, uso de recursos CVS, Lista de correos; tales como algunos recursos de la Web 2.0 disponibles para empezar a organizarse, y también sobre algunos FOSP-hostsites. Y una vez que esta listo la primera publicación se deben tomar en cuentas los aspectos legales, buenas prácticas al liberar, la publicidad del proyecto, el empaquetamiento y distribución (fuentes y binarios), el cuidado con la imagen, el soporte a usuarios: sitios de referencia, BTS, comunidades. Además trata sobre el Tiempo de dedicación al proyecto, Conclusiones, Referencias, Sitios en Internet, Demostraciones, Preguntas.
Licencia: Licencia de documentación libre de GNU - GFDL.
Formato: OpenOffice.org 2.0 Impress y Impress.
Duración: 45 minutos, más 15 minutos de preguntas.
Dictada en: III CNSL-Mérida.
Ultima actualización: 16/01/2009.
Lugar: Mérida, Estado Mérida, Venezuela.
Autor: T.S.U. Leonardo Caballero
Email: lcaballero at linuxmail.org, leonardocaballero at gmail.com.
Domicilo Web: http://lcaballero.8k.com/
Visualizar y descargar en PDF via SlideShare:
http://www.slideshare.net/lcaballero
2. Montaje de un proyecto de Software Libre
Licencia
Copyright (c) 25/06/2004 Juan Cépedes.
Modificaciones y adaptaciones.
Copyright (c) 2006 2009 Leonardo Caballero.
Permission is granted to copy, distribute and/or modify this
document under the terms of the GNU Free Documentation
License, Version 1.2 or any later version published by the Free
Software Foundation; with no Invariant Sections, no FrontCover
Texts, and no BackCover Texts. A copy of the license is included
in the section entitled quot;GNU Free Documentation Licensequot;.
¡Desarrollo colaborativo para todos!
3. Montaje de un proyecto de Software Libre
GNU Free Documentation License
Puede obtener una copia de la licencia quot;GNU Free Documentation
Licensequot; en los ficheros llamados quot;copyright.txtquot; en ingles,
quot;copyright.es.txtquot; en español o en los siguientes sitios en Internet:
• http://www.gnu.org/copyleft/fdl.html
• http://www.fsf.org/licensing/licenses/fdl.html
¡Desarrollo colaborativo para todos!
4. Montaje de un proyecto de Software Libre
Ficha Técnica
• Leonardo Caballero.
• T.S.U. en Informática.
• Investigación, diseño, desarrollo y documentación de sistemas.
• Activista del conocimiento libre promoviendo Software y Hardware Libre.
• Linux User #369081.
• Usuario GNU/Linux desde Mayo 2002.
• Miembro activo VELUG desde Mayo 2003.
• Miembro activo GULMER, GLOVE, GUGVE y SOLVE desde 2005.
¡Desarrollo colaborativo para todos!
5. Montaje de un proyecto de Software Libre
Contenido
• ¿Como montar un proyecto de software libre?
• Lenguaje de programación.
• Plataforma.
• Especificaciones.
• Metodología de desarrollo.
• Desarrollo.
• Herramientas de trabajo colaborativo.
• Publicación.
• Aspectos legales: copyright, licencia.
• Buenas prácticas al liberar.
• Publicidad.
¡Desarrollo colaborativo para todos!
6. Montaje de un proyecto de Software Libre
Contenido :: Continuación
• Publicación :: Continuación.
• Empaquetamiento y distribución (Fuentes y binarios).
• Distribución de binarios.
• Cuidado con la imagen.
• Soporte a usuarios: sitio de referencia, BTS, comunidades.
• Tiempo de dedicación al proyecto.
• Conclusiones.
• Referencias.
• Sitios en Internet.
¡Desarrollo colaborativo para todos!
7. Montaje de un proyecto de Software Libre
Lenguaje de programación
Este aspecto es mucho más importante de lo que parece. Si queremos que le
proyecto tenga éxito en la comunidad y haya gente que se dedique a mejorarlo,
tiene que estar escrito en un lenguaje de programación:
• Fácil de utilizar.
• Con disponibilidad de herramientas de desarrollo y de depuración cómoda.
• En general, que le guste a la gente.
Ejemplo significativo: El cliente de redes P2P Mldonkey. Fue el primer cliente libre
que pudo conectarse a la red eDonkey y FastTrack, es multiplataforma,
multiprotocolo, funciona relativamente bien... pero no tiene desarrolladores aparte
de un núcleo muy cerrado ¿Por qué? Esta escrito en CAML.
¡Desarrollo colaborativo para todos!
10. Montaje de un proyecto de Software Libre
Plataforma
Si el proyecto que estamos desarrollando o que vamos a desarrollar necesita
características especiales o una plataforma determinada para funcionar
correctamente, nuestra base de usuarios objetivos puede verse seriamente reducida,
o sufrir en el futuro.
Pero también puede suceder esto si el proyecto usa peculiaridades de un sistema
que pueden dejar de ser comunes. Por ejemplo:
• Uso de tipos de ficheros concretos.
• Dependencia de hardware especifico.
Este aspecto lo sufren todo tipo de proyectos de software, ya sea libre o no.
Ejemplo significativo: e2undel, recover, gtkrecover: recuperan ficheros borrados
para particiones ext2.
¡Desarrollo colaborativo para todos!
14. Montaje de un proyecto de Software Libre
Especificaciones
En general para tener éxito es importante saber que demandan los usuarios, saber
que es lo que podemos ofrecerles y cual sera nuestra ventaja competitiva frente al
resto de los productos existentes.
Hay que saber cómo está el mercado, al igual que al montar cualquier empresa
clásica. Por ejemplo, utilizando un análisis como el siguiente:
• Grado de rivalidad entre competidores actuales.
• Amenaza de nuevos competidores.
• Productos sustitutivos.
• Poder negociador de los proveedores.
• Poder negociador de los clientes.
¡Desarrollo colaborativo para todos!
15. Montaje de un proyecto de Software Libre
Metodología de desarrollo
Ensayo “La catedral y el bazar”.
Analiza el surgimiento de GNU/Linux y un proyecto de
software libre, creado para comprobar deliberadamente las
diferencias teóricas entre dos modelos de desarrollo, la
Eric S. Raymond.
catedral de la mayoría del software no libre y el bazar
bullicioso del código abierto.
Un ejemplo claro de bazar sería la Wikipedia mientras que la
Enciclopedia Británica y Nupedia lo son de catedral.
¡Desarrollo colaborativo para todos!
18. Montaje de un proyecto de Software Libre
Herramientas de trabajo colaborativo
Existen recursos gratuitos y libre en la Web, para que usted y sus colaboradores
pueden empezar a organizarse colectivamente, crear comunidades o redes sociales
digitales, y así para aprovechar pertinentemente dichos recursos existentes:
• Servidor del proyecto publico y gratuito usando empresas de hosting gratuito o
colocando un IP pública usando el sistema dinámicos de DNS como “NoIP”.
• Aprovechar los recursos gratuitos de la Web 2.0:
• Sistemas de bitácoras o blog en “WordPress”, “Blogger”, etc.
• Capturas de pantallas, fotos de eventos, etc en “Flickr”, “Google Picasa”, etc.
• Publicar vídeos, demostraciones, screencats en “Google Video”, “YouTube”, etc.
• Compartir sus presentaciones, laminas usando “SlideShare”.
• Redacta artículos y manuales en “Wikipedia”, “Wikilibros”, etc.
¡Desarrollo colaborativo para todos!
20. Montaje de un proyecto de Software Libre
Herramientas de trabajo colaborativo :: Continuación
Todo proyecto de software libre ha de tener espacio para desarrolladores, a todos los
niveles: desde poder informar de fallos y hacer seguimiento de los mismos, hasta
contribuir de forma significativa en el proyecto.
En todos los proyectos hay un coordinador (“Líder”) o un grupo de coordinadores
que señalan las direcciones a seguir, deciden si aceptar o no contribuciones en la
versión de “oficial” y establecen cuándo se han de publicar nuevas versiones.
Herramientas imprescindible para la coordinación y el manejo de proyectos grandes:
• Listas de correo de desarrollo.
• Sistemas de control de versiones (CVS, SVN, etc).
• Sistemas de seguimientos de fallos (Bugzilla, Debian BTS, etc).
¡Desarrollo colaborativo para todos!
21. Montaje de un proyecto de Software Libre
FOSPhostsites
Existen varios sitios que ofrecen hospedaje de Free and Open Source Project y a
continuación se en listan algunos:
• SourceForge.net (http://sourceforge.net/)
• freshmeat.net (http://freshmeat.net/)
• Savannah (http://savannah.gnu.org/)
• ourproject.org (http://ourproject.org/)
• Code Google (http://code.google.com/)
• FSL Sistemas Mérida (http://www.fsl.fundacitemerida.gob.ve/)
• Plataforma para el Desarrollo de Software (http://www.fsl.cenditel.gob.ve/)
¡Desarrollo colaborativo para todos!
29. Montaje de un proyecto de Software Libre
Publicación :: Aspectos legales
• Copyright: autor(es), organización (empresa, fundación, comunidad...)
• Añadir información de Copyright y licencia a todos los ficheros.
• Estudio de licencias: todos los autores deben estar de acuerdo en qué licencia
usar, y todo el software usado ha de ser compatible con la licencia elegida.
Este punto es sumamente importante; ha habido multitud de casos de problemas de
compatibilidad entre unas licencias y otras:
• KDE.
• syslinux / Turbo Assembler / masm.
• Kernel de Linux / módulos propietarios / firmware.
¡Desarrollo colaborativo para todos!
30. Montaje de un proyecto de Software Libre
Publicación :: Buenas prácticas al liberar
• Anunciar el software, (grupos de noticias, blog, lista de correo, chat irc, foros de
discusión).
• Documentar la distribución del sistema.
• Poner el software donde pueda bajarse (incluido el fuente).
• Realizar publicaciones frecuentes.
• Simplificar el proceso de compilación e instalación (incluyendo empaquetamiento).
• Limpiar y organizar el código fuente.
• Preparar el software para que sea fácilmente adaptado a otros idiomas.
• Montar una infraestructura para favorecer la colaboración.
• Encargarse de gestionar contribuciones, parches, modificaciones y sugerencias.
¡Desarrollo colaborativo para todos!
31. Montaje de un proyecto de Software Libre
Publicación :: Publicidad
Para que el público sepa que el producto existe, este ha de anunciarse:
• Listas de correo.
• Grupos de news.
• Congresos, conferencias, seminarios.
• Publicidad tradicional: anuncios de revistas, banners, publicidad impresa,
audiovisual (TV, radio), etc.
• Sourceforge, Freshmeat, Savannah, Berlios, Slashdot, BarraPunto, FSL, PDSL.
En la medida de lo posible, hay que intentar que las diferentes distribuciones
incorporen el proyecto de serie.
¡Desarrollo colaborativo para todos!
32. Montaje de un proyecto de Software Libre
Publicación :: Empaquetamiento y distribución
• Es muy recomendable ofrecer tanto fuentes como binarios.
• Proporcionando diferentes medios para las descargas (FTP, HTTP, rsync, etc).
• Y desde diferentes servidores (mirrors propios, Sourceforge, FSL, PDSL, etc).
• Es aconsejable ofrecer varias versiones del producto. En caso de que haya distintas
ramas de desarrollo, indicarlo claramente.
• Tanto fuentes como binarios, la documentación técnica (instalación y desarrollo)
como de usuario (interfaces, procedimientos, etc) han de incluir información acerca
del copyright, es decir, la licencia.
¡Desarrollo colaborativo para todos!
34. Montaje de un proyecto de Software Libre
Publicación :: Distribución de binarios
En el caso de los binarios, es recomendable ofrecerlos:
• Empaquetado para distintas distribuciones (Debian, Redhat, etc).
• Utilizando diferentes versiones de distribuciones, bibliotecas, etc.
• Versiones para diferentes arquitecturas (i386, powerpc, 64bit, SPARC, etc).
Además, es aconsejable ofrecer versiones lo más independiente posible de
distribución, en formato .tar.gz y, a ser posible, con algún instalador y desintalador
automático, para poder ajustarse a distribuciones no previstas.
Sin embargo, la mayor parte de los proyectos no distribuyen binarios y dejan esta
labor para los creadores de distribuciones.
¡Desarrollo colaborativo para todos!
35. Montaje de un proyecto de Software Libre
Publicación :: Cuidado con la imagen
Sólo después de visualizar las siguientes impresiones del producto se pasará a evaluar
realmente el mismo. Importante que cada una de estas impresiones sean buena.
• Primera impresión: la Website, es decir, el Sitio de referencia o página web.
• Segunda impresión: la instalación y configuración.
• Tercera impresión: los demostraciones (demos), capturas de pantallas (screenshot).
¡Desarrollo colaborativo para todos!
36. Montaje de un proyecto de Software Libre
Publicación :: Sitio de referencia (página web)
Según lo que se quiera, la infraestructura necesaria será distinta. Para crear fidelidad en
los usuarios y que se sientan contentos, es necesario tener un sitio de referencia (página
web) donde se encuentre:
• Información general acerca del proyecto.
• Noticias, Eventos, Páginas de descargas de software (fuentes o binarios).
• Documentación, tutoriales, ejemplos, capturas de pantallas, etc.
• Comunidades, lista de correo, foros, etc.
• Proyectos relacionados.
• Canales de soporte: informes de erratas, cómo contactar a los autores o
desarrolladores, etc.
Existen proyectos importantes sin sitio de referencia (kernel de Linux).
¡Desarrollo colaborativo para todos!
39. Montaje de un proyecto de Software Libre
Tiempo de dedicación al proyecto
Además del desarrollo hay que tener en cuenta:
• Gestión de infraestructura (100 / 20)
• Coordinador de desarrollo, incluyendo control de calidad (40200 / 20)
• Atención al sistema de control de errores (¿? / 1015)
• Mantenimiento de documentación e información en línea (60 / 10)
• Relaciones publicas (¿? / 20)
Proyecto de complejidad media (horas inicio / horas por semana)
Segun “Open Source as a Business Strategy”, Brian Behlendorf
¡Desarrollo colaborativo para todos!
40. Montaje de un proyecto de Software Libre
Conclusiones
• No hay recetas universales. Hay proyectos que siguen todas las normas y
fracasan; hay proyectos que no siguen ninguna o casi ninguna y tienen mucho
éxito.
• Hay que ponérselo fácil a los usuarios, atraerlos y crear fidelidad con el proyecto.
• La publicidad es sumamente importante; solo de esta manera el proyecto puede
ser conocido.
• Es importante tener una continuidad; que la página web este continuamente
actualizada, que haya noticias modernas, que salgan versiones nuevas
periódicamente, etc.
• La mejor manera de tener éxito es que guste entre la comunidad y difunda de
unas personas a otras.
¡Desarrollo colaborativo para todos!
41. Montaje de un proyecto de Software Libre
Referencias
• “Montaje de un proyecto libre”, por Jesús M. González Barahona. Mayo 2002.
• “Montaje de un proyecto libre”, por Juan Cépedes. 25/06/2004.
(http://cursosobre.berlios.de/curso/transpas/jgb/montajeproyectos.pdf)
• “Open Source as a Bussiness Strategy”, por Brian Behlendorf (en Open Sources,
Voices from the Open Source Revolution)
(http://www.oreilly.com/catalog/opensources)
“Whether and How To Publish Software Under an Open Source License”, por
Sébastien Blondeel
(http://publish.idealx.org/)
• Extreme Programming: A Gentle Introduction, por Don Wells
(http://www.extremeprogramming.org/)
¡Desarrollo colaborativo para todos!
42. Montaje de un proyecto de Software Libre
Referencias :: Continuación
• Plantillas de la metodología de la FSL, por Fundacite Mérida, CENDITEL. Mayo
2007.
(http://sistemas.fsl.fundacitemerida.gob.ve/projects/plantillas/)
• Web 2.0 Wikipedia, la enciclopedia libre (http://es.wikipedia.org/wiki/Web_2.0)
¡Desarrollo colaborativo para todos!
43. Montaje de un proyecto de Software Libre
Sitios en Internet
Organizaciones Nacionales en Software Libre
• VELUG Linux de Venezuela (http://www.velug.org.ve/)
• GLOVE – GNU/Linux Organizado de Venezuela. (http://www.glove.org.ve/)
• GUGVE Grupo de Usuarios GNU de Venezuela. (http://www.gnu.org/gugve/)
• SOLVE Software Libre de Venezuela. (http://www.solve.net.ve/)
• Debian Venezuela. (http://www.debianvenezuela.org/)
• GULMER Grupo de Usuario Linux Venezuela. (http://www.gulmer.org.ve/)
• GUSLA Grupo de Usuarios Linux de la ULA. (http://www.ula.ve/gusla)
• ULANIX. (http://nux.ula.ve/)
¡Desarrollo colaborativo para todos!
44. Montaje de un proyecto de Software Libre
Sitios en Internet :: Continuación
Organizaciones Gubernamentales Nacionales
• Ministerio de Ciencia y Tecnología (http://www.mct.gob.ve/)
• Centro Nacional de Tecnologías de Información CNTI (http://www.cnti.gob.ve/)
• Software Libre – CNTI (http://www.softwarelibre.gob.ve/)
• Red Nacional de Desarrollo e Integración de Software Libre (https://www.rinde.gob.ve/)
• CENDITEL (http://www.cenditel.gob.ve/)
• Fundacite Mérida (http://www.fundacitemerida.gob.ve/)
• ASL Fundacite Mérida (http://asl.fundacitemerida.gob.ve/)
¡Desarrollo colaborativo para todos!
45. Montaje de un proyecto de Software Libre
Sitios en Internet :: Continuación
Recursos de la Web 2.0
• NoIP (http://www.noip.com/)
• WordPress (http://www.wordpress.com/)
• Blogger (http://www.blogger.com/)
• Flickr (http://www.flickr.com/)
• Google Picasa (http://picasaweb.google.com/)
• Google Video (http://videos.google.com/)
• YouTube (http://www.youtube.com/)
• Slide Share (http://www.slideshare.net/)
• Wikipedia (http://www.wikipedia.org/)
• Wikilibros (http://www.wikibooks.org/)
¡Desarrollo colaborativo para todos!
46. Montaje de un proyecto de Software Libre
Sitios en Internet :: Continuación
FOSP hostsites
• SourceForge.net (http://sourceforge.net/)
• freshmeat.net (http://freshmeat.net/)
• Savannah (http://savannah.gnu.org/)
• ourproject.org (http://ourproject.org/)
• Code Google (http://code.google.com/)
• FSL Sistemas Mérida (http://www.fsl.fundacitemerida.gob.ve/)
• Plataforma para el Desarrollo de Software (http://www.fsl.cenditel.gob.ve/)
¡Desarrollo colaborativo para todos!
47. Montaje de un proyecto de Software Libre
¡Gracias por su atención!
¡Visita mi Blog!
http://lcaballero.8k.com/
¡Visita y descarga mis trabajos!
http://www.slideshare.net/lcaballero/
¡Escribeme!
lcaballero@linuxmail.org
leonardocaballero@gmail.com
¡Desarrollo colaborativo para todos!