==============================================================================
                      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.dnosp.com
    Каждая новая версия 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. Координаторы проекта

    Первый координатор:
        Максим Васильев (Max Vasilyev)
        2:5057/33.36@fidonet
        piwamoto(at)pisem.net
        http://www.sama.ru/~piwamoto/
    Второй координатор:
        Евгений Звягинцев (Eugeny Zvyagintzev)
        2:5004/18.60@fidonet
        dn_osp(at)pisem.net
    Третий координатор:
        смотрите на наших www сайтах и в эхоконференции RU.SHELL.DN

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