Configurando tu proyecto para el éxito

Acabas de lanzar tu proyecto, estás pasando la voz, y la gente lo está siguiendo. ¡Genial! Ahora, ¿cómo haces que se queden?

Una comunidad de bienvenida es una inversión a futuro a tu proyecto y a tu reputación. Si tu proyecto está recién comenzando a ver sus primeras contribuciones, comienza por dar a los primeros colaboradores una experiencia positiva, y facilítales continuar regresando.

Haz que la gente se sienta bienvenida

Una manera de pensar acerca de la comunidad del proyecto es a través de lo que @MikeMcQuaid llama contributor funnel:

contributor funnel

A medida que construyes tu comunidad, considera cómo alguien que se encuentra en la parte superior del embudo (un usuario potencial) puede teóricamente hacer su camino hacia abajo (un mantenedor activo). Tu objetivo es reducir la fricción en cada etapa de la experiencia del colaborador. Cuando las personas obtienen victorias fáciles, se sentirán incentivadas a hacer más.

Comienza con tu documentación:

  • Hazlo sencillo para quienes tienen que utilizar el proyecto. Un documento README amigable y códigos de ejemplo claros harán más fácil el comienzo para cualquiera que aterrice en tu proyecto.
  • Explica claramente cómo contribuir, utilizando un archivo CONTRIBUTING y manteniendo tus problemas al día.

Una buena documentación invita a las personas a interactuar con tu proyecto. Eventualmente, alguien abrirá un problema o un pull request.

  • ¡Cuando alguien nuevo aterrice en tu proyecto, agradécele por su interés! Es suficiente una sola experiencia negativa para que alguien no quiera regresar.
  • Compórtate de manera sensible. Si no respondes a sus problemas por un mes, lo más probable es que ya se hayan olvidado de tu proyecto.
  • Tener la mente abierta acerca de los tipos de contribuciones que aceptará. Muchos colaboradores comienzan reportando un error o con un arreglo pequeño. Hay muchas maneras de contribuir con un proyecto. Permite que las personas ayuden de la manera que ellos quieran ayudar.
  • Si existe alguna contribución con la que estás en desacuerdo, agradécele por su idea y explícale porqué no encaja en la incumbencia del proyecto, enlazando con documentación relevante si la tienes.

La mayoría de los colaboradores con el código abierto son “colaboradores casuales”: personas que contribuyen con un proyecto solo ocasionalmente. Un colaborador casual probablemente no disponga del tiempo para dedicarse a tiempo completo a tu proyecto, por lo que tu trabajo es el de hacer que sea más sencillo para ellos contribuir.

Animar a otros colaboradores es también invertir en tí mismo . Cuando brinda poder a sus más grandes seguidores paraa continuar con el trabajo que los mantiene entusiasmados, hay menos presión que si lo hicieras tu mismo.

Documenta todo

Cuando comienzas un proyecto, mantener tu trabajo en privado puede sentirse natural. Pero los proyectos de código abierto avanzan mucho más cuando procesas tu documento en público.

Cuando escribes las cosas, más personas pueden participar en cada paso del camino. Puedes necesitar ayuda o algo que todavía no sabes que necesitas.

Escribir las cosas significa mucho más que documentación técnica. Cada vez que sientas la necesidad de escribir algo o de discutir tu proyecto de manera privada, pregúntate si puedes hacerlo públicamente.

Mantente transparente acerca de la hoja de ruta de tu proyecto, los tipos de contribuciones que estás buscando, cómo se revisa el trabajo de quienes contribuyan o porqué tomas determinadas decisiones.

Si ves que varios usuarios están trabajando en el mismo problema, documenta sus respuestas en el README.

Para las reuniones, considera publicar tus notas o carteles en un asunto relevante. La retroalimentación que obtendrás de este nivel de transparencia te sorprenderá

Documentar todo también se aplica al trabajo que tu haces. Si estás trabajando en una actualización sustancial de tu proyecto, ponlo en un pull request y márcalo como trabajo en proceso (WIP, work in progress por sus siglas en inglés). De esa manera, otras personas se pueden sentir involucradas en el proceso desde temprano

Compórtate de manera sensible

A medida que promocionas tu proyecto,las personas te harán llegar sus comentarios. Pueden tener preguntas acerca de cómo funcionan las cosas, o necesitar ayuda para comenzar.

Trata de responder cuando álguien presenta un problema, envía un pull request o realiza una pregunta acerca de tu proyecto. Cuando respondes rápidamente, logras que las personas se sientan parte del diálogo, y estarán más entusiasmadas de participar.

Incluso si no puedes revisar su solicitud inmediatamente, con solo agradecer su temprana ayuda incrementará su compromiso. Así es como @tdreyno respondió a un pull request en Middleman:

middleman pull request

Un estudio de Mozilla encontró que los colaboradores que reciben una revisión de su código dentro de las 48 horas tienen una significativa mayor tasa de retornar y de repetir alguna contribución.

Las conversaciones acerca de tu proyecto pueden también ocurrir en otros lugares a lo largo de la internet, como en Stack Overflow, Twitter o reddit. Puedes configurar tus notificaciones en cualquiera de esos tres lugares de manera de ser alertado cuando álguien mencione tu proyecto.

Brinda a tu comunidad un lugar para congregarse

Existen dos razones para brindar a tu comunidad un lugar para congregarse.

La primera razón es para ellos. Ayuda a las personas a conocerse. Las personas con intereses comunes querrán inevitablemente un lugar para hablar de ello. Y cuando la comunicación es pública y accesible, cualquiera puede leer los archivos pasados para ponerse al día y participar.

La segunda razón es para tí. Si no brindas a las personas un lugar público para conversar acerca de tu proyecto, probablemente te contactarán directamente. Al comienzo puede no parecer demasiado responder a mensajes privados “sólo por esta vez”. Pero con el tiempo, especialmente si tu proyecto se hace conocido, te sentirás agotado. Evita la tentación de comunicarte con las personas acerca de tu proyecto en privado. En su lugar, dirígelos al canal público designado.

La comunicación pública puede ser tan simple como dirigir a las personas a abrir un tema en lugar de enviarle un correo electrónico a usted directamente o comentar en su blog. Podrías incluso configurar una lista de correos electrónicos, o crear una cuenta en Twitter, Slack o un canal IRC para que las personas puedan comentar sobre tu proyecto. ¡O prueba todo lo anterior!

Kubernetes kops tiene tiempo reservado de las horas de oficina para ayudar a los miembros de la comunidad cada dos semanas :

Kops también tiene tiempo reservado cada dos semanas para ofrecer ayuda y guía a la comunidad. Los mantenedores de Kops han acordado reservar tiempo dedicado específicamente a trabajar con los recién llegados, ayudando con PRs y discutiendo nuevas características.

Las excepciones notables a la comunicación pública son: 1) cuestiones de seguridad y 2) infracciones sensibles al código de conducta. Siempre deberías encontrar la manera para que las personas reporten estos aspectos de manera privada. Si no quieres utilizar tu correo electrónico privado, configura una cuenta de correo electrónico dedicada.

Haciendo crecer tu comunidad

Las comunidades son extremadamente poderosas. Ese poder puede ser una bendición o una maldición, dependiendo de cómo lo maneje. A medida que la comunidad de tu proyecto crece, existen maneras para ayudar a que se convierta en una fuerza de construcción, no de destrucción.

No toleres a los malos actores

Cualquier proyecto popular inevitablemente atraerá a personas que perjudican a tu comunidad, en lugar de ayudarla. Pueden comenzar discusiones innecesarias, discutir sobre rasgos triviales o burlarse de otros.

Haz todo lo posible para adoptar una política de tolerancia cero hacia este tipo de personas. Si no se controla, las personas negativas harán que otras personas de tu comunidad se sientan incómodas. Incluso pueden irse.

Los debates regulares sobre aspectos triviales de tu proyecto distrae a otros, incluyéndote también a tí, de enfocarte en tareas importantes. Las nuevas personas que llegan a tu proyecto pueden ver estas conversaciones y pueden o no querer participar.

Cuando ves que ocurre algún comportamiento negativo, haz la observación correspondiente de manera pública. Explícale, en un tono amable, porqué dicho comportamiento no es aceptable. Si el problema persiste, puedes necesitar solicitarle que se retire. Tu código de conducta puede ser una guía constructiva para estas conversaciones.

Reúnete con los colaboradores donde ellos están

La buena documentación solo se vuelve importante a medida que tu comunidad crece. Los colaboradores casuales, quienes no estarían familiarizados con tu proyecto de otra manera, leen tu documentación para entender rápidamente el contexto de lo que necesitas.

En tu archivo CONTRIBUTING, indica de manera explícita a los nuevos colaboradores cómo pueden comenzar. Tal vez quieras dedicar incluso una sección para tal propósito. Django, por ejemplo, tiene una página especial para dar la bienvenida a los nuevos colaboradores.

django new contributors page

En tu cola de asuntos, etiqueta errores que son convenientes para diferentes tipos de colaboradores: por ejemplo, “solo principiantes”, “conveniente para quienes resuelven su primer bug”, o “documentación”. Estas etiquetas hacen que sea más fácil buscar problemas a resolver para alguien nuevo en el proyecto y así poder comenzar.

Finalmente, utiliza tu documentación para hacer que las personas se sientan bienvenidas en cada etapa del camino.

Nunca vas a interactuar con la mayoría de las personas que se acercan a tu proyecto. Puede haber colaboradores que no recibiste porque álguien se sintió intimidado o no supo cómo comenzar. Incluso algunas palabras amables pueden evitar que esas personas abandonen tu proyecto por verse frustradas

Por ejemplo, así es como Rubinius comienza su guía de contribuciones:/

Queremos comenzar agradeciendo por utilizar Rubinius. Este proyecto es un trabajo de amor, y apreciamos a todos los usuarios que detectan errores, hacen mejoras al rendimiento, y ayudan con su documentación. Cada contribución es significativa, así que gracias por participar. Dicho esto, aquí dejamos algunas pautas que pedimos que sigan para que podamos abordar con éxito su problema.

Comparte la propiedad de tu proyecto

Las personas se entusiasman por contribuir con proyectos cuando perciben un sentido de pertenencia. Eso no significa que tengas que cambiar la visión de tu proyecto o aceptar contribuciones que no quieres. Pero cuanto más crédito les des a los otros, más se quedarán.

Observa si puedes encontrar maneras de compartir la propiedad de tu comunidad tanto como te sea posible. Aquí hay algunas ideas:

  • Evita corregir errores sencillos (no críticos). En su lugar, utilizalos como oportunidades para reclutar nuevos colaboradores, o mentorear a alguien que quiere contribuir. Puede parecer antinatural al principio, pero tu inversión se verá compensada en el tiempo. Por ejemplo, @michaeljoseph le pidió a un colaborador que enviara un pull request de un problema detallado a continuación Cookiecutter en lugar de arreglarlo él mismo.

cookiecutter issue

  • Inicia un archivo de COLABORADORES o AUTORES en tu proyecto que liste a todos los que colaboraron con tu proyecto, como lo hace Sinatra.

  • Si tienes una comunidad considerable, envía un boletín o escribe un post en un blog agradeciendo a los colaboradores. Rust’s This Week in Rust y Hoodie’s Shoutouts son dos buenos ejemplos.

  • Da a cada colaborador permiso para hacer commit. @felixge encontró con esto que las personas se entusiasmaran por pulir sus parches, e incluso encontró nuevas personas para mantener proyectos en los que no había trabajado hace tiempo.

  • Si tu proyecto está alojado en GitHub, mueve tu proyecto desde tu cuenta personal hacia una Organización y agrega al menos un administrador de respaldo. Las Organizaciones hacen que sea más fácil trabajar en proyectos con colaboradores externos.

La realidad es que la mayoría de los proyectos solo tienen una o dos personas que lo mantengan y que hacen la mayoría del trabajo. Mientras más grande sea tu proyecto, y mientras más grande sea tu comunidad, más fácil es encontrar ayuda.

Aunque no siempre encuentres quien responda tu pedido, poner una señal por fuera incrementa las probabilidades de que otras personas se presenten. Y mientras más temprano comiences, más pronto las personas podrán ayudar.

Resolviendo conflictos

En las primeras etapas de tu proyecto, es bastante fácil tomar decisiones importantes. Cuando quieres hacer algo, simplemente lo haces.

A medida que tu proyecto se hace más conocido, más personas tendrán interés en las decisiones que tomes. Incluso si no tienes una gran comunidad de colaboradores, si tu proyecto tiene muchos usuarios, encontrarás personas que pesan en las decisiones o plantean cuestiones propias.

En su mayor parte, si has cultivado una comunidad amistosa y que se maneja con respeto y has documentado tu proceso de manera abierta, tu propia comunidad debería tener la habilidad para encontrar una solución. Pero algunas veces te encontrarás con problemas un poco más difíciles de abordar.

Fijando la vara para la amabilidad

Cuando tu comunidad se encuentre lidiando con una cuestión difícil, los ánimos pueden subir. Las personas pueden enojarse o verse frustradas y tomar las críticas como algo personal, incluso provenientes de tí.

Tu trabajo como encargado es evitar que estas situaciones escalen. Incluso si tienes una fuerte opinión sobre un tema, trata de mantener una posición de moderador o de facilitador, en lugar de ir a la lucha y empujar tus propios puntos de vista. Si alguien está comportándose de manera poco educada o monopolizando la conversación, actúa inmediatamente para mantener una discusión civilizada y productiva.

Otras personas te mirarán como un guía. Da un buen ejemplo. Todavía puedes expresar desacuerdo, tristeza o preocupación, pero de manera calmada.

Mantener la calma no es fácil, pero demostrar liderazgo mejora la salud de tu comunidad. Internet te agradece.

Trata a tu README como una constitución

Tu README es más que un conjunto de instrucciones. También es un lugar para hablar acerca de tus objetivos, visión del producto, y un mapa de ruta. Si las personas están muy centradas en debatir el mérito de un aspecto en particular, puede revisar el README y conversar de una visión más alta de tu proyecto. Centrarse en el README también despersonaliza la conversación, para tener una discusión más constructiva.

Enfócate en el viaje, no en el destino

Algunos proyectos utilizan un proceso de votación para tomar decisiones importantes. Si bien parece sensato a primera vista, la votación pone hincapié en una “respuesta”, más que en escuchar y tratar las preocupaciones de cada uno.

La votación se puede volver política, cuando los miembros de la comunidad se sienten presionados para hacerse favores entre ellos o a votar de determinada manera. No todos votan, si existe una mayoría silenciosa en tu comunidad, o existen usuarios que no se enteraron que se estaba llevando a cabo una votación.

Algunas veces, la votación se vuelve un desempate necesario. La mayoría de las veces, sin embargo, pone énfasis en la “búsqueda de concenso” más que en concensuar.

Bajo un proceso de búsqueda de concenso, los miembros de la comunidad discuten las principales preocupaciones hasta que sienten que fueron escuchadas adecuadamente. Cuando solo quedan preocupaciones menores, la comunidad avanza. La “Búsqueda de Concenso” reconoce que una comunidad puede no ser capaz de alcanzar una respuesta perfecta. En su lugar prioriza el escuchar y la discusión.

Incluso si no adopta un proceso de búsqueda de consenso, como responsable del proyecto, es importante que las personas sepan que estás escuchando. Hacer que las personas se sientan escuchadas y comprometerte a resolver sus preocupaciones, facilita gran parte del camino para resolver situaciones delicadas. Luego, continúa tus palabras con acciones.

No te apresures a tomar una decisión por el bien de tener una solución. Asegúrate de que todos se sientan escuchados y que toda la información se ha hecho pública antes de avanzar hacia una solución.

Mantén la conversación centrada en la acción

La discusión es importante, pero hay una diferencia entre conversaciones productivas e improductivas.

Fomenta la discusión siempre y cuando se mueva hacia una solución. Si está claro que la conversación se está extinguiendo o yéndose por las ramas, que las cosas se están haciendo personales o que están discutiendo sobre detalles menores, es tiempo de cerrarla.

Permitir que continúen estas conversaciones no solo es malo para un tema en cuestión, sino también para la salud de la comunidad. Esto envía el mensaje que este tipo de conversaciones están permitidas e incluso fomentadas, y puede desalentar a las personas a plantear o resolver problemas futuros.

Con cada aspecto que hayas hecho o que hayan hecho otros, pregúntate, “¿Cómo nos acerca ésto a una solución?”

Si la conversación comienza a desenredarse, pregunta al grupo, “¿Qué pasos deberíamos tomar?” para reorientar la conversación.

Si la conversación claramente no va a ningún lado, no existen acciones claras para tomar, o las acciones correctas ya se llevaron adelante, cierra el tema y explica porqué lo cerraste.

Elige tus batallas sabiamente

El contexto es importante. Considera quién está involucrado en una discusión y cómo representa esta al resto de la comunidad.

¿Están todos en la comunidad molestos, o incluso involucrados en un problema? ¿O es un provocador solitario? No te olvides de considerar a los miembros silenciosos de la comunidad, no solo a las voces activas.

Si el problema no representa las necesidades más amplias de tu comunidad, tal vez solo necesites agradecer las preocupaciones de algunas personas. Si se trata de un problema recurrente sin una solución clara, dirige el foco a discusiones previas y cierra el hilo de discusión.

Identifica a un decisor de la comunidad

Con una buena actitud y una clara comunicación, es posible resolver la mayoría de las situaciones difíciles. Sin embargo, incluso en una discusión productiva, simplemente pueden haber diferencias de opinión sobre cómo proceder. En esos casos, identifica un individuo o un grupo de personas que puedan actuar como decisivas.

Un decisor puede ser un responsable primario del proyecto, o podría ser un pequeño grupo de personas que toman una decisión en base a votación. Idealmente, habrás identificado un decisor y el proceso asociado en un archivo llamado GOVERNANCE antes de que necesites utilizarlo.

Tu decisor debería ser tu último recurso. Los temas que dividen son una oportunidad de crecer y aprender para tu comunidad. Aprovecha esas oportunidades y utiliza un proceso colaborativo para moverte hacia una solución cada vez que sea posible.

La comunidad es el ❤️ del código abierto

Las comunidades sanas y prósperas alimentan las miles de horas que se producen cada semana de código abierto. Muchos colaboradores señalan a otras personas como la razón para trabajar -o para no trabajar- en código abierto. Al aprender a aprovechar ese poder de manera constructiva, ayudarás a que álguien tenga una inolvidable experiencia con el código abierto.