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
El código abierto no sólo significa el acceso al código fuente. Los términos de distribución de software de código abierto deben cumplir con los siguientes criterios
Fuente: https://opensource.org/
1) Distribución Gratuita
Escuela Politécnica Nacional
Ing. Adrián Égüez
La licencia no debe restringir cualquiera de las partes de vender o entregar el programa como parte de una distribución mayor que contiene programas de diferentes fuentes. La licencia no requerirá una regalía u otra cuota por dicha venta.
Fuente: https://opensource.org/
2) Código Fuente
Escuela Politécnica Nacional
Ing. Adrián Égüez
El programa debe incluir el código fuente, y debe permitir la distribución de código fuente, así como su forma compilada. Donde alguna pieza de un producto no se distribuya con el código fuente, debe haber un medio muy publicitado de obtener el código fuente, por un costo razonable de reproducción, preferentemente la descarga a través de Internet sin costo alguno.
Fuente: https://opensource.org/
3) Trabajos derivados
Escuela Politécnica Nacional
Ing. Adrián Égüez
La licencia debe permitir modificaciones y trabajos derivados y debe permitir que estos se distribuyan bajo los mismos términos que la licencia del software original.
Fuente: https://opensource.org/
4) Integridad del código fuente del autor
Escuela Politécnica Nacional
Ing. Adrián Égüez
La licencia puede restringir el código fuente de la que se distribuye en forma modificada sólo si la licencia permite la distribución de "parches" con el código fuente con el propósito de modificar el programa en tiempo de compilación.
Fuente: https://opensource.org/
4) Integridad del código fuente del autor
Escuela Politécnica Nacional
Ing. Adrián Égüez
La licencia debe permitir explícitamente la distribución de software a partir de código fuente modificado. La licencia puede requerir trabajos derivados a llevar un nombre o número de versión diferente del software original.
Fuente: https://opensource.org/
5) No discriminación contra personas o grupos
Escuela Politécnica Nacional
Ing. Adrián Égüez
La licencia no debe discriminar a ninguna persona o grupo de personas.
Fuente: https://opensource.org/
6) No discriminación en función de la actividad
Escuela Politécnica Nacional
Ing. Adrián Égüez
La licencia no debe restringir a nadie de hacer uso del programa en un campo específico. Por ejemplo, no puede restringir el programa sea utilizado en un negocio, o que se utilicen para la investigación genética.
Fuente: https://opensource.org/
7) Distribución de la licencia
Escuela Politécnica Nacional
Ing. Adrián Égüez
Los derechos asociados al programa deben aplicarse a todos aquellos a quienes se redistribuya el programa, sin necesidad de pedir una licencia adicional por estas partes
Fuente: https://opensource.org/
8) La licencia no debe ser específica para un producto
Escuela Politécnica Nacional
Ing. Adrián Égüez
Los derechos asociados al programa no deben depender de ser parte del programa de una distribución de software en particular.
Fuente: https://opensource.org/
8) La licencia no debe ser específica para un producto
Escuela Politécnica Nacional
Ing. Adrián Égüez
Si el programa se extrae de esa distribución y usado o distribuido dentro de los términos de la licencia del programa, todas las partes a las que se redistribuye el programa deben tener los mismos derechos que los que se otorgan en relación con la distribución de software original.
Fuente: https://opensource.org/
9) La licencia no debe Restringir Otro Software
Escuela Politécnica Nacional
Ing. Adrián Égüez
La licencia no debe poner restricciones sobre otros programas que se distribuyan junto con el software licenciado. Por ejemplo, la licencia no puede insistir que todos los demás programas distribuidos en el mismo medio deben ser software de código abierto.
Fuente: https://opensource.org/
10) Licencia debe ser tecnológicamente neutral
Escuela Politécnica Nacional
Ing. Adrián Égüez
Ninguna disposición de la licencia puede basarse en cualquier tecnología o estilo o interfaz.
Fuente: https://opensource.org/
Escuela Politécnica Nacional
Ing. Adrián Égüez
El Gobierno de la República de Ecuador promueve el uso e implementación de Software Libre.
Fuente: http://www.administracionpublica.gob.ec/software-libre/
Escuela Politécnica Nacional
Ing. Adrián Égüez
Mediante Decreto Ejecutivo No. 1014 emitido el 10 de Abril de 2008, se dispone el uso de Software Libre en los sistemas y equipamientos informáticos de la Administración Pública de Ecuador. Es interés del Gobierno ecuatoriano alcanzar soberanía y autonomía tecnológica, así como un ahorro de recursos públicos.
Fuente: http://www.administracionpublica.gob.ec/software-libre/
Escuela Politécnica Nacional
Ing. Adrián Égüez
La Subsecretaría de Gobierno Electrónico es responsable de elaborar y ejecutar planes, políticas y reglamentos para el uso de Software Libre en el Gobierno Central. Como órgano regulador desarrolla la “Estrategia para la implantación de Software Libre para la Administración Pública Central de Ecuador”.
Fuente: http://www.administracionpublica.gob.ec/software-libre/
Escuela Politécnica Nacional
Ing. Adrián Égüez
La Estrategia define políticas, objetivos y planes de acción en base a cuatro ejes estratégicos:
1. Promulgación de estándares y normatividad,
2. Formación de masa crítica,
3. Planificación, seguimiento y control y
4. Difusión del Software Libre
Fuente: http://www.administracionpublica.gob.ec/software-libre/
Escuela Politécnica Nacional
Ing. Adrián Égüez
Se definen como políticas: la utilización de estándares abiertos, la minimización de compra de licencias propietarias, la contratación de servicios en proyectos informáticos, la reutilización del software y el uso preferencial de programas navegadores como medios de acceso.
Fuente: http://www.administracionpublica.gob.ec/software-libre/
Escuela Politécnica Nacional
Ing. Adrián Égüez
Previo a la promulgación del Decreto de Software Libre en Abril del 2008, la mayoría de instituciones de la Administración Central utilizaban software privativo en sus sistemas informáticos. Actualmente, todas estas entidades tienen planificado o se encuentran ejecutando procesos de migración y prácticamente todos los nuevos proyectos informáticos consideran la adopción de herramientas de Software Libre.
Fuente: http://www.administracionpublica.gob.ec/software-libre/
Escuela Politécnica Nacional
Ing. Adrián Égüez
Sistemas transversales del Estado ecuatoriano se han desarrollado totalmente con Software Libre: el Sistema Nacional de Compras Públicas, el Sistema Nacional de Recursos Humanos y el Sistema de Gestión Documental. Estos sistemas son un referente de soberanía y autonomía tecnológica, así como de ahorro de recursos públicos, áreas que son de interés del Gobierno.
Fuente: http://www.administracionpublica.gob.ec/software-libre/
Escuela Politécnica Nacional
Ing. Adrián Égüez
Conseguir que la gente se ponga de acuerdo sobre cuales son las necesidades de un proyecto, y trabajar
en la misma dirección para llevarlas a cabo, requiere de algo más que un ambiente de trabajo genial sin
disfunciones visibles.
Requiere una, o varias personas, que coordinen diligentemente a toda la gente
involucrada en el proyecto.
La política es algo que surge inevitablemente cada vez que
un grupo de personas han de cooperar en la gestión de recursos compartidos. Es de lógica que, cada vez
que una persona toma una decisión, ésta se vea influenciada por cómo va a afectar a su futuro personal
en el proyecto.
Si decisiones concretas llevan
el proyecto por un camino que la mayoría considera técnicamente correcto, pero dicha decisión conlleva
un cambio en el equilibrio de influencias del proyecto aislando a figuras clave del mismo, entonces
hemos de dar igual grado de importancia a ambas consecuencias.
Conseguir el máximo de los Voluntarios
Escuela Politécnica Nacional
Ing. Adrián Égüez
¿Por qué los voluntarios trabajan en proyectos de software libre?
muchos dicen que lo hace por que quieren producir buen software, o por
que quieren involucrarse en arreglar errores que son importantes para ellos. Pero estas razones no
acostumbran a ser toda la verdad.
¿podrías imaginarte a un voluntario permaneciendo
en un proyecto a pesar de que nadie, nunca, le dirigiera un palabra de aprecio por su trabajo, o se le
escuchara en las discusiones?
El deseo de producir buen código puede estar entre esas motivaciones, junto con el desafío
y valor educativo que supone trabajar en problemas difíciles, pero los seres humanos tienen el deseo
natural de trabajar con otros humanos, y el de dar y recibir respeto a través de actividades colectivas.
Escuela Politécnica Nacional
Ing. Adrián Égüez
Delegar no simplemente una forma de distribuir la carga de trabajo, sino que también es una herramienta
política y social.
El efecto
más evidente es que, si acepta, esa persona hace el trabajo y tú no.
Pero otro efecto es que esa persona
toma consciencia de que tú confías en él para realizar la tarea. Además, si haces la petición en un foro
público, también aprecia que el resto de participantes son conscientes de la confianza que ha sido
depositada en él.
La responsabilidad adquirida puede ser
agobiante, o puede llevarle a involucrarse en más áreas del proyecto gracias a un renovado sentimiento
de compromiso.
Debido a todos estos posibles efectos, a menudo tiene sentido pedir a otro que haga algo incluso cuando
sabes que tú lo podrías hacer mejor o más rápido, quizá el coste de oportunidad de hacer una tarea tú mismo es
demasiado alto debido a que podrías dedicarte a hacer algo más importante para el proyecto.
Pero
incluso cuando el argumento del coste de oportunidad no existe, aún así es posible que pidas a otro
hacer una tarea simplemente porque quieres involucrar más a una determinada persona en el proyecto,
incluso si eso significa que has de supervisar su trabajo al principio.
Escuela Politécnica Nacional
Ing. Adrián Égüez
En ocasiones es lógico esperar que una persona aceptará de buen grado una tarea en particular. Por
ejemplo, si alguien introduce un error en el código, o envía código que incumple de forma clara con las
directrices del proyecto, debería ser suficiente con mencionar el problema y esperar que el responsable
de dicho código se haga cargo.
Pero hay otras situaciones donde no está nada claro que puedas esperar
que alguien haga cargo. La persona podría hacer lo que le pides, o quizá no. Como a nadie le gusta
que se dé por hecho que va a obedecer, has de ser consciente en todo momento de cual de estas dos
situaciones estás tratando y, en función de la misma, medir tus palabras a la hora de solicitar una tarea.
Escuela Politécnica Nacional
Ing. Adrián Égüez
Algo que casi siempre sienta mal es que te pidan hacer algo como si fuera tu responsabilidad cuanto tu
piensas que no es así. Por ejemplo, asignar nuevos problemas en el código es terreno abonado para este
tipo de situaciones.
Los participantes de un proyecto normalmente saben quien es experto en cada área,
así que cuando un error en el código aparece, habrá normalmente una o dos personas en las que todo
el mundo piensa que podrían arreglar el problema rápidamente.
No obstante, si asignas la tarea a una
de estas personas sin pedirles permiso, dicha persona podría sentirse incómoda y forzada a encargarse
de la tarea, podría sentir que se espera mucho de ella y que, de alguna forma, está siendo castigada por
sus conocimientos y experiencia.
Después de todo, la forma en la que uno adquiere dichas habilidades
es corrigiendo código, así que ¡quizá debería ser otro el que lo corrija esta vez!
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
Coordinando Voluntarios y Licencias
Windows, Mobile and Web Developer with Node.js and Angular, Proffesor in Escuela Politécnica Nacional