GitHub puede tener un problema, y es que no tiene tanto código original como debería

Escrito por Javier Jiménez

GitHub es una plataforma de desarrollo colaborativo. Su función es alojar proyectos, el código de los mismos, que normalmente se almacenan de forma pública. Eso sí, utilizando una cuenta de pago también permite alojar repositorios privados. La noticia es que la mayoría de los archivos de código fuente alojados en GitHub son en realidad clones de archivos creados anteriormente. Todo ello según un estudio reciente realizado por un equipo conjunto de investigadores de la Universidad de California, Irvine, la Universidad Técnica Checa, Microsoft Research y Northeastern University.

GitHub no tiene tanto código original

Los investigadores analizaron más de 4 millones de proyectos originales de GitHub. Un total de 482 millones de archivos diferentes. Descubrieron que solo 85 millones de archivos eran únicos. O lo que es lo mismo, aproximadamente el 17,63% de todos los archivos analizados.

El estudio solamente analizó los proyectos de código fuente escritos en C ++, Java, JavaScript y Python. De los cuatro, los proyectos de JavaScript contenían el código más duplicado, con un 94% de los archivos siendo un clon 100% idéntico (basado en el hash del archivo) de otro archivo alojado en GitHub.

C ++ quedó en segundo lugar, con un 73% de todos los archivos duplicados de otros, mientras que Python registró un 71% de reutilización de código, y Java solo un 40%.

Los investigadores también analizaron archivos duplicados basados en coincidencias parciales del contenido del archivo (basado en hashes de token), pero los resultados fueron casi idénticos.

Aquí debajo podemos ver la tabla con los datos:

Tabla con los datos de GitHub

NPM

La razón por la cual JavaScript contenía los ejemplos de código más duplicados es fácil de explicar. Esto es NPM, el administrador de paquetes de facto para todos los proyectos de JavaScript del lado del servidor y del cliente.

Si bien los administradores de paquetes existen en otros lenguajes de programación, NPM es el administrador de paquetes más grande del mundo en la actualidad. Cuenta con más de 350.000 bibliotecas. Esto es más del doble del siguiente registro de paquetes más poblado: el repositorio Apache Maven.

Debido a que NPM contiene más bibliotecas útiles, los desarrolladores también lo usan más. Como los desarrolladores lo usan más, importan más bibliotecas en proyectos de JavaScript que en otros lenguajes de programación. De ahí la gran cantidad de código reutilizado.

“El sistema de control de fuente sobre el cual se construye GitHub, Git, alienta proyectos de bifurcación”, dicen los investigadores. “Sin embargo, hay mucha más duplicación de código en GitHub que no pasa por el mecanismo de la bifurcación y, en cambio, entra por copiar y pegar archivos e incluso bibliotecas enteras”.

Consecuencias

Este estudio tiene algunas consecuencias importantes. Primero, parecería que GitHub, en sí mismo, podría comprimirse a una fracción de lo que es. En segundo lugar, cada vez se realizan más investigaciones utilizando grandes colecciones de proyectos de código abierto.

“La duplicación de código puede sesgar severamente las conclusiones de esos estudios. La asunción de diversidad de proyectos en esos conjuntos de datos puede verse comprometida. DéjàVu puede ayudar a los investigadores y desarrolladores a navegar a través de la clonación de código en GitHub, y evitarla cuando sea necesario”.

El trabajo de investigación del equipo se titula “DéjàVu: un mapa de duplicados de código en GitHub”.

Últimos análisis

Valoración RZ
8
Valoración RZ
9
Valoración RZ
10
Valoración RZ
9
Valoración RZ
8
Valoración RZ
10
Valoración RZ
10
Valoración RZ
8