Acerca de la visualización

Puedes volver a la visualización principal aquí.

Resumen

Estas visualizaciones muestra la actividad de usuarios u organizaciones de GitHub, mostrando los commits realizados durante los últimos años. Los datos se obtienen de repositorios de Git públicos mediante un script que utiliza la API de GitHub.

El script que se utilizó para la obtención de datos y el código de la visualización se encuentran en github.com/benjavicente/infovis.

Informe

Esta sección corresponde al informe de la entrega del examen de visualización de información IIC2026 2022-2. Cada sección corresponde a un nivel del modelo anidado de Tamara Munzner (“A Nested Model for Visualization Design and Validation”, 2009).

Caracterización del dominio

Se decidió trabajar con datos de repositorios de Git públicos de GitHub, dado que se quería explorar la actividad de ciertas organizaciones en sus diferentes utilizando los commits como referencia.

¿Qué es un commit, Git y GitHub?

Un commit es un conjunto de cambios realizados en un proyecto de software. Estos son transacciones que se realizan en un sistema de versionamiento de código, como Git. Cada commit tiene ciertos atributos, como al autor y la fecha de creación.

GitHub es una plataforma que permite almacenar repositorios de Git públicos o privados, además de permitir la colaboración entre usuarios.

Para esto, se creó un script que toma como input el usuario u organización de GitHub (el login) y entrega datos con el siguiente estructura (usando TypeScript):

interface Change {
	add: string;
	del: string;
	file: string;
}

interface Commit {
	/** Nombre del repositorio */
	repo: string;
	/** Nombre del autor */
	name: string;
	/** Fecha del commit */
	date: string;
	/** Mensaje del commit */
	commit: string;
	/** Hash del commit */
	hash: string;
	/** Cambios en el commit */
	changes: Change[];
}

Como se puede observar, los datos utilizados para este trabajo tienen un formato tabular, donde cada fila representa cada commit realizado.

Existió un pequeño pre-procesamiento de los datos, limitando la fecha de creación a los commits.

Es importante notar, que dado que el dataset requiere tiene de input el login, se puede crear multiples datasets y tener por tanto varias visualizaciones.

El objetivo de realizar una visualización de estos datos es poder entender como se ha desarrollado un proyecto u organización a lo largo del tiempo, y poder comparar la actividad de diferentes organizaciones y usuarios distintos dentro de estas.

Abstracción de datos y tareas

Para la visualización, se definieron las siguientes tareas:

Analizar la actividad que ha tenido una organización o usuario en sus repositorios a lo largo del tiempo.
Dado la cantidad de commits, y las fechas y cantidad de cambios de estos, se podrá descubrir como ha cambiado la actividad de una organización o usuario a lo largo del tiempo.
Consultar la actividad de repositorios de una organización o usuario.
Se podrá comparar la actividad entre diferentes repositorios o usuarios según cantidad de commits y cantidad de cambios.
Resumir los repositorios y su desarrollo en los últimos años.
A grandes rasgos, se podrá ver rápidamente información de repositorios, como cuales activos, cuales han sido los mantenedores de estos y cual es el lenguaje que se usa.

Abstracción de datos

Para esta visualización, solo existen datos de tipo item (los commits), que contienen los siguientes tipos de atributos:

Nombre Tipo Descripción
repo Categórico Nombre del repositorio
name Categórico Nombre del autor
date Temporal Fecha del commit
commit Texto Mensaje del commit
hash Texto Hash del commit
changes Compuesto Cambios en el commit, que contiene los siguientes atributos:
  • add: Cantidad de líneas agregadas (cuantitativo)
  • del: Cantidad de líneas eliminadas (cuantitativo)
  • file: Nombre del archivo (categórico, determina el lenguaje)

Dentro de la visualización, se realizan procesamientos de datos, una sobre sobre commits en repositorios y otras sobre commits de usuarios.

Para la calificación de commits sobre repositorios,se realiza una suma entre add y del (usando escala con raíz cuadrada) para obtener un atributo count.

Por el otro lado, para la agregación de commits por usuario, se agrupa los commits por autor y fecha, quedando 3 atributos: name, date y count.

Codificación visual y de interacción

Para la codificación, se utilizó lo siguiente para codificar y presentar los datos: