Около двух лет назад я затеял глобальную инициативу по переезду с сервиса Trello на более открытые аналоги. В феврале 2024 года я полностью завершил переезд и совсем отказался от сервиса. В данной статье опишу опыт переезда, причины, подводные камни, плюсы и минусы конечного решения.
Что такое Trello и почему это перестало меня устраивать#
Начну немного издалека. С сервисом Kanban досок Trello я познакомился в далёком 2012 году, когда увидел как им пользуются мои коллеги. Меня очень вдохновил такой подход к управлению делами, что я решил попробовать применить его к своим задачам, тогда еще довольно простым.
Немного о методологии. Грубо говоря, Kanban - одни из методов управления проектом, в которой используются т.н. карточки с задачами и набор столбцов, которые представляют определённые состояния наших задач (к примеру, “Новая”, “В процессе”, “Готова”, “Отложена”). Такой подход я успешно использовал в личных и рабочих проектах на протяжении долгого времени. Написал два диплома, прочитал сотню книг, переделал мелкие бытовые задачи. Все задачи и заметки к своим задачам я вел исключительно в данном сервисе.

Однако, мои потребности со временем менялись и были моменты, когда приходилось кардинально пересматривать структуру досок и подход работы с задачами.
Начиная примерно с 2022 я стал понимать, что Trello как инструмент не обеспечивает всех тех хотелок, которые мне нужны. В дополнение к этому началась волна под названием “мы не работаем в России, идите лесом”, что тоже подстегнуло к поиску новых решений.
Итак, что же меня не устраивало
- Несмотря на плюсы Kanban-а в виде наглядности, мне как раз этой наглядности и не хватало
- Не было возможности удобно работать с иерархией задач/подпроектов
- В связи с этим возникали сложности с ведением крупных, стратегических проектов, которые содержат десятки и сотни подзадач
- Порой хотелось создать подпроект под конкретную область, вести в нем какие-то активности, но при этом в родительской задаче видеть общий прогресс
- Задачи разного уровня иерархии (к примеру, “посмотреть архивный фонд №123”, “посмотреть опись Y из фонда №123 и”посмотреть дело X из фонда №123") были на одной доске, что создавало лишний информационный шум
- Сложности со связыванием задач друг с другом
- В Trello можно добиться связности двумя способами: с помощью использования ссылок в чеклистах и с помощью attachment-ов карточки. Для меня оба способа оказались неудобными
- Я не смог организовать доски в Trello так, чтобы учитывать разный жизненный цикл для разных типов задач
- Для себя я использую несколько типов задач
- Initiative - какой-то крупняк на период 2 - 5 лет
- Epic - крупняк, но поменьше (от месяца до полугода)
- Story - не в смысле, в котором этот термин используется в Scrum, а для обозначения задач на 1-2 недели трудозатрат
- Task - простая задача от получаса до пары дней
- Плюс к этому всякие идеи, цели на квартал/год
- Хранить все это на одной доске - боль, т.к. доска становиться слишком перегруженной
- Хранить на разных досках - тоже боль, т.к. теряется та самая наглядность и не понятно какая User Story к чему относится
- Для себя я использую несколько типов задач
- Не было возможности удобно работать с иерархией задач/подпроектов
- Возможность потерять все данные за несколько лет из-за того, что у меня паспорт не той страны по мнению владельцев сервиса
- Пока еще сервис доступен, но гарантий, что он будет доступен, конечно же нет
- Хотелось держать всю инфраструктуру у себя, чтобы не как можно меньше зависеть от внешних факторов
В общем, я хотел как в Jira, но бесплатно, без регистрации и СМС.
Какие были варианты#
- ProjeQtOr
- ➕ Очень много функциональности
- Управление финансами
- Управление рисками
- Управление требованиями
- Задачи
- Диаграммы Ганта, Millestones, проекты
- ➖ Слишком перегружено для моих потребностей
- ➖ UI не очень, на мой взгляд
- ➕ Очень много функциональности
- YouTrack
- ➕ Есть community docker образ
- ➕ Есть Kanban доски и спринты
- ➕ Приятный UI
- ➖ Нет настраиваемой иерархии задач
- ➖ Больше нацелена на разработку ПО
- Taiga
- ➕ Есть docker образ
- ➕ Поддерживает Kanban и Scrum
- ➕ Есть базовая иерархия задач (epic, stories, issues)
- ➖ Нет настраиваемой иерархии задач
- ➖ Не нашел создавать свои типы задач
- Leantime
- ➕ Приятный UI
- ➕ Есть разные подключаемы модули
- Управление и анализ рисками
- Установка целей
- Управление идеями
- ➕ Можно задавать довольно сложные иерархии
- ➖ Не нашел создавать свои типы задач
- ➖ Субъективно было сложно использовать
- Vikunia
- ➕ Можно задавать довольно сложные иерархии (как задач, так и проектов)
- ➕ Простой и не требует много ресурсов
- ➕ Есть возможность создавать повторяющиеся задачи
- ➖ Новый проект, не понятны перспективы
- ➖ Нет возможности отобразить общий прогресс по какой-то задаче
- Redmine
- ➕ Полностью настраиваемый
- Свои типы задач
- Свои статусы и workflow
- ➕ Иерархия любой сложности как для проектов, так и для задач
- ➕ Дешево и сердито - потребляет очень мало памяти и процессора
- ➕ Давно на рынке
- ➕ У меня есть опыт работы с системой
- ➖ UI мягко сказать устаревший
- ➕ Полностью настраиваемый
- OpenProject
- ➕ Redmine на стероидах со всеми его плюсами
- ➕ Приятный и современный UI
- ➖ Довольно тяжеловесный (5 docker контейнеров в общей сложности может занимать до 3 GB RAM)
NB!: Исследование проводилось в конце 2022 года, поэтому часть информации может быть уже не актуальной. Все плюсы и минусы субъективны.
Переезд и особенности миграции#
В качестве основной системы для ведения задач я выбрал свободный OpenProject. По функциональности очень похож на Redmine, но с красивым оформлением и на больших стероидах. Плюсом является то, что команда OpenProject активно поддерживает продукт и постоянно выпускают новые фичи.
Система позволяет создавать неограниченное количество проектов, неограниченно вкладывать один проект в другой, тем самым формируя пакет проектов. Есть возможность создавать свои типы задач со специфичным жизненным циклом. Присутствует возможность работы спринтами по Scrum, а также использование Kanban досок.
OpenProject предоставляет REST API для манипулирования состоянием. Однако какой-то бесплатной утилиты по миграции Trello -> OpenProject не было. Пришлось изобретать велосипед. На написание скриптов и миграцию данных ушло примерно пару недель неспешной работы. И к февралю 2024 у меня уже была поднята локальная копия OpenProject, развернутая в Docker с использованием Postgres в качестве БД.
Краткое описание алгоритма миграции приведено ниже
- Сделать резервную копию всех досок Trello в виде json файла через стандартный интерфейс в браузере
- Написать парсер json файла, который конвертирует json в промежуточное представление (тоже json, но другой структуры)
- Цель преобразования - иметь одну сущность “задача”, к которой привязаны все связанные сущности (“комментарий”, “чеклист”, “события”). В оригинальном json от Trello эти данные разбиты по разным полям в json-е
- Написать простой скрипт, который по входящему json-у создает задачи через REST API в OpenProject
- Поправить даты создания задач и комментариев через SQL скрипт, т.к. API OpenProject не позволяет указать время создания задачи в HTTP запросе
Однако, непредвиденная проблема возникла на первом шаге и оказалось, что при экспорте json-а из Trello теряются некоторые события у задач. События - это комментарии, события о создании, события о закрытии, события об изменении атрибутов карточки. Опытным путем выяснилось, что есть какой-то лимит по количеству данных. Поэтому первый пункт получил такую формулировку
- Получить токен для обращения к API Trello
- Написать скрипт, который принимает на вход идентификаторы досок, делает запросы к API и формирует json в том же формате, который получается при экспорте
Набор утилит для работы с Trello и OpenProject можно найти в моём github-е
Спустя год#
По большей части каких-то серьёзных проблем с использованием я не заметил. Удалось выстроить удобную систему, где есть понимание того, как конкретная задача влияет на другие и на весь проект в целом. Систему, в которой понятно приближает ли выполнение задачи к конечной глобальной цели или нет.
Из минусов своего подхода замечу следующие
- Нет мобильного приложения, только web версия
- Порой не хватает повторяющихся задач и автоматизации
- Решение поднято как localhost сервис, который запускается только когда включен компьютер
- Хочется пользоваться им не только дома
- Не хочется покупать VPS для этого
- Решил тем, что данные для Postgres монтирую как volume в docker, а сами данные синхронизирую между машинами (рабочей и домашней) средствами rclone
- Для создания задач с телефона настроил отдельную почту из которой OpenProjectпо расписанию берет письма и преобразует в задачи.
- Хочется пользоваться им не только дома