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

Важно присваивать пакетам правильные версии. В мире Haskell принято использовать схему, похожую на semver , но не совсем semver. Подробности можно найти на Haskell Wiki .

В .cabal файле можно указать адрес репозитория с исходным кодом пакета:

source-repository head
type:     git
location: https://github.com/afiskon/simple-genetic-algorithm

Перед тем, как заливать пакет, нужно проверить, что он правильно (в том числе безо всяких там опечаток) документирован, сказав cabal haddock . Документация, понятное дело, должна быть на английском. Также нужно сказать cabal check и по возможности исправить выведенные предупреждения. Очень важно проверить работу пакета с несколькими версиями GHC. Например, если сейчас вы пользуетесь GHC 7.6, неплохо бы проверить, что пакет успешно собирается GHC 7.4 и GHC 7.8 (последний сейчас еще готовится к релизу).

Чтобы что-нибудь залить на Hackage, нужно там зарегистрироваться . Собираем пакет командой cabal sdist . Берем получившийся файл tar.gz и заливаем пакет-кандидат . Это такая возможность посмотреть, как пакет будет выглядеть на Hackage. Как бы заливка понарошку. Затем нужно написать на электропочту admin@hackage.haskell.org с просьбой дать права на загрузку настоящих пакетов. В письме не будет лишним указать ссылки на свой профиль на Hackage и уже залитый пакет-кандидат. В зависимости от дня недели и времени суток ответ может прийти в течение пары часов или пары дней.

Получив права, заливаем пакет. Готово, теперь его можно устанавливать через cabal ! Генерация Haddock происходит не моментально. Сейчас документация появляется в течение нескольких минут, максимум — получаса. Если документация к вашему пакету не появляется в течение длительного времени, возможно, имеет место какой-то косяк. Убедитесь, что cabal haddock отрабатывает нормально и что cabal check ни на что не ругается.

После публикации нового пакета или обновления существующего обязательно сделайте анонс в /r/haskell или haskell-cafe@ . В первом можно просто кинуть ссылку, во втором придется написать немного сопроводительного текста на английском языке . Во-первых, своим анонсом вы дадите людям знать о существовании вашего пакета, что увеличит шансы на получение багрепортов и пулреквесов. Во-вторых, хаскелисты просто обожают докапываться до чужого кода, так что вы с большой вероятностью получите массу идей по улучшению своего пакета 🙂

Если вам есть, чем дополнить эту напоминалку, не стесняйтесь пользоваться комментариями.

EnglishRussianUkrainian