Рубрики
Без рубрики

Как измерить влияние COVID-19 на проект Jitsi с Python и Elasticsearch

Ситуация с COVID-19 ограничивает возможность к личной связи. Удаленная работа сейчас … Теги с Python, наукой данных, Git.

Ситуация с COVID-19 ограничивает возможность к личной связи. Удаленная работа теперь реальностью, а спрос на видеоконференции, такое как Цзиц встретится продолжает ломая записей.

Может быть возможно, что Разработка программного обеспечения Jitsi Деятельность и сообщество тоже на высоком требовании?

Этот пост обобщает один из анализа, который мои коллеги Дэвид Дюран , Герардо Агирре и Я сделал для наших M.S. в науке данных. После GQM подход Мы определили четкую цель и некоторые связанные вопросы. Затем мы решили лучшие метрики, чтобы ответить на эти вопросы.

Цель

Проанализируйте влияние, что глобальная пандемия, такая как COVID-19, имеет на Джици

Вопросы

Изменились ли COVID-19 контрмеры:

  • Узоры деятельности Джицица?
  • Узоры разнообразия Джици?
  • Цзицкий общинный риск?

Поскольку мы пытаемся измерить влияние, нам нужно увидеть потенциальные изменения. Например, изменение активности разработки программного обеспечения во время вспышки COVID-19 по сравнению с прошлым годом?

Мы выбрали 1 мая 2019 и 2020 февраля в качестве нашего таймфрейма для измерения такого воздействия.

Метрики

Автобусный фактор Общие участники Разнообразие организации
Всего коммит Гендерное разнообразие
Разнообразие часового пояса
  • Общие участники: количество авторов, которые приняли участие в течение определенного периода времени

  • Всего обменивается: количество коммитов в течение определенного периода времени

  • Разнообразие организации: разные домены электронной почты в течение определенного периода времени. Здесь мы можем найти домены компании (например, jitsi, 8×8, и т. Д.) или Индивидуальные (Gmail, пользователи и т. Д.)
  • Гендерное разнообразие: общая доля женских и мужских имен авторов, которые сделали коммит
  • Разнообразие часового пояса: существующие авторы на каждом часовой зоне
  • Коэффициент автобуса: минимальное количество участников, необходимых для создания 50% кода Git на Jitsi в течение определенного периода времени

Используемые инструменты

Сбор данных и хранение

Для сбора данных мы использовали инструмент с открытым исходным кодом, который называется PerceVal. Перцеваль Предлагает модуль Python для получения данных из репозиториев, связанных с разработкой программного обеспечения. Он работает со многими источниками данных, от Git Repositories и проектов GitHub для рассылки списков, Gerrit или Stackoverflow.

Для этого конкретного анализа нам просто понадобится данные Jitsi Git.

Если вы работаете Jitsi-Data.py Доступно в Это Gitlab Reppo Убедитесь, что вы сначала установили перцеваль

$ pip install perceval

Вы можете просто использовать GIT GIT POPCEVAL на Python с perceval.backends.core.git:

import json
from elasticsearch import Elasticsearch
import logging
from datetime import datetime  # to specify a specific timeframe
import gender_guesser.detector as gender
from perceval.backends.core.git import Git
from dateutil.parser import parse

У перцевала есть 2 аргумента для Git:

  • URI: репозиторий или список репос из GitLab или GitHub, вы хотите проанализировать
  • Gitpath: обычно что-то вроде/tmp/repo-name.git
# It has 2 arguments, uri and gitpath: repo = Git(uri=repository, gitpath='/tmp/'+repository.git)
data_repo = Git(uri='https://github.com/jitsi/jitsi-meet', gitpath='/tmp/jitsi-meet.git')

Более того, мы используем Python Elasticsearch Client Для хранения данных и отображения из сценария Python к нашему экземпляру Elasticsearch.

# Instance of elasticsearch to put the data into ElasticSearch/Kibana system (it is necessary to have both up on localhost)
    elastic = Elasticsearch()
    # Read mapping json file to ElasticSearch
    mapping_file = open("mapping.json", "r")
    mapping = json.load(mapping_file)
    # Creation of ElasticSearch index using the mapping
    index_name = "repo_jitsi_index_def"
    response = elastic.indices.create(
        index=index_name,
        body=mapping,
        ignore=400  # ignore 400 already exists code
    )

Преобразование и отображение данных

Perceval дает нам данные RAW GIT с большим количеством информации в течение определенного периода времени (мы указываем это благодаря пакету DateTime Python): Commit, автор, добавленные линии, линии удалены, электронная почта, конфигурация даты и многое другое.

Однако для анализа разнообразия участника нам необходимо создать новые поля с предоставленными данными. Вот почему мы добавляем организацию (на основе доменов электронной почты), пола (с использованием Gender Detector Python) и поля часовых поясов (поля для очистки элемента)

Вы можете посмотреть, как мы повторяемся через различные поля, предоставляемые PerceVal, чтобы получить данные в нашем Gitlab Repo.

Как только мы генерируем эти новые поля, мы создаем наши elasticsearch Mapping, преобразовывать данные элемента в новую структуру, соответствующую отображением для Elasticsearch

Визуализация данных

Если вы используете скрипт unity-data.py с открытым экземпляром Elasticsearch и kibana, вы можете перейти к вашей Kibana Localhost (обычно 5601 )> Управляйте> Указатели индекса и нажмите на Установку Указателя. Вы должны увидеть имя индекса, указанному на jitsi-data.py (по умолчанию IS repo_jitsi_index_def )

Затем мы разработаем панель инструментов Kibana с конкретными визуализациями, которые лучше всего подходит с нашими определенными метриками. Мы назвали это «Hired_Dashoard»

На первый взгляд мы можем увидеть необычное поведение в активности джицти с 2020 года:

И при сравнении периода 2019 года с 2020 года результаты также довольно интересны:

Изображение ниже подчеркивает серьезные изменения в отношении разнообразия и активности вкладчика:

Мы видим, что:

Деятельность участника увеличилась: Существует увеличение активности совершения, добавленные линии и удаленные линии, Авторы и организации, связанные с разработкой программного обеспечения Джици

Разнообразие участника увеличилось: Интересно, что деятельность женщин была на 1% в прошлом году, и после начала COVID-19, она увеличилась до 8%. Все еще низкое число, но является хорошим показателем.

Кроме того, мы видим, что некоторые авторские занятия в Азии, которые не существовали раньше.

Отказ от ответственности: Есть «неизвестные» данные, которые наш гендерный детектор не догадался. Основная причина заключается в том, что некоторые разработчики JITSI имеют некомандующие символы, и наш гендерный детектор оптимизирован для запасных имен. Мы сделали исчерпывающую очистку для наиболее актуальных имен, хотя, уменьшая наши «неизвестные» данные, но мы не смогли ее полностью стереть.

Как насчет риска сообщества?

Чтобы ответить на наш последний вопрос и метрика, мы работаем над запросом, использующим Jupyter ноутбук Отказ

Фактор автобуса для разработчиков не является чем-то новым: это минимальное количество членов команды, которые приходится внезапно исчезнуть из проекта до того, как проволоки проекта из-за отсутствия знания или компетентного персонала. Другими словами:

Наш подход на автобус для нашей конкретной цели отвечает на вопрос Какое минимальное количество участников, необходимых для создания 50% кода Git на Jitsi?

В результате мы получаем это в 2019 году, Jitsi нужна только 2 разработчика, чтобы сделать 50% кода Git, в то время как в 2020 году Jitsi требуется не менее 9 разработчиков. Этот факт действительно хорош для здоровья проекта JITSI!

Вы можете увидеть ноутбук Jupyter в нашем Gitlab Repo.

Будущая работа

Это просто очень вводный анализ для измерения воздействия COVID-19 на Jitsi. Конечно, мы можем улучшить много вещей. Некоторые будущие работы могут быть:

  • Улучшить авторскую принадлежность: мы знаем существующую запись с открытым исходным кодом, называемыми Sortinghat , что может быть реализовано с перцевалом и другими Гриморелаб компоненты. Sortinghat – управление принадлежностями личности. Таким образом, тождества, соответствующие тому же реальному человеку, могут быть объединены в той же уникальной идентичности с уникальным UUID.

  • Фильтр «Неизвестная» категория в гендерном срок: возможно, пакет Gender-Gugeter не самый лучший для использования. Вы знаете, другие пакеты Python, которые мы можем использовать? Оставьте свои комментарии ниже:)

  • Работа на новой метрике для оценки риска, таких как Коэффициент Джини Отказ

И последнее, но не менее важно: Корреляция не подразумевает причиной Отказ У нас нет всех доменных знаний Jitsi Compламнителей, а специалисты сообщества могут иметь. Отношения между активностью COVID-19 и участниками могут быть просто совпадение

Оригинал: “https://dev.to/anajsana95/how-to-measure-covid-19-impact-on-jitsi-project-with-python-and-elasticsearch-154j”