Diferencia entre revisiones de «Trabajo: Concienciación sobre las licencias de software libre»

De FdIwiki ELP
Saltar a: navegación, buscar
(Integrantes del grupo)
(Impacto y conclusiones)
Línea 176: Línea 176:
 
En resumen, creemos que hemos obtenido un impacto significativo para tratarse de un proyecto de una asignatura cuatrimestral y con los medios de los que disponiamos. Nos sentimos especialmente orgullosos de las felicitaciones recibidas por aprte de la comunidad de GitHub
 
En resumen, creemos que hemos obtenido un impacto significativo para tratarse de un proyecto de una asignatura cuatrimestral y con los medios de los que disponiamos. Nos sentimos especialmente orgullosos de las felicitaciones recibidas por aprte de la comunidad de GitHub
  
[[File:Thanks1.png|border]] [[File:Thanks2.png|border]]<br />
+
[[File:Thanks1.png|border]] [[File:Thanks2.png|border]] [[File:Thanks3.png|border]] [[File:Thanks4.png|border]]<br />
 
+
[[File:Thanks3.png|border]] [[File:Thanks4.png|border]]<br />
+
 
+
  
 
----
 
----

Revisión de 15:06 6 feb 2020

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 (de forma manual) repositorios de GitHub que no tuviesen asignada ninguna 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 realizó 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, aprendimos una valiosa leccion: uno de los problemas que encontramos en la automatización, era que muchos de los repositorios estaban vacíos, de modo que colocar una licencia en principio no valdrían para nada. En este momento decidimos modificar nuestro script añadiendole una funcionalidad que nos permitira el filtrar repositorios que estaban vacio.

Otro problema con el que nos encontramos fue que GitHub nos consideró spam y baneo 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.. Ademas, podemos observar en las siguientes tablas y graficas las estadisticas de aceptacion y numero de estrellas de los repositorios aceptados.

Pull Request realizados
Estado Cantidad Porcentage
Pendientes 278 85,5%
Aceptados 47 14,5%
Total 325 100%

Estrellas en Pull Request aceptados
Num. Estrellas Num. Repositorios Porcentage
<5 estrellas 27 57,4%
>=5estrellas<10estrellas 6 12,8%
>=10estrellas<50estrellas 4 8,5%
>=50estrellas 10 21,3%%
Total 47 100%

EstadisticasAceptadas.png

Como se puede observar, tal y como vimos en nuestra primera fase de viabilidad del proyecto, los pull request aceptado se mantuvieron en torno al 15%. En este punto nos sorprendio gratamente la aproximacion tan cercana que tuvimos en la fase de viabilidad con una muestra tan pequeña.

Tambien nos sorprendio ese 21% de repositorios que nos aceptaron cuyo proyecto poseia mas de 50 estrellas, lo que nos indican que se trataban de proyectos con cierta entidad. A continuacion presentamos el top 5 de proyectos con mas estrellas que aceptaron nuestro pull request.

Top 5 en numero de estrellas
Repositorio Num. Estrellas
https://github.com/stanzhai/be-a-professional-programmer 8000
https://github.com/The-Art-of-Hacking/h4cker 3210
https://github.com/handong1587/handong1587.github.io 2859
https://github.com/bbatsov/projectile 2819
https://github.com/Cosmo/OpenSwiftUI 691

En resumen, creemos que hemos obtenido un impacto significativo para tratarse de un proyecto de una asignatura cuatrimestral y con los medios de los que disponiamos. Nos sentimos especialmente orgullosos de las felicitaciones recibidas por aprte de la comunidad de GitHub

Thanks1.png Thanks2.png Thanks3.png Thanks4.png


Se puede obtener acceso a los datos en bruto en el siguiente enlace de Google Docs o descargarlo directamente desde aqui

To be continued...

A partir de aqui, todo queda en manos de la comunidad. creemos que esta iniciativa tiene recorrido. Onviamente, habria que seguir trabajando y mejorar el procedimiento actual. Presentamos algunos puntos de por donde creemos que se podria seguir trabajando para mejorarlo:

  • Focalizarse en mejorar el filtrado del script. El filtrado actual es muy bajo,se deberia poder buscar repositorios que contengan codigo (ahora mismo no diferencia entre codigo, texto, imagenes...), que ya tienen licencia y no la hemos detectado...
  • En algunos casos los desarrolladores nos solicitaban cambias en nuestro pull request (cambio del nombre del archivo LICENSE, cambio del tipo de licencia). Muchos de estos pull request no se aceptaron por no poder realizar esos cambios de forma rapida.
  • Muchos de los repositorios que buscamos utilizaban software que ya tenia una licencia open source pero ellos no la habian "heredado", por ejemplo la GPL3. Deberiamos poder detectarlos y sugerirles la que por ley deben tener pero por olvido o desconocimiento no tienen creada.
  • Buscar un metodo para no parecer un spam mas. Al final estamos solicitando Pull Request a repositorios de diversa indole, de desarrolladores pro open source y otros que no lo son. La mejora en el filtrado del script nos ayudaria mucho en este punto, pero con eso solo no seria suficiente.
  • Tal vez, el solicitar un Pull Request directamente a los desarrolladores es un metodo demasiado agresivo. Se podria hacer un proceso para establecer un primer contacto con el desarrollador, hablarle sobre el rpoyecto y si les parece bien la idea entonces realizar un Pull Request con la licencia que deseen. Como aproximacion, se nos ocurrio un mail a los desarrolladores con la inforacion del proyecto y un enlaces a un google forms o similar donde pudieran elegir su licencia. Posteriormente nuestra aplciacion leeria ese archivo y lanzaria os pull request ya aceptados previamente.

Webgrafia utilizada para crear el script

Integrantes del grupo

El grupo esta constituido por:

  • JUAN COBOS MOLINA (GII 4ºA)
  • RAÚL CABALLERO GIROL (GII 4ºA)
  • CRISTINA MANSO DE LA VIUDA (GII 4ºA)
  • JESÚS MARTÍN MORALEDA (GII 4ºA)
  • SERGIO RAMOS MESA (GII 4ºA)
  • JOAQUÍN SERRANO MARTÍNEZ (GIS 4ºA)