Перейти к основному содержимому

Опыт переезда с Trello на OpenProject

·1261 слово·6 минут
Управление проектами Project Management Trello OpenProject Импортозамещение self-hosted
Eugene Shishkin
Автор
Eugene Shishkin
Software Developer, Photographer, Astronomer
Оглавление

Около двух лет назад я затеял глобальную инициативу по переезду с сервиса Trello на более открытые аналоги. В феврале 2024 года я полностью завершил переезд и совсем отказался от сервиса. В данной статье опишу опыт переезда, причины, подводные камни, плюсы и минусы конечного решения.

Что такое Trello и почему это перестало меня устраивать
#

Начну немного издалека. С сервисом Kanban досок Trello я познакомился в далёком 2012 году, когда увидел как им пользуются мои коллеги. Меня очень вдохновил такой подход к управлению делами, что я решил попробовать применить его к своим задачам, тогда еще довольно простым.

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

Пример Kanban доски в Trello
Пример Kanban доски в Trello

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

Начиная примерно с 2022 я стал понимать, что Trello как инструмент не обеспечивает всех тех хотелок, которые мне нужны. В дополнение к этому началась волна под названием “мы не работаем в России, идите лесом”, что тоже подстегнуло к поиску новых решений.

Итак, что же меня не устраивало

  1. Несмотря на плюсы Kanban-а в виде наглядности, мне как раз этой наглядности и не хватало
    • Не было возможности удобно работать с иерархией задач/подпроектов
      • В связи с этим возникали сложности с ведением крупных, стратегических проектов, которые содержат десятки и сотни подзадач
      • Порой хотелось создать подпроект под конкретную область, вести в нем какие-то активности, но при этом в родительской задаче видеть общий прогресс
      • Задачи разного уровня иерархии (к примеру, “посмотреть архивный фонд №123”, “посмотреть опись Y из фонда №123 и”посмотреть дело X из фонда №123") были на одной доске, что создавало лишний информационный шум
    • Сложности со связыванием задач друг с другом
      • В Trello можно добиться связности двумя способами: с помощью использования ссылок в чеклистах и с помощью attachment-ов карточки. Для меня оба способа оказались неудобными
    • Я не смог организовать доски в Trello так, чтобы учитывать разный жизненный цикл для разных типов задач
      • Для себя я использую несколько типов задач
        • Initiative - какой-то крупняк на период 2 - 5 лет
        • Epic - крупняк, но поменьше (от месяца до полугода)
        • Story - не в смысле, в котором этот термин используется в Scrum, а для обозначения задач на 1-2 недели трудозатрат
        • Task - простая задача от получаса до пары дней
        • Плюс к этому всякие идеи, цели на квартал/год
      • Хранить все это на одной доске - боль, т.к. доска становиться слишком перегруженной
      • Хранить на разных досках - тоже боль, т.к. теряется та самая наглядность и не понятно какая User Story к чему относится
  2. Возможность потерять все данные за несколько лет из-за того, что у меня паспорт не той страны по мнению владельцев сервиса
    • Пока еще сервис доступен, но гарантий, что он будет доступен, конечно же нет
    • Хотелось держать всю инфраструктуру у себя, чтобы не как можно меньше зависеть от внешних факторов

В общем, я хотел как в 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 в качестве БД.

Краткое описание алгоритма миграции приведено ниже

  1. Сделать резервную копию всех досок Trello в виде json файла через стандартный интерфейс в браузере
  2. Написать парсер json файла, который конвертирует json в промежуточное представление (тоже json, но другой структуры)
    1. Цель преобразования - иметь одну сущность “задача”, к которой привязаны все связанные сущности (“комментарий”, “чеклист”, “события”). В оригинальном json от Trello эти данные разбиты по разным полям в json-е
  3. Написать простой скрипт, который по входящему json-у создает задачи через REST API в OpenProject
  4. Поправить даты создания задач и комментариев через SQL скрипт, т.к. API OpenProject не позволяет указать время создания задачи в HTTP запросе

Однако, непредвиденная проблема возникла на первом шаге и оказалось, что при экспорте json-а из Trello теряются некоторые события у задач. События - это комментарии, события о создании, события о закрытии, события об изменении атрибутов карточки. Опытным путем выяснилось, что есть какой-то лимит по количеству данных. Поэтому первый пункт получил такую формулировку

  1. Получить токен для обращения к API Trello
  2. Написать скрипт, который принимает на вход идентификаторы досок, делает запросы к API и формирует json в том же формате, который получается при экспорте

Набор утилит для работы с Trello и OpenProject можно найти в моём github-е

Спустя год
#

По большей части каких-то серьёзных проблем с использованием я не заметил. Удалось выстроить удобную систему, где есть понимание того, как конкретная задача влияет на другие и на весь проект в целом. Систему, в которой понятно приближает ли выполнение задачи к конечной глобальной цели или нет.

Из минусов своего подхода замечу следующие

  • Нет мобильного приложения, только web версия
  • Порой не хватает повторяющихся задач и автоматизации
  • Решение поднято как localhost сервис, который запускается только когда включен компьютер
    • Хочется пользоваться им не только дома
      • Не хочется покупать VPS для этого
    • Решил тем, что данные для Postgres монтирую как volume в docker, а сами данные синхронизирую между машинами (рабочей и домашней) средствами rclone
    • Для создания задач с телефона настроил отдельную почту из которой OpenProjectпо расписанию берет письма и преобразует в задачи.