[devel] MIME Revolution!

Paul Wolneykien manowar на altlinux.org
Чт Апр 14 22:16:47 UTC 2011


14.04.2011 14:48, Андрей Черепанов пишет:
>>   Предлагаю формировать списки программ иерархически: сперва по
>> > категории материала, с которым идёт работа (звук, текст, изображения,
>> > видео, модели, схемы, формулы...), а затем по характеру обработки (только
>> > чтение/просмотр, чтение/просмотр/модификация). Приоритет проставить
>> > только отдельным категориям/подкатегориям (к примеру, просмотр фильма
>> > является гораздо более распространённой операцией нежели его
>> > редактирование), а вопрос о приоритете отдельных программ, попавших в
>> > одну и ту же категорию/подкатегорию (vim и emacs) предлагаю не обсуждать
>> > вовсе и для начала присвоить им всем одинаковый приоритет.
> Присоединяюсь. Это будет ноамного проще, да и релиз-менеджерам проще 
> определять состав приложений по умолчанию для дистрибутива.

  Тогда давайте сначала рассмотрим не категории файлов, а то, какие
операции являются типичными и распространёнными, и придумаем им
имена-теги. Если предложенная выше система получит развитие, то нужно
будет пройтись по всем пакетам и проставить данные теги. Несмотря на
громадный объём работы, спасает здесь то, что расстановка таких тегов
должна быть выполнена объективно, согласно фактическим возможностям
программ, а значит работу могут вести параллельно сразу много человек.

  Если программа имеет несколько режимов работы, то каждый из этих
режимов может быть снабжён отдельным набором тегов. Фактически, для
данной классификации несколько режимов работы одной программы — это
несколько разных программ.

  Предлагаю рассмотреть следующие стандартные операции, перечисленные ниже.

  0. show — демонстрация готовых работ (презентаций, электронных книг,
фильмов). Обязательным условием является наличие у программы функции
демонстрации на полный экран. Функции редактирования, напротив, являются
негативным фактором для данной операции (они будут попросту мешать
пользователю), поэтому присутсвие тега show не допускает присутсвия
любого из тегов edit/* и даже minedit/*.

  1. play — возпроизведение записи (звукозаписей и видеоматериалов).
Аналогично show, но возможность демонстрации на полный экран не является
обязательным условием.

  1.1 play/enqueue — добавление записи в очередь воспроизведения.

  2. view — просмотр материала/документа (изображения, фотографии,
чертежа, схемы, таблицы). Аналогично show, но возможность демонстрации
на полный экран не является обязательным условием. Данный тег запрещает
присутсвие любого из тегов edit/*, но совместим с остальными тегами (в
том числе, с minedit/*).

  3. minedit — просмотр с минимальным набором инструментов для
редактирования (поворот изображения, редактирование тегов). Важно, чтобы
набор функций редактирования был относительно мал, по сравнению с
другими программами, а само редактирование не влекло бы за собой искажений.

  3.1. minedit/lossy — просмотр с минимальным набором инструментов для
редактирования, не застрахованного от внесения искажений. Установка
данного тега означает, что модификация файла может повлечь за собой
искажения (пример — масштабирование изображения).

  3.2. minedit/fillin — редактирования документа с различными
ограничениями, призванное заполнить пропуски. Яркий пример — заполнение
форм, отсюда и название тега.

  4. edit — прямое редактирование файла (без изменения его представление
и/или формата). Модификация файла не должна вести за собой изменение его
представления (например, gimp может импортировать векторную графику, но
представление будет уже растровое, так что данный тег ставить для PS/PDF
файлов в gimp нельзя). Модификация файла должна производится без искажений.

  4.1. edit/lossy — прямое редактирование файла, не застрахованное от
внесения искажений.

  4.2. edit/convert — редактирование представления файла в другом
формате. Установка данного тега означает, что сохранение
отредактированного файла в исходном формате невозможно. Однако внесение
искажений не допускается.

  4.3. edit/convert/lossy — редактирование представления файла в другом
формате, допускающее внесение искажений. Например, импорт векторной
графики в программу редактирования растрового изображения. Данный тег
допускает, что импортированное представление может отличаться от
оригинала. Внесение искажений также допускается.

  5. convert — преобразование файла в другой формат без внесения искажений.

  5.1. convert/lossy ­— преобразование файла в другой формат допускающее
внесение искажений.

  6. print — печать файла.

  6.1. print/enqueue — добавление файла в очередь печати.

  7. publishing — публикация файла.

  8. send — отправка файла.

  9. compress — сжатие (архивация) файла без внесения искажений.

  9.1 compress/lossy — сжатие (архивация) файла, допускающее внесение
искажений (а есть такое?).

  10. check — проверка файла на корректность.

  11. compile — компиляция и трансляция файлов.


  Далее, зная какая программа что у нас умеет, можно будет для каждого
типа файла выработать приоритетный порядок операций (и отображать их в
меню, если файловый менеджер это допускает, причём именно как операции,
а не как названия программ). Другое дело, что информации об одном лишь
типе файла может быть недостаточно для совершения правильного выбора:
например, для PDF, на первый взгляд, достаточно view, но если в нём есть
поля, открытые для редактирования, тогда, очевидно, minedit/fillin.
Подобная классификация подталкивает к тому, чтобы утилита file и ей
подобные, стали умнее.


    Паша.


Подробная информация о списке рассылки Devel