En esta entrada explico qué es el Open Source y los primeros pasos que puedes llevar a cabo para empezar a participar en los proyectos que más te interesen. Además te propongo 9 formas de monetizar un proyecto open source para que no te falten ideas para hacer dinero en este sector.
Mi objetivo es conseguir quitarte el miedo a participar en la comunidad open source, hacerte ver que todos empiezan por el mismo sitio y que también puedes usar estos esfuerzos para ganar dinero.
Contenidos
¿Qué es el Open Source?
El software Open Source es un tipo de software en el que el código fuente se distribuye bajo una licencia que permite estudiar, cambiar y distribuir el software a cualquier usuario y para cualquier propósito.
Generalmente, el open source se desarrolla de forma colaborativa y se distribuye por internet. Permite generar un producto con una mejora continua y habilita a los participantes a tener un mayor impacto.
Alrededor del open source han surgido auténticas metodologías de trabajo y filosofías de desarrollo, que aportan muchos beneficios en el desarrollo de software atractivos para las empresas. El llamado Innersource consiste en usar las técnicas del desarrollo open source dentro de la organización con el objetivo de obtener sus beneficios.
Multitud de proyectos y tecnologías Big Data se desarrollan con un modelo open source. La fundación Apache aloja muchos de estos proyectos, algunos tan conocidos como Apache Hadoop o Apache Kafka.
Cómo contribuir con el Open Source
Si quieres contribuir con un proyecto open source pero te sientes intimidado para hacer tu primera aportación o pull request, sigue leyendo, ¡estoy seguro de que conseguirás alguna idea que te ayude a iniciarte en esta actividad!.
Encuentra un proyecto que te motive
El primer paso para participar en un proyecto open source es decidir con qué tipo de proyecto quieres contribuir en función de tus objetivos. Puedes empezar haciendo una lista de proyectos que te resulten interesantes, y más adelante filtrarlos según las tecnologías y lenguajes que usan, la comunidad que tienen o el propósito del software.
Una vez que has decidido el proyecto en el que contribuir, lo mejor es familiarizarse con el mismo. Debes explorar la documentación, los repositorios de código y los recursos que tiene disponibles. Resulta muy útil anotar todo lo que te vayas encontrando que se pueda mejorar o con lo que tengas dificultades, ya que son unos buenos puntos de partida para proponer y realizar estas mejoras más adelante.
Al fin y al cabo, facilitar la tarea de iniciarse en un nuevo proyecto es muy positiva para su crecimiento, y seguramente, todas las dificultades que te aparezcan, también las tendrán muchas más personas.
Elige un buen punto de entrada
El punto de entrada de cualquier proyecto open source suele ser su repositorio de Github. En concreto, suelen tener un fichero README, que como su nombre indica, conviene leer. Este fichero responderá tus preguntas más generales del proyecto, como qué es, qué hace y cómo lo hace.
Además del README y la documentación, puedes acceder a la pestaña de issues. No es más que una lista de tareas y problemas que están pendientes y aún no han sido solucionadas. Siempre es posible pedir más información a través de un comentario si piensas que es insuficiente para trabajar en ella. Este es el lugar adecuado para proponer un nuevo cambio o discutir sobre cualquier aspecto del proyecto. En ocasiones, los proyectos deciden no usar esta funcionalidad en Github sino en otras plataformas, por ejemplo Jira.
Puedes elegir una issue existente con la que te sientas cómodo. Debes leer detenidamente su descripción y los comentarios para entender lo que se necesita. También es buena idea comentar que vas a trabajar en esta tarea y lo que tienes pensado hacer. En ocasiones, los administradores pueden asignarte la tarea, guiarte o proponerte trabajar en alguna otra más adecuada.
Existen muchas maneras de contribuir con un proyecto open source que no son mediante código. Algunas de ellas son:
- Sintaxis del programa
- Formato del texto o del código
- Errores tipográficos
- Ampliar y actualizar documentación
Haz y prueba tus cambios
Para trabajar en el proyecto, necesitarás una copia local del repositorio que contiene el código. Puedes hacer un fork desde Github o la plataforma que contenga el repositorio y posteriormente clonarlo en tu ordenador.
Antes de ponerte a cambiar cosas, deberías asegurarte de que tu copia local está funcionando correctamente. Para probarlo, sigue la guía de instalación o los pasos que existan para desplegar y ejecutar el software.
Una vez que has comprobado su funcionamiento, puedes abrir los ficheros con tu editor preferido y realizar los cambios que necesites para solucionar el problema o agregar la nueva funcionalidad. ¡No te olvides de comprobar que los cambios funcionan correctamente! Algunos proyectos incorporan tests automatizados para asegurar que los nuevos cambios no introducen errores.
Propón tus cambios
Cuando estés satisfecho con tu trabajo, puedes subir los cambios a la copia remota de tu repositorio (fork) y abrir una Pull Request (PR) al repositorio original. Recuerda describir el cambio en los comentarios y hacer referencia a la issue de partida.
Tendrás que esperar a que algún otro participante del proyecto valide los cambios, pasen los tests y sea aceptado para formar parte del código del proyecto. ¡Enhorabuena! Has conseguido tu primera contribución a un proyecto open source.
Recuerda, empieza por cambios pequeños, familiarízate con el proyecto y su forma de trabajar poco a poco y no te dejes intimidar por su tamaño o comunidad, todas las aportaciones constructivas siempre son bienvenidas.
Cómo hacer dinero contribuyendo al Open Source
A continuación presento una lista de las formas en las que puede ser posible hacer dinero con proyectos open source. Existen muchas otras formas, pero espero que esta lista te abra la mente y te permita ver que es un sector del que se puede extraer mucho valor.
Donaciones
Existen múltiples servicios que pueden gestionar por ti las donaciones en tu web o en tu proyecto open source. Algunas de las plataformas más conocidas son Paypal o Stripe. Las donaciones son un mecanismo muy simple del que te puedes despreocupar para concentrarte en el proyecto si así lo deseas.
Las donaciones tienen la desventaja principal del reparto, sobre todo en los proyectos open source grandes con muchos colaboradores. La forma de distribuir la donación entre los involucrados en el proyecto es complicada, ya que es difícil llegar a un consenso entre las partes.
Crowdfunding
El crowdfunding se basa en financiar una idea o un plan mediante donaciones individuales o de organizaciones, a los que generalmente se les da algún tipo de ventaja sobre el resultado. Estas campañas se suelen hacer al principio del proyecto, y necesitan de planificación y de grandes esfuerzos de marketing para darse a conocer y conseguir los fondos suficientes.
Otra modalidad de crowdfunding es el recurrente, a través de este tipo de campañas, los participantes realizan donaciones periódicas que permiten tener unos ingresos recurrentes para llevar a cabo el proyecto. Esta modalidad es especialmente útil en los proyectos de software que van a tener un uso prolongado en el tiempo.
Kickstarter es una plataforma que permite lanzar campañas para tu proyecto.
Recompensas
A menudo las organizaciones tienen planes de recompensas para el desarrollo de partes de un servicio. Estas recompensas se han vuelto muy populares en el sector de la seguridad. Las organizaciones se comprometen a pagar una recompensa a los profesionales que descubran nuevas vulnerabilidades en el código. También contemplan grupos de personas u organizaciones que deberán repartirse esta recompensa.
Una de las páginas más conocidas que agregan estos tipos de trabajos es BountySource.com.
Contratación por empresas
Una de las maneras más comunes de contribuir en proyectos open source es a través de tu empresa. Al contribuir en estos proyectos, todo tu trabajo es visible públicamente, por lo que existen muchas empresas, que usan este software, que contratan a los mejores participantes en el proyecto.
De esta forma, las empresas consiguen garantizar que el proyecto continúa, y tienen mayor capacidad para orientar el desarrollo de las funcionalidades más prioritarias para la organización. Si la organización también usa el proyecto, al contratar estos perfiles consiguen obtener soporte más especializado sobre el software.
La parte más atractiva de esta forma de monetizar el open source es la estabilidad que va unida al salario. Por otro lado, la relación con la empresa depende del uso del proyecto open source, que debe ser conocido y tener una gran comunidad detrás.
En el caso de optar por esta opción, nos debemos asegurar de la política de la empresa con el open source, los recursos y el tiempo que nos permite dedicar a estos proyectos y las licencias que están involucradas.
Servicios de consultoría open source
Si el proyecto que dominas es popular, existe la opción de proporcionar servicios de consultoría a empresas que quieren implementar el software. Este trabajo es más flexible que los contratos de trabajo y permiten más libertad de horario. Además, al ser un trabajo menos estable, los precios por hora son superiores.
Entre las tareas englobadas en los servicios de consultoría son el desarrollo de alguna pieza personalizada, el despliegue del software para la organización o formar a empleados en su uso y mantenimiento.
Las desventajas de este modelo es que tiene una escalabilidad limitada por las horas que tengas disponibles. Además conlleva una serie de tareas de negocio alejadas del aspecto técnico.
Sponsors y Anuncios
Cuando un proyecto consigue un gran volumen de usuarios o de interesados es posible que existan empresas que quieran actuar de sponsors del proyecto a cambio de exposición al público. También se pueden vender anuncios y recomendaciones de productos en las plataformas de difusión del software. De esta forma, ambas partes salen beneficiadas del acuerdo.
Esta manera de monetizar un proyecto open source requiere de unos esfuerzos en la búsqueda de clientes específicos para el nicho o el sector en el que se encuentre. Además, requiere una gran base de usuarios inicial para resultar rentable.
Licenciamiento doble (Licencia dual)
Consiste en proporcionar varias licencias para el mismo proyecto de código open source. Una de ellas es comercial y otra está orientada al uso libre como GPL (General Public License). Esta modalidad permite escalar muy bien los proyectos y es por la que han optado multitud de empresas surgidas de proyectos open source.
Las empresas que deseen utilizar el software, pueden partir de la licencia libre inicialmente, pero en el momento en el que resulta fundamental para su negocio o hacen un uso extenso del software, deberán cambiar a la licencia comercial. La licencia comercial está orientada a empresas y suele ofrecer soporte técnico y legal.
Open Core
La idea detrás del modelo Open Core es el desarrollo de todo un conjunto de funcionalidades de pago alrededor de una plataforma o de una base fundamental open source (el core). Las funcionalidades adicionales solo podrán ser usadas por empresas o usuarios que decidan pagar por ellas.
Es un modelo que al igual que la licencia dual escala muy bien y permite crear grandes empresas alrededor de proyectos open source con alta demanda o grandes bases de usuarios. Para implementar esta estrategia se deben tener en cuenta las necesidades de los usuarios que no desean las funcionalidades adicionales, y tener un balance entre ambos grupos, de forma que ninguno de ellos se sienta frustrado o descompensado.
Fundaciones Open Source
Las fundaciones son entidades legales con la capacidad de aceptar donaciones y gestionar los proyectos open source. Proporcionan la base legal y los requisitos para el desarrollo del proyecto. Generalmente, surgen alrededor de varios proyectos open source con grandes comunidades, y también se encargan de los esfuerzos de difusión.
Deben ser entidades neutrales que protege sus bases de código frente a otras organizaciones. Las fundaciones aportan legitimidad a los proyectos que soportan, y es mucho más probable que reciban donaciones de grandes organizaciones que los proyectos open source gestionados por individuos.
Dos ejemplos son la Apache Software Foundation o The Linux Foundation.
Open source y trabajo remoto
La práctica del teletrabajo es cada vez más común en las empresas. En concreto en empresas dedicadas al desarrollo de software es habitual encontrar que los empleados trabajan uno o varios días a la semana de forma remota o incluso con trabajo remoto permanente.
El uso de tecnologías como internet, el correo electrónico o las videoconferencias permiten desempeñar muchos trabajos sin necesidad de estar en una ubicación específica o con un horario determinado. Un programador es capaz de comunicarse con su equipo incluso estando en países distintos. La pandemia del COVID-19 así lo ha demostrado incluso en las empresas más tradicionales.
El software open source ha sido siempre una oportunidad para trabajar y colaborar de forma remota. Las empresas que contratan este talento saben que estos programadores son capaces de organizarse para trabajar de forma correcta sin la necesidad de tener unas oficinas centrales.
A continuación, voy a listar 7 consejos que me parecen fundamentales para ser más productivo trabajando en software open source desde tu casa.
- Levántate temprano: Para conseguirlo, establece una rutina para dormir suficiente cada día acostándote cada día a la misma hora.
- Vístete apropiadamente: Intenta vestir como si fueras a la oficina, imagina que tienes una videollamada con algún cliente. Te recordará que estás trabajando y no solo navegando por Internet.
- Evita interrupciones: Si alguien necesita algo de ti, intenta que respeten tu zona de trabajo y que llamen a la puerta solo si es urgente. Comunícaselo a quien se encuentre viviendo contigo.
- Haz descansos breves: Evita distracciones en los descansos y no inicies nuevas actividades que puedan interrumpir tu concentración. Es recomendable planificar los tiempos de descanso para evitar que se alarguen en el tiempo dando lugar a más distracciones.
- Mantén tu alrededor organizado: Evita el desorden y tener muchos papeles en el escritorio. Mantenlo simple y práctico.
- Usa una pizarra blanca: Estas pizarras son muy útiles para planificar tareas, realizar esquemas y aclarar ideas visualmente.
- Come bien: Convierte en un hábito preparar comida saludable cada día, limita comer fuera siempre que no sea por necesidad.
Cursos Recomendados de Desarrollo de Software Open Source
A continuación, tienes mi recomendación para aprender a desarrollar software en un entorno open source de manera productiva. El curso está ofrecido por la fundación Linux y disponible en Coursera.
Desarrollo de Software Open Source, Linux y Git
El curso contiene cuatro módulos que te guiarán por las herramientas y metodologías más eficientes para implementar proyectos open source:
Preguntas Frecuentes – FAQ
¿Cuáles son algunos ejemplos de modelos de negocio basados en software open source?
Algunos ejemplos de modelos de negocio de open source incluyen el modelo de soporte y servicios, donde se ofrece soporte técnico y servicios personalizados; el modelo de suscripción, donde se ofrecen actualizaciones y funcionalidades adicionales a cambio de una tarifa recurrente; y el modelo de licencia dual, donde se ofrece una versión gratuita bajo una licencia de código abierto y una versión comercial con características premium.
¿Qué precauciones debo tomar al contribuir al software de código abierto para evitar problemas legales o de propiedad intelectual?
Es importante revisar y comprender las licencias de código abierto asociadas con el proyecto al que estás contribuyendo, respetar los derechos de autor y las licencias de terceros, y evitar la inclusión de código propietario en proyectos de código abierto sin la autorización adecuada.
¿Cómo puedo promover mi contribución al software de código abierto para aumentar mis oportunidades de negocio?
Puedes promover tu contribución al software de código abierto mediante la participación en conferencias y eventos de la comunidad, la publicación de artículos y blogs sobre tus contribuciones, la creación de perfiles en plataformas de redes sociales y colaboración con empresas y organizaciones que valoran el software de código abierto.
A continuación el vídeo-resumen. ¡No te lo pierdas!