Написать пост

Исследования показали, что 82 % всего кода в репозиториях GitHub не уникальны

Аватар Вячеслав Шарунов

Исследователи выяснили, что почти все файлы, размещённые на GitHub, являются копиями ранее созданных. Например, JavaScript-проекты идентичны на 94 %.

Большинство исходного кода, который хранится во всех открытых репозиториях GitHub, является полной копией ранее созданных файлов. Об этом заявила научная группа сотрудников нескольких университетов.

Почти все файлы дубликаты

Проведя исследования порядка 4,5 миллиона оригинальных GitHub-проектов, содержащих 482 миллиона различных файлов, учёные установили, что уникальны лишь 85 миллионов файлов. Это составляет всего 18 % от общего числа проанализированных файлов исходного кода.

Под пристальный взор исследователей попали проекты, написанные на C++, Java, JavaScript и Python. Оказалось, что 94 % файлов JS-проектов были идентичны. С++ занял вторую строчку своеобразного рейтинга: 73 % всех файлов проектов были дубликатами. У Python этот показатель составил 71 %, у Java — относительно скромные 40 %.

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

Исследования показали, что 82 % всего кода в репозиториях GitHub не уникальны 1

Всему виной npm

Причину, по которой JS-проекты содержат наибольшее число дубликатов кода, легко объяснить. Всему виной npm — менеджер пакетов для всех клиентских и серверных проектов JS. Хотя и другие языки программирования имеют свои менеджеры пакетов, npm является крупнейшим в мире с 350 тысячами библиотек. Следующий по популярности менеджер, Apache Maven, имеет в своей коллекции в два раза меньшее число пакетов.

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

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

  • С++: библиотека GNU ISO C++, конкретные шаблоны студенческих домашних работ, примеры использования Arduino;
  • Java: Minecraft-API и PhoneGap;
  • JavaScript: «Hello World»-примеры PhoneGap, OctoPress, шаблон BlueMix;
  • Python: примеры Cactus, Shadowsocks и Scons.

Копипаст рулит

По словам исследователей, система управления исходными кодами Git, на которой построена GitHub, поощряет проекты, использующие форки.

Однако существует иные виды дублирования кода, которые происходят в GitHub и не попадают под механизм ветвления. Люди создают свои проекты путём копирования файлов и даже целых библиотек.

Они также добавили, что результаты исследований очень важны, прежде всего, для самого GitHub. Имея подобные данные, компания может сократить использование серверов для хранения дубликатов. Также многие учёные могут не создавать велосипед, а использовать уже написанные open-source проекты для своих нужд.

Узнай, кто скопировал твой исходник

Исходные данные исследования также доступны в виде дампов MySQL, которые можно загрузить с официальной страницы проекта. Каждый желающий может попробовать в действии веб-приложение проекта для поиска информации о клонах любого файла в ваших репозиториях GitHub.

Следите за новыми постами
Следите за новыми постами по любимым темам
3К открытий3К показов