Візуалізація інструментів обробки даних з Github

У своїй роботі ви використовуєте MySQL, Postgres або Mongo, а може навіть Apache Spark? Хочете знати з чого починалися ці проекти і куди вони рухаються? У цій статті я представлю відповідну візуалізацію




На сьогоднішній день існує величезна безліч інструментів обробки даних на будь-який смак: починаючи від класичних реляційних баз даних і закінчуючи новомодними інструментами для обробки потоків подій у реальному часі. Особливу популярність і любов розробників викликають проекти з відкритим вихідним кодом. Будь-яка проблема, що виникла з такими технологіями, не буде закопаний у пісок вендором кшталт Oracle (який, звичайно, надасть вам обхідний шлях для вирішення проблеми), а буде піддана відкритого обговорення і в кінцевому рахунку виправлена. Та й самі можете не тільки повідомити про проблему, але і власне її виправити і запропонувати свій код спільноти.

При цьому практично всі open-source проекти зараз зберігають свої початкові коди на github. Там знаходиться або основний репозиторій, або як мінімум його дзеркало, підтримується в актуальному стані. Ця система контролю версій містить велику кількість інформації про кожну зміну, коли-небудь зроблене у вихідному коді кожного з проектів, які там зберігаються. Якщо проаналізувати цю інформацію?

Для аналізу я взяв список найбільш популярних на сьогоднішній день інструментів обробки даних і проаналізував їх репозиторії. Потім для кожного з користувачів, які вносили зміни в ці інструменти, я зробив вибірку останньої їх активності на Github і зібрав звідти найпопулярніші репозиторії, в які вони вносили зміни. Таким чином список репозиторіїв, що потрапили в візуалізацію, не обмежується знайомими мені особисто проектами, а більш об'єктивно відображає реальну ситуацію в співтоваристві. І тому проекти на зразок Node.js, Docker і Kubernetes потрапили в візуалізацію не дивлячись на те, що вони мають дуже опосередковане відношення до області обробки даних.

По суті, така візуалізація має одну чудову властивість — це абсолютно незалежний погляд на проекти обробки даних з відкритим вихідним кодом, вільне від будь-якого маркетингу. Адже аналізуються реальні зміни, що вносяться в реальний код реальними людьми. На мій погляд це здорово, бо як вендори, що рекламують свої продукти, сильно підірвали довіру до різного роду аналітичних публікацій.

Отже, в рамках цієї роботи було проаналізовано 150 репозиторіїв github, понад півтора мільйона комітів скоєних 8333 унікальними розробниками. Для вивантаження даних, парсинга і спілкування з Github API використовувався Python, для зберігання та аналізу даних — Postgres, для візуалізації — Matplotlib. Візуалізація здебільшого робилася руками, алгоритми руху вершин графа також прописувалися руками (по суті, вершина притягається до пов'язаної з нею і відштовхується від довколишніх). Ось і сама візуалізація:



Рекомендую дивитися в максимальній якості, щоб було нормально видно всі назви проектів.

Кожна вершина графа являє собою один проект. Площа представляє її кола пропорційна кількості унікальних людей, які вносили зміни в конкретний проект за 10 тижнів до моменту, представляється візуалізацією (див. шкалу нагорі відео). Текст назви проекту також залежить від кількості унікальних контриб'юторів — великий жовтий текст для найбільших проектів, проектів поменше текст дрібніше, а біля самих маленьких він не відображається взагалі. Ребро між проектами А і Б позначається в тому випадку, якщо існує людина, що вніс зміни в обидва ці проекту протягом 10 тижнів, що передували моменту візуалізації. Я вважав це за доцільне, оскільки воно пов'язує разом форки однією технологією і просто споріднені проекти на кшталт Apache Hadoop і Apache HBase.

Моя оригінальна публікація доступна тут.

Джерело: Хабрахабр

0 коментарів

Тільки зареєстровані та авторизовані користувачі можуть залишати коментарі.