Когда desktop-приложение на Go перестаёт влезать в консоль, выбор встаёт между двумя мирами: графическим и терминальным. Fyne рисует настоящие окна через OpenGL/Metal с виджетами, темами и сборкой под Android/iOS. Bubble Tea из экосистемы Charm строит богатые интерфейсы внутри любого терминала по Elm-архитектуре — Model, Update, View. Оба подхода — «интерфейс как код», но для разных пользователей.
Fyne подходит там, где ожидается привычное приложение: окна, кнопки, формы, вкладки, файловые диалоги. Разработка идёт по паттерну «сцена из контейнеров»: виджеты компонуются в Box/Grid, события вешаются на callbacks, состояние обновляет Refresh. Бонус — fyne-cross собирает бинарь под Windows/macOS/Linux и мобильные платформы. Виртуальный экран на нашей витрине показывает 18 работающих fyne-приложений — от калькулятора до Kanban-доски.
Bubble Tea выигрывает в среде разработчиков и DevOps: интерфейс живёт в SSH-сессии, не требует GUI-подсистемы и работает везде, где есть терминал. Elm-архитектура делает состояние предсказуемым: клавиши и таймеры приходят сообщениями в один Update, View — чистая функция от модели. Липглосс стилизует панели и цвета, bubbles предоставляет готовые компоненты — текстовые поля, списки, спиннеры, таблицы. Наш виртуальный терминал исполняет настоящие Bubble Tea-программы прямо на странице урока.
Если пользователь — обычный человек с мышкой, выбор почти всегда Fyne. Если интерфейс нужен в терминале — на сервере, в CI, через SSH — Bubble Tea безальтернативен. Ниже сравнение по критериям и один и тот же «список задач» в обоих фреймворках.