habrahabr

Пора перестать сохранять

  • суббота, 5 апреля 2014 г. в 03:10:36
http://habrahabr.ru/post/218201/

Немного лирики


Как-то раз, примерно полгода назад, при переезде с одной квартиры на другую в одной из бесконечных коробок обнаружился архив аудиокассет — штук 30. Этот набор долёживал там свой век, хотя последний магнитофон, способный проигрывать кассеты, сломался года за три до этого.
Моя 9-летняя дочь, наткнувшись на эту коробку, взяла одну из этих кассет в руки, повертела и спросила: «Папа, а что это?».
Конечно, если задуматься, в этом нет ничего удивительного. Новое поколение, рожденное после 2000, уже не видело ни кассет, ни дискет.



И что-то мне подсказывает, что поколение, родившееся после 2020, не увидит уже и компакт дисков — все планомерно уходит на всевозможные флешки и карты памяти, а в перспективе и обмен, и хранение (благодаря «облакам»), и ритейл софта/фильмов/музыки (благодаря Стиву Джобсу) уйдут в «онлайн». Я и сам больше уже не записываю полюбившиеся фильмы на болванки.

Гонка


Дизайнеры пользовательских интерфейсов начали замечать такую тенденцию какое время назад. И в некоторых программах, разработанных за последние 10 лет, можно в качестве иконки для кнопки «Сохранить» заметить стилизованное изображение какого-то накопителя HDD. Иногда даже с изображением круглого диска. Наверное, не стоит и напоминать, что современные накопители все чаще уже являются не Hard Disk Drive, а Solid State Drive, где никаких «дисков» уже нет и в помине. И эти иконки придется перерисовывать заново: на этот раз без диска, снова упражняясь в придумывании новых метафор со стрелочками.



Некоторые компании как Microsoft, в этой «гонке» решили не участвовать и сохраняют иконки с дискеткой до настоящего дня. Видимо решив, что User Experience важнее, чем гонка за постоянно меняющимися технологиями.

Но это не решение проблемы, а отрицание ее существования. Рано или поздно и Microsoft придется что-то рисовать взамен. Потому что не останется уже и дизайнеров, которые будут понимать, что же это за синий квадратик.



Эра «онлайн»


По другому пути развиваются продукты нового типа — «облачные» системы обработки документов, где все изменения сохранены в каждый момент времени. Один из самых первых и ярких примеров такого подхода: Google Docs Spreadsheet, где многопользовательское редактирование в принципе требует постоянного сохранения (во избежание отложенных конфликтов), а кнопка «Сохранить», таким образом просто исключается за ненадобностью.

Но у такого подхода есть обратная сторона: сложность с отменой большого куска изменений. Т.е., например, если я хочу немного поиграться с документом, а потом вернуться к начальной версии, то единственный способ, как я это могу сделать — это создать копию документа и работать с ней. А потом ее удалять или мириться с тем, что вместо одного документа у меня теперь валяется два, три и т.д.

Так что же делать?


Для ответа на этот вопрос надо взглянуть немного глубже в суть проблемы «сохранения».
Эта операция возникла изначально, как способ переноса данных из оперативной памяти (где данные не могут находиться долго) в память долгосрочную (где они за одно могут быть и транспортированы в другое место). Т.к. системы долгосрочного хранения информации были достаточно медлительными, то такая операция выполнялась обычно после окончания работы с документом или какой-то его частью.

Потом, когда с изобретением HDD проблема медленного сохранения исчезла, необходимость выполнения этой операции пользователем, по сути, стала только мешать — у каждого хоть раз в жизни была ситуация, когда пропадал результат большой работы из-за неожиданного зависания или отключения компьютера. «Надо было нажать Ctrl+S» — говорил тогда тебе сосед сочувственно. Этот условных рефлекс, выработанный годами, побуждает меня сейчас, пока я набираю этот текст в браузере, нажать что-нибудь, что сохранило бы этот немаленький текст. (тут был сделан <Save>).

Суть же состоит в том, что препятствий для автоматического сохранения работы пользователя больше не существует! Ни скорость операции (в крайнем случае, все можно делать асинхронно), ни объемы накопителей больше не играют никакой роли в обработке документов. Т.е. пункт первый: автоматическому сохранению быть!
Тут велосипеда мы не изобретем, т.к. тот же Microsoft Office делает автоматические «сэйвы» с некоторой периодичностью.

Все новое — это еще не забытое старое


Но как же быть с возможностью отказа от своих изменений, т.е. выходе без сохранения? Как вернуться к прошлой версии документа?
Погодите-ка… Где-то я это уже слышал! Это же классический пример сценария использования «системы контроля версий» (VCS — Version Control System), знакомого любому программисту.
Т.е. все что надо сделать — это добавить возможность отката к предыдущей версии. Но что же такое «предыдущая версия» в случае документа Microsoft Word? Нам надо каким-то образом отметить «точку» в истории редактирования документа, которая является «предыдущей версией». Опять не будем изобретать велосипед и назовем это действие «Create Save Point», «Make Snapshot», «Save Revision» или даже «Save Version». Здесь мы можем указать название или комментарий для этой версии для того чтобы в дальнейшем иметь понятие о том, что за правки мы там внесли.

Заметьте, что кнопка «Сохранить» больше не нужна, и «дискетка» уходит на заслуженный отдых. Программа теперь просто должна сохранять все внесенные изменения без какой-то дополнительной команды со стороны пользователя.

Ну, конечно, нам потребуется еще интерфейс просмотра истории и загрузки версий («ревизий») документа. Но это уже мелочи.

Плюшки



Что мы можем сделать еще интересного — так это добавить ветвлений по аналогии с ветками систем контроля версий. Причем никаких новых кнопок «Создать ветку» заводить не надо. Ветвление будет происходить естественным образом, как только я начну редактировать одну из ранее сохраненных версий.


Disclaimer


Не исключаю, что я все же изобрел велосипед и описал что-то, уже существующее в реальных продуктах. Тем лучше для всех нас: надо брать пример.