Обзор кода проекта Filecoin


Прошло несколько месяцев с окончания сбора средств проектом Filecoin. Я рассмотрел текущее состояние проекта и его кода.

Уже зная об IPFS, я ожидал, что код Filecoin будет довольно хорошим - и эти ожидания оправдались. Для начала у них есть руководство по коду - все, чтобы помочь разработчикам легко интегрироваться в проект и начать посылать пул-запросы как можно скорее. Это очень хорошая практика, но лишь немногие проекты так заботятся о сообществе. Более того, это показывает, что проект имеет четкую структуру, а не каким-то образом собрал кусочки эфира вместе. Насколько я видел, весь код был написан самими разработчиками, а не форком из другого проекта (за исключением небольших кусочков и криптостека, где все еще указывается авторское право, как здесь и здесь).

Кажется, что их усилия по созданию сообщества окупились: GitHub уже показывает 33 участника, и еще 19 запросов на получение ожидают рассмотрения. Также на момент написания этой статьи открыто 339 вопросов. И даже если большинство из них написаны самими разработчиками, это все же является хорошим признаком: разработка ведется открыто, некоторые проблемы и задачи обсуждаются публично, а не внутри команды (в этом я не уверен, что они имеют возможность собраться физически в одном месте).

Сам код хорошо документирован, почти в том же стиле, в соответствии с принципами сообщества Golang. Комментарии к функции часто описывают не только то, что она на самом деле делает, но и то, как она интегрируется в общую инфраструктуру (пример). Зафиксированные сообщения не совсем в одном стиле, но, по крайней мере, хорошо передают суть изменений.

Активно используются пользовательские типы и структуры, что является хорошим стилем в языке go. В общем, они используют его возможности (пользовательские типы, отражение, даже лямбда-функции) в полном объеме, что иногда приводит к очень странно выглядящему коду, и это не очень хорошо. Стилистика написания схода со стилистикой JavaScript, популярный в современной разработке. Интересно, что многие библиотеки импортируют напрямую из IPFS, а не из репозитория git, что создаёт достаточно большое количество мусора.

Но это имеет свои недостатки, такие как, например, сложность сборки. В общем, хотелось бы видеть больше проектов, использующих новую систему модулей Go 1.11, это проще и удобнее. Но Filecoin к ним не относится.

В результате мы имеем код среднего качества (по сравнению с другими блокчейнами), хорошая команда, которая уже выпустила известный проект, и сомнительная идея, которая будет работать или нет, мы можем увидеть только в будущем.

Источник: Яндекс.Дзен


Comments 1