Привет! Меня зовут Арсен Абдусаламов, я тимлид Авито Авто. Недавно я наткнулся на статью Томаса Птачека Stop Making TUIs, и она меня зацепила настолько, что захотелось развернуть дискуссию.
Автор рассказывает, что недавно увлёкся созданием нативных интерфейсов для macOS: написал просмотрщик Markdown (MDV.app), фронтенд для SageMath, музыкальный плеер, вики-помощника, трекер макронутриентов и пульт для Apple TV. Причём код всех этих интерфейсов был практически полностью сгенерирован AI-агентами — сам он почти не участвовал в их написании. «Создание хорошего UI — это очень тяжёлая работа: подобный код утомителен, однообразен, требует высокой точности и глубокого знания специфики платформы. Требуются годы, чтобы научиться хорошо выполнять такую работу. Именно поэтому я бы никогда не стал писать эту программу вручную», — так Птачек описывает свой опыт создания приложения MDV.app.
Далее автор проводит разграничение между CLI — интерфейсами командной строки и TUI — терминальными пользовательскими интерфейсами. Он пишет, что и первое, и второе является наследием 1970-х годов и ограничений телетайпов, но если CLI имеют незаменимые сценарии использования и их создание почти всегда оправдано, то TUI, по его мнению — это устаревшие, враждебные и ограниченные интерфейсы, которые исторически существуют только по двум причинам: из-за модемов и из-за нежелания Unix-разработчиков изучать такие фреймворки, как Motif.
Автор считает, что сегодня, когда AI-агент может написать нативный GUI за вечер, создавать новые TUI попросту незачем. «Даже с хорошим фреймворком, таким как Ratatui, Textual или Bubbletea, вы боретесь с терминалом, чтобы приблизиться к тому, что каждый нативный фреймворк предоставляет из коробки, — говорится в статье. — Вы можете потратить время и реализовать вполне рабочие версии множества стандартных TUI-виджетов: выбор даты, поле для ввода пароля, индикатор выполнения, текстовый редактор. Но большинство из них будет уступать системным аналогам, а их интеграция в общий макет потребует дополнительных усилий».
Похоже, автор только что обнаружил, что GUI не кусается. Радость понятная. Беда в том, что от «я научился» он тут же прыгает к «а вы все зря мучились»: мол, кто десятилетиями терпел ASCII и гордился этим как настоящий сисадмин — тот сам себе враг. Берите свой голый CLI, заворачивайте в нативное приложение — и разработка откроется вам с другой стороны. И вот здесь, на мой взгляд, стоит притормозить и разобраться в деталях.