Fran Verona
Lectura: 4 minutos

Fuck: revisando 183 millones de commits en Git

Usando BigQuery y datos de Github, alguien ha comprobado cuántos commits incluyen la palabra "Fuck".

Fuck: revisando 183 millones de commits en Git

El desarrollo de software puede llegar a ser frustrante en ciertos momentos del día a día, ya sea porque no consigues integrar esa característica que te han pedido, o simplemente no estás inspirado. Tras muchas horas implementando la funcionalidad estás hartísimo ya de todo, decides subir los cambios al repositorio y como estás tan harto pues pones un precioso "Fuck" como mensaje.

Aunque pueda sonar a risa esta práctica la utilizan bastantes desarrolladores. Existen numerosas razones por las que utilizar buenos mensajes en nuestros commits, pero a veces es tal el nivel de hartazgo que simplemente escribes lo que piensas, en lugar de escribir lo que deberías (a fin de cuentas, es tu trabajo, ¿sabes?).

Github sacó hace un tiempo un repositorio público con sus datos para que pudiera ser consultados en BigQuery. Pues resulta que a alguien se le ha ocurrido crear una consulta para saber cuántos de los 183 millones de commits incluyen la palabra "fuck".

1 de cada 6~7 mil commits incluyen la palabra "fuck"

La sentencia usada para extraer estos datos es la siguiente:

SELECT next_word, count(next_word) as n
FROM (
  SELECT commit, LOWER(REGEXP_EXTRACT(FIRST(message),r'(?:\w*fuck\S*\s)(\w+)')) AS next_word
  FROM [bigquery-public-data:github_repos.commits]
  WHERE REGEXP_MATCH(message, r'\w*fuck\S*\s\w+')
  GROUP BY commit
)
GROUP BY next_word
ORDER BY n DESC
LIMIT 100;

El resultado de la ejecución de esta sentencia nos dice que en 183 millones de commits, aproximadamente 33.000 mensajes contienen la palabra "fuck". Esto nos da que de cada 6 o 7 mil commits, al menos 1 contiene dicha palabra.

Aunque es cierto que es complicado saber el por qué de tales mensajes (no es lo mismo un repositorio privado de juguete, que un repositorio de un proyecto open source con varias personas), es un dato bastante curioso el que se puede extraer con un poco de SQL.

De hecho, este estudio también ha tenido en cuenta cuál es la palabra que sigue a ese "fuck"; no es lo mismo "fuck up", que podría traducirse como "la he cagado", que "fuck you", que podría traducirse como un "que te jodan". Teóricamente el sentimiento detrás de cada commit en este caso es distinto. En la imagen inferior se pueden ver las 100 palabras más comunes que siguen a ese "fuck".

Listado de las 100 palabras más comunes que siguen a 'fuck'
Listado de las 100 palabras más comunes que siguen a 'fuck'

¿El más usado? "Fuck up"

"La he cagado", "Menuda cagada" o "Arreglando esta cagada". Parece que el más común es cuando alguien ha implementado una característica mal, ha dejado algún bug, o simplemente algo no funciona como debiera, y el desarrollador encargado de arreglar tal estropicio hace push con el arreglo.

También podemos encontrar el famoso "fuck you", que puede ir acompañado de la tecnología en cuestión (Fuck you PHP), de un tipo de variable (Arrays changed to vectors. Because fuck you arrays) o de una forma de culpabilizar a alguien sin nombrarlo (Fuck you, fixed bugged CSS).

Aunque todo no puede ser negativo. También podemos encontrar commits celebrando algo al grito de "Fixed that bug. Fuck yeah!" o simplemente contándole a sus compañeros que funciona aún si saber muy bien cómo ("It fucking works. Inneficient as santa on drugs, but it works").

De todo esto podrían extrapolarse más datos si se quisieran. A mí por ejemplo se me ocurren un par de casos:

  • ¿Cuáles son los lenguajes que más frustran a los desarrolladores?
  • ¿Dónde suelen haber más commits de este tipo, en repositorios con muchos colaboradores o en repositorios con pocos colaboradores?
  • ¿Los repositorios más populares tipo Bootstrap o jQuery también sufren de este tipo de problemas, o es más un problema de repositorios poco populares o pequeños?
  • ¿Qué relación hay entre estos commits y la experiencia del desarrollador? ¿Los más experimentados también caen en este tipo de prácticas, o es más común en desarrolladores con menos experiencia?
  • ¿Sería posible saber si los commits han sido ocasionados por fallos de configuración en IDEs, por fallos humanos o por requisitos mal proporcionados?

Creo que quedarnos sólo con el número en bruto es desaprovechar una oportunidad de conocer mejor los hábitos de los desarrolladores de software. Y si nos ayudaran a mejorar nuestras herramientas, procesos y técnicas, pues que quereis que os diga: "fuck yeah!".

Enlaces relacionados