Trabajo: Concienciación sobre las licencias de software libre

De FdIwiki ELP
Saltar a: navegación, buscar

Motivación: Se pretende concienciar a los usuarios de GitHub sobre los tipos de licencias, en concreto nos centramos en las licencias sobre software libre así como la importancia del uso de estas licencias.

Idea principal

La idea principal, consistía en buscar (a mano) repositorios de GitHub que no estuviesen usando licencia y contactar con ellos para explicarles las ventajas sobre su uso, en concreto exponiendo licencias libres (MIT).

Para comunicarnos con ellos, tras descartar diferentes ideas, se optó por enviar “PULL REQUEST”, introduciendo la licencia MIT en el repositorio elegido junto con un mensaje que contuviese la siguiente información:

  • Quienes somos
  • Información sobre licencias
  • Tipos de licencias
  • Importancia de su uso

También, en caso de desacuerdo con la licencia propuesta, se incluyeron enlaces sobre como poder elegir la licencia que más se adecue a las necesidades de cada usuario.

Se propuso también crear una web para explicar las diferentes licencias, esta idea fue rechazada debido a la carga de trabajo y a la existencia actual de muchas con el mismo propósito. Finalmente el proyecto se centró en la automatización del proceso.

Prueba de concepto

Para realizar una primera aproximacion y verificar que nuestra idea es viable, se ha realizado una busqueda manual de 15 repositorios que no tuvieran asignada una licencia. De estos 15 candidatos, 3 fueron excluidos por diversos motivos (recopilar software con licencia, uso del repositorio para anotaciones...).

Para los 13 repositorios restantes se realizo el siguiente procedimiento:

  • Se realizó un fork del repositorio.
  • Se añadió una licencia MIT.
  • Se solicitó un "Pull Request".

El mensaje consta de cuatro puntos principales, expuestos anteriormente, se ha traducido en dos idiomas diferentes (español e inglés). El mensaje, en inglés, es el siguiente:

Hello!
We are a group of students of Universidad Complutense de Madrid (UCM) and we are working on an awareness campaign about types and uses of licences.
There are many reasons to use licences in your code:
- It's EASY to use: choose the licence, copy the generic text and ready! Now you can use it in your projects You can found more information in the following link 
https://help.github.com/en/github/creating-cloning-and-archiving-repositories/licensing-a-repository 
- You LIMIT the uses of your code, in this way you will avoid possible legal problems about copies and plagiarism
- Share is power! The freeware licences give to you credit all the time. Allow third people use it with YOUR conditions
The following youtube link show the existing types of licences to choose one which adapt better to your needs
https://www.youtube.com/watch?v=OnmWFxlG2GA
We have chosen MIT license for this pull request. In this link, you can get more information about this license
https://choosealicense.com/licenses/mit/
Thank you a lot for your attention! We hope you the contents has been helpful

Impacto obtenido

Pasados unos dias se analizó el impacto obtenido:

  • Numero de pull request solicitados: 13
  • Numero de pull request aceptados: 2
  • Porcentaje de exito: 15%

Se muestra la tabla de repositorios a dia 13/11/2019

Repo Creador Ultimo commit Colaboradores Valido Comentario Enviado Aceptado
https://github.com/ideoforms/python-twitter-examples @ideoforms 19/5/2019 4 SI 11/11/2019 12/11/2019
https://github.com/ideoforms/isobar @ideoforms 18/2/2019 2 Si 11/11/2019 12/11/2019
https://github.com/iGhibli/iOS-DeviceSupport @iGhibli 10/10/2019 10 NO Es un recopilatoria de software de Apple
https://github.com/TheAlgorithms/Java @TheAlgorithms 3/11/2019 159 NO Ya tiene licencia
https://github.com/buymeasoda/refdocs @buymeasoda 1/11/2019 1 NO Es texto
https://github.com/buymeasoda/dotfiles @buymeasoda 1/11/2019 1 Si 11/11/2019
https://github.com/robertsmieja/typescript-template @robertsmieja 5/11/2019 2 Si 11/11/2019
https://github.com/lpmusicon/bd-ubiquitous-waffle-frontend @lpmusicon 5/11/2019 1 Si 11/11/2019
https://github.com/GSansigolo/Pauliceia-GeocodingAPI @Gsansiolo 2/9/2019 2 Si 11/11/2019
https://github.com/Marc-Ferrer-Castillo/ABP @Marc-Ferrer-Castillo 05/10/2019 5 Si 11/11/2019
https://github.com/edwin66627/proyectophp @edwin66627 05/10/2019 1 Si 11/11/2019
https://github.com/simonyagas/proyectoDH-Sprint03 @simonyagas 05/10/2019 1 Si 11/11/2019
https://github.com/mtugnarelli/cpp-aleatorios @mtugnarelli 30/3/2018 1 Si 11/11/2019
https://github.com/Thellly/JAVA @Thellly 26/4/2019 3 Si 11/11/2019
https://github.com/krmito/proyecto.NET @krmito 8/6/2019 1 Si 11/11/2019

Lecciones aprendidas

Tras esta prueba se ha comprobado que, pese a ser una muestra muy pequeña, el impacto puede ser significativo. Para la fase final del proyecto se tendran en cuenta los siguientes puntos.

  • La muestra tenía que ser mayor. En principio valoramos la posibilidad de solicitar la inclusion de una licencia en 100 repositorios.
  • Todo el proceso de busqueda y pull request es muy tediosa. En principio se tratara de automatizar mediante scripts. Si se consigue la automatizacion de todo se valorará el ampliar el numero de repositorios a los que solicitar el licenciamiento.
  • En vez de incluir todo el texto en el pull request, se valorará la creacion de una pagina web donde explicar el beneficio de las licencias libre y el procedimiento para realizarlo. Asi, ademas, se lograra un impacto adicional (usuarios que accedan a la pagina buscando informacion). --> Se descarto ya que parecia mas limpio tener la información dentro del PR
  • Se deben buscar repositorios que hayan sido modificados frecuentemente, ya que existen muchos repositorios sin actividad que es posible que ni siquieran sean conscientes de nuestro pull request.
  • Se valorará la posibilidad de incluir instrucciones sobre como aceptar nuestro pull request para usuarios menos familiarizados con GitHub.

Automatización del proyecto

Debido a la gran carga de trabajo que supone enviar los “PULL REQUEST” de manera manual, se decidió crear un script de automatización en python utilizando la API de GitHub. El propósito final era tener el mayor impacto posible por lo que el script pasó por diferentes fases:

  • Buscar proyectos sin licencias.
  • Enviar pull requests automáticos.
  • Eliminar proyectos vacíos.
  • Buscar los proyectos con más estrellas dentro de las búsquedas.

Todos el software desarrollado se ha liberado con una licencia GPL v3

El crash de la Automatización

Tras el gran éxito de la automatización, en segunda fase, decidimos: Uno de los problemas que encontramos en la automatización, era que muchos de los repositorios estaban vacíos, de tal forma, no valdrían para nada, así que tendríamos que filtrar estos repositorios.

El mayor de los problemas fue que GitHub al considerarnos como spam eliminó la cuenta, perdiendo así todos los resultados obtenido hasta el momento. El problema fue solucionado poniéndose en contacto con un administrador de la plataforma para que desbloquease la cuenta. A continuacion se muestra la conversacion con el soporte de GitHub

MailGithub1.png MailGitHub2.png MailGithub3.png MailGitHub4.png

A raiz de este incidente un administrador de GitHub vi0 nuestro repositorio y nos otorgo una estrella.

StartGitHub.png

Aunque parece que el staff de Github entendia el proyecto y desbaneo la cuenta, a partir de aqui empezamos a lanzar tandas de menos cantidad y a repositorios muy orientados al open source ayundandonos de la capacidad de nuestro script de buscar por keywords en los repositorios. En definitiva, comenzamos a hacer menos ruido para evitar el descontento de la comunidad y la sensacion de spam que dabamos.

Impacto y conclusiones

En términos generales la aceptación ha sido mucho mayor de la esperada. (Enlace a la documente con los "PULL REQUEST" realizados). Ademas, podemos observar en el mismo archivo unas graficas de aceptacion y numero de estrellas de los repositorios aceptados

Muchos repositorios han aceptado la licencia MIT, posiblemente motivados por las ventajas explicadas en el mensaje y la facilidad aportada por nosotros para utilizarla.

En conclusión, podemos decir que, pese al corto tiempo del que hemos dispuesto, el impacto del trabajo ha sido bastante alto, consiguiendo una alta concienciación entre los usuarios de GitHub.

Webgrafia utilizada para crear el script

Integrantes del grupo

El grupo esta constituido por:

  • JUAN COBOS MOLINA
  • RAÚL CABALLERO GIROL
  • CRISTINA MANSO DE LA VIUDA
  • JESÚS MARTÍN MORALEDA
  • SERGIO RAMOS MESA
  • JOAQUÍN SERRANO MARTÍNEZ