В своей работе вы используете MySQL, Postgres или Mongo, а может даже Apache Spark? Хотите знать с чего начинались эти проекты и куда они движутся сейчас? В этой статье я представлю соответствующую визуализацию
На сегодняшний день существует огромное множество инструментов обработки данных на любой вкус: начиная от классических реляционных баз данных и заканчивая новомодными инструментами для обработки потоков событий в реальном времени. Особую популярность и любовь разработчиков вызывают проекты с открытым исходным кодом. Любая проблема, возникшая с такими технологиями, не будет зарыта в песок вендором вроде Oracle (который, конечно, предоставит вам workaround для обхода проблемы), а будет подвергнута открытому обсуждению и в конечном счете исправлена. Да и сами можете не только сообщить о проблеме, но и собственно её исправить и предложить свой код сообществу.
При этом практически все open-source проекты сейчас хранят свои исходные коды на github. Там находится либо основной репозиторий, либо как минимум его зеркало, поддерживаемое в актуальном состоянии. Эта система контроля версий содержит большое количество информации о каждом изменении, когда-либо сделанном в исходном коде каждого из проектов, которые там хранятся. Что если проанализировать эту информацию?
Для анализа я взял список наиболее популярных на сегодняшний день инструментов обработки данных и проанализировал их репозитории. Затем для каждого из пользователей, вносивших изменения в эти инструменты, я сделал выборку последней их активности на Github и собрал оттуда самые популярные репозитории, в которые они вносили изменения. Таким образом список репозиториев, попавших в визуализацию, не ограничивается знакомыми мне лично проектами, а более объективно отображает реальную ситуацию в сообществе. И поэтому проекты вроде Node.js, Docker и Kubernetes попали в визуализацию не смотря на то, что они имеют весьма опосредованное отношение к области обработки данных.
По сути своей, такая визуализация имеет одно замечательное свойство — это абсолютно независимый взгляд на проекты обработки данных с открытым исходным кодом, свободный от какого-либо маркетинга. Ведь анализируются реальные изменения, вносимые в реальный код реальными людьми. На мой взгляд это здорово, потому как вендоры, рекламирующие свои продукты, сильно подорвали доверие к различного рода аналитическим публикациям.
Итак, в рамках этой работы было проанализировано 150 репозиториев github, более полутора миллиона коммитов совершенных 8333 уникальными разработчиками. Для выгрузки данных, парсинга и общения с Github API использовался Python, для хранения и анализа данных — Postgres, для визуализации — Matplotlib. Визуализация по большей части делалась руками, алгоритмы движения вершин графа также прописывались руками (по сути, вершина притягивается к связанной с ней и отталкивается от близлежащих). Вот и сама визуализация:
Рекомендую смотреть в максимальном качестве, чтобы было нормально видно все названия проектов.
Каждая вершина графа представляет собой один проект. Площадь представляющей её окружности пропорциональна количеству уникальных людей, вносивших изменения в конкретный проект за 10 недель до момента, представляемого визуализацией (см. шкалу наверху видео). Текст названия проекта также зависит от количества уникальных контрибьюторов — большой желтый текст для самых больших проектов, у проектов поменьше текст мельче, а у самых маленьких он не отображается вообще. Ребро между проектами А и Б обозначается в том случае, если существует человек, внесший изменения в оба эти проекта в течении 10 недель, предшествовавших моменту визуализации. Я счел это разумным, т.к. оно связывает вместе форки одной технологии и просто родственные проекты вроде Apache Hadoop и Apache HBase.
Моя оригинальная публикация доступна здесь.
Автор: 0x0FFF