User Tools

Site Tools


planchon_garcin:edwin_planchon_laurent_garcin

Visual Analytics Course

Chicoutimi roadmap / Edwin Planchon & Laurent Garcin's corner

  • This is where you'll keep private access to your project related stuff.
  • This is your own private area where code and all related documents can be uploaded/edited.

Le rapport rapportfinal.pdf est disponible içi ainsi que le dossier visualanalytics.zip contenant le fichier tulip avec les scripts python et les fichiers de données CSV.

Sujet: Analyse des tendances sur GitHub

1) Présentation de GitHub

GitHub est un site internet permettant aux développeurs de partager leurs applications. Il impose d'utiliser le système de gestion de fichiers Git (créé par Linus Torvalds) pour gérer les projets.

Le site fournit une interface web pour les projets grâce à la présentation de statistiques, des différents ajouts au projet, du téléchargement du projet et bien plus. De plus, le site à pour but de relier les développeurs en offrant une bonne visibilité des projets sur internet et de créer une certaine viralité autour de certains projets.

2) Pourquoi la Visualisation de Données avec GitHub?

GitHub offre beaucoup de données à analyser. En effet, pour chaque développeur, il a un langage de programmation dominant et une localisation (pays). De plus pour chaque projet, un développeur inscrit peut “suivre” une autre projet, c'est à dire être notifié des modifications du peojet qui l'intéresse.

Cela met en évidence deux relations : celle de “suivre” un projet et celle d'être suivi. Avec cette explication, on comprend qu'on peut représententer la population de GitHub avec un graphe. Les noeuds représentent les développeurs et les arêtes symbolisent le fait de suivre un développeur.

3) Problématiques du sujet

Avec ce sujet, nous avons décidé de nous interesser à deux questions :

  • Pour un langage de programmation, quels sont ses principaux followers ?
  • Langage dominant par pays ?

4) Travail existant

Notre travail se base avant tout celui de Frank Cuny qui a, en 2010 publié sur son blogue les données qu'il a regroupées : il a créé des fichiers contenant les données sur des développeurs inscrits sur GitHub : langage de programmation dominant, pays, nombre de suiveurs, …

Ses données lui ont permi de créer une visualisation existante disponible sur http://lumberjaph.net/graph/2010/03/25/github-explorer.html

Cela lui a permis de dresser une cartographie des utilisateurs de GitHub et des réponses sous-jacentes : répartition des langages et proportions d'utilisation. Notre travail ne vise pas à améliorer le travail de cette personne mais d'utiliser les données pour pouvoir explorer d'autres problématiques que lui.

Nous tenons à préciser que ces données datent de 2010 et qu'elles ne concernent que des développeurs inscrits sur GitHub. Le site internet GitHub ayant été fait avec RubyOnRails ce qui peut expliquer pourquoi Ruby a une grande place dans les résultats suivants.

5) Présentation des données utilisées

Pour le projet, les données proviennent de 1745 comptes développeurs. Ce sont des comptes développeurs considérés comme “actifs” car ils ont au moins deux personnes qui les suivent, c'est à dire au moins deux “followers”. Ces données sont utilisables avec Tulip et sont très pertinentes.

Pour la création des graphes, nous avons décidé d'utiliser une approche par couleurs et de retirer les arêtes au graphe afin de le rendre plus lisible

6) Traitement des données

Afin d'exploiter les données dans Tulip nous avons du nettoyer les données. Même si le format original est le gdf, qui est un format proche du csv, il a néanmoins fallu retirer plein d'informations non utiles comme les comptes n'ayant pas de langage de programmation ou de pays associé.

* Les utilitaires Sed et Awk ont été d'une grande aide afin de traiter ces fichiers. * Un parseur Java a été codé afin de générer le fichier en csv.

7) Présentation des algorithmes

Avant de commencer la création d'algorithmes, nous avons tout d'abord rendu invisible les liaisons entre chaque noeuds pour éviter d'encombrer le graph de données inutiles. Ensuite, nous avons utilisé la fonction ColorMapping de Tulip avec notre propre code de couleur en fonction du langage. Ainsi, les noeuds étaient visible et on pouvait les différencier.

Notre première étape a été l'ordonnancement des noeuds pour permettre une meilleure visualisation. Nous avons utilisé l'algorithme d'Hilbert pour trier nos noeuds. Nous avons utilisé trois variantes d'algorithmes d'Hilbert:

  • HilbertLangage, qui affiche les noeuds dans une courbe d'Hilbert en triant chaque noeuds en fonction du langage.
  • HilbertPays, qui affiche les noeuds dans une courbe d'Hilbert en triant chaque noeuds en fonction du pays.
  • HilbertUltime, qui affiche les noeuds dans une courbe d'Hilbert en triant chaque noeuds en fonction du pays. Puis pour chaque pays, trie les noeuds en fonction du langage.

On içi HilbertLangage et HilbertUltime

L'étape suivante a été la représentation des données. Nous avons construit quatre algorithmes pour représenter les données de différentes manières:

  • l'algorithme Langage permet de visualiser les noeuds pour un langage choisi. Les noeuds du langage voulu vont rester bien coloré, tandis que les noeuds des autres langages vont être décolorés. Cela permet de comparer la proportion du langage sélectionné par rapport à tous les langages.
  • l'algorithme Pays permet de voir les noeuds pour un pays choisi. Les noeuds du pays choisi vont rester coloré, tandis que les noeuds des autres pays vont être décolorés. Cela permet de visualiser les différents langages ainsi que leur proportion dans un pays choisi.
  • l'algorithme PaysLang permet de voir pour un pays choisi, les noeuds d'un langage choisi. Tous les noeuds appartenant à un autre pays seront transparent(blanc). Pour les noeuds du pays choisi, les noeuds du langage choisi seront bien visible. Les autres seront décolorés. On pourra ainsi voir la proportion d'utilisateur d'un langage choisi par rapport aux autres langages, pour un pays choisi.
  • l'algorithme findFollowers2 permet de voir pour un langage donné, les différents utilisateurs d'un autre langage qui se sont intéressé au langage choisi. Le langage choisi aura ses noeuds coloré tandis que les noeuds des utilisateurs qui s'y sont intéressé seront décolorés. Les autres noeuds seront transparent.

Pour finir, ces quatres algorithmes ont été améliorés en affichant une légende pour permettre une meilleure compréhension du graph. Cette légenge change en fonction de l'algorithme utilisé et des paramètres utilisé pour l'algorithme:

  • pour l'algorithme Langage, la légende indiquera la proportion du langage choisi(en pourcentage), par rapport aux autres langages.
  • pour l'algorithme Pays, la légende indiquera les cinq langages les plus important du pays choisi ainsi que leur proportion par rapport aux autres langages de ce même pays.
  • pour l'algorithme PaysLang, la légende indiquera tout d'abord la proportion du langage demandé par rapport aux autres langages du pays choisi. Puis indiquera les quatre langages les plus important du pays choisi ainsi que leur proportion par rapport aux langages de ce même pays.
  • pour l'algorithme findFollowers2 la légende indiquera tout d'abord la proportion d'utilisateurs suivant leur propre langage. Puis indiquera les quatre langages les plus important suivant le langage choisi.

Exemple d'une légende

8)Présentation des résultats

L'utilisation des algorithmes a donné des résultats assez facile à comprendre. Différents résultats venant des quatre algorithmes vont être présentés.

Pour commencer, on utilise l'algorithme Langage pour deux langages: le C++ et le Ruby. L'algorithme sera utilisé avec l'algorithme de tri HilbertLangage.

Résultat pour le C++ et pour le Ruby

Ces données nous montrent que le langage Ruby est majoritairement utilisé par les utilisateurs inscrit sur GitHub. En effet, 49% des utilisateurs utilisent Ruby.

On utilise ensuite l'algorithme Pays pour deux pays: la France et les Etats-Unis. L'algorithme sera utilisé avec l'algorithme de tri HilbertUltime.

Résultat pour les Etats-Unis et pour la France

Dans ces deux résultats, on distingue des résultats communs. Parmis les principaux langages représentés par la légende, ces deux pays on en commun quatre langage: le Ruby, leJavaScript, le Perl et le PHP. De plus, pour ces deux pays, nous avons le Ruby qui est le langage le plus utilisé.

On utilise finalement l'algorithme findFollowers2 pour les deux langages suivants: le Ruby et le Python. L'algorithme sera utilisé avec l'algorithme de tri HilbertLangage.

Résultat pour le Python et pour le Ruby

Les résultats nous montrent que c'est généralement les cinq même langages qui suivent les autres: le Ruby, le JavaScript, le Python, le Perl et le PHP. De plus, on peut voir que le Ruby est étudié par quasiment tous les utilisateurs de GitHub. Cela montre que le langage Ruby est très utilisé en général.

On distingue cinq langage majoritairement utilisé par chaque pays étudié qui sont: le Ruby, le JavaScript, le Perl, le Python et le PHP. De manière générale, un langage sera principalement suivi par son propre langage puis par les cinq autres cités juste avant. Le fait qu'il y est un nombre extrèmement important d'utilisateur utilisant Ruby gêne légèrement les résultats. Mais peut être est-ce normal et que le Ruby est un langage énormément utilisé dans le monde.

9) Conclusion

Cette étude des tendances sur GitHub nous aura permis d'effectuer un travail d'analyse notamment sur les données que nous avons utilisé. De plus, le travail sur la présentation du graphe a été complexe car la représentation visuelle des données était importante. Nous devions présenter quelque chose de lisible. Le travail de nettoyage a été long mais finalement nous avons pu mettre en place des algorithmes permettant de répondre a nos problématiques. On peut voir que cinq langage domine qui sont: le Ruby, le JavaScript, le Perl, le Python et le PHP. En règle générale, Ruby est très présent sur GitHub mais il faut rappeller que ces données datent de 2010 et ne concernent que les personnes qui étaient inscrites sur le site.

/net/html/perso/melancon/Visual_Analytics_Course/data/pages/planchon_garcin/edwin_planchon_laurent_garcin.txt · Last modified: 2012/05/04 20:48 by melancon