Adrian Eguez
Windows, Mobile and Web Developer with Node.js and Angular, Proffesor in Escuela Politécnica Nacional
Escuela Politécnica Nacional
Septiembre 2015
Ing. Adrián Égüez
Escuela Politécnica Nacional
Ing. Adrián Égüez
Las primeras preguntas que la gente se hace sobre el software libre son "¿Cómo funciona? ¿Cómo
se mantiene el proyecto? ¿Quién toma las decisiones?
Escuela Politécnica Nacional
Ing. Adrián Égüez
¿Qué tienen en común los proyectos exitosos?: calidad técnica, salud operacional y
la capacidad de sobrevivencia
Escuela Politécnica Nacional
Ing. Adrián Égüez
La salud operacional es la capacidad efectiva del proyecto de incorporar
las contribuciones de nuevos códigos y nuevos desarrolladores, y de asumir la responsabilidad de los
informes de errores que ingresan
Escuela Politécnica Nacional
Ing. Adrián Égüez
Capacidad de sobrevivencia es la posibilidad de que el proyecto exista
independientemente de algún participante o auspiciante en particular
Escuela Politécnica Nacional
Ing. Adrián Égüez
El éxito técnico no es difícil de alcanzar, pero sin una base robusta de desarrollo
y un fundamento social, un proyecto puede resultar incapaz de manejar el crecimiento que el éxito
inicial aporta, o la ausencia de algún individuo carismático.
Escuela Politécnica Nacional
Ing. Adrián Égüez
Sentido de permanencia
institucional, ayudado por los hábitos y procedimientos que son bien comprendidos por todos los que
participan.
Escuela Politécnica Nacional
Ing. Adrián Égüez
La capacidad de cada uno de
tomar una copia del código fuente y usarlo para abrir un proyecto que compita con el original, evento
que se conoce como "fork".
Escuela Politécnica Nacional
Ing. Adrián Égüez
Los "forks", o más bien la posibilidad de que se produzca un "fork", es la razón por la cual no hay verdaderos dictadores en los proyectos de software libre.
Escuela Politécnica Nacional
Ing. Adrián Égüez
Imaginen un rey cuyos súbditos pudieran copiar todo su reino en cualquier momento y
trasladarse a la copia para gobernarla como creen que corresponde.
Escuela Politécnica Nacional
Ing. Adrián Égüez
Podría bien darse el caso de que todos quieran apoyarse en un líder (el ejemplo más famoso es el de Linus Torvalds durante el desarrollo del kernel de Linux), pero esto es porque ellos así lo eligen, de una manera ajena a todo cinicismo y en una forma no siniestra.
Escuela Politécnica Nacional
Ing. Adrián Égüez
Una propiedad de todas
las licencias de fuente abierta es que no se le da a una parte más poder que a cualquier otra para decidir
cómo se debe usar o cambiar el código.
Escuela Politécnica Nacional
Ing. Adrián Égüez
El modelo de un dictador benevolente es precisamente lo que se describe así: La autoridad final de la toma de decisiones reside en una persona, de quien se espera que, por la fuerza de su personalidad o experiencia, la use sabiamente.
Escuela Politécnica Nacional
Ing. Adrián Égüez
"árbitro aprobado por la comunidad" o un "juez".
Escuela Politécnica Nacional
Ing. Adrián Égüez
Los dictadores
benevolentes no toman realmente las decisiones, ni siquiera la mayoría de las decisiones
Escuela Politécnica Nacional
Ing. Adrián Égüez
Solamente cuando queda claro que no se puede alcanzar un consenso, y cuando la
mayoría del grupo desea que alguien guíe la decisión para que el desarrollo pueda seguir adelante, pisan
firme y dicen: "Esta es la forma que tiene que ser".
Escuela Politécnica Nacional
Ing. Adrián Égüez
Una característica compartida por casi todos los
dictadores benevolentes exitosos es que tienen un rechazo a tomar decisiones con un "así tiene que ser";
esta es una de las razones por la que permanecen en la función.
Escuela Politécnica Nacional
Ing. Adrián Égüez
A medida que el proyecto avanza, se tiende a pasar del modelo del dictador benevolente a los sistemas
más abiertamente democráticos.
Escuela Politécnica Nacional
Ing. Adrián Égüez
Siempre que un dictador benevolente se baja o intenta difundir la responsablidad
de tomar decisiones entre todos por igual, se da la oportunidad para que el grupo se asiente en un nuevo
sistema no-dictatorial—estableciendo una constitución, por así decirlo.
Escuela Politécnica Nacional
Ing. Adrián Égüez
Puede ser que el grupo no
aprovecha la primera oportunidad, ni quizás tampoco la segunda, pero en algún momento lo hará; y
una vez hecho, es muy difícil que esta decisión se vuelva atrás.
Escuela Politécnica Nacional
Ing. Adrián Égüez
Los detalles de cómo funcionan esos sistemas varían amplia mente, pero hay en ellos dos elementos
comunes: uno, el grupo funciona por consenso la mayoría del tiempo; dos, hay un mecanismo formal de
votaciones para los casos en que el consenso no puede alcanzarse.
Escuela Politécnica Nacional
Ing. Adrián Égüez
Consenso significa solamente un acuerdo que todos aceptan de una vez por todas.
Escuela Politécnica Nacional
Ing. Adrián Égüez
La persona que propone el consenso debe, por
cierto, dejar en claro cual es el consenso alcanzado, y que acciones deben tomarse en consecuencia de él, si es que ésto no resulta obvio.
Escuela Politécnica Nacional
Ing. Adrián Égüez
Mantener el código fuente del proyecto bajo el control de versión significa que la mayoría de las
decisiones pueden fácilmente deshacerse.
Escuela Politécnica Nacional
Ing. Adrián Égüez
El proceso de consensuar no necesita ser muy formal.
Escuela Politécnica Nacional
Ing. Adrián Égüez
En cambios de mayor importancia, especialmente aquellos que pueden desestabilizar
una parte del código, la gente espera uno o dos días antes de suponer que hay consenso.
Escuela Politécnica Nacional
Ing. Adrián Égüez
Esto se aplica no sólo al software fijo, sino a las actualizaciones de la Web, a cambios en la
documentación y a cualquier otra cosa que no sea controversial.
Escuela Politécnica Nacional
Ing. Adrián Égüez
Inevitablemente, algunos debates no llegarán al consenso. Cuando no haya otro medio de salir del
callejón, la solución es votar.
Escuela Politécnica Nacional
Ing. Adrián Égüez
Cuando llega el tiempo de votar, el desacuerdo ha sido analizado y reducido a unas pocas cuestiones, bien etiquetadas y acompañadas de
descripciones concisas.
Escuela Politécnica Nacional
Ing. Adrián Égüez
Recuerde de especificar el sistema de votación, puesto que hay varias formas, y la gente puede tener falsas expectativas sobre el procedimiento que va a ser usado. Una buena opción es la votación por aprobación, en la que cada votante puede votar por todas las opciones que quiera, dentro de las
opciones presentadas.
Escuela Politécnica Nacional
Ing. Adrián Égüez
Finalmente, voto secreto, voto abierto. No hay necesidad de guardar secretos o aparecer como anónimos
en una votación sobre asuntos que se han debatido públicamente.
Escuela Politécnica Nacional
Ing. Adrián Égüez
No olvidar que un debate abierto puede producir un giro nuevo del pensamiento sobre el
problema, y llevar a una propuesta que eventualmente satisfaga a todos.
Escuela Politécnica Nacional
Ing. Adrián Égüez
La ventaja principal de la votación es que se cierra la cuestión y se puede seguir adelante. PERO el
arreglo se hace por un conteo de votos, en lugar de un diálogo racional que conduzca a todos a la misma conclusión.
Escuela Politécnica Nacional
Ing. Adrián Égüez
Cuanto más experiencia tiene la gente en proyectos de fuente abierta, les encuentro menos
dispuestas a querer arreglar las cuestiones por medio de la votación.
Escuela Politécnica Nacional
Ing. Adrián Égüez
¿A quién le corresponde votar? Este
asunto puede convertirse en delicado, porque fuerza a que el proyecto reconozca oficialmente que hay
gente con mayor compromiso, o con mejores apreciaciones que los otros.
Escuela Politécnica Nacional
Ing. Adrián Égüez
La mejor solución es simplemente tomar la distinción existente, el acceso a los commits, y asociar los privilegios del voto en eso.
Escuela Politécnica Nacional
Ing. Adrián Égüez
No pueden ponerse los votos para los que hacen commits en una lista de correo pública, porque se pueden herir los sentimientos y la reputación de un candidato.
Escuela Politécnica Nacional
Ing. Adrián Égüez
Encuesta vs Votación si a alguien se le ocurre una opción mejor que
no está en la lista, su respuesta puede llegar a ser el resultado más importante de la votación.
VS
Escuela Politécnica Nacional
Ing. Adrián Égüez
El veto es la manera
que tiene un desarrollador para detener un cambio apresurado o mal considerado, por lo menos por un tiempo suficiente para que todos puedan discutirlo más. En apache se usaba la notación -1
Escuela Politécnica Nacional
Ing. Adrián Égüez
En cierto momento, el número de acuerdos y arreglos que circulan por el proyecto pueden llegar a ser tan grandes que se necesita registrarlos en algún lugar. Y para dar legitimidad a esos documentos, hay que tener bien claro que están basados el las discusiones de las listas de correo y en acuerdos que ya
estaban en vigencia.
Escuela Politécnica Nacional
Ing. Adrián Égüez
http://www.apache.org/foundation/how-it-works.html
http://subversion.apache.org/docs/community-guide/
Escuela Politécnica Nacional
Ing. Adrián Égüez
Los fondos corporativos de un desarrollo de software libre no son un nuevo fenómeno. Muchos de los
desarrollos han estado siempre informalmente subvencionados.
( La subvención consiste en la entrega de una cantidad de dinero por la Administración, a un particular, sin obligación de reembolsarlo, para que realice cierta actividad que se considera de interés )
Escuela Politécnica Nacional
Ing. Adrián Égüez
Cuando un administrador de sistemas escribe una herramienta de análisis de sistemas para ayudarle en su trabajo, entonces la pone online y
consigue corregir bugs y contribuciones con nuevas características de otros administradores de sistemas,
lo que ha ocurrido es que se ha creado un consorcio no oficial.
Escuela Politécnica Nacional
Ing. Adrián Égüez
Hoy la diferencia, es que muchos de estos esfuerzos están siendo formalizados. Las corporaciones están tomando consciencia de los beneficios de el software open source, y por ello empiezan a involucrarse, ellas mismas, en su desarrollo. Los desarrolladores también llegan a esperar que los proyectos importantes atraigan al menos donaciones, y posiblemente incluso patrocinantes de gran duración.
Escuela Politécnica Nacional
Ing. Adrián Égüez
El patrocinio financiero es, en general, bienvenido por las comunidades de desarrollo de open source.
Escuela Politécnica Nacional
Ing. Adrián Égüez
Sin embargo, los fondos tambien traen una percepción de control. Si no se manejan cuidadosamente,
el dinero puede dividir un proyecto en grupos incluyentes y grupos excluyentes de desarrolladores.
Escuela Politécnica Nacional
Ing. Adrián Égüez
Si los voluntarios no remunerados tienen el sentimiento que las decisiones de diseño o adición de
características están simplemente disponibles para el mejor postor, se marcharan a un proyecto que
se parezca más a una meritocracia y menos a un trabajo sin pagar para el beneficio de alguien.
Escuela Politécnica Nacional
Ing. Adrián Égüez
Tú
puedes firmar un contrato con algunos desarrolladores, pero ellos serían idiotas consigo mismos, y tú, si ellos garantizan que el trabajo por el que tu has pagado será aceptado por la comunidad de desarrollo simplemente porque tú pagaste por él.
Escuela Politécnica Nacional
Ing. Adrián Égüez
El peso dado a los objetivos de tu compañia será determinado por el estatus de sus
representantes en el proyecto, no por el tamaño de la compañia, presupuesto o plan de negocios.
Escuela Politécnica Nacional
Ing. Adrián Égüez
Compartiendo la carga
Distintas organizaciones con necesidades de software similares, a menudo se encuentran a sí mismas duplicando esfuerzos, tanto escribiendo código interno similar, o comprando productos
similares de vendedores propietarios.
Escuela Politécnica Nacional
Ing. Adrián Égüez
Aumentando servicios
Cuando una compañía vende servicios de los cuales depende, o se hacen más atractivos por,
programas open source particulares, naturalmente en los intereses de esta compañía está asegurar
que esos programas sean activamente mantenidos.
Escuela Politécnica Nacional
Ing. Adrián Égüez
Apoyando las ventas de hardware
El valor de los ordenadores y sus componentes está directamente relacionado con la cantidad de
software disponible para ellos.
Escuela Politécnica Nacional
Ing. Adrián Égüez
Socavando a la competencia
A algunas empresas patrocinan ciertos proyectos como una manera de socavar los productos
de la competencia, que puede que sean o no Proyectos Open Source.
Escuela Politécnica Nacional
Ing. Adrián Égüez
Marketing
Ser asociado con un proyecto OSS popular puede que genere muy buena publicidad.
Escuela Politécnica Nacional
Ing. Adrián Égüez
Licencias Duales
Licenciamiento Dual es una práctica bajo la cual se ofrece el software utilizando una licencia propietaria tradicional para clientes quienes deseen revenderlo como parte de otra aplicación propietaria, y simultaneamente bajo una licencia libre para aquellos quienes pretenden utilizarlo
bajo los términos del software libre. (MySQL)
Escuela Politécnica Nacional
Ing. Adrián Égüez
Donaciones
Un proyecto popular puede a veces obtener contribuciones significativas, tanto de individuos como
de organizaciones, sólo con colocar un botón de donaciones en línea o a veces vendiendo productos
promocionales del proyecto como tazas de cáfe, camisetas, alfombrillas, etc.
Escuela Politécnica Nacional
Ing. Adrián Égüez
Si está dirigiendo un equipo de desarrolladores en un proyecto de software libre, intente mantenerlos el
tiempo suficiente para que adquieran experiencia técnica y política—un par de años como mínimo.
Escuela Politécnica Nacional
Ing. Adrián Égüez
Por
supuesto que ningún proyecto, sea de código abierto o cerrado, se beneficia del intercambio incesante
de programadores.
Escuela Politécnica Nacional
Ing. Adrián Égüez
Pero el castigo puede ser mayor para un proyecto de código abierto porque
quienes abandonan el proyecto no sólo lo hacen con el conocimiento del código, también se llevan un
status en la comunidad y las relaciones que hayan hecho.
Escuela Politécnica Nacional
Ing. Adrián Égüez
La credibilidad acumulada por un desarrollador no puede ser transferida. El ejemplo más obvio es que un desarrollador recien incorporado no puede heredar los mismo accesos al código de quien se va , así que si el nuevo desarrollador no tiene permisos para realizar cambios, deberá enviar parches hasta que tenga estos permisos.
Escuela Politécnica Nacional
Ing. Adrián Égüez
El trabajo debe ser aceptado por la comunidad, sin importar quien sea
Escuela Politécnica Nacional
Ing. Adrián Égüez
Hay que tener si el contratista trabaja por hora o por trabajo, puede trabajar mas de lo que debe, o cobrarnos mas de lo que podemos pagar
Escuela Politécnica Nacional
Ing. Adrián Égüez
Llegar a un acuerdo dividiendo el problema en partes pequeñas,
Escuela Politécnica Nacional
Ing. Adrián Égüez
Una buena estrategia es contratar a uno de los desarrolladores "committers" (que hacen commits y tienen permitido hacerlo)
Escuela Politécnica Nacional
Ing. Adrián Égüez
Los committers no van a querer que su reputación baje o implementar algo sin calidad, así que generalmente lo harán bien, además la comunidad aceptará los cambios más fácilmente de gente que conoce
Escuela Politécnica Nacional
Ing. Adrián Égüez
La comunidad es aún importante para el éxito del trabajo contratado. No piense que la mitigación de la comunidad será un obstáculo a vencer, piénselo como un departamento gratuito de diseño y control de
calidad.
Escuela Politécnica Nacional
Ing. Adrián Égüez
La programación no es el único trabajo dentro del proyecto, tal vez la más glamorosa pero no la única, es así que la documentación o las pruebas formales pueden ser dejadas de lado
By Adrian Eguez
Clases de Aplicaciones en Ambientes Libres -Infraestructura Social y Política -Dinero -Comunicaciones
Windows, Mobile and Web Developer with Node.js and Angular, Proffesor in Escuela Politécnica Nacional