Un equipo de investigadores de la Universidad Estatal de Carolina del Norte ha realizado un análisis empírico del estado del código ejecutable en Python que se encuentra de manera pública en GitHub. Su estudio también presenta Gistable, una nueva base de datos de código de Python ejecutable en el subsistema de GiHub llamado Gist.
Es bien sabido que todos los días los desarrolladores de programas en todas partes del mundo crean y comparten código en línea para demostrar sus ideas o bosquejar nuevos conceptos en programación. GitHub es una de las plataformas más grandes en donde los desarrolladores comparten sus rutinas en todos los lenguajes habidos y por haber, lo que hace una gran biblioteca de información, muy valiosa para aquellos que se dedican a programar. Actualmente contiene unos 300 mil fragmentos de Python y 4.5 millones de gists en una variedad de lenguajes de programación.
Y aunque muchos fragmentos de código publicado en línea son útiles, algunas veces no se pueden ejecutar directamente por terceros. Esto puede deberse a errores en el código o problemas mientras se ejecutan estos fragmentos en entornos de programación que contienen dependencias no aclaradas dentro del código.
Por ello, para entender mejor este asunto, los investigadores condujeron una evaluación de la «ejecutabilidad» de los scripts de Python disponibles en GitHub. La idea del estudio también pretendía identificar algunos de los problemas con la ejecución de fragmentos del código, lo cual podría ser una valiosa ayuda cuando se trata de investigar la administración de las configuraciones automáticas de software
En este estudio los investigadores presentaron Gistable, una base de datos extensible, construido sobre el sistema gist de GitHub. Gistable contiene 10,259 fragmentos de Python en donde aproximadamente 5,000 tienen un archivo Dockerfile para configurarlo y ejecutarlo sin errores. «Nuestro trabajo en Gistable fue motivado como parte de un proyecto más grande, que es el de aplicaciones para configuraciones automáticas de entornos«, dice Eric Horton, uno de los investigadores que llevaron a cabo este estudio. «Dado un código base, como los fragmentos estudiados en Gistable, queremos encontrar el proceso que puede construirse para tener un entorno donde se pueda ejecutar el programa sin necesidad de nada más. Para hacer esto hemos tenido que respondernos algunas preguntas: Primeo, ¿cuál es el caso común? Necesitamos establecer la línea base para saber qué tan frecuente las aplicaciones existentes necesitan ua configuración no trivial. Segundo, cuando no es un ejecutable, ¿qué tipo de configuración se necesita para habilitar la ejecución?
Los académico0s hallaron que el 75.6% de los gists de Python analizados, requerían de una configuración sustancial para lidiar con problemas como dependencias omitidas, archivos de configuración, cuestiones particulares del sistema operativo u otros problemas de la configuración en general.
«Hallamos que cerca del 30% de nuestra muestra cayó en lo que denominamos la categoría «difícil de configurar» en donde el problema más común fue la dependencia a bibliotecas externas», explica Horton. «Nuestra investigación en el futuro inmediato se enfocará ara encontrar e instalar estas bibliotecas. Después de eso, trataremos otros problemas de configuración que descubrimos gracias a Gistable «.
En general, un entorno configurado de forma insuficiente fue el factor primario para que los fragmentos de código no pudiesen ejecutarse. En algunos casos, las configuraciones al entorno correctas pudieron recobrarse automáticamente mientras que otras requirieron más intervención. En el futuro los investigadores planean investigar las estrategias para desempeñar consistentemente la configuración efectiva de los entornos.
«Pienso que lo más relevante de este estudio fue nuestra investigación sobre cómo los desarrolladores hacen las configuraciones manualmente», indica Horton. «No solamente la respuesta de los participantes confirmaron que esto en muchos casos en un problema difícil, pero también nos ayudó a categorizar las cosas de manera que pudimos saber qué hace la configuración un problema. Esto es muy útil porque nos da una lista concreta de puntos a investigar», concluye el académico.