Producir Software de Código Abierto

Como Llevar a Buen Puerto un Proyecto de Código Libre

Karl Fogel

(Author) 

Rafael Martilotti

(Translator) 

Alejandro Ayuso

(Translator) 

José Manuel Puerta Peña

(Translator) 

Pedro Andrés Bonilla Polo

(Translator) 

Aldo Vadillo Batista

(Translator) 

Francisco Urbano García

(Translator) 

Christian López Espínola

(Translator) 

Emilio Casbas Jimenez

(Translator) 

Hector Colina

(Translator) 

Dedicatoria

Este libro está dedicado a dos queridos amigos sin los cuales esta obra no hubiera sido posible: Karen Underhill y Jim Blandy.

Tabla de contenidos

Prefacio
¿Por qué escribir éste libro?
¿Quién debería leer este libro?
Fuentes
Reconocimientos
Disclaimer
1. Introducción
La Historia
El Florecimiento del Software Propietario y del Software Libre
Una resistencia conciente
Resistencia accidental
“Libre” vs “Abierto”
La situación de Hoy
2. Primeros Pasos
Empezando con lo que se tiene
Escoger un buen nombre
Tener los objetivos claros
Declara que el proyecto es libre
Lista de características y requerimientos
Estado del desarrollo
Descargas
Control de versiones y acceso al Bug Tracker
Canales de comunicación
Pautas de Desarrollo
Documentación
Disponibilidad de la documentación
Documentación para Desarrolladores
Ejemplos de salidas y capturas
Hosting enlatado
Escogiendo una licencia y aplicándola
Las licencias "Haz lo que quieras"
Licencia GPL
Cómo aplicar una licencia a nuestro software
Ajustar el tono
Evitar discusiones privadas
Echad a volar la mala educación
Practicad revisiones visibles del código
Al abrir un proyecto cerrado, hay que ser sensible acerca de la magnitud de los cambios
Anunciar
3. Infraestructura Técnica
Lo que necesita un proyecto
Listas de correo
Prevenir el Spam
Filtrado de los mensajes
Ocultar las direcciones en los archivos
Identificación y Administración de cabeceras
El gran debate del Reply-To
Dos fantasías
Archivo
Software
Control de Versiones
Vocabulario
Escoger un sistema de control de versiones
Utilizando el sistema de control de versiones
Versiones de todo
Navegabilidad
Correos de cambios
Las ramas para evitar cuellos de botella
Singularidad de la información
Autorizaciones
Seguimiento de errores
Interacción con las Lista de Correo
Pre-filtrado del gestor de fallos
IRC / Sistemas de Chat en Tiempo Real
Bots
Archivando IRC
Wikis
Sitio Web
Soluciones de hospedaje
Escoger un sitio de hospedaje
Anonimato y participación
4. Infraestructura Social y Política
Dictadores Benevolentes
¿Quién puede ser un Buen Dictador Benevolente?
Democracia basada en el Consenso
Control de Versión Significa que Uno Puede Evitar el Estrés
Cuando No Se Puede Tener Consenso, Vote
Cuando Se Debe Votar
¿Quién Vota?
Encuestas Versus Votaciones
Vetos
Tomando Nota de Todo
5. Dinero
Tipos de participación
Contratos Indefinidos
Aparentar como muchos, no como uno
Se abierto sobre tus motivos
El dinero no te podrá comprar el amor
Contrataciones
Revisión y acceptación de cambios
Caso de estudio: el protocolo de autenticación-contraseña en CVS
Financiando actividades fuera de programación
Control de calidad (i.e., Examinación profesional)
Aviso legal y protecciones
Documentación y Usabilidad
Proveyendo Alojamiento/Ancho de banda
Marketing
Recuerda que estas siendo observado
No ataques proyectos de código abierto que compitan on el suyo
6. Comunicaciones
Tú eres lo que escribes
Estructura y formato
Contenido
Tono
Reconociendo la grosería
Caras
Evitando los obstáculos corrientes
No envíes un correo sin un propósito
Hilos productivos vs Hilos Improductivos
Cuanto más blando sea el tema, más largo será el debate
Evitando las Guerras Santas
El efecto "Ruido Minoritario"
Gente difícil
Tratando con gente difícil
Estudio del caso
Manejando el crecimiento
Sobresaliente uso de los archivos
Trata todos los recursos como archivos
Tradición en la organización del contenido
Sin conversaciones en el bug tracker
Publicidad
Anunciando Vulnerabilidades de Seguridad
Recibiendo el informe
Desarrolla la solución silenciosamente
Números CAN/CVE
Pre-notificacion
Distribuyendo la solución públicamente
7. Packaging, Releasing, and Daily Development
Release Numbering
Release Number Components
The Simple Strategy
The Even/Odd Strategy
Release Branches
Mechanics of Release Branches
Stabilizing a Release
Dictatorship by Release Owner
Change Voting
Managing collaborative release stabilization
Release manager
Packaging
Format
Name and Layout
To capitalize or not to capitalize
Pre-releases
Compilation and Installation
Binary Packages
Testing and Releasing
Candidate Releases
Announcing Releases
Maintaining Multiple Release Lines
Security Releases
Releases and Daily Development
Planning Releases
8. Coordinando a los Voluntarios
Conseguir el Máximo de los Voluntarios
Delegar
Distingue claramente entre pedir y asignar
Supervisar después de delegar
Fíjate en lo que se interesa la gente
Halagos y Críticas
Prevén la Territorialidad
El Ratio de Automatización
Comprobaciones Automáticas
Treat Every User as a Potential Volunteer
Share Management Tasks as Well as Technical Tasks
Patch Manager
Translation Manager
Documentation Manager
Issue Manager
FAQ Manager
Transitions
Committers
Choosing Committers
Revoking Commit Access
Partial Commit Access
Dormant Committers
Avoid Mystery
Credit
Forks
Handling a Fork
Initiating a Fork
9. Licencias, Copyrights y Patentes
Terminología
Aspectos de las licencias
La GPL y compatibilidad entre licencias
Eligiendo una licencia
La MIT / X Window System License
La GNU General Public License
¿Es la GPL libre o no?
¿Qué tal la licencia BSD?
Asignación y propiedad del Copyright
No hacer nada
Contributor License Agreements
Transferencia de Copyright
Concesión de licencias dual
Patentes
Recursos adicionales
A. Sistemas de Control de Versiones Libres
B. Gestor de fallos libres
C. Why Should I Care What Color the Bikeshed Is?
D. Ejemplo de Instrucciones para Informar sobre Fallos
E. Copyright