4,6 миллиарда — это буквально астрономическая цифра. Самая богатая звездная карта нашей галактики, составленная космической обсерваторией Gaia, включает чуть менее 2 миллиардов звезд. Как же на самом деле выглядит вид 4,6 миллиарда событий GitHub? Какие секреты и ценности можно обнаружить в таком огромном объеме данных?
Вот, пожалуйста: OSSInsight.io может помочь вам найти ответ. Это полезный инструмент, который может предоставить вам самые свежие данные об открытом исходном коде и помочь вам глубоко понять любой отдельный проект GitHub или быстро сравнить два проекта, покопавшись в 4,6 миллиардах событий GitHub в режиме реального времени. Вот некоторые способы, которыми вы можете воспользоваться.
- Сравните два любых проекта GitHub
- Популярность
- Количество звезд
- Географическое распределение звездочетов
- Распределение звездочетов по занятости
- Жизнеспособность кодирования
- Количество коммитов и проталкиваний
- Количество PR
- Время вклада разработчиков
- Ключевые сведения об открытом исходном коде
- Rust: самый активный язык программирования
- Go: новый фаворит и самый быстрорастущий язык программирования
- Microsoft и Google: два ведущих языка программирования
- Elasticsearch привлекает наибольшее внимание
- Китай: поклонник баз данных с открытым исходным кодом номер один
- Запустите собственную аналитику с помощью TiDB Cloud
- Свяжитесь с нами
Сравните два любых проекта GitHub
Интересно ли вам, как разные проекты работали и развивались с течением времени? Какой проект заслуживает большего внимания? OSSInsight.io может ответить на ваши вопросы на странице «Сравнение проектов».
Давайте возьмем в качестве примера репозиторий Kubernetes (K8s) и репозиторий Moby от Docker и сравним их с точки зрения популярности и жизнеспособности кодирования.
Популярность
Чтобы сравнить популярность двух репозиториев, мы используем несколько показателей, включая количество звезд, тенденцию роста количества звезд с течением времени, а также географическое и трудовое распределение звезд.
Количество звезд
На линейном графике ниже показано накопленное количество звезд K8s и Moby за каждый год. Согласно графику, Моби опережал K8s до конца 2019 года. После 2017 года рост числа звезд Moby замедлился, в то время как K8s сохранил устойчивый темп роста.
Географическое распределение звездочетов
На карте ниже показано географическое распределение звездочетов Moby и K8s. Как вы можете видеть, их звездочеты разбросаны по всему миру, большинство из них из США, Европы и Китая.
Распределение звездочетов по занятости
На диаграмме ниже показана занятость звездочетов K8s (красный цвет) и Moby (темно-синий цвет). Оба звездочета работают в самых разных отраслях, и большинство из них — представители ведущих компаний доткомов, таких как Google, Tencent и Microsoft. Разница в том, что две ведущие компании звездочетов K8s — это Google и Microsoft из США, а две ведущие компании Moby — это Tencent и Alibaba из Китая.
Жизнеспособность кодирования
Чтобы сравнить жизнеспособность кодирования двух проектов на GitHub, мы используем множество показателей, включая тенденцию роста запросов на внесение изменений (PR), ежемесячное количество PR, коммитов и проталкиваний, а также тепловую карту времени вклада разработчиков.
Количество коммитов и проталкиваний
На гистограмме ниже показано количество коммитов и пушей, представленных в K8s (вверху) и Moby (внизу) каждый месяц после их создания. В целом, K8s имеет больше pushes и commits, чем Moby, и их число стабильно росло до 2020 года, после чего замедлилось. У Moby ежемесячное количество проталкиваний и фиксаций незначительно росло в период с 2015 по 2017 год, а затем почти не увеличивалось после 2018 года.
Количество PR
На графиках ниже показано ежемесячное и накопленное количество PR двух репозиториев. Как вы можете видеть, K8s получал стабильные и последовательные PR с момента своего создания, и накопленное количество PR также постоянно росло. Moby имел яркие PR-поступления до конца 2017 года, но после начал снижаться. Его накопленное количество PR достигло плато в 2017 году и с тех пор остается неизменным.
Время вклада разработчиков
На следующей тепловой карте показано время вклада разработчиков для K8s (слева) и Moby (справа). Каждый квадрат представляет собой один час в день. Чем темнее цвет, тем больше вкладов сделано за это время. В K8s гораздо больше темных участков, чем в Moby, а вклад K8s происходит почти 24 часа в сутки, 7 дней в неделю. K8s определенно имеет более динамичную деятельность по кодированию, чем Moby.
В совокупности эти метрики показывают, что хотя и K8s, и Moby популярны во всех отраслях по всему миру, K8s отличается более динамичной деятельностью по кодированию, чем Moby. K8s постоянно набирает популярность и жизнеспособность кодинга, в то время как Moby со временем падает в обоих показателях.
Популярность и жизнеспособность кодирования — это всего лишь два параметра для сравнения репозиториев. Если вы хотите узнать больше или сравнить другие интересующие вас проекты, посетите страницу сравнения и изучите ее самостоятельно.
Конечно, вы можете использовать эту же страницу для глубокого изучения любого отдельного проекта GitHub и получения самой свежей информации о нем. Ключевые метрики и соответствующие изменения представлены в панорамном виде. Также доступны более глубокие аналитические данные, такие как изменения кода по размерным группам PR и линиям PR. Изучите его сами, и вы будете удивлены. Получайте удовольствие.
Ключевые сведения об открытом исходном коде
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
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, чтобы получать самую свежую информацию. Вы также можете поделиться этим инструментом с вашими друзьями.