==============================================================================
                      Dos Navigator Open Source Project
            Based on Dos Navigator (C) 1991-1999 RIT Research Labs
==============================================================================

    Дата последней модификации документа: Среда 28 ноября 2001

                                  Содержание

 1. Общие положения
 2. Создание патчей
 3. Стиль программирования
 4. Применение патчей
 5. [CHANGED] Распространение новых версий DN
 6. [CHANGED] Координаторы проекта

                              1. Общие положения

    Dos Navigator Open Source Project - это проект развития популярной оболоч-
 ки Dos Navigator (DN) коллективными усилиями открытой группы программистов.
    Программисты, участвующие в проекте, не получают от этого материальной вы-
 годы,  однако каждый из них упоминается в  списке авторов каждой  последующей
 версии DN.  Участники проекта  должны быть готовы к тому,  что написанные ими
 исходние тексты будут  распространяться публично  и подлежать  свободному ис-
 пользованию и модификации при сохранении авторства.
    Не возбраняется создание  сторонними фирмами и  коллективами программистов
 продуктов, основанных на Dos Navigator Open Source. Однако при этом  обязате-
 льно выполнение следующих условий:
     1. Сохранение имен всех участников и координаторов проекта в окне About и
        файле authors.txt, входящем в поставку всех новых версий
     2. Сохранение в комплекте поставки файлов dnosp.txt и authors.txt
     3. Внесение в окно  About и текстовую  документацию информационной строки
        "Based on Dos Navigator Open Source"
    Невыполнение этих требований считается нарушением  авторских прав участни-
 ков проекта.
    Коллектив участников проекта является открытым, для входа в него или выхо-
 да из него не требуется никакой регистрации.
    В обязанности координатора проекта входит аккумуляция изменений, сделанных
 участниками проекта, сборка очередной версии DN,  тестирование нововведений в
 условиях совместного функционирования и регулярный выпуск новых версий.
    Все сделанные изменения участники проекта отправляют координатору на уров-
 не исходных текстов.  Способы связи с координаторами  проекта указаны в конце
 этого документа.
    Должность координатора является выборной.  При невозможности или нежелании
 со стороны  действующего координатора продолжать координирование проекта, вы-
 ражающемся в соответствующем публичном заявлении  или же в отсутствии связи с
 участниками проекта в течение более чем месяца, задержке в выпуске новых вер-
 сий DN более чем в один  месяц или в исчезновении более чем на две недели без
 предварительного  назначения  заместителя,  а также  при публичном  выражении
 большинством участников проекта недовольства работой координатора за период с
 последнего избрания, назначаются выборы координатора.  Координатор избирается
 простым большинством  голосов подписчиков  эхоконференции Fidonet RU.SHELL.DN
 из числа выставивших свою кандидатуру.
    Для обсуждения деталей проекта и рабочей связи между его участниками, если
 таковая представляет интерес для большого числа подписчиков, а так же для об-
 ратной связи с пользователями DN служит эхоконференция RU.SHELL.DN. Настоящий
 документ  засылается в  эхоконференцию RU.SHELL.DN  ежемесячно или немедленно
 после  внесения в него  изменений.  Изменения в документе  отмечаются знаками
 [NEW] и [CHANGED] в содержании.
    Тем, кто имеет такую возможность, рекомендуется отсылать копии этого доку-
 мента в эхоконференции Fidonet смежной тематики (оболочки, программирование),
 а также в другие информационные сети.
    Приветствуется локализация  продукта для различных  языков путем  создания
 новых комплектов языковых  ресурсов (но  не путем  создания отдельной  версии
 DN).  Если Вы решили начать локализацию DN для некоторого языка,  Вам следует
 связаться с  координатором  проекта  (способы связи с  координатором  указаны
 в конце настоящего документа).
    Приветствуется перевод настоящего документа на другие языки.

                              2. Создание патчей

    Предпочтительно присылать координатору сделанные изменения в форме патчей.
 Данная система широко применяется в различных масштабных проектах. В качестве
 примера можно привести ядро операционной системы 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
    Например:
        dn-1-51-phonebook-export.patch
    Изменения могут затрагивать более одного файла, могут включать новые  (до-
 бавленные)  файлы, а также  распространяться на иные  типы текстовых  файлов,
 помимо pas (например, файлы описания ресурсов).
    Не следует в одном патче сочетать не связанные между собой изменения.
    Вашему вниманию предлагается  шаблон описания,  которым настоятельно реко-
 мендуется сопровождать каждый патч. Рекомендуемая форма имени для описания:
        dn-опорная_версия-предметная_область.info
    Пожалуйста, воздержитесь от использования в именах патчей и сопроводитель-
 ных описаний пробелов, а также более чем одной точки, чтобы не создавать про-
 блем в некоторых операционных системах.
    Оба  этих  файла следует  упаковавать вместе  архиватором,  поддерживающим
 длинные имена файлов (рекомендуется WinZip - http://www.winzip.com/),  причем
 имя архива должно быть коротким,  что позволяет избежать разного рода проблем
 при пересылке. Такие архивы имеют относительно небольшой размер, что позволя-
 ет отправлять их нетмейлом в UU-кодированном виде.
    Рекомендуется давать этим  архивам имена,  начинающиеся  с двух  последних
 цифр номера опорной версии,  например, 01dsvcen.zip для патча, основанного на
 версии DN 1.51.01.
    Участники проекта,  не имеющей технической возможности  создавать архивы с
 патчами в  точном соответствии  с вышеприведенными  рекомендациями,  могут не
 придерживаться последних.  В этом случае упомянутые архивы следует отправлять
 координатору лично.

                          3. Стиль программирования

    Поскольку в проекте участвует значительное количество программистов, жела-
 тельно следовать приведенным  ниже рекомендациям,  чтобы облегчить совместную
 работу.
    Проект в настоящее время является международным, поэтому все комментарии в
 исходных текстах следует писать на английском языке.
    При необходимости внести правку в языковые ресурсы следует изменять ресур-
 сы только для тех языков, которыми Вы владеете. Обязательно указывайте в соп-
 роводительном описании, для каких именно языков ресурсы были изменены.  Коор-
 динатор выполнит недостающие правки самостоятельно  или свяжется с носителями
 остальных языков для получения перевода.
    Все сообщения, текст, диалоговые окна и другие элмементы пользовательского
 интерфейса должны быть локализуемыми,  то есть опираться на содержимое языко-
 вых ресурсов.  Исключение могут составлять только  некоторые сообщения  о фа-
 тальных ошибках и другие случаи,  когда доступ к языковым ресурсам невозможен
 по техническим причинам.
    Если изменено или  добавлено несколько строк,  следует отметить эти строки
 комментарием с именем или псевдонимом участника проекта, например, { X-Man }.
 Если же добавлена большая группа строк,  например, целая функция, следует от-
 метить ее начало и конец коментариями с именем или псевдонимом участника про-
 екта, каждый из которых занимает по одной целой строке.
    При добавлении константы в некоторую  группу числовых констант  (например,
 cmXXXX), следует выбирать первое  неиспользуемое значение вместо того,  чтобы
 производить сдвижку значений для некоторого количества других констант.
    Если патч вводит новую возможность,  являющуюся достаточно самостоятельной
 в том смысле,  что она может быть  легко исключена без потери другой функцио-
 нальности,  эту возможность следует сделать отключаемой  на стадии компиляции
 путем окружения новых фрагментов кода директивами условной компиляции и опре-
 деления нового условного символа в файле stdefine.inc.
    В случае добавления возможностей,  действие которых основывается на каких-
 либо особенностях или сервисах виртуальной машины DOS в той или иной операци-
 онной системе,  следует перед использованием упомянутых особенностей или сер-
 висов произвести проверку на их доступность или общую  проверку на операцион-
 ную систему.  Для проверки на операционную систему следует анализировать зна-
 чение переменной opSys, определенной в модуле Advance. Там же определен набор
 констант, комбинацию из значений которых эта переменая может принимать. Нали-
 чие более одного бита в значении opSys означает, что окружение сочетает в се-
 бе свойства  двух операционных систем  (такое возможно,  например, в эмулято-
 рах).  При необходимости следует расширять этот набор и добавлять проверки на
 другие операционные системы в тело процедуры CheckOS.
    Не следует включать в патч обновление файла history.txt и добавление имени
 в файл authors.txt и в список авторов для About Box. Эти изменения производит
 координатор проекта.

                             4. Применение патчей

    Для примененя патчей  служит парная к diff утилита patch.  Полное описание
 утилиты patch, равно как и ее исходные тексты,  можно получить у координатора
 проекта.
    Для применения патча следует использовать команду:
        patch -p1 <файл.patch
        (считая, что используется перенесенная версия patch не ниже PORT.2)
    При этом считается, что текущим является каталог с текущей версией DN (имя
 этого каталога не имеет значения).
    Версия исходных текстов, к которым применяется патч, не обязана быть иден-
 тична опорной.  На практике это означает,  что утилита patch имеет  некоторую
 толерантность к изменению исходных текстов,  и патч может применяться к текс-
 там, к которым ранее был  применен какой-либо другой патч.  Однако накопление
 изменений в исходных текстах может привести к исчерпанию толерантности patch,
 поэтому  все новые патчи  следует создавать,  опираясь на последнюю доступную
 версию исходных текстов.
    Если патч уже был применен к данной версии исходников, утилита patch авто-
 матически распознает эту ситуацию и будет  действовать в режиме reversed,  то
 есть удалит уже примененный патч, не затрагивая другие.

                      5. Распространение новых версий DN

    Распространение новых версий DN осуществляется  координатором проекта. Для
 этого используется файлэхоконференция NAVIGATOR.  Кроме того, новые версии DN
 доступны по следующим адресам в Internet:
        http://www.nsk.su/~dnosp/
        http://dn.traktir.ru/
    Каждая новая версия DN выходит одновременно в виде нескольких пакетов:
        DNверсияS.RAR - исходные тексты (в основном для участников проекта)
        DNверсияB.RAR - бинарный дистрибутив для работы  в среде DOS реального
                        режима (для конечного пользователя)
        DNверсияD.RAR - бинарный дистрибутив для работы в среде DOS защищенно-
                        го режима - DPMI (для конечного пользователя)
        DNверсияP.RAR - набор дополнительных файлов для конечного пользователя
    Последний пакет содержит скринсейверы,  таблицы перекодировки,  значки для
 Windows, а также примеры текстовых файлов настройки.  Этот пакет выходит не с
 каждой версией, а только тогда, когда это необходимо.
    Все четыре пакета включают список авторов (authors.txt)  и историю модифи-
 каций (history.txt),  а также настоящий документ (dnosp.txt).  Пакет исходных
 текстов, кроме того,  включает шаблон описания патча (template.txt).  История
 модификаций за период  разработки и поддержки DN фирмой RIT Labs вместе с ин-
 формацией  об авторских  правах  фирмы  RIT Labs  вынесена в  отдельный  файл
 (ritlabs.txt).
    С некоторыми версиями могут выходить также другие пакеты, например, наборы
 локализации для некоторых языков.
    Одновременно с каждой новой версией выходят еще два файла:
        PATCHподверсия.RAR - коллекция патчей со времени последнего выпуска
        старая_подверсияTOновая_подверсия.RAR - патч кумулятивного обновления
    По мере необходимости  могут выходить бета-версии.  Бета-версия - это слу-
 жебный выпуск, предназначенный исключительно для тестирования, не для обычной
 эксплуатации. Желающих заниматься бета-тестированием убедительно просят сооб-
 щить об этом координатору проекта, указав номер версии, подлежащей тестирова-
 нию, а также конфигурацию своих аппаратных  и программных средств (независимо
 от того, занимались ли Вы бета-тестированием предыдущих версий).
    Во время бета-состояния новая бета-версия выходит всякий раз,  когда с мо-
 мента выпуска предыдущей версии  проходит две недели и уже применено не менее
 двадцати патчей, или же когда проходит четыре недели.

                           6. Координаторы проекта

    Первый координатор:
        Алексей Фельдгендлер (Alexey Feldgendler)
        Телефон в Новосибирске: +7-3832-776581
        2:5000/111.27@fidonet AKA 911:911/0@codernet
        xman@beep.ru (для писем и файлов размером до 2 мегабайт)
    Второй координатор:
        Майк Лыков (Mike Lykov)
        2:5057/44@fidonet
        nelescon@samaramail.ru
        http://dnosp.id.ru/ (псевдоним для http://www.hippo.ru/~nelescon/)
    Третий координатор:
        смотрите на наших www сайтах и в эхоконференции RU.SHELL.DN

==============================================================================
