![[personal profile]](https://www.dreamwidth.org/img/silk/identity/user.png)
Вообще обсуждение уже принесло немало интересного, хотя постоянно норовит свалиься куда-то на низкий уровень - в обсуждение шин сообщений и прочих API. А мы вообще-то еще требования к UI не сформулирвали.
Но вот
rainbow_beast просветил меня по поводу разницы между mind maps и concept maps.
Хотя я не уверен, что термин mind mapping не подходит, но все же в названии "Концептуальный интерфейс" что-то есть. Постмодерном попахивает.
На самом деле интерфейс должен быть в первую очередь самообучающим. Не самообучающимся хотя это тоже не повредит, а именно обучающим - self-tutoring или self-сouching. Причем обучать он должен в первую очередь именно конецпциям, лежащим в основе той или иной деятельности за компьютером.
Потому что компьютер это инструмент для множества очень разных задач, все из которых и не упомнишь. Постоянно приходится сталкиваться с вещами, которые несколько лет не делал и все забыл. Вот интерфейс и должен всячески помогать их вспомнить, если забыл, и узнать, если никогда не знал. Mind mapping с фокусом в примерно том же месте где и клавиатурный фокус оконной системы этому может очень неплохо помочь.
Еще интересный вопрос заключается в том, что у человека, сидящего за компьютером есть одновременно несколько контекстов с которыми он работает. Есть собственно компьютер со всем содержимым. Есть сессия, которая где-то больше компьютера - может включать в себя программы, запущенные на других компьютерах и подключенные к компьютеру разнообразные гаджеты, а в чем-то меньше - на компьютере могут одновременно работать несколько пользователей, а еще он всякими своими бэкграундными и серверными делами параллельно занимается.
Есть еще контекст текущей активности. Который тоже может выходить за пределы текущей сессии. Например активность "диалог в чате с другим человеком" явно захватывает кусочек сессии второго собеседника.
Со всеми этими контекстами человек более-менее легко справляется, если хотя бы один раз осознает их. Впрочем, в наше время по-моему ни один житель цивилизованных стран не думает, что в радиоприемнике сидят маленькие человечки, которые поют и разговаривают. Поэтому и общаясь через компьютер с другим человеком, он понимает что этот человек где-то сидит перед своим компьютером.
Вот с определением границ компьютера, сессии и клиент-серверных действий (например web-приложений) сложнее. Иногда даже и программисты не могут сразу сказать что у них выполняется сервер-сайд, а что - клиент-сайд. Хотя это крайне полезно понимать и пользователю хотя бы из соображений безопасности.
Кстати о безопасности, Систему следует планировать исходя из того, что любая из компонент может содержать если не злонамеренный код, то опасные ошибки. И везде где возможно использовать разграничения доступа к памяти, ограничения доступа к файловой системе и т.д. В качестве образца мы имеем по крайней мере две модели - классическую модель Unix и неклассическую Android с контрактами приложений. Там, правда, очень плохо сделано разграничение доступа к файловой системе. Можно еще посмотреть на остерхутовскую модель из SafeTcl.
В общем, получается такая картина - имеются tiled окна. Их немного. Даже на современном экране много tiled окон не расположешь. У окон может иметься довольно широкая рамка, куда выводятся тем или иным способом связанные с основным содержимым окна штуковины. Например, меню - это частный случай набора ассоциирующихся с содержимым окна объектов - команд, которые к этому окну можно применить.
Вокруг области tiled окон имеется рамка экрана. Где показываются какие-то объекты, связанные с сессией в целом или компьютером в целом.
У окна четыре стороны и можно их закрепить за разными типами связей.
Возможно, стоит позаимствовать из Ashton Tate Framework концепцию "изнанки фрейма". Там на изнанке фрейма можно было писать скрипт, генерирующий содержимое фрейма. Здесь более логичным является наличие на изнанке пояснительного (гипер)текста про то что можно с этим фреймом делать. Скрипт там тоже может быть, на то еcть literate programming.
Вообще хочется подложить под это какую-то ассоциативную файловую систему, объединяющую преимущества иерархической и реляционной модели, чтобы связи, скажем файла определенного типа с его возможными обработчиками были видны. Но, возможно, это следует делать уровнем выше.
Идеями Раскина насчет полностью modeless интерфейса злоупотреблять не стоит. Смена взгляда на один и тот же информационный объект иногда вполне оправдана. Но только надо оформить смену режима как переход по ссылке в concepts map. Вот до сих пор это у нас был текст, который мы набирали, и ассоциировался он с набором инструментов для работы с содержимым, а сейчас это стал верстаемый документ, и набор инструментов стал совсем другой.
Но вот
![[livejournal.com profile]](https://www.dreamwidth.org/img/external/lj-userinfo.gif)
Хотя я не уверен, что термин mind mapping не подходит, но все же в названии "Концептуальный интерфейс" что-то есть. Постмодерном попахивает.
На самом деле интерфейс должен быть в первую очередь самообучающим. Не самообучающимся хотя это тоже не повредит, а именно обучающим - self-tutoring или self-сouching. Причем обучать он должен в первую очередь именно конецпциям, лежащим в основе той или иной деятельности за компьютером.
Потому что компьютер это инструмент для множества очень разных задач, все из которых и не упомнишь. Постоянно приходится сталкиваться с вещами, которые несколько лет не делал и все забыл. Вот интерфейс и должен всячески помогать их вспомнить, если забыл, и узнать, если никогда не знал. Mind mapping с фокусом в примерно том же месте где и клавиатурный фокус оконной системы этому может очень неплохо помочь.
Еще интересный вопрос заключается в том, что у человека, сидящего за компьютером есть одновременно несколько контекстов с которыми он работает. Есть собственно компьютер со всем содержимым. Есть сессия, которая где-то больше компьютера - может включать в себя программы, запущенные на других компьютерах и подключенные к компьютеру разнообразные гаджеты, а в чем-то меньше - на компьютере могут одновременно работать несколько пользователей, а еще он всякими своими бэкграундными и серверными делами параллельно занимается.
Есть еще контекст текущей активности. Который тоже может выходить за пределы текущей сессии. Например активность "диалог в чате с другим человеком" явно захватывает кусочек сессии второго собеседника.
Со всеми этими контекстами человек более-менее легко справляется, если хотя бы один раз осознает их. Впрочем, в наше время по-моему ни один житель цивилизованных стран не думает, что в радиоприемнике сидят маленькие человечки, которые поют и разговаривают. Поэтому и общаясь через компьютер с другим человеком, он понимает что этот человек где-то сидит перед своим компьютером.
Вот с определением границ компьютера, сессии и клиент-серверных действий (например web-приложений) сложнее. Иногда даже и программисты не могут сразу сказать что у них выполняется сервер-сайд, а что - клиент-сайд. Хотя это крайне полезно понимать и пользователю хотя бы из соображений безопасности.
Кстати о безопасности, Систему следует планировать исходя из того, что любая из компонент может содержать если не злонамеренный код, то опасные ошибки. И везде где возможно использовать разграничения доступа к памяти, ограничения доступа к файловой системе и т.д. В качестве образца мы имеем по крайней мере две модели - классическую модель Unix и неклассическую Android с контрактами приложений. Там, правда, очень плохо сделано разграничение доступа к файловой системе. Можно еще посмотреть на остерхутовскую модель из SafeTcl.
В общем, получается такая картина - имеются tiled окна. Их немного. Даже на современном экране много tiled окон не расположешь. У окон может иметься довольно широкая рамка, куда выводятся тем или иным способом связанные с основным содержимым окна штуковины. Например, меню - это частный случай набора ассоциирующихся с содержимым окна объектов - команд, которые к этому окну можно применить.
Вокруг области tiled окон имеется рамка экрана. Где показываются какие-то объекты, связанные с сессией в целом или компьютером в целом.
У окна четыре стороны и можно их закрепить за разными типами связей.
Возможно, стоит позаимствовать из Ashton Tate Framework концепцию "изнанки фрейма". Там на изнанке фрейма можно было писать скрипт, генерирующий содержимое фрейма. Здесь более логичным является наличие на изнанке пояснительного (гипер)текста про то что можно с этим фреймом делать. Скрипт там тоже может быть, на то еcть literate programming.
Вообще хочется подложить под это какую-то ассоциативную файловую систему, объединяющую преимущества иерархической и реляционной модели, чтобы связи, скажем файла определенного типа с его возможными обработчиками были видны. Но, возможно, это следует делать уровнем выше.
Идеями Раскина насчет полностью modeless интерфейса злоупотреблять не стоит. Смена взгляда на один и тот же информационный объект иногда вполне оправдана. Но только надо оформить смену режима как переход по ссылке в concepts map. Вот до сих пор это у нас был текст, который мы набирали, и ассоциировался он с набором инструментов для работы с содержимым, а сейчас это стал верстаемый документ, и набор инструментов стал совсем другой.
no subject
Date: 2012-08-14 07:57 pm (UTC)no subject
Date: 2012-08-14 09:32 pm (UTC)Моя работа предполагает, если прикинуть, примерно следующие объекты:
- 1 основной текст. Это не строгий текст в Unix-смысле, я вижу там визуальное форматирование и втягиваемые иллюстрации, но основная информация именно текстовая. Объект редактирования или чтения. Забирает от 50 до 95 процентов внимания в зависимости от ситуации в данный момент.
- От 0 до 10 источников информации к тексту. На них я смотрю тогда, когда мне надо что-то узнать или проверить. Иногда источник бывает один и важный - тогда имеет смысл видеть его tiled с текстом - но чаще их несколько и нужны они урывками, то один, то другой.
- От 2 до 5 фоновых приложений, которым требуется интерфейс, но он должен обращать на себя внимание только когда он нужен (и притом только если ему сейчас это позволено). Чат-клиенты, медиаплеер, VPN-клиент, монитор мобильного инета...
- От 1 до 3 файл-менеджеров или командных строк. Существуют для упрощения доступа ко всему остальному (скажем, найти текст для редактирования проще файл-менеджером чем средствами редактора текста) или же для управления объектами тогда, когда из удобне видеть именованными файлами и не задумываться о том что внутри. Нет, даже самый лучший шелл не заменяет мне файл-менеджер, например потому что я не подписывался запоминать имена файлов или даже их первые буквы.
- Сейчас нет но очень хочется найти - менеджер информации. URLы, телефоны, текущие задачи, календарные назначения... всё что я сейчас скидываю в текстовые файлы. Я хотел бы найти приложение, позволяющее всё это удобно держать в одном месте. Когда я его найду, оно будет постоянно запущено и будет вызываться когда нужно (то есть будет как ещё один чат-клиент, наверное). Кстати, не посоветуешь случаем? Наверное скоро буду про него у себя в ЖЖ спрашивать.
Кроме такой работы, у меня бывают игры или просмотр видео, но там модель совсем простая - основное приложение плюс до 2 источников информации (чаще всего в HTML).
Я не вижу, к какому месту мне ваш тайл. А менять задачу под интерфейс не собираюсь - этот спор мы проходили ещё при обсуждении визуальной вёрстки более 10 лет назад.
no subject
Date: 2012-08-14 09:57 pm (UTC)no subject
Date: 2012-08-14 10:04 pm (UTC)Фоновые приложения, понятно,сидят в notification area, по команде активации (мышь или хоткей - по выбору) - разворачиваются в заранее выбранное место - либо поверх основного текста, либо поверх "панели источников", либо вообще скрывают всё. Либо, что мне оказалось удобнее всего - такие вещи вообще висят на отдельном workspace, куда и происходит переключение по их активации.
Менеджмент информации и тому подобные штуки (словарь, к примеру) внеконтекстны, поэтому открываться, как мне кажется, должны в scratchpad поверх текущих окон - здесь чистый тайл не особо удобен, потому что задолбаешься на каждом workspace прописывать, куда им попадать. У меня в ion так словарь в скратчпаде живёт - очень удобно. Вызывается, понятное дело, по хоткею.
Файлменеджеры и командные строки - на своём рабочем столе. Тамони все видны, но какой-то находится в большом фрейме, остальные - в меньших. По нажатию одной кнопки любой из них может попасть в большой фрейм, поменявшись с тем, что там в данный момент.
Ну а с играми или просмотром видео вообще просто - это живёт на отдельном workspace и открывается обычно на весь экран, скрывая даже notification area. Основное приложение плюс пара источников - тоже не проблема.
В общем, идея - окна объединяются по контекстам и группами раскидываются на разные рабочие столы, причём если есть пачка чего-то однотипного,что не может быть нужноодновременно - такое живёт в одном фрейме, табами. Если это не совпадает с вашив workflow - можно и другое придумать, дайте только начальные условия.
А вообще - спасибо огромное за нетривиальный пример, надо бы их ещё пособирать - глядишь, набор желательных возможностей нарисуется...
no subject
Date: 2012-08-14 10:08 pm (UTC)С другой - такой вариант не дружит со sloppy focus, который хотелось бы оставить - для тайла он абсолютно естественен и экономит клики.
no subject
Date: 2012-08-14 10:13 pm (UTC)Используемая сейчас раскладка - текст на весь экран (кроме таскбара), источники на весь экран переключаемо, остальное popup по необходимости, по занимаемому месту хаотично.
С места, конечно, вижу вариант превратить недостаток 16:9 в достоинство, но на это нужны деньги - взять дюйма 24-26 16:9, создать область для текста размерами 4:3. Но в оставшийся кусочек мне не удастся комфортно поместить источники информации или привычные файл-менеджеры! И если файл-менеджер можно и поменять (ну расположатся там панели вертикально), то источники - нет.
Чтобы тайл стал мне удобен для варианта "зона текста плюс зона источников", мне надо откуда-то взять вертикальный экран, и то в режиме чтения или вычитки удобнее будет расширять текст на всё пространство. Или уж тогда - такой огромный 16:9, чтобы разделить пополам и в обоих частях достаточная ширина. Вот это уже да, всегда быо бы удобнее, но это как бы не 32 дюйма требуется. Не меньше 26 точно. А я между прочим иногда и на ноутбуке работаю, том самом на котором 15 дюймов 16:9.
no subject
Date: 2012-08-14 10:17 pm (UTC)тайл может быть один, но не задействовать четыре его стороны — грех.
верхняя сторона — что-то глобально-системное;
нижняя — история того, чем мы занимались, где мы «были»;
слева — действия с тем, что находится «внутри» тайла;
справа — действия с самим тайлом.
право и лево для левшей/правшей, наверно, будут меняться местами.
ну и, наверно, стоит заложить возможность скрытия/показа границ, и всех сразу, и по отдельности.
no subject
Date: 2012-08-14 10:19 pm (UTC)no subject
Date: 2012-08-14 10:22 pm (UTC)no subject
Date: 2012-08-14 10:24 pm (UTC)no subject
Date: 2012-08-14 10:43 pm (UTC)no subject
Date: 2012-08-14 11:32 pm (UTC)no subject
Date: 2012-08-14 11:35 pm (UTC)вертикальный экран - берем широкий моник на IPS и поворачиваем. IPS - обязателен, тк имеет нормальный угол обзора вне зависимости от направления.
собственно натыкаюсь периодически на такие виды рабочих мест - 26-30" монитор основной, а по бокам 1-2 вертикально повернутых.
PS: могу предложить поискать б/у IBM T220/T221, кстати. с их разрешением все проблемы отпадают, хоть и 22" - 3840х2400.
no subject
Date: 2012-08-15 03:14 am (UTC)Кстати, между прочим по-моему файловый менеджер и терминал это два вида одного объекта - каталога файловой системы. Либо у нас список файлов с возможностью выполнять файловые операции, либо у нас терминал с cwd в этом каталоге.
no subject
Date: 2012-08-15 04:31 am (UTC)no subject
Date: 2012-08-15 05:44 am (UTC)В GUI должна быть единственная кнопка - запустить ещё один xterm.
Кто не может пользоваться таким интерфейсом,
объявляется не владеющим компьютером.
no subject
Date: 2012-08-15 06:10 am (UTC)У тайлов вообще есть принципиальная проблема - нельзя отвести столько места, сколько для того надо, надо отдавать полосу длиной во всю сторону окна.
Если использовать границы окон для контролов приложений, то многих авторов программ не устроит их внешний вид. Кроме того, это по сути те же тайлы, и проблема нерационального использования места для них ещёё более остра - ради пары кнопок я теряю всю полосу.
no subject
Date: 2012-08-15 06:19 am (UTC)Практика показывает, что гибкость, обеспечиваемая произвольно перекрывающимися окнами - избыточна. Многие люди как вот
Тайловая система, под которой я понимаю более-менее произвольное разделение экрана на неперекрывающиеся окна, как в Oberon, vim или emacs, является на мой взгляд, достаточно хорошим компромиссом между многооконностью и полноэкранностью.
no subject
Date: 2012-08-15 06:19 am (UTC)no subject
Date: 2012-08-15 06:24 am (UTC)с одним приложением во весь экран на каждый,
кроме меню/таск/чего-там бара.
И редактор поверх развёрнутого xterm-а.
Для счастья ничего больше не надо.
Ах да - focus follow mouse, это ещё главнее.
no subject
Date: 2012-08-15 06:28 am (UTC)no subject
Date: 2012-08-15 06:28 am (UTC)Тем более что наиболее продвинутые из них таки позволяют использовать плавающие окна. Так что всё это сводится к контролам и прочей вкусовщине.
Причина по которой maemo и android не использовали перекрывающиеся окна, очень проста - ограничение аппаратных возможностей.
no subject
Date: 2012-08-15 06:40 am (UTC)no subject
Date: 2012-08-15 06:44 am (UTC)А вообще говоря, свести тайловый интерфйс к полноэкранному можно всегда. Просто посредтсвом использования дисциплины "один экран - один тайл". Соответсвенно, чтобы возмущаться против тайлового интерфейса надо привести примеры полезного использования именно перекрывающихся окон.
Практика показывает, что если нужно что-то делать с окном, которое закрыто другими окнами, его чаще извлекают наружу с помощью какого-нибудь таскбара или windowlist-а. То есть если мы вместо того чтобы окно скрыать под другими, будем вообще убирать его с экрана, оставляя в таскбаре или иконбоксе, хуже не будет. А если в этом иконбоксе будет показываться не статическая иконка, а обновляющийся уменьшенный вид окна, это покрое и часть задач, для которых полезно видеть торчащий из-под других окон кусочек.
no subject
Date: 2012-08-15 06:44 am (UTC)Мне кажется вполне удовлетворительным показываемое по кнопке меню.