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

De FdIwiki ELP
Saltar a: navegación, buscar
(Impacto y conclusiones)
(Enlaces de interés)
 
(No se muestran 34 ediciones intermedias de 2 usuarios)
Línea 1: Línea 1:
Motivación:
+
[[Categoría:Curso 2019-2020]]
 +
==Motivación==
 
Se pretende concienciar a los usuarios de  [https://github.com/ 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''.
 
Se pretende concienciar a los usuarios de  [https://github.com/ 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==
 
==Idea principal==
''La idea principal'', consistía en buscar (a mano) repositorios de [https://github.com/ GitHub ]que no estuviesen usando ''licencia'' y contactar con ellos para explicarles las ventajas sobre su uso, en concreto exponiendo ''licencias libres'' [http://wikis.fdi.ucm.es/ELP/Licencia_MIT/ (MIT)].
+
''La idea principal'', consistía en buscar (de forma manual) repositorios de [https://github.com/ GitHub ]que no tuviesen asignada ninguna ''licencia'' y contactar con ellos para explicarles las ventajas sobre su uso, en concreto sugiriendo ''licencias libres'' [http://wikis.fdi.ucm.es/ELP/Licencia_MIT/ (MIT)].
 
+
 
Para comunicarnos con ellos, tras descartar diferentes ideas, se optó por enviar '''“PULL REQUEST”''', introduciendo la ''licencia'' [http://wikis.fdi.ucm.es/ELP/Licencia_MIT/ MIT] en el repositorio elegido junto con un mensaje que contuviese la siguiente información:
 
Para comunicarnos con ellos, tras descartar diferentes ideas, se optó por enviar '''“PULL REQUEST”''', introduciendo la ''licencia'' [http://wikis.fdi.ucm.es/ELP/Licencia_MIT/ MIT] en el repositorio elegido junto con un mensaje que contuviese la siguiente información:
 
 
*'''Quienes somos'''
 
*'''Quienes somos'''
 
 
*'''Información sobre ''licencias'' '''
 
*'''Información sobre ''licencias'' '''
 
 
*'''Tipos de ''licencias'' '''
 
*'''Tipos de ''licencias'' '''
 
 
*'''Importancia de su uso'''
 
*'''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.
 
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.
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 [https://github.com/platonbjs/ELP_GithubTools/ automatización] del proceso.
 
Finalmente el proyecto se centró en la [https://github.com/platonbjs/ELP_GithubTools/ automatización] del proceso.
  
 
==Prueba de concepto==
 
==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 realizar una primera aproximacion y verificar que nuestra idea era viable, se realizó una búsqueda manual de 15 repositorios que no tuvieran asignada ninguna 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 realizó el siguiente procedimiento:
Para los 13 repositorios restantes se realizo el siguiente procedimiento:
+
 
*Se realizó un fork del repositorio.
 
*Se realizó un fork del repositorio.
 
*Se añadió una licencia MIT.
 
*Se añadió una licencia MIT.
 
*Se solicitó un "Pull Request".
 
*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:     
+
''El mensaje'' consta de cuatro puntos principales, expuestos anteriormente, y se ha enviado en dos idiomas diferentes (español e inglés). El mensaje, en inglés, es el siguiente:     
 
   
 
   
 
  Hello!
 
  Hello!
Línea 43: Línea 35:
 
  Thank you a lot for your attention! We hope you the contents has been helpful
 
  Thank you a lot for your attention! We hope you the contents has been helpful
 
=== Impacto obtenido ===
 
=== Impacto obtenido ===
Pasados unos dias se analizó el impacto obtenido:
+
Pasados unos días se analizó el impacto obtenido:
 
* Numero de pull request solicitados: 13
 
* Numero de pull request solicitados: 13
 
* Numero de pull request aceptados: 2
 
* Numero de pull request aceptados: 2
Línea 49: Línea 41:
  
 
Se muestra la tabla de repositorios a dia 13/11/2019
 
Se muestra la tabla de repositorios a dia 13/11/2019
{| class="wikitable"
+
{| class="wikitable" style="margin: auto;"
! Repo !! Creador !! Ultimo commit !! Colaboradores !! Valido !! Comentario !! Enviado !! Aceptado
+
! Repo !! Creador !! Ultimo commit !! Colaboradores !! Válido !! 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/python-twitter-examples || @ideoforms || 19/5/2019 || 4 || SI ||  || 11/11/2019 || 12/11/2019
Línea 84: Línea 76:
  
 
=== Lecciones aprendidas ===
 
=== 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.
+
Tras esta prueba de viabilidad se comprobó que, pese a ser una muestra muy pequeña, el impacto podría llegar a ser significativo. Para la fase final del proyecto se decidió tener 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.
+
*La muestra tenía que ser mayor. En principio valoramos la posibilidad de solicitar la inclusión 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.
+
*Todo el proceso de búsqueda y pull request es muy tediosa. En principio se penso en tratar de automatizar mediante scripts. Si se consiguiera la automatización de todo se valoraría el ampliar el número 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
+
*En vez de incluir todo el texto en el pull request, se valorará la creación de una pagina web donde explicar el beneficio de las licencias libre y el procedimiento para realizarlo. Así, además, se logrará un impacto adicional (usuarios que accedan a la página buscando información). --> Posteriormente se descartaría ya que parecía 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 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.
 
*Se valorará la posibilidad de incluir instrucciones sobre como aceptar nuestro pull request para usuarios menos familiarizados con GitHub.
Línea 103: Línea 95:
  
 
==El crash de la Automatización==
 
==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.
+
Tras el gran éxito en el desarrollo del software necesario para automatizar nuestro proyecto 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 [https://github.com/ 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
 
Otro problema con el que nos encontramos fue que [https://github.com/ 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
  
[[File:MailGithub1.png]]
+
[[File:MailGithub1.png|border]]<br />
[[File:MailGitHub2.png]]
+
[[File:MailGithub3.png]]
+
[[File:MailGitHub4.png]]
+
  
A raiz de este incidente un administrador de GitHub vi0 nuestro [https://github.com/platonbjs/ELP_GithubTools ''repositorio''] y nos otorgo una estrella.
+
[[File:MailGitHub2.png|border]]<br />
  
[[File:StartGitHub.png]]
+
[[File:MailGithub3.png|border]]<br />
  
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.
+
[[File:MailGitHub4.png|border]]<br />
  
==Impacto y conclusiones==
+
A raiz de este incidente un administrador de GitHub vió nuestro [https://github.com/platonbjs/ELP_GithubTools ''repositorio''] y nos otorgó una estrella.
En términos generales la aceptación ha sido mucho mayor de la esperada.. Ademas, podemos observar en las siguientes graficas las estadisticas de aceptacion y numero de estrellas de los repositorios aceptados.
+
  
 +
[[File:StartGitHub.png|border|center]]<br />
  
 +
Aunque parece que el staff de Github entendía el proyecto y desbaneó la cuenta, a partir de aquí empezamos a lanzar tandas de menos cantidad y a repositorios muy orientados al open source ayundándonos 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 sensación que dabamos de spammers.
  
Muchos repositorios han aceptado la ''licencia'' [http://wikis.fdi.ucm.es/ELP/Licencia_MIT/ MIT], posiblemente motivados por las ventajas explicadas en el mensaje y la facilidad aportada por nosotros para utilizarla.
+
==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.
  
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.
+
{| class="wikitable" style="margin: auto;"
 +
|+Pull Request realizados
 +
|-
 +
|Estado||Cantidad||Porcentage
 +
|-
 +
|Pendientes||278||85,5%
 +
|-
 +
|Aceptados||47||14,5%
 +
|-
 +
|Total||325||100%
 +
|}<br />
 +
{| class="wikitable" style="margin: auto;"
 +
|+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%
 +
|}<br />
  
[[File: EstadisticasAceptadas.png]]
+
[[File: EstadisticasAceptadas.png|center|frame]]<br />
  
 
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.
 
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.
Línea 133: Línea 149:
 
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.
 
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.
  
[[File:Top5PR.png]]
+
{| class="wikitable" style="margin: auto;"
 +
|+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
 +
|}<br />
 +
 
 +
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]] [[File:Thanks3.png|border]] [[File:Thanks4.png|border]]<br />
 +
 
 +
----
 +
 
 +
Se puede obtener acceso a los datos en bruto en el siguiente enlace de [https://docs.google.com/spreadsheets/d/1dyiZu-Pe7a1b6KfczaVVRlznD_SGWjzB4KcjFfYphTQ/edit#gid=07| Google Docs ]  o descargarlo directamente desde [[:File:ResultadosConcienciacionOpensource.ods|aqui]]
  
==Webgrafia utilizada para crear el ''script''==
+
==Trabajo futuro==
 +
A partir de aqui, todo queda en manos de la comunidad. Creemos que esta iniciativa tiene recorrido. Obviamente, habría que seguir trabajando y mejorar el procedimiento actual. Presentamos algunos puntos de por donde creemos que se podría seguir trabajando para mejorarlo:
 +
* Focalizarse en mejorar el filtrado del script. El filtrado actual es muy simple,se debería poder buscar repositorios que contengan código (ahora mismo no diferencia entre código, texto, imágenes...), que ya tienen licencia y no la hemos detectado...
 +
* En algunos casos los desarrolladores nos solicitaban cambios 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 ágil.
 +
* Muchos de los repositorios que buscamos utilizaban software que ya tenían una licencia open source pero ellos no la habían "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 método para no parecer un spam más. Al final estamos solicitando Pull Request a repositorios de diversa índole, de desarrolladores pro open source y otros que no lo son. La mejora en el filtrado del script nos ayudaría mucho en este punto, pero con eso solo no sería suficiente.
 +
* Tal vez, el solicitar un Pull Request directamente a los desarrolladores es un método demasiado agresivo. Se podría 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 aproximación, se nos ocurrió un mail a los desarrolladores con la información del proyecto y un enlace a un google forms o similar donde pudieran elegir su licencia. Posteriormente nuestra aplciación leería ese archivo y lanzaría os pull request ya aceptados previamente.
  
*'''https://developer.github.com/v3/'''
+
==Enlaces de interés==
  
*'''https://hub.github.com/'''
+
*[https://developer.github.com/v3/ Documentacion del API de Github utilizada para el desarrollo del script]
 +
*[https://hub.github.com/ Documentación de HUB, un wrapper para realizar Pull Request en GitHub]
 +
*[https://github.com/platonbjs/ELP_GithubTools Repositorio con el código del proyecto]
 +
*[https://docs.google.com/spreadsheets/d/1dyiZu-Pe7a1b6KfczaVVRlznD_SGWjzB4KcjFfYphTQ/edit?usp=sharing| Resultados del proyecto en Google Docs]
 +
*[[:File:ResultadosConcienciacionOpensource.ods|Resultado para descargar (.ods)]]
  
 
==Integrantes del grupo==
 
==Integrantes del grupo==
 
El grupo esta constituido por:
 
El grupo esta constituido por:
  
*''' JUAN COBOS MOLINA'''
+
*''' JUAN COBOS MOLINA''' (GIC 4ºA)
*''' RAÚL CABALLERO GIROL'''
+
*''' RAÚL CABALLERO GIROL''' (GII 4ºA)
*''' CRISTINA MANSO DE LA VIUDA'''
+
*''' CRISTINA MANSO DE LA VIUDA''' (GIC 4ºA)
*''' JESÚS MARTÍN MORALEDA'''
+
*''' JESÚS MARTÍN MORALEDA''' (GII 4ºA)
*''' SERGIO RAMOS MESA '''
+
*''' SERGIO RAMOS MESA''' (GII 4ºA)
*''' JOAQUÍN SERRANO MARTÍNEZ'''
+
*''' JOAQUÍN SERRANO MARTÍNEZ''' (GIS 4ºA)

Última revisión de 16:31 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 sugiriendo 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 era viable, se realizó una búsqueda manual de 15 repositorios que no tuvieran asignada ninguna 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 realizó 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, y se ha enviado 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 días 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 Válido 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 de viabilidad se comprobó que, pese a ser una muestra muy pequeña, el impacto podría llegar a ser significativo. Para la fase final del proyecto se decidió tener en cuenta los siguientes puntos.

  • La muestra tenía que ser mayor. En principio valoramos la posibilidad de solicitar la inclusión de una licencia en 100 repositorios.
  • Todo el proceso de búsqueda y pull request es muy tediosa. En principio se penso en tratar de automatizar mediante scripts. Si se consiguiera la automatización de todo se valoraría el ampliar el número de repositorios a los que solicitar el licenciamiento.
  • En vez de incluir todo el texto en el pull request, se valorará la creación de una pagina web donde explicar el beneficio de las licencias libre y el procedimiento para realizarlo. Así, además, se logrará un impacto adicional (usuarios que accedan a la página buscando información). --> Posteriormente se descartaría ya que parecía 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 en el desarrollo del software necesario para automatizar nuestro proyecto 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 vió nuestro repositorio y nos otorgó una estrella.

StartGitHub.png

Aunque parece que el staff de Github entendía el proyecto y desbaneó la cuenta, a partir de aquí empezamos a lanzar tandas de menos cantidad y a repositorios muy orientados al open source ayundándonos 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 sensación que dabamos de spammers.

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

Trabajo futuro

A partir de aqui, todo queda en manos de la comunidad. Creemos que esta iniciativa tiene recorrido. Obviamente, habría que seguir trabajando y mejorar el procedimiento actual. Presentamos algunos puntos de por donde creemos que se podría seguir trabajando para mejorarlo:

  • Focalizarse en mejorar el filtrado del script. El filtrado actual es muy simple,se debería poder buscar repositorios que contengan código (ahora mismo no diferencia entre código, texto, imágenes...), que ya tienen licencia y no la hemos detectado...
  • En algunos casos los desarrolladores nos solicitaban cambios 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 ágil.
  • Muchos de los repositorios que buscamos utilizaban software que ya tenían una licencia open source pero ellos no la habían "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 método para no parecer un spam más. Al final estamos solicitando Pull Request a repositorios de diversa índole, de desarrolladores pro open source y otros que no lo son. La mejora en el filtrado del script nos ayudaría mucho en este punto, pero con eso solo no sería suficiente.
  • Tal vez, el solicitar un Pull Request directamente a los desarrolladores es un método demasiado agresivo. Se podría 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 aproximación, se nos ocurrió un mail a los desarrolladores con la información del proyecto y un enlace a un google forms o similar donde pudieran elegir su licencia. Posteriormente nuestra aplciación leería ese archivo y lanzaría os pull request ya aceptados previamente.

Enlaces de interés

Integrantes del grupo

El grupo esta constituido por:

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