Исследуйте глубину в 4,6 миллиарда событий GitHub

4,6 миллиарда — это буквально астрономическая цифра. Самая богатая звездная карта нашей галактики, составленная космической обсерваторией Gaia, включает чуть менее 2 миллиардов звезд. Как же на самом деле выглядит вид 4,6 миллиарда событий GitHub? Какие секреты и ценности можно обнаружить в таком огромном объеме данных?

Вот, пожалуйста: OSSInsight.io может помочь вам найти ответ. Это полезный инструмент, который может предоставить вам самые свежие данные об открытом исходном коде и помочь вам глубоко понять любой отдельный проект GitHub или быстро сравнить два проекта, покопавшись в 4,6 миллиардах событий GitHub в режиме реального времени. Вот некоторые способы, которыми вы можете воспользоваться.

Сравните два любых проекта GitHub

Интересно ли вам, как разные проекты работали и развивались с течением времени? Какой проект заслуживает большего внимания? OSSInsight.io может ответить на ваши вопросы на странице «Сравнение проектов».

Давайте возьмем в качестве примера репозиторий Kubernetes (K8s) и репозиторий Moby от Docker и сравним их с точки зрения популярности и жизнеспособности кодирования.

Популярность

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

Количество звезд

На линейном графике ниже показано накопленное количество звезд K8s и Moby за каждый год. Согласно графику, Моби опережал K8s до конца 2019 года. После 2017 года рост числа звезд Moby замедлился, в то время как K8s сохранил устойчивый темп роста.

Звездная история K8s и Моби

Географическое распределение звездочетов

На карте ниже показано географическое распределение звездочетов Moby и K8s. Как вы можете видеть, их звездочеты разбросаны по всему миру, большинство из них из США, Европы и Китая.

Географическое распределение звездочетов K8s и Moby

Распределение звездочетов по занятости

На диаграмме ниже показана занятость звездочетов K8s (красный цвет) и Moby (темно-синий цвет). Оба звездочета работают в самых разных отраслях, и большинство из них — представители ведущих компаний доткомов, таких как Google, Tencent и Microsoft. Разница в том, что две ведущие компании звездочетов K8s — это Google и Microsoft из США, а две ведущие компании Moby — это Tencent и Alibaba из Китая.

Распределение занятости среди звездочетов K8s и Moby

Жизнеспособность кодирования

Чтобы сравнить жизнеспособность кодирования двух проектов на GitHub, мы используем множество показателей, включая тенденцию роста запросов на внесение изменений (PR), ежемесячное количество PR, коммитов и проталкиваний, а также тепловую карту времени вклада разработчиков.

Количество коммитов и проталкиваний

На гистограмме ниже показано количество коммитов и пушей, представленных в K8s (вверху) и Moby (внизу) каждый месяц после их создания. В целом, K8s имеет больше pushes и commits, чем Moby, и их число стабильно росло до 2020 года, после чего замедлилось. У Moby ежемесячное количество проталкиваний и фиксаций незначительно росло в период с 2015 по 2017 год, а затем почти не увеличивалось после 2018 года.

Ежемесячные проталкивания и коммиты K8s (вверху) и Moby (внизу)

Количество PR

На графиках ниже показано ежемесячное и накопленное количество PR двух репозиториев. Как вы можете видеть, K8s получал стабильные и последовательные PR с момента своего создания, и накопленное количество PR также постоянно росло. Moby имел яркие PR-поступления до конца 2017 года, но после начал снижаться. Его накопленное количество PR достигло плато в 2017 году и с тех пор остается неизменным.

Ежемесячное и накопленное количество PR для K8s (вверху) и Moby (внизу)

Время вклада разработчиков

На следующей тепловой карте показано время вклада разработчиков для K8s (слева) и Moby (справа). Каждый квадрат представляет собой один час в день. Чем темнее цвет, тем больше вкладов сделано за это время. В K8s гораздо больше темных участков, чем в Moby, а вклад K8s происходит почти 24 часа в сутки, 7 дней в неделю. K8s определенно имеет более динамичную деятельность по кодированию, чем Moby.

Тепловая карта времени вклада разработчиков в K8s (слева) и Moby (справа)

В совокупности эти метрики показывают, что хотя и K8s, и Moby популярны во всех отраслях по всему миру, K8s отличается более динамичной деятельностью по кодированию, чем Moby. K8s постоянно набирает популярность и жизнеспособность кодинга, в то время как Moby со временем падает в обоих показателях.

Популярность и жизнеспособность кодирования — это всего лишь два параметра для сравнения репозиториев. Если вы хотите узнать больше или сравнить другие интересующие вас проекты, посетите страницу сравнения и изучите ее самостоятельно.

Конечно, вы можете использовать эту же страницу для глубокого изучения любого отдельного проекта GitHub и получения самой свежей информации о нем. Ключевые метрики и соответствующие изменения представлены в панорамном виде. Также доступны более глубокие аналитические данные, такие как изменения кода по размерным группам PR и линиям PR. Изучите его сами, и вы будете удивлены. Получайте удовольствие.

Панорамный обзор ключевых показателей GitHub (на примере K8s)

Общее количество PR каждый месяц/PR-группы (на примере K8s)

Количество строк кода, измененных за месяц (на примере K8s)

Ключевые сведения об открытом исходном коде

OSSInsight.io не просто исследует или сравнивает репозитории. Он предоставляет вам исторические данные, данные в реальном времени и пользовательские сведения об открытом исходном коде. В этом разделе мы поделимся некоторыми ключевыми сведениями о базах данных и языках программирования с открытым исходным кодом. Если вы хотите получить сведения в других областях, вы можете самостоятельно изучить страницу Insights.

Примечание: Если вы хотите получить эти аналитические результаты самостоятельно, вы можете легко выполнить SQL-команды над каждым графиком на TiDB Cloud, следуя этому 10-минутному руководству.

Rust: самый активный язык программирования

Язык Rust был впервые выпущен в 2012 году и уже 10 лет входит в число ведущих языков программирования. Он имеет самый активный репозиторий с общим количеством 103 047 PR на момент написания статьи.

SELECT 
/*+ read_from_storage(tiflash[github_events]), MAX_EXECUTION_TIME(120000) */
    programming_language_repos.name AS repo_name,
    COUNT(*)      AS num
FROM github_events
         JOIN programming_language_repos ON programming_language_repos.id = github_events.repo_id
WHERE type = 'PullRequestEvent'
  AND action = 'opened'
GROUP BY 1
ORDER BY 2 DESC
LIMIT 10
Вход в полноэкранный режим Выход из полноэкранного режима

Количество PR ведущих языков программирования

Go: новый фаворит и самый быстрорастущий язык программирования

По данным OSSInsight.io, в сообществе разработчиков открытого кода доминируют 10 языков программирования. Go является самым популярным с 108 317 звездами, за ним следуют Node и TypeScript. Go также является самым быстрорастущим по популярности языком.

WITH repo_stars AS (
    SELECT
        /*+ read_from_storage(tiflash[github_events]) */
        repo_id,
        ANY_VALUE(repos.name) AS repo_name,
        COUNT(distinct actor_login) AS stars
    FROM github_events
         JOIN programming_language_repos repos ON repos.id = github_events.repo_id
    WHERE type = 'WatchEvent'
    GROUP BY 1
), top_10_repos AS (
    SELECT
        repo_id, repo_name, stars
    FROM repo_stars rs
    ORDER BY stars DESC
    LIMIT 10
), tmp AS (
    SELECT
        /*+ read_from_storage(tiflash[github_events]) */
        event_year,
        tr.repo_name AS repo_name,
        COUNT(*) AS year_stars
    FROM github_events
         JOIN top_10_repos tr ON tr.repo_id = github_events.repo_id
    WHERE type = 'WatchEvent' AND event_year <= 2021
    GROUP BY 2, 1
    ORDER BY 1 ASC, 2
), tmp1 AS (
    SELECT
        event_year,
        repo_name,
        SUM(year_stars) OVER(partition by repo_name order by event_year ASC) as stars
    FROM tmp
    ORDER BY event_year ASC, repo_name
)
SELECT event_year, repo_name, stars FROM tmp1
Вход в полноэкранный режим Выход из полноэкранного режима

Тенденции роста звездности ведущих языков программирования

Microsoft и Google: два ведущих языка программирования

Будучи всемирно известными высокотехнологичными компаниями, Microsoft и Google занимают лидирующие позиции по вкладу в языки программирования с открытым исходным кодом: на момент написания статьи их общее число составляло 1 443 и 947 соответственно.

SELECT
    /*+ read_from_storage(tiflash[github_events]), MAX_EXECUTION_TIME(120000) */
    TRIM(LOWER(REPLACE(u.company, '@', ''))) AS company,
    COUNT(DISTINCT actor_id)                 AS num
FROM
    github_events github_events
    JOIN programming_language_repos db ON db.id = github_events.repo_id
    JOIN users u ON u.login = github_events.actor_login
WHERE
    github_events.type IN (
        'IssuesEvent', 'PullRequestEvent','IssueCommentEvent',
        'PullRequestReviewCommentEvent', 'CommitCommentEvent',
        'PullRequestReviewEvent'
    )
    AND u.company IS NOT NULL
    AND u.company != ''
    AND u.company != 'none'
GROUP BY 1
ORDER BY 2 DESC
LIMIT 20;
Вход в полноэкранный режим Выход из полноэкранного режима

Компании, которые вносят наибольший вклад в языки программирования

Elasticsearch привлекает наибольшее внимание

Elasticsearch был одной из первых баз данных с открытым исходным кодом. Это самая любимая база данных с 64 554 звездами, за ней следуют Redis и Prometheus. С 2011 по 2016 год Elasticseasrch и Redis делили первое место, пока Elasticsearch не вырвался вперед в 2017 году.

WITH repo_stars AS (
    SELECT
        /*+ read_from_storage(tiflash[github_events]) */
        repo_id,
        ANY_VALUE(repos.name) AS repo_name,
        COUNT(distinct actor_login) AS stars
    FROM github_events
         JOIN db_repos repos ON repos.id = github_events.repo_id
    WHERE type = 'WatchEvent'
    GROUP BY 1
), top_10_repos AS (
    SELECT
        repo_id, repo_name, stars
    FROM repo_stars rs
    ORDER BY stars DESC
    LIMIT 10
), tmp AS (
    SELECT
        /*+ read_from_storage(tiflash[github_events]) */
        event_year,
        tr.repo_name AS repo_name,
        COUNT(*) AS year_stars
    FROM github_events
         JOIN top_10_repos tr ON tr.repo_id = github_events.repo_id
    WHERE type = 'WatchEvent' AND event_year <= 2021
    GROUP BY 2, 1
    ORDER BY 1 ASC, 2
), tmp1 AS (
    SELECT
        event_year,
        repo_name,
        SUM(year_stars) OVER(partition by repo_name order by event_year ASC) as stars
    FROM tmp
    ORDER BY event_year ASC, repo_name
)
SELECT event_year, repo_name, stars FROM tmp1
Войти в полноэкранный режим Выход из полноэкранного режима

Тенденция роста ведущих баз данных

Китай: поклонник баз данных с открытым исходным кодом номер один

В Китае больше всего последователей баз данных с открытым исходным кодом — 11 171 звездный поклонник репозиториев баз данных, за ним следуют США и Европа.

select upper(u.country_code) as country_or_area, count(*) as count, count(*) / max(s.total) as percentage
from github_events
use index(index_github_events_on_repo_id)
left join users u ON github_events.actor_login = u.login
join (
    -- Get the number of people has the country code.
    select count(*) as total
    from github_events
    use index(index_github_events_on_repo_id)
    left join users u ON github_events.actor_login = u.login
    where repo_id in (507775, 60246359, 17165658, 41986369, 16563587, 6838921, 108110, 166515022, 48833910, 156018, 50229487, 20089857, 5349565, 6934395, 6358188, 11008207, 19961085, 206444, 30753733, 105944401, 31006158, 99919302, 50874442, 84240850, 28738447, 44781140, 372536760, 13124802, 146459443, 28449431, 23418517, 206417, 9342529, 19257422, 196353673, 172104891, 402945349, 11225014, 2649214, 41349039, 114187903, 20587599, 19816070, 69400326, 927442, 24494032) and github_events.type = 'WatchEvent' and u.country_code is not null
) s
where repo_id in (507775, 60246359, 17165658, 41986369, 16563587, 6838921, 108110, 166515022, 48833910, 156018, 50229487, 20089857, 5349565, 6934395, 6358188, 11008207, 19961085, 206444, 30753733, 105944401, 31006158, 99919302, 50874442, 84240850, 28738447, 44781140, 372536760, 13124802, 146459443, 28449431, 23418517, 206417, 9342529, 19257422, 196353673, 172104891, 402945349, 11225014, 2649214, 41349039, 114187903, 20587599, 19816070, 69400326, 927442, 24494032) and github_events.type = 'WatchEvent' and u.country_code is not null
group by 1
order by 2 desc;
Вход в полноэкранный режим Выход из полноэкранного режима

Географическое распределение звездочетов баз данных с открытым исходным кодом

OSSInsight.io также позволяет создавать собственные инсайты по любому репозиторию GitHub, созданному после 2011 года. Приглашаем вас посетить страницу Insights, чтобы узнать больше.

Запустите собственную аналитику с помощью TiDB Cloud

Вся аналитика на OSSInsight.io работает на базе TiDB Cloud, полностью управляемой базы данных как услуги. Если вы хотите запустить собственную аналитику и получить собственные выводы, зарегистрируйте учетную запись TiDB Cloud и попробуйте сами с помощью этого 10-минутного руководства.

Свяжитесь с нами

Находите ли вы OSSInsight.io полезным и интересным для работы? У вас есть вопросы или отзывы, которыми вы хотите поделиться с нами? Не стесняйтесь подать заявку на GitHub или следить за нами в Twitter, чтобы получать самую свежую информацию. Вы также можете поделиться этим инструментом с вашими друзьями.

Оцените статью
Procodings.ru
Добавить комментарий