Проблемы opensource-проекта Голос
Работая в сфере IT, я постоянно имею дело с различными opensource-проектами. Заинтересовавшись Голосом, я решил изучить как тут всё работает и поиграться с ПО Голоса.
Для начала было решено почитать документацию, и тут-то и всплыла первая проблема:
Плохая документированность
- github-страница проекта содержит только короткий README, который даёт нам пример команды запуска ноды в docker . Зачем её запускать и что с ней делать после запуска, не описано. Описание директив конфига, плагинов? Хрен вам, читайте сырцы:
Code is Documentation
Rather than attempt to describe the rules of the blockchain, it is up to each individual to inspect the code to understand the consensus rules.
Прямо сейчас: пример запуска "full node" и "p2p node" ничем не отличаются, кроме имени docker-контейнера 😁
- Отсутствует англоязычная документация как класс. Понятно, что golos - форк steem-а, и можно читать доки по нему. Однако, форк он на то и форк, что в нём есть свои изменения и нюансы. Release Notes? Не, не слышал!
- wiki проекта: тут уже есть что почитать, однако wiki покрывает только часть. Имеется более-менее внятное описание экономики, интерфейса golos.io, философия, принципы, и тд. Но нет никакой толковой документации по golosd. Нет описания параметров конфигурации, плагинов, API, что за что отвечает, и т.п.
- https://developers.golos.io - судя по имени домена позиционируется как ресурс для разработчиков. Присутствует несколько баунти-программ, что несомненно хорошо, есть список API-запросов с примерами выполнения, без детального описания, описание методов и классов в golosd. На мой взгляд, данный ресурс нельзя считать достаточно информативным ни для разработчика, ни для оператора ноды голоса.
Для сравнения: откройте документацию по PostgreSQL и походите внутри по главам. Контраст с Голосом разительный. Как небо и земля, как жопа и палец. Всё детально расписано. Прекрасный раздел "Server Administration".
Резюме: текущая степень документированности оставляет удручающее впечатление. Для серьёзного opensource-проекта такая ситуация недопустима.
Почему так происходит
Почитав некоторое время Голос, я обнаружил парадокс: на Голосе происходит подмена документации личными статьями авторов. Такого я не видел ни в одном другом проекте. Вместо того, чтобы пилить мануалы на wiki, каждый запиливает статью себе в бложек! Некоторые даже код скриптов пихают прямо в статью, не выкладывая на github!
В результате получается, что wiki поддерживается плохо, а статьи на Голосе устаревают и накапливаются, создаётся ситуация, что по какой-либо теме есть пачка статей разной степени протухлости, но читать надо все, потому что инфа не всегда перекрывается. А так же лучше и с комментами, потому что там тоже бывает много полезного. В результате временные затраты на изучение темы существенно возрастают, т.к. приходится перерывать тонны материала вместо чтения сути на wiki.
Почему так? Очевидно потому, что запиливание статей с мануалами приносит неплохие барыши, а заполнение wiki - ничего. wiki в открытом доступе, бери и правь, но этого никто не делает: за всё время всего 9 закрытых pull-реквестов, да и те с мелкими малосущественными правками.
Что делать
Надо объявить bounty-программу по наполнению wiki и поддержанию её в актуальном состоянии. Это может быть как финансирование от проекта golos.io (@cyberfund или кто там содержит команду goloscore?), так и финансирование сообществом: например, человек редактирует wiki, потом пишет статью "смотрите, я отредактировал wiki", сообщество апвотит пост на соответствующую сумму соразмерно его вкладу.
Централизованная разработка
Разработка golosd идёт узкой закрытой группой разработчиков, где взаимодействие идёт в полу-приватном режиме. Сторонних разработчиков как таковых нет, однако насколько я понял с разработчиками при желании можно держать связь в чате.
Сосредоточение разработки в одной компании плохо тем, что если вдруг она прекратит существование, это ставит под удар весь проект. Да, сам блокчейн конечно продолжит работать, т.к. функционирование поддерживается делегатами, есть сторонние клиенты и т.п., однако разработка застрянет надолго. Пройдёт время, пока сообщество самоорганизуется и появятся специалисты с достаточной квалификацией.
В этом плане будущее проекта видится несколько туманным. Для сравнения, например в PostgreSQL нет какой-либо единой группы или компании, распад которой может поставить под удар существование проекта. Цитирую FAQ:
Кто управляет PostgreSQL?
Если вы ищете какого-то особенного человека, центральный комитет или управляющую компанию, то напрасно - их нет. У нас есть ядро комитета и разработчиков, работающих с CVS, но эти группы служат больше для административных целей, чем для управления. Проект напрямую функционирует с помощью сообщества разработчиков и пользователей, к которому может присоединиться каждый. Всё, что нужно - это подписаться на списки рассылки и участвовать в дискуссиях. (Подробности о том как включиться в разработку PostgreSQL смотрите в FAQ для разработчиков.)
Что представляет из себя Всемирная Группа Разработчиков PostgreSQL (PGDG)?
"PGDG" -- это интернациональное объединение, без образования юридического лица, отдельных людей и компаний, которые вносят свой вклад в проект PostgreSQL. Команда PostgreSQL Core Team обычно выступает в качестве спикеров для PGDG.
Что представляет из себя PostgreSQL Core Team?
Это комитет, состоящий из 5-7 членов (в настоящий момент 6), которые внесли наибольший вклад в PostgreSQL и которые: (а) устанавливают даты выпусков, (b) управляют конфиденциальными вопросами проекта, (c) общаются как спикеры с PGDG, когда это требуется и (d) выступают арбитрами в тех вопросах, по которым в сообществе не достигнуто консенсуса. В настоящий момент Основная Команда представлена вверху страницы списка участников
Что можно сказать о различных фондах PostgreSQL?
Хотя проект PostgreSQL использует некоммерческие фирмы в США, Европе, Бразилии и Японии для координации проектом и сбора средств, эти фирмы не являются владельцами кода PostgreSQL.
Что с этим делать?
Конкретного ответа на это у меня нет. Ясное дело, что надо привлекать сторонних разработчиков. Вернее, создавать благоприятную среду для включения их в процесс разработки. Больше документации, более прозрачное взаимодействие с сообществом, объявление баунти-программ по каким-то фичам и т.п.
Резюме
В целом проект в текущем виде создаёт впечатление весьма сырого продукта, слабо готового к production, и уж тем более для существенных инвестиций.
Было бы неплохо услышать мнения, особенно от команды golosio и goloscore. В самом деле, почему бы не запустить хотя бы баунти программу по поддержке wiki?