Preparando para liberar código como código abierto [duplicado]

54

He desarrollado una herramienta completamente funcional que me gustaría no solo compartir con cualquier persona interesada, sino también obtener el apoyo de la comunidad. Esta herramienta es multiplataforma, escrita en C ++ con Qt, el código está bien comentado pero todavía me falta documentación. También hay algunos pequeños problemas y mejoras que deben realizarse antes de que pueda llamarlo una versión estable y final.

¿Cuáles son los primeros pasos que debo seguir para liberar código como fuente abierta y atraer a personas interesadas en contribuir?

Este es mi primer intento serio de liberar código de código abierto y realmente no sé por dónde empezar. ¿Debo simplemente empujarlo a Github para armar un pequeño wiki y orar por lo mejor?

    
pregunta Raphael 16.05.2011 - 00:17

4 respuestas

59

Elige tu licencia

Si su código ha sido código cerrado hasta ahora, lo primero que debe hacer es decidir qué licencia de código abierto ( GPL < = 2, GPL 3 , LGPL , BSD , Eclipse etc.) que desee utilizar.

Hay puntos a favor y en contra de cada uno, así que lea qué restricciones aplican al código y decida quién quiere poder usarlo. Advertencia , cualquiera que sea la persona que elija, se quejará: este es guerra santa , y está fuera del alcance de esta pregunta.

Desinfecte su repositorio

Si el código en su repositorio aún no tiene aplicada su licencia elegida, revisaría su historial de revisión completo hasta el momento y lo aplicaría de manera retroactiva (esto puede requerir una nueva base en cada punto donde una nueva fuente se introduce el archivo). Sin embargo, esto producirá un buen repositorio limpio que, cuando lo publique al público, no tiene revisiones donde la licencia elegida no esté vigente.

Otra opción es iniciar tu repositorio público en el momento de tu primer lanzamiento, con un historial mínimo o nulo hasta ese momento.

Esto tiene la desventaja de que las personas no pueden volver a tu historial y descubrir cómo llegaste a donde estás hoy, pero tiene la ventaja de que las personas No puedo volver a tu historia y descubrir cómo llegaste a donde estás hoy. * 8 ')

Cuando la empresa para la que trabajo creó el software con el que trabajaba en código abierto, comenzamos solo con la creación de instantáneas del directorio de trabajo en los puntos de lanzamiento. Cuando pasamos a usar repositorios públicos de github, comenzamos cada git repo en el punto en que un complemento (o conjunto de complementos se eliminó) de svn , rara vez incluye ningún historial.

Considera una licencia dual

Si cree que puede haber un interés comercial en usar su software, pero tiene una preferencia ideológica por una licencia de reutilización restrictiva como la GPL 3, considere la posibilidad de ofrecer una licencia dual. La oferta de licencias GPL 3 para descarga pública y las licencias comerciales por una tarifa le ofrecen lo mejor de ambos mundos.

Es probable que hacer esto desde el principio cause menos fricción que comenzar a ofrecer licencias comerciales más adelante. Si su comunidad se vuelve popular, las personas pueden acusarlo de liquidación si usted no se hubiera enterado de la posibilidad de una explotación comercial más adelante.

Considera un Acuerdo de Colaborador

Si alguna vez planea una licencia doble, o simplemente desea mantener su código base, deberá reimplementar las correcciones aportadas usted mismo o hacer que los colaboradores asignen derechos sobre sus contribuciones a usted. De lo contrario, encontrará que sus contribuciones le impiden liberar su código base bajo otras licencias.

La respuesta de Mason Wheeler a la pregunta ¿El código de licencia de código abierto me limita más tarde? proporciona buena información sobre esto y cómo se usó el proyecto libsdl para resolver este problema.

Sin embargo, tenga en cuenta que, al igual que su elección de licencia puede restringir a las personas y organizaciones que utilizarán y contribuirán a su proyecto, también lo hará la elección de tener un acuerdo de contribución. Algunas personas no estarán felices de contribuir a un proyecto que les obliga a firmar un acuerdo de contribución.

Acuerdos de Colaborador de doble licencia

El Acuerdo de Colaborador de Oracle (los enlaces son difíciles de ver en esa página) es una buena idea. Plantilla para un acuerdo de colaborador. También tiene licencia (CC) de manera que puede modificarlo y reutilizarlo.

    
respondido por el Mark Booth 16.05.2011 - 01:01
27

La respuesta de Mark Booth es excelente, pero solo habla sobre licencias / control de versiones, por lo que me gustaría agregar algunos puntos en un campo más técnico, que son los primeros (o no tan primeros) pasos para mí cuando libero código fuente abierto.

  1. Refuerza el estilo y la legibilidad . Nadie quiere contribuir a un proyecto en el que necesitan pasar meses para comprender los conceptos básicos. Y nadie quiere leer y usar código como este. Si desea que otras personas contribuyan al proyecto, también sería bueno especificar cuáles son los estándares de estilo a utilizar.

  2. Limpieza . Mark Booth explicó por qué puede ser molesto permitir que cualquiera acceda a cada revisión y vea cómo se realizó el proyecto desde el principio. De la misma manera, debe deshacerse de grandes bloques de código comentado antes de liberarlo (lo que es una mala práctica en todos los casos), o eliminar los comentarios que indiquen qué fue la modificación, cuándo se realizó, etc. (que es una práctica aún peor).

  3. Asegúrese de que su código fuente tenga suficientes pruebas . Es especialmente importante en este contexto, ya que la gente vendrá sin saber en detalle cómo se realiza su aplicación y cuáles son las advertencias, y tratarán de modificarla y, finalmente, romperán el código.

  4. Describe tu proyecto . El código puede ser grande. Si no tengo ninguna pista sobre de qué se trata la aplicación, hay pocas posibilidades de que contribuya al proyecto.

  5. Describe lo que pueden hacer los colaboradores . Algunos proyectos de código abierto son muy cercanos y aceptarán las contribuciones solo después de pruebas y revisiones severas y solo si creen que necesitan la contribución en cuestión. En otros proyectos, por otro lado, las aportaciones son bienvenidas. Siempre es bueno saber cuál es el caso en su proyecto antes de comenzar a contribuir con él.

  6. Preséntalo . Vea, el sitio web de jQuery está bien hecho, con un diseño profesional, contenido de alta calidad, etc. Hace que desee participar en el proyecto. Si, por otro lado, tienes un sitio web lento y feo con contenido que apesta demasiado, la gente prefiere ir y contribuir a otros proyectos de código abierto.

  7. Añadir herramientas de soporte . Por ejemplo, el seguimiento de errores no es una opción para un proyecto comercial. ¿Por qué sería para una fuente abierta? También puede ayudar saber cuáles son los puntos que necesitan contribución. Si utilizo su producto de código abierto, encuentro un error, vaya al sitio web de seguimiento de errores y descubra que el error es el número 1 en la lista, estaré más motivado no solo para resolverlo, sino también para confirmar mis cambios.

respondido por el Arseni Mourzenko 16.05.2011 - 12:16
5

Constrúyelo y ellos vendrán.

Si hay una necesidad de su herramienta, la gente la encontrará a través de los motores de búsqueda y la palabra de los foros. Nunca está de más hacer algunas publicaciones en foros de interés especial relevantes para el dominio en el que se encuentra su herramienta. Si hay alguno, suba a un canal de IRC con personas de intereses similares para informarles al respecto. Blog sobre esto (si tienes un blog personal). Esencialmente, cuanta más publicidad hagas, mejor. Dicho esto, si no es necesario, la gente simplemente no lo usará.

En resumen, sí, presiona a GitHub. Habilite la función de problemas para que las personas puedan registrar errores y un Wiki si su herramienta es lo suficientemente compleja como para justificarlo. No se desanime si no recibe golpes inmediatos. A veces, las herramientas del sistema operativo pueden tardar un poco en acumularse (aunque algunas de ellas también son un golpe desde la puerta).

Buena suerte :)

    
respondido por el Demian Brecht 16.05.2011 - 00:44
0

Antes de ver el Otro consejo, considera:

Gobierno>

¿Cómo se gestionará su proyecto después de otorgarlo a la comunidad? El modelo de dictador benévolo funciona, pero la gente caminará y se desviará si no obtienen beneficios del código / proyecto.

Propiedad del código

El propietario del código es muy importante, ya que solo los propietarios (en la ley de EE. UU.) pueden llevar a las personas a los tribunales para hacer cumplir los derechos de autor.

Esta es la razón por la que la FSF les dice a los contribuyentes que les otorguen la propiedad y, a su vez, les otorgan acceso al código bajo la licencia correspondiente (GPL, LGPL versión 2.0 o 3.0).

Organizaciones de gobierno

No estoy seguro de lo que está disponible en el mundo de PHP, pero hay una serie de plataformas y ecosistemas útiles para la gobernanza del código. Cada uno con su propia licencia y estructura de gobierno.

Otras consideraciones sobre la licencia

¿Dónde se utilizará el código, quién lo volverá a implementar, cuáles son las licencias actuales en las que se implementan códigos similares y de plataforma? Todas estas cuestiones proporcionan orientación sobre qué licencia se debe utilizar.

Si no existe una comunidad de interés que pueda aprovechar, es muy difícil tener un proyecto exitoso solo.

    
respondido por el Andrew Russell 16.09.2013 - 03:42

Lea otras preguntas en las etiquetas