На прошлой неделе на 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, было потрачено время на реализацию клавиатурных сочетаний, покрывающих весь спектр доступных действий.

Клавиатурная навигация в большинстве случаев реализуется без особых сложностей и в итоге улучшает пользовательский опыт. Вопрос здесь не в технической возможности, а в желании разработчика приложения этим заняться.

Вывод простой: не стоит идти на компромисс в пользовательском опыте приложения. Нужно стремиться сделать его максимально интуитивным, и полноценная поддержка клавиатурной навигации — важная часть этой задачи.

Примечания
  1. Или, иначе говоря, текстовых пользовательских интерфейсов.

  2. Автор оригинального поста также упоминает этот момент.

  3. Есть и другие, более веские аргументы в пользу TUI — например, простота переносимости.

  4. Разумеется, точность, достигаемая с помощью мыши, для некоторых задач всё равно предпочтительна — а иногда и необходима.