Based on Dos Navigator (C) 1991-1999 RIT Research Labs
Дата последней модификации документа: Tuesday February 20 2001
Dos Navigator Open Source Project — это проект развития популярной оболочки Dos Navigator (DN) коллективными усилиями открытой группы программистов.
Программисты, участвующие в проекте, не получают от этого материальной выгоды, однако каждый из них упоминается в списке авторов каждой последующей версии DN. Участники проекта должны быть готовы к тому, что написанные ими исходние тексты будут распространяться публично и подлежать свободному использованию и модификации при сохранении авторства.
Не возбраняется создание сторонними фирмами и коллективами программистов продуктов, основанных на Dos Navigator Open Source. Однако при этом обязательно выполнение следующих условий:
Hевыполнение этих тpебований считается наpyшением автоpских пpав yчастников пpоекта.
Коллектив участников проекта является открытым, для входа в него или выхода из него не требуется никакой регистрации.
В обязанности координатора проекта входит аккумуляция изменений, сделанных участниками проекта, сборка очередной версии DN, тестирование нововведений в условиях совместного функционирования и регулярный выпуск новых версий.
Все сделанные изменения участники проекта отправляют координатору на уровне исходных текстов. Способы связи с координаторами проекта указаны в конце этого документа.
Должность координатора является выборной. При невозможности или нежелании со стороны действующего координатора продолжать координирование проекта, выражающемся в соответствующем публичном заявлении или же в отсутствии связи с участниками проекта в течение более чем месяца, задержке в выпуске новых версий DN более чем в один месяц или в исчезновении более чем на две недели без предварительного назначения заместителя, а также при публичном выражении большинством участников проекта недовольства работой координатора за период с последнего избрания, назначаются выборы координатора. Координатор избирается простым большинством голосов подписчиков эхоконференции Fidonet RU.SHELL.DN из числа выставивших свою кандидатуру.
Для обсуждения деталей проекта и рабочей связи между его участниками, если таковая представляет интерес для большого числа подписчиков, а так же для обратной связи с пользователями DN служит эхоконференция RU.SHELL.DN. Hастоящий документ засылается в эхоконференцию RU.SHELL.DN ежемесячно или немедленно после внесения в него изменений. Изменения в документе отмечаются знаками [NEW] и [CHANGED] в содержании.
Тем, кто имеет такую возможность, рекомендуется отсылать копии этого документа в эхоконференции Fidonet смежной тематики (оболочки, программирование), а также в другие информационные сети.
Приветствуется локализация продукта для различных языков путем создания новых комплектов языковых ресурсов (но не путем создания отдельной версии DN). Если Вы решили начать локализацию DN для некоторого языка, Вам следует связаться с координатором проекта (способы связи с координатором указаны в конце настоящего документа).
Приветствуется перевод настоящего документа на другие языки.
Предпочтительно присылать координатору сделанные изменения в форме патчей. Данная система широко применяется в различных масштабных проектах. В качестве примера можно привести ядро операционной системы Linux, текущие исходные тексты которого можно найти на ftp://www.kernel.ru.org/pub/Linux/kernel/.
Патч представляет собой текстовый результат сравнения двух файлов или каталогов с файлами, сохраненный в такой форме, что затем его можно применить к одному из этих файлов (каталогов) и тем самым привести его к виду другого.
Так, в настоящем прокете патчи представляют собой результат сравнения каталогов с исходными текстами DN. Первый из них должен быть текущей (опорной) версией DN, а второй — той же версией, но с некоторым внесенным изменением.
Для создания патчей служит утилита diff, перенесенная из операционных систем UNIX и работающая в настоящее время как в консольном режиме Win32, так и 32-разрядном защищенном режиме DOS — DPMI (DOS/4GW). Пожалуйста, убедитесь, что Вы пользуетесь перенесенной версией diff не ниже PORT.2, так как предыдущая версия могла выдавать некорректные результаты. Полное описание утилиты diff, равно как и ее исходные тексты, можно получить у координатора проекта.
Сравнение двух каталогов следует осуществлять так:
diff -urN каталог_опорной_версии каталог_измененной_версии > файл.patch
Здесь считается, что текущий каталог является родительским для обоих сравниваемых подкаталогов. Описание опций -u, -r и -N (их можно соединять в одну) можно найти в тексте встроенной справки:
diff --help | more
Все опции являются регистро-зависимыми (это стандарт в UNIX).
Рекомендуется следующая форма наименований для файлов с патчами:
dn-опорная_версия-предметная_область.patch
Hапример:
dn-1-51-phonebook-export.patch
Изменения могут затрагивать более одного файла, могут включать новые (добавленные) файлы, а также распространяться на иные типы текстовых файлов, помимо pas (например, файлы описания ресурсов).
Hе следует в одном патче сочетать не связанные между собой изменения.
Вашему вниманию предлагается шаблон описания, которым настоятельно рекомендуется сопровождать каждый патч. Рекомендуемая форма имени для описания:
dn-опорная_версия-предметная_область.info
Пожалуйста, воздержитесь от использования в именах патчей и сопроводительных описаний пробелов, а также более чем одной точки, чтобы не создавать проблем в некоторых операционных системах.
Оба этих файла следует упаковавать вместе архиватором, поддерживающим длинные имена файлов (рекомендуется WinZip - http://www.winzip.com/), причем имя архива должно быть коротким, что позволяет избежать разного рода проблем при пересылке. Такие архивы имеют относительно небольшой размер, что позволяет отправлять их нетмейлом в UU-кодированном виде.
Рекомендуется давать этим архивам имена, начинающиеся с двух последних цифр номера опорной версии, например, 01dsvcen.zip для патча, основанного на версии DN 1.51.01.
Участники проекта, не имеющей технической возможности создавать архивы с патчами в точном соответствии с вышеприведенными рекомендациями, могут не придерживаться последних. В этом случае упомянутые архивы следует отправлять координатору лично.
Поскольку в проекте участвует значительное количество программистов, желательно следовать приведенным ниже рекомендациям, чтобы облегчить совместную работу.
Проект в настоящее время является международным, поэтому все комментарии в исходных текстах следует писать на английском языке.
При необходимости внести правку в языковые ресурсы следует изменять ресурсы только для тех языков, которыми Вы владеете. Обязательно указывайте в сопроводительном описании, для каких именно языков ресурсы были изменены. Координатор выполнит недостающие правки самостоятельно или свяжется с носителями остальных языков для получения перевода.
Все сообщения, текст, диалоговые окна и другие элмементы пользовательского интерфейсаа должны быть локализуемыми, то есть опираться на содержимое языковых ресурсов. Исключение могут составлять только некоторые сообщения о фатальных ошибках и другие случаи, когда доступ к языковым ресурсам невозможен по техническим причинам.
Если изменено или добавлено несколько строк, следует отметить эти строки комментарием с именем или псевдонимом участника проекта, например, { X-Man }. Если же добавлена большая группа строк, например, целая функция, следует отметить ее начало и конец коментариями с именем или псевдонимом участника проекта, каждый из которых занимает по одной целой строке.
При добавлении константы в некоторую группу числовых констант (например, cmXXXX), следует выбирать первое неиспользуемое значение вместо того, чтобы производить сдвижку значений для некоторого количества других констант.
Если патч вводит новую возможность, являющуюся достаточно самостоятельной в том смысле, что она может быть легко исключена без потери другой функцио нальности, эту возможность следует сделать отключаемой на стадии компиляции путем окружения новых фрагментов кода директивами условной компиляции и определения нового условного символа в файле stdefine.inc.
В случае добавления возможностей, действие которых основывается на каких-либо особенностях или сервисах виртуальной машины DOS в той или иной операционной системе, следует перед использованием упомянутых особенностей или сервисов произвести проверку на их доступность или общую проверку на операционную систему. Для проверки на операционную систему следует анализировать значение переменной opSys, определенной в модуле Advance. Там же определен набор констант, комбинацию из значений которых эта переменая может принимать. Наличие более одного бита в значении opSys означает, что окружение сочетает в себе свойства двух операционных систем (такое возможно, например, в эмуляторах). При необходимости следует расширять этот набор и добавлять проверки на другие операционные системы в тело процедуры CheckOS.
Не следует включать в патч обновление файла history.txt и добавление имени в файл authors.txt и в список авторов для About Box. Эти изменения производит координатор проекта.
Для примененя патчей служит парная к diff утилита patch. Полное описание утилиты patch, равно как и ее исходные тексты, можно получить у координатора проекта.
Для применения патча следует использовать команду:
patch -p1 < файл.patch
(Считая, что используется перенесенная версия patch не ниже PORT.2.)
При этом считается, что текущим является каталог с текущей версией DN (имя этого каталога не имеет значения).
Версия исходных текстов, к которым применяется патч, не обязана быть идентична опорной. Hа практике это означает, что утилита patch имеет некоторую толерантность к изменению исходных текстов, и патч может применяться к текстам, к которым ранее был применен какой-либо другой патч. Однако накопление изменений в исходных текстах может привести к исчерпанию толерантности patch, поэтому все новые патчи следует создавать, опираясь на последнюю доступную версию исходных текстов.
Если патч уже был применен к данной версии исходников, утилита patch автоматически распознает эту ситуацию и будет действовать в режиме reversed, то есть удалит уже примененный патч, не затрагивая другие.
Распространение новых версий DN осуществляется координатором проекта. Для этого используется файлэхоконференция NAVIGATOR. Кроме того, новые версии DN доступны по следующим адресам в Internet:
Каждая новая версия DN выходит одновременно в виде нескольких пакетов:
Последний пакет содержит скринсейверы, таблицы перекодировки, значки для Windows, а также примеры текстовых файлов настройки. Этот пакет выходит не с каждой версией, а только тогда, когда это необходимо.
Все четыре пакета включают список авторов (authors.txt) и историю модификаций (history.txt), а также настоящий документ (dnosp.txt). Пакет исходных текстов, кроме того, включает шаблон описания патча (template.txt). История модификаций за период разработки и поддержки DN фирмой RIT Labs вместе с информацией об авторских правах фирмы RIT Labs вынесена в отдельный файл (ritlabs.txt).
С некоторыми версиями могут выходить также другие пакеты, например, наборы локализации для некоторых языков.
Одновременно с каждой новой версией выходят еще два файла:
По мере необходимости могут выходить бета-версии. Бета-версия — это служебный выпуск, предназначенный исключительно для тестирования, не для обычной эксплуатации. Желающих заниматься бета-тестированием убедительно просят сообщить об этом координатору проекта, указав номер версии, подлежащей тестированию, а также конфигурацию своих аппаратных и программных средств (независимо от того, занимались ли Вы бета-тестированием предыдущих версий).
Во время бета-состояния новая бета-версия выходит всякий раз, когда с момента выпуска предыдущей версии проходит две недели и уже применено не менее двадцати патчей, или же когда проходит четыре недели.
Первый координатор:
Максим Васильев (Max Vasilyev)
2:5057/33.36@fidonet
piwamoto@pisem.net
http://www.sama.ru/~piwamoto/
Второй координатор:
Евгений Звягинцев (Eugeny Zvyagintzev)
2:5004/18.60@fidonet
john@omsktyre.com