В своей работе вы используете 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.

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

Комментарии (2)


  1. DenQ
    29.03.2016 16:30

    Было бы хорошо увидеть интерактивную страничку, где можно выбирать языки и технологии, выставлять фильтры и прочее.
    И что б обхват не ограничивался 150 проектами.


    1. 0x0FFF
      29.03.2016 16:31
      +4

      Полностью согласен, это было бы очень здорово. Если решите такую сделать, поделитесь ссылкой