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) 

Jessica Pérez

(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 este libro?
¿Quién debería leer este libro?
Fuentes
Reconocimientos
Disclaimer
1. Introducción
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
Poseer el nombre en los espacios de nombre importantes
Tener los objetivos claros
Declara Que el Proyecto es Libre
Lista de Características y Requerimientos
Estado del Desarrollo
El estado del desarrollo debe reflejar siempre la realidad.
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
Demos, Capturas de Pantalla, Videos y Ejemplos de Salidas
Hosting
Escogiendo una licencia y Aplicándola
Las licencias "Haz lo que quieras"
La GPL
Cómo aplicar una licencia a nuestro software
Ajustar el tono
Evitar discusiones privadas
Cortar de Raíz la Mala Educación
Practicar Revisiones Visibles del Código
Caso de Estudio
Se abierto desde el primer día
Esperar sólo crea un evento de exposición
Al abrir un proyecto cerrado, hay que ser sensible acerca de la magnitud de los cambios
Anunciando
3. Infraestructura Técnica
Lo que necesita un proyecto
Sitio Web
Hosting Enlatado
Selección de un sitio de hosting enlatado
Alojamiento en una infraestructura completamente de código abierto
El anonimato y la participación
Listas de Correo / Foros de Mensajes
Elegir el software correcto para la gestión del foro
Prevenir el Spam
Identificación y Administración de cabeceras
El gran debate del Reply-To
Archivo
Control de Versiones
Vocabulario del Control de Versiones
Escoger un sistema de control de versiones
Utilizando el sistema de control de versiones
Versiones de todo
Navegabilidad
Las ramas para evitar cuellos de botella
Singularidad de la información
Autorizaciones
Correos de cambios
Seguimiento de errores
Interacción con las Lista de Correo
Pre-filtrado del gestor de fallos
IRC / Sistemas de Chat en Tiempo Real
Bots de IRC
Archivando IRC
Wikis
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. Empaquetado, Liberación, y Desarrollo diario
Numeración de versiones liberadas
Componentes del número de versión liberada
La Estrategia Simple
La estrategia Par/Impar
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
Meeting In Person (Conferences, Hackfests, Code-a-Thons, Code Sprints, Retreats)
Share Management Tasks as Well as Technical Tasks
Patch Manager
Translation Manager
Documentation Manager
Issue Manager
FAQ Manager
Transiciones
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