[Занимательные задачки, GitHub, Веб-аналитика, Инфографика, Биографии гиков] Кто есть кто в кампании за отмену Столлмана
Автор
Сообщение
news_bot ®
Стаж: 6 лет 9 месяцев
Сообщений: 27286
Кампания "за отмену Столлмана", начавшаяся с публикации в Medium предоставляет нам множество интересных данных. Так как подписание открытых писем за отмену и в поддержку Столлмана осуществляется на гитхабе, мы можем проанализировать некоторые характеристики обеих сторон, используя статистические данные, которые доступны через API.Этому помогает то, что на гитхабе затруднительно редактировать данные "задним числом" без потери новых подписей.Следующие предположения можно проверить ("X" может быть как предложением отменить Столлмана, так и выражением его поддержки):
- Противники X чаще ассоциированы с крупными компаниями чем сторонники
- Сторонники X чаще и больше коммитят код и этим более полезны сообществу СПО.
- Противники X значимо реже коммитят в репозитории со свободными лицензиями.
- Противники X предпочитают Rust (или JS), сторонники предпочитают C (или C++, Python)
- Противники X в большей степени социально активны, у них есть аккаунты в соц. сетях, твиттере, они часто пишут.
- Противники X не коммитят код по выходным (работают только в рабочее время, не энтузиасты)
- Большинство противников X зарегистрированы на гитхабе менее полугода назад
Мы попытались проверить некоторые из этих предположений и приглашаем всех, кто заинтересовался, проверить остальные предположения и вносить (и проверять) любые другие.Мы создали репозиторий, в котором будет проходить работа. В нем же лежит эта статья, ее копия на Хабре будет актуализироваться по мере добавления пулл-реквестов. Присоединяйтесь к исследованию!Далее будут детали.Замечание о научной честностиЛюбые гипотезы и любые проверяемые подтверждения будут приняты и добавлены в статью. Мы не считаем возможным скрывать данные, которые противоречат нашей позиции. Все интерпретации будут также добавлены. Мы приглашаем к совместной работе сторонников обоих позиций (да, это возможно). Репозиторий для совместной работы.Кампания за отмену Столлмана управляется из одного центраРепозиторий противников Столлмана был создан 23 Mar 2021 10:42:36 AM PDT, сторонников - 23 Mar 2021 01:23:39 PM PDT. Видно, что репозиторий противников практически сразу начал активно набирать звезды. У репозитория сторонников был длительный период, когда звезды набирались медленно, но потом (видимо после публикации в соц сетях) процесс пошел много быстрее и количество звезд быстро обогнало противников.
Код
$ cat get-stars.sh
#!/bin/bash
set -ue
page=1
owner_repo=$1
while true; do
curl -s -H "Authorization: token $GITHUB_OAUTH_" \\
-H "Accept: application/vnd.github.v3.star+json" \\
"<https://api.github.com/repos/$owner_repo/stargazers?per_page=100&page=$page>"| \\
jq -r .[].starred_at_ | grep . || break
((page++)) || true
done
$ echo "epoch,con" >con.stars.csv
$ ./get-stars.sh 'rms-open-letter/rms-open-letter.github.io'|while read a; do date -d $a +%s; done|sort -n|cat -n|awk '{print $2","$1}' >>con.stars.csv
$ echo "epoch,pro" >pro.stars.csv
$ ./get-stars.sh 'rms-support-letter/rms-support-letter.github.io'|while read a; do date -d $a +%s; done|sort -n|cat -n|awk '{print $2","$1}' >>pro.stars.csv
$ join -t, -e '' -o auto -a1 -a2 con.stars.csv pro.stars.csv >joined.stars.csv
При этом спустя много дней репозиторий сторонников продолжает набирать звезды, в то время как у противников процесс сильно замедлился. Из этого можно сделать предположение, что процесс раскрутки инициативы противников был заранее интенсифицирован рассылкой писем и сообщений в социальных сетях, и замедлился как только доступная аудитория была выбрана и/или промоушн прекратился.
Инициатива сторонников, по-видимому, децентрализована. Этим можно объяснить медленный темп набора звезд в начале и то, что звезды до сих пор добавляются - новости расходятся от свежих вовлеченных участников.Активность в репозиториях сторонников и противников СтоллманаНа момент написания этой статьи было 1345 комиттеров противников и 5000+ коммиттеров сторонников. Скачиваем историю коммитов:Код
$ cat get-commits.py
#!/usr/bin/env python
import os
import requests
import json
import sys
repo = sys.argv[1]
headers = {'Authorization': 'token {}'.format(os.environ["GITHUB_OAUTH"])}
commits = []
page = 0
while page < 300:
page += 1
data = requests.get('https://api.github.com/repos/{}/commits?per_page=100&page={}'.format(repo, page), headers=headers).json()
if len(data) == 0:
break
commits += data
print(json.dumps(commits, indent=4))
$ ./get-commits.py 'rms-open-letter/rms-open-letter.github.io' >con.commits.json
$ ./get-commits.py 'rms-support-letter/rms-support-letter.github.io' >pro.commits.json
Посмотрим на изменение количества коммитов от времени с начала кампаний:Код
$ jq -r .[].commit.author.date pro.commits.json|sort -u|cat -n|awk '{print $2","$1}'|sed -e 's/T/ *' -e 's/Z/*' >pro.commits.csv
$ jq -r .[].commit.author.date con.commits.json|sort -u|cat -n|awk '{print $2","$1}'|sed -e 's/T/ *' -e 's/Z/*' >con.commits.csv
$ join -t, -e '' -o auto -a1 -a2 con.commits.csv pro.commits.csv >joined.commits.csv
Видно, что репозиторий сторонников гораздо активнее. Коммитов в репозиторий противников за последнее время практически не было. Репозиторий сторонников продолжает обновляться.Противники Столлмана ведут кампанию в основном в рабочие дниПосмотрим на распределение коммитов по дням недели.Код
$ jq -r .[].commit.author.date con.commits.json |./weekday-from-date.py >con.rms_commits.csv
$ jq -r .[].commit.author.date pro.commits.json |./weekday-from-date.py >pro.rms_commits.csv
$ join -t, con.rms_commits.csv pro.rms_commits.csv >joined.rms_commits.csv
Aктивность противников Столлмана сильно снижается на выходных, зато в среду мы видим пик. Это можно объяснить тем, что во многих компаниях среда это no meeting day.
Активность сторонников значительно менее вариативная. Коммиты совершаются во все дни неделиПротивники Столлмана чаще имеют заполненные профили социальных сетейСкачиваем индивидуальные данные для каждого юзера, а также его последние 100 действий:Код
$ jq -r .[].author.login con.commits.json|sort -u >con.logins
$ jq -r .[].author.login pro.commits.json|sort -u >pro.logins
$ cat get-user-events-data.sh
#!/bin/bash
set -ue
script_dir=$(dirname $(realpath $0))
get_data() {
local data_dir=$script_dir/$1 userdata events
for x in $(cat $1.logins); do
userdata=$data_dir/$x.userdata
[ -r $userdata ] && continue
curl -s -H "Authorization: token $GITHUB_OAUTH" "<https://api.github.com/users/$x>" >$userdata
sleep 1
events=$data_dir/$x.events
[ -r $events ] && continue
curl -s -H "Authorization: token $GITHUB_OAUTH" "<https://api.github.com/users/$x/events?per_page=100>" >$events
sleep 1
done
}
get_data $1
$ ./get-user-events-data.sh con
$ ./get-user-events-data.sh pro
Пример данных юзера, выгруженных из гитхаба:Код
{
"login": "zyxw59",
"id": 3157093,
"node_id": "MDQ6VXNlcjMxNTcwOTM=",
"avatar_url": "https://avatars.githubusercontent.com/u/3157093?v=4",
"gravatar_id": "",
"url": "https://api.github.com/users/zyxw59",
"html_url": "https://github.com/zyxw59",
"followers_url": "https://api.github.com/users/zyxw59/followers",
"following_url": "https://api.github.com/users/zyxw59/following{/other_user}",
"gists_url": "https://api.github.com/users/zyxw59/gists{/gist_id}",
"starred_url": "https://api.github.com/users/zyxw59/starred{/owner}{/repo}",
"subscriptions_url": "https://api.github.com/users/zyxw59/subscriptions",
"organizations_url": "https://api.github.com/users/zyxw59/orgs",
"repos_url": "https://api.github.com/users/zyxw59/repos",
"events_url": "https://api.github.com/users/zyxw59/events{/privacy}",
"received_events_url": "https://api.github.com/users/zyxw59/received_events",
"type": "User",
"site_admin": false,
"name": "Emily Crandall Fleischman",
"company": "Commure",
"blog": "",
"location": null,
"email": "emilycf@mit.edu",
"hireable": null,
"bio": null,
"twitter_username": null,
"public_repos": 24,
"public_gists": 0,
"followers": 2,
"following": 12,
"created_at": "2012-12-31T05:33:30Z",
"updated_at": "2021-03-14T01:53:51Z"
}
В таблице ниже приводится процент пользователей, у которых заполнены поля twitter_username, company, bio и blog:полепротивниксторонникtwitter_username31%8%company48%20%bio53%31%blog63%31%Противники Столлмана кажутся более социально активными. Возможно сторонники Столлмана реже участвуют в социальной активности (ведут блог, твиттер, страничку в социальных сетях.Противники Столлмана активнее на гитхабеПосмотрим на поля public_repos, public_gists, followers и following:полепротивникстронниксреднеемедианасреднее медианаpublic_repos6234219public_gists18440followers10523162following308141Противники Столлмана активнее сторонников на гитхабе. У них в среднем больше followers, публичных репозиториев, они также чаще фолловят другие репозитории. Также у противников соотношение followers / following больше 3, в то время как у сторонников оно составляет 1.1.Противники Столлмана не коммитят в гитхаб на выходныхВоспользуемся полем events_url, чтобы скачать историю действий юзеров.Теперь давайти посмотрим на действия юзеров. Данных скачано много и анализировать их можно множеством способов. Можно проверить активность юзеров по дням недели, чтобы проверить как эти данные коррелируют с активностью, специфичной для репозиториев "за" и "против" Столлмана.Код
cat weekday-from-date.py
#!/usr/bin/env python
import datetime
import sys
out = [0] \* 7
total = 0
for line in sys.stdin.readlines():
weekday = datetime.datetime.strptime(line.strip(), '%Y-%m-%dT%H:%M:%SZ').weekday()
out[weekday] += 1
total += 1
for day, count in enumerate(out):
print("{},{}".format(day, count / total))
$ jq -r .[].created<sub>at</sub> con/\*.events|./weekday-from-date.py >con.event<sub>day.normalized.csv</sub>
$ jq -r .[].created<sub>at</sub> pro/\*.events|./weekday-from-date.py >pro.event<sub>day.normalized.csv</sub>
$ join -t, con.event<sub>day.normalized.csv</sub> pro.event<sub>day.normalized.csv</sub>
Видно, что тренд сохранился: активность противников резко снижается на выходных. Можно предполагать, что они используют гитхаб на работе и, возможно, работают над open source проектами за зарплату. Если это предположение верно, их мнение может быть обусловлено отбором, который проводят компании, нанимающие программистов для работы над open source проектами.
===========
Источник:
habr.com
===========
Похожие новости:
- [Занимательные задачки, Программирование, Алгоритмы, Node.JS, VueJS] Создаем кэшируемую пагинацию, которая не боится неожиданного добавления данных в БД
- [Информационная безопасность, Биографии гиков] Ушел из жизни исследователь кибербезопасности Дэн Камински
- [Системное администрирование, GitHub, Софт] Microsoft обновила пакетный менеджер winget. В версии 0.3 можно просматривать установленные приложения и удалять их
- [Сжатие данных, История IT, Научно-популярное, Биографии гиков] Профессор Яаков Зив: автор метода сжатия данных без потерь
- [Open source, GitHub, Разработка под Linux, Космонавтика] Опенсорс прилетел на Марс
- [Развитие стартапа, Биографии гиков] Как я написал книгу, но до сих пор не знаю всего текста
- [IT-инфраструктура, Исследования и прогнозы в IT, Веб-аналитика, Аналитика мобильных приложений] Извилистые дороги корейских ОС, или Как Tizen OS и webOS к успеху шли
- [Python, PDF, GitHub] Шаблонизация PDF
- Проект Debian выбрал нейтральную позицию относительно петиции против Столлмана
- [JavaScript, Google API, GitHub] Google Sheets — как разноплановый помощник для непростых задач или как я делал анализатор футбольный матчей
Теги для поиска: #_zanimatelnye_zadachki (Занимательные задачки), #_github, #_vebanalitika (Веб-аналитика), #_infografika (Инфографика), #_biografii_gikov (Биографии гиков), #_stallman, #_stollman (столлман), #_gnu, #_zanimatelnye_zadachki (
Занимательные задачки
), #_github, #_vebanalitika (
Веб-аналитика
), #_infografika (
Инфографика
), #_biografii_gikov (
Биографии гиков
)
Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах
Вы не можете прикреплять файлы к сообщениям
Вы не можете скачивать файлы
Текущее время: 22-Ноя 06:27
Часовой пояс: UTC + 5
Автор | Сообщение |
---|---|
news_bot ®
Стаж: 6 лет 9 месяцев |
|
Кампания "за отмену Столлмана", начавшаяся с публикации в Medium предоставляет нам множество интересных данных. Так как подписание открытых писем за отмену и в поддержку Столлмана осуществляется на гитхабе, мы можем проанализировать некоторые характеристики обеих сторон, используя статистические данные, которые доступны через API.Этому помогает то, что на гитхабе затруднительно редактировать данные "задним числом" без потери новых подписей.Следующие предположения можно проверить ("X" может быть как предложением отменить Столлмана, так и выражением его поддержки):
Код $ cat get-stars.sh
#!/bin/bash set -ue page=1 owner_repo=$1 while true; do curl -s -H "Authorization: token $GITHUB_OAUTH_" \\ -H "Accept: application/vnd.github.v3.star+json" \\ "<https://api.github.com/repos/$owner_repo/stargazers?per_page=100&page=$page>"| \\ jq -r .[].starred_at_ | grep . || break ((page++)) || true done $ echo "epoch,con" >con.stars.csv $ ./get-stars.sh 'rms-open-letter/rms-open-letter.github.io'|while read a; do date -d $a +%s; done|sort -n|cat -n|awk '{print $2","$1}' >>con.stars.csv $ echo "epoch,pro" >pro.stars.csv $ ./get-stars.sh 'rms-support-letter/rms-support-letter.github.io'|while read a; do date -d $a +%s; done|sort -n|cat -n|awk '{print $2","$1}' >>pro.stars.csv $ join -t, -e '' -o auto -a1 -a2 con.stars.csv pro.stars.csv >joined.stars.csv Инициатива сторонников, по-видимому, децентрализована. Этим можно объяснить медленный темп набора звезд в начале и то, что звезды до сих пор добавляются - новости расходятся от свежих вовлеченных участников.Активность в репозиториях сторонников и противников СтоллманаНа момент написания этой статьи было 1345 комиттеров противников и 5000+ коммиттеров сторонников. Скачиваем историю коммитов:Код $ cat get-commits.py
#!/usr/bin/env python import os import requests import json import sys repo = sys.argv[1] headers = {'Authorization': 'token {}'.format(os.environ["GITHUB_OAUTH"])} commits = [] page = 0 while page < 300: page += 1 data = requests.get('https://api.github.com/repos/{}/commits?per_page=100&page={}'.format(repo, page), headers=headers).json() if len(data) == 0: break commits += data print(json.dumps(commits, indent=4)) $ ./get-commits.py 'rms-open-letter/rms-open-letter.github.io' >con.commits.json $ ./get-commits.py 'rms-support-letter/rms-support-letter.github.io' >pro.commits.json $ jq -r .[].commit.author.date pro.commits.json|sort -u|cat -n|awk '{print $2","$1}'|sed -e 's/T/ *' -e 's/Z/*' >pro.commits.csv
$ jq -r .[].commit.author.date con.commits.json|sort -u|cat -n|awk '{print $2","$1}'|sed -e 's/T/ *' -e 's/Z/*' >con.commits.csv $ join -t, -e '' -o auto -a1 -a2 con.commits.csv pro.commits.csv >joined.commits.csv Видно, что репозиторий сторонников гораздо активнее. Коммитов в репозиторий противников за последнее время практически не было. Репозиторий сторонников продолжает обновляться.Противники Столлмана ведут кампанию в основном в рабочие дниПосмотрим на распределение коммитов по дням недели.Код $ jq -r .[].commit.author.date con.commits.json |./weekday-from-date.py >con.rms_commits.csv
$ jq -r .[].commit.author.date pro.commits.json |./weekday-from-date.py >pro.rms_commits.csv $ join -t, con.rms_commits.csv pro.rms_commits.csv >joined.rms_commits.csv Aктивность противников Столлмана сильно снижается на выходных, зато в среду мы видим пик. Это можно объяснить тем, что во многих компаниях среда это no meeting day. Активность сторонников значительно менее вариативная. Коммиты совершаются во все дни неделиПротивники Столлмана чаще имеют заполненные профили социальных сетейСкачиваем индивидуальные данные для каждого юзера, а также его последние 100 действий:Код $ jq -r .[].author.login con.commits.json|sort -u >con.logins
$ jq -r .[].author.login pro.commits.json|sort -u >pro.logins $ cat get-user-events-data.sh #!/bin/bash set -ue script_dir=$(dirname $(realpath $0)) get_data() { local data_dir=$script_dir/$1 userdata events for x in $(cat $1.logins); do userdata=$data_dir/$x.userdata [ -r $userdata ] && continue curl -s -H "Authorization: token $GITHUB_OAUTH" "<https://api.github.com/users/$x>" >$userdata sleep 1 events=$data_dir/$x.events [ -r $events ] && continue curl -s -H "Authorization: token $GITHUB_OAUTH" "<https://api.github.com/users/$x/events?per_page=100>" >$events sleep 1 done } get_data $1 $ ./get-user-events-data.sh con $ ./get-user-events-data.sh pro {
"login": "zyxw59", "id": 3157093, "node_id": "MDQ6VXNlcjMxNTcwOTM=", "avatar_url": "https://avatars.githubusercontent.com/u/3157093?v=4", "gravatar_id": "", "url": "https://api.github.com/users/zyxw59", "html_url": "https://github.com/zyxw59", "followers_url": "https://api.github.com/users/zyxw59/followers", "following_url": "https://api.github.com/users/zyxw59/following{/other_user}", "gists_url": "https://api.github.com/users/zyxw59/gists{/gist_id}", "starred_url": "https://api.github.com/users/zyxw59/starred{/owner}{/repo}", "subscriptions_url": "https://api.github.com/users/zyxw59/subscriptions", "organizations_url": "https://api.github.com/users/zyxw59/orgs", "repos_url": "https://api.github.com/users/zyxw59/repos", "events_url": "https://api.github.com/users/zyxw59/events{/privacy}", "received_events_url": "https://api.github.com/users/zyxw59/received_events", "type": "User", "site_admin": false, "name": "Emily Crandall Fleischman", "company": "Commure", "blog": "", "location": null, "email": "emilycf@mit.edu", "hireable": null, "bio": null, "twitter_username": null, "public_repos": 24, "public_gists": 0, "followers": 2, "following": 12, "created_at": "2012-12-31T05:33:30Z", "updated_at": "2021-03-14T01:53:51Z" } cat weekday-from-date.py
#!/usr/bin/env python import datetime import sys out = [0] \* 7 total = 0 for line in sys.stdin.readlines(): weekday = datetime.datetime.strptime(line.strip(), '%Y-%m-%dT%H:%M:%SZ').weekday() out[weekday] += 1 total += 1 for day, count in enumerate(out): print("{},{}".format(day, count / total)) $ jq -r .[].created<sub>at</sub> con/\*.events|./weekday-from-date.py >con.event<sub>day.normalized.csv</sub> $ jq -r .[].created<sub>at</sub> pro/\*.events|./weekday-from-date.py >pro.event<sub>day.normalized.csv</sub> $ join -t, con.event<sub>day.normalized.csv</sub> pro.event<sub>day.normalized.csv</sub> Видно, что тренд сохранился: активность противников резко снижается на выходных. Можно предполагать, что они используют гитхаб на работе и, возможно, работают над open source проектами за зарплату. Если это предположение верно, их мнение может быть обусловлено отбором, который проводят компании, нанимающие программистов для работы над open source проектами. =========== Источник: habr.com =========== Похожие новости:
Занимательные задачки ), #_github, #_vebanalitika ( Веб-аналитика ), #_infografika ( Инфографика ), #_biografii_gikov ( Биографии гиков ) |
|
Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах
Вы не можете прикреплять файлы к сообщениям
Вы не можете скачивать файлы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах
Вы не можете прикреплять файлы к сообщениям
Вы не можете скачивать файлы
Текущее время: 22-Ноя 06:27
Часовой пояс: UTC + 5