[docs] HeapCheck v.0
Fr. Br. George
george на altlinux.ru
Вт Фев 15 14:07:27 MSK 2005
On Tue, Feb 15, 2005 at 11:07:32AM +0300, Kirill Maslinsky wrote:
> Снова привет!
>
> > [2all] Пора задуматься о Сопровождающих модули.
> Уже давно задумались. И даже пришло в голову несколько еретических
> мыслей.
>
> > Вот сопровождающий взялся делать из документа модуль, то есть пакет в
> > Сизиф. Допустим, он преобразовал его в правильный DB. Что с этим DB
> > делать дальше? Надо понимать, что Сопровождающий не обязан иметь доступ
> > к devel:/cvs/docs, да и пользоваться CVSной, то есть рабочей (или
> > нерабочей:) веткой среды сборки ему не стоит.
>
> Давайте для начала определим, что такое модуль и что от него требуется.
>
> Модуль -- это:
>
> 1. Документ из Кучи, у которого есть Сопровождающий.
>
> 2. Документ, доступный для просмотра в формате html.
>
> 3. Документ, снабжённый метаданными в стандартном виде: названием, сведениями
> об авторах, аннотацией, классификацией, ``мягкими'' зависимостями на
> документ(ы) в Куче и версии описываемого ПО, относящийся к определённому срезу
> Сизифа (текущий или один из преждезамороженных).
>
> 4. Документ, для которого есть отдельный пункт в BTS (Bugzilla)
>
> 5. Документ, позволяющий организовать навигацию по модулям без вмешательства
> в содержимое самих html-файлов модулей.
>
> 6. Документ, представленный в виде пакета в Сизифе.
>
(6). Из чего сразу следует (4). Представляется, что, поскольку
электронную документацию мы привыкли оформлять в HTML, (2) является
разумнын требованием. Требования (3) тоже вытекают из (6), а также из
специфики понятия "документ".
Что же касается (5), то, как мне кажется, это требование не к
модулю, а к выпуску. Единственное, что _внутри_ модуля может относиться
к навигации -- это структурные ("Next", "Prev", "Up", "Home") и
контекстные (SEE ALSO) ссылки. Структурные ссылки для модуля ничего не
значат, поэтому их реализацию надо отдать движку (то есть определять на
уровне выпуска). Контекстные ссылки можно делать в виде тех же самых
нестрогих зависимостей, только не на программы, а на другие пакеты с
документацией, которые при формировании HTML-я легко подставить.
Работающие контекстные ссылки _внутри_ модуля -- роскошь, доступная
далеко не всегда. когда-нибудь и до этого дойдём.
> [2all] Технический вопрос: можно ли сделать такой движок, чтобы положенный
> в определённое место html-файл (или html-дерево) отображались бы с
> шапкой и footer'ом с метаданными (автор, название, ссылка на BTS,
> навигация по модулям etc.), а в текст html-страницы при этом не приходилось
> бы вмешиваться или (что гораздо хуже) приходилось бы вставлять туда
> стандартные же header/footer?
По-моему, метаданные модуля -- "автор, название, ссылка на BTS" --
и структура выпуска -- "навигация по модулям etc." -- совершенно разные
вещи. Метаданные можно бестрепетно зашивать в сам модуль, они не
изменятся, в какой выпуск его не положи. А вот структурные ссылки должны
быть пробиты в модуле так, чтобы указывать на разное, в зависимости от
выпуска. При этом, видимо, придётся допустить хранение всех
установленных модулей и выпусков в одной файловой системе, чтобы были
возможны жёсткие ссылки (символьные ссылки mozilla и konqueror
обрабатывают по-разному).
> Еретическая мысль: получается, что требуемый формат модуля html, а из
> какого исходного текста и каким способом собирается этот html, более
> того, как именно размечен текст -- дело Сопрождающего. Нужно только,
> чтобы был движок, описанный в предшествующем абзаце, и чтобы
> html собирался из src.rpm автоматически.
Почему же еретическая? Нормальная мысль, если считать подготовку
документации в HTML основной задачей. А она такая и есть -- всё равно
желающий подготовить печатную документацию будет работать с src.rpm, а
не с rpm.
> Реальная необходимость в стандартной разметке (для каких понятий в тексте
> какие теги использовать) возникает только на стадии выпуска, потому
> что если в разметке будет разнобой, то получится не выпуск, а
> свалка. Если, конечно, набор модулей в Сизифе мы уже считаем
> выпуском, то стандартизация нужна и здесь, но как будто бы это
> только сырьё для будущих выпусков.
Когда мы сделаем удобный (для 80%) движок, позволяющий сознавать
HTML редактированием SPEC-рыбы, большинство, возможно, перейдёт на него
(вместо того, чтобы изобретать граблесипеды самостоятельно). Но и тогда
никто не запрещает встраиваться в эту схему "руками". К тому же в
Сизиф-срезе документации (а организовать такую легче лёгкого --
просто утановил все ALD-пакеты, и всё!) будет хорошо видно, кто чем свой
HTML размечал, и Выпускающий может попинать Сопровождающего заранее.
Другое дело, что печатной документации из src.rpm такого модуля
может не получиться.
> В общем, предлагаю требования к формату разработки перенести на
> уровень выпуска. (Тогда и каждый выпуск сможет предъявлять свои
> требования, ведь у каждого выпуска -- свои задачи. Одно дело -- журнал,
> другое -- документация к дистрибутиву, с большой вероятности они
> потребуют по-разному размеченных документов.)
Тут мысль ещё более еретическая. Если выпуск -- особенно
извращённый, он может понаставить модулей, скопировать их содержимое и
хакать _HTML-и_ до полной неузнаваемости -- хоть руками (в тяжёлых
случаях), хоть скриптом (документы-то все -- автоматически
генерированные).
> IMHO, будет очень полезной возможность выложить текст, к которому
> выставлены все правильные зависимости и пр., в виде модуля, чтобы народ
> мог его читать и править в BTS. Потому что если мы будем ждать,
> пока Сопровождающий изучит docbook или что-нибудь ещё, будет
> ждать и правка документа. Более того, ответственный редактор
> всё равно наверняка переправит разметку Сопровождающего перед
> выпуском. Единственное, что мы должны обеспечить способ
> включать в модуль тексты, ориентированные на определённые выпуски.
Если содержание модуля в одном выпуске не равно содержанию
модуля в другом -- это разные модули. Возможность их повторного
использования в третьем выпуске -- под огромным вопросом. Можно
предусмотреть в модуле структурную ссылку "Специфика выпуска" и
туда вставлять все необходимые комментарии. Сопровождающий не обязан
задумываться о _личных_ нуждах всех потенциальных Выпускающих. В
замороченных случаях (когда модуль наполовину не соответствует особо
извращённому выпуску) можно просто делать одноразовый fork (всё равно
такие одноразовые модули со специфичной для конкретного выпуска
информацией будут).
--
George V Kouryachy (aka Fr. Br. George)
mailto:george at altlinux_ru
Подробная информация о списке рассылки docs