На прошлой неделе на Hacker News появился пост, призывающий разработчиков приложений перестать делать терминальные пользовательские интерфейсы (TUI) и сосредоточиться на графических интерфейсах (GUI). Пост попал на главную страницу HN и вызвал оживлённую дискуссию в комментариях.
У обеих сторон спора есть свои резоны. С одной стороны, GUI-фреймворки в теории обладают более широкими возможностями, чем их TUI-аналоги, поэтому их предпочтение можно понять. С другой стороны, для тех, кто много работает в терминале, TUI-приложения, позволяющие «оставаться» в терминале и закрывать все потребности, ценны сами по себе.
Однако есть один повторяющийся аргумент в пользу TUI, который не выглядит достаточно обоснованным. Перефразируя разных комментаторов:
TUI стоит предпочитать, потому что они управляются с клавиатуры.
Действительно, если случайно выбрать GUI- и TUI-приложение, второе с большей вероятностью окажется полностью управляемым с клавиатуры. Но это не даёт весомого преимущества TUI перед GUI как таковым — это лишь показывает недостатки клавиатурной навигации во многих GUI-приложениях.
Ничто не мешает GUI-приложению быть полностью управляемым с клавиатуры так же хорошо — или даже лучше — чем TUI. Более того, многие руководства по разработке GUI-фреймворков прямо рекомендуют разработчикам обеспечивать поддержку клавиатурной навигации, охватывающей весь функционал приложения.
Например, в Human Interface Guidelines GNOME прямо сказано, что каждое действие, доступное через устройство ввода-указатель, должно быть доступно и с клавиатуры, а также что должна быть возможность перемещаться и взаимодействовать с любой частью пользовательского интерфейса с помощью клавиатуры.
С точки зрения пользователя это разумный подход. Возможность интуитивно и предсказуемо перемещаться по GUI-приложению, используя только клавиатуру, — весомый аргумент в пользу выбора именно этого приложения среди альтернатив.
С позиции разработчика это означает необходимость делать приложения дружелюбными к клавиатуре. При работе над первым собственным GUI-приложением, Klisi, было потрачено время на реализацию клавиатурных сочетаний, покрывающих весь спектр доступных действий.
Клавиатурная навигация в большинстве случаев реализуется без особых сложностей и в итоге улучшает пользовательский опыт. Вопрос здесь не в технической возможности, а в желании разработчика приложения этим заняться.
Вывод простой: не стоит идти на компромисс в пользовательском опыте приложения. Нужно стремиться сделать его максимально интуитивным, и полноценная поддержка клавиатурной навигации — важная часть этой задачи.
Примечания
Или, иначе говоря, текстовых пользовательских интерфейсов.
Автор оригинального поста также упоминает этот момент.
Есть и другие, более веские аргументы в пользу TUI — например, простота переносимости.
Разумеется, точность, достигаемая с помощью мыши, для некоторых задач всё равно предпочтительна — а иногда и необходима.