Просмотр сообщений

В этом разделе можно просмотреть все сообщения, сделанные этим пользователем.


Сообщения - Леонид Юрьев

Страницы: 1 2 [3] 4
31
Подана заявка http://devconf.ru/offers/46 на участие в конференции с докладом о части проделанной работы.

Если интересно, то голосуйте за доклад на http://devconf.ru/offers/storage и приходите послушать/пообщаться.

32
Пока представляется более удобным и целесообразным публиковать новости по проекту здесь, нежели вести отдельный "сферический блог в вакууме".

Новости, тезисно:
  • Важная, принципиальная новость: Были устранены две большие недоделки связанные с согласованностью данных после системного сбоя при использовании LMDB-движка для хранения данных. Грубо говоря, мы сделали то, что в OpenLDAP посчитали невозможным, подробности см. ниже.
  • Принято решение сохранить поддержку только POSIX-совместимых платформ, с набором предоставляемых набор возможностей не хуже чем RedHad Enterprise Linux 6. Всё более старое или несовместимое, в том числе: Windows, SunOS, Solaris, старые версии *BSD - поддерживаться не будут.
  • В июне планируется оформить сборку пакетов (deb, rpm) для распространенных дистрибутивов Linux. Поддержки FreeBSD в виде порта/пакета не планируется (не найдено меинтейнера, готового взяться за работу).

Кратко о самом важном:
  • Обе недоделки были зафиксированны ранее в issues №1 и №2, сразу как только стало ясно, что их устранение в оригинальном OpenLDAP не возможно и для этого требуется клонировать исходный проект.
  • В оригинальном OpenLDAP первая недоделка считается feature (как-бы "не баг, а фича"), а вторая не актуальна, так как LIFO-reclaiming для LMDB есть только в ReOpenLDAP.
  • Переписав часть кода отвечающую за фиксацию изменений на диске, мы обеспечили гарантию согласованности данных (т.е. не разрушение всей базы при системном сбое, например из-за выключении питания), одновременно сохранив возможность компромисса между высокой производительностью по-записи и частотой фиксации изменений на диске.

Подробно:
  • Обе недоделки касаются внутренностей движка базы данных LMDB (aka Symas Lightning Memory-Mapped Database).
    • Исходная реализация LMDB обеспечивает целостность данных, но ориентирована на обеспечение чемпионской производительности по-чтению, а не по-записи.
    • Для гарантии согласованности (не разрушения базы) на диске, требовалась фиксация данных после каждой транзакции.
    • Проблема в том, что при большой нагрузке по-записи (десятки тысяч изменений в секунду) для этого требуется подсистема хранения с фантастической производительностью.
    • С технической точки зрения проблема известна как LMDB write-amplification.
    • Другими словами, даже минимальные изменения в базе данных, могут приводить к необходимости записи на диск относительно большого объема данных.
  • Поэтому, во многих случаях, для получения требуемой производительности приходилось отказываться от фиксации изменений после каждой транзакции:
    • Для этого в LMDB предусмотрены специальные режимы, управляемые опцией envflags: dbnosync, nometasync, writemap и mapasync (подробности см. в документации).
    • Не вдаваясь в детали, можно сказать, что суть всех этих режимов в отложенной фиксации изменений на диске.
    • С этой целью предлагается механизм периодического формирования "контрольных точек", конфигурируемый директивой checkpoint <kbyte> <min>.
  • Однако и тут не обошлось без нескольких "ведер дегтя":
    • Контрольные точки по задаваемому размеру изменений (параметр <kbyte>) в OpenLDAP не реализованы.
    • Периодические контрольные точки с задаваемым интервалом (параметр <min>) в OpenLDAP возможны только с гранулярностью в одну минуту, что полностью их обесценивает: при большой нагрузке за минуту будет огромный объем изменений, который не получится "быстро" записать на диск, и который одновременно слишком опасно потерять в случае сбоя.
    • Повторное использование (aka reclaiming) страниц базы данных выполняется в FIFO-порядке(тут была очепятка), что делает полностью неэффективным кеш обратной записи в системах хранения (дисковых массивах) промышленного уровня.
    • Кроме этого, в режимах writemap и mapasync согласованность данных не гарантируется даже в контрольных точках, так как операционная система может (имеет полное право) записать страницы с мета-данными раньше страниц данных.
  • Таким образом, исходный LMDB движок в OpenLDAP:
    • В реальности оказывается непригодным для промышленной эксплуатации в условиях высокой нагрузки по-записи.
    • Для устранения этих и многих других проблем мы и стартовали ReOpenLDAP как отдельный проект в начале 2015 года.
  • Сейчас в ReOpenLDAP:
    • 2014-Q3: Реализован возможность автоматического формирования контрольных точек как по объему изменений, так и периодически с гранулярностью до секунды. Что позволило использовать режимы dbnosync и mapasync с гораздо меньше вероятностью потери данных в случае системного сбоя.
    • 2014-Q4: Реализован, отлажен и проверен режим повторного использования (aka reclaiming) страниц базы данных в LIFO-порядке. Что позволило получить эффект от кэша обратной записи в развитых системах хранения, что дало прирост производительности в 10-50 раз (в некоторых сценариях до 100 и более раз). Реализованы механизмы oom-handler (поведение при исчерпании места в БД) и dreamcatcher (рестарт долгих операций чтения мешающих освобождению места).
    • 2015-Q1: Устранена масса проблем в механизме репликации при работе в multi-master режиме, в том числе несколько застарелых проблем с возрастом более 5 лет.
    • 2015-Q2: Реализованы возможности "кворума" при репликации, ограничение сеансов syncrepl в фазе refresh, что в разы снизило пиковое потребления механизмом репликации оперативной памяти и процессорного времени.
    • На днях устранены вышеописанные проблемы с согласованностью данных и добавлена утилита mdb_chk для максимально полной проверки структуры базы.
    • Таким образом, в ReOpenLDAP устранены все известные на текущий момент проблемы и недоработки, мешающие промышленной эксплуатации в условиях высоких нагрузок, как по-чтению, так и по-записи (но приемочные испытания перед "боевой работой" еще не завершены).

Технические детали доработок для обеспечения согласованности данных:
  • Чистка кода и прекращение поддержки:
    • В LMDB отброшена поддержка не-POSIX платформ, включая Windows.
    • Самой "старой" эталонной поддерживаемой платформой считается RedHad Enterprise Linux 6, требуется поддержка PTHREAD_PROCESS_SHARED и PTHREAD_MUTEX_ROBUST.
    • Ликвидирована поддержка нерелевантного режима работы, при котором разделение доступа обеспечивается приложением (выброшен флажок MDB_NOLOCK).
  • Полностью переработан (переписан код) путь сброса данных на диск:
    • Появилась возможность гарантировать последовательность (линерализуемость) обновлений мета-страниц относительно страниц с данными.
    • Теперь возможно полностью контролировать режим фиксации на диске каждой транзакции.
    • Гарантируется правильная работа на системах с багом без дополнительной потери производительности.
  • В meta-страницы добавлен признак о том, как данные были зафиксированы на диске - надежно (steady) или по-быстрому (weak):
    • При "быстрой" записи в режимах dbnosync, writemap и mapasync обновляемая meta-страница помечается "не-надежной" (weak).
    • При надежной записи сначала всегда полностью сохраняются страницы с данными, а затем обновляются и записывается meta-страница помечаемая "надежной" (steady).
    • Крайне важно, что этот порядок гарантируется всегда, в том числе и для режимом writemap и mapasync. Этим устраняется проблема №1.
  • Фиксация состояния базы и откат (rollback) потенциально несогласованных данных:
    • При штатном (не аварийном) закрытии базы, в контрольных точках, а также после каждой транзакции в "синхронных" режимах выполняется надежная фиксация всех изменений на диске.
    • При открытии базы происходит автоматический возврат к последней из надежно зафиксированных точек.
  • Повторное использование страниц и поведение при исчерпании доступных:
    • Переработка записей таблицы freeDB (aka reclaiming) не пересекает границу последней надежной фиксации данных. Этим устраняется проблема №2.
    • В ситуации исчерпания доступных страниц и наличия незафиксированных данных производится их надежная фиксация, что позволяет переработать "заблокированные" записи freeDB.
    • В ситуации исчерпания доступных страниц из-за их блокировки долгими операциями чтения, как и прежде, доступны oom-handler и dreamcatcher.

Как последние доработки меняют поведение:
  • В любом из "синхронных" режимов фиксации транзакций всё будет как раньше.
  • В процессе работы, при асинхронной записи (режимы dbnosync или mapasync) и ВЫКЛЮЧЕННЫХ checkpoint, внешне будет почти как раньше:
    • Никакой явной фиксации не будет, до тех пор пока не будут израсходованы доступные страницы.
    • Повторное использование страниц (aka reclaiming) "упрется" в последнюю надежную фиксацию и будет приостановлено.
    • При исчерпании доступных страниц будет сформирована надежная контрольная точка и повторное использование страниц продолжится до этой границы.
    • Так как асинхронная запись в общем случае будет выполняться ядром ОС, то в совокупности мы получим максимальную производительность по-записи с периодической гарантией согласованности данных на диске.
  • В процессе работы, при асинхронной записи (режимы dbnosync или mapasync) и ВКЛЮЧЕННЫХ checkpoint:
    • Согласно параметрам checkpoint будет выполняться надежная фиксация с гарантией согласованности данных на диске.
    • Плюс контрольные точки будут дополнительно формироваться при исчерпании доступных страниц, как описано выше.
  • По завершению работы, в режимах без синхронной записи (envflags: dbnosync или mapasync):
    • Если база будет закрыта штатно (без "срубания" или "падения" slapd, и без system wide failure), то гарантируется согласованность данных на диске.
    • Если же slapd будет "срублен" или "упадет", либо будет обще-системный сбой, то потеряются все изменения после последней надежной записи при формировании checkpoint или из-за исчерпания свободных страниц.

Актуальная версия доступна в ветке master на github.

33
Продолжаю сообщать о новостях и советоваться, точнее пытаюсь ;)

В ReOpenLDAP, как и в исходном OpenLDAP, до последнего времени не было какого-либо средства контроля LMDB-базы.
При этом НЕ важно что вероятность таких ошибок мала, и также НЕ столь важно что стало из причиной: программные ошибки в LMDB, slapd, драйвере диска или прошивки системы хранения.
Важно, что без средства контроля их не возможно своевременно обнаружить, а только "когда всё упало".
Дискуссии о необходимости контроля быстро заканчивают, как только становиться понятно что последствия придётся компенсировать за счет собственной зарплаты...

На днях возможность такого контроля была добавлена - теперь есть утилита mdb_chk.
Это решает массу проблем, но не достаточно для промышленной эксплуатации с учетом всех особенностей LMDB.

В LMDB есть три недочета, или проблемы если угодно:
 - при включении writemap (без которого не обойтись при нагрузке по записи) база может быть повреждена, см. https://github.com/ReOpen/ReOpenLDAP/issues/1
 - нет какого-либо контроля целостности отдельных содержания страниц, например контрольной суммы.
 - нет надежного способа проверить консистентность базы (mdb_chk проверяет только целостность структуры, но не потерю изменений или искажение данных).

Самая актуальная проблема пожалуй первая, но устранение любой из трех ведет к потере совместимости с оригинальной версией LMDB из OpenLDAP.

--

Первая проблема будет устранена расширением списка атрибутов meta-страниц. Будет добавлен атрибут "datasync", ненулевое значение которого будет означать что мета-страница была зафиксирована правильным надежным образом - после записи всех страниц с данными. В противоположность этому, при быстрой фиксацией транзакций с последующей асинхронной дозаписью данных, datasync будет устанавливаться в ноль, а при повторной быстрой фиксации будет использоваться та же мета-страница. Полноценная "правильная" фиксация будет выполняться при формировании контрольных точек (параметр checkpoint для mdb) и при штатном (не аварийном) закрытии базы.

Далее, при открытии базы будут преимущественно выбираться безопасно зафиксированные страницы, с ненулевым datasync. Таким образом, после крушения всей системы (например при внезапном выключении питания), база данных будет открываться с точки гарантирующей консистентность всех данных. А мета-страницы "быстрой" фиксации будут использоваться фактически только во время работы нескольких процессов с одной базой.

Предположительно, файлы LMDB-базы созданные новой версией будут совместимы с оригинальной версией LMDB. Но при этом наша новая версия будет воспринимать старые файлы только как не небезопасные.

--

Вторая проблема будет устранена добавлением в заголовок каждой страницы контрольной сумму данных. К сожалению, это точно поломает совместимость с оригинальной версией LMDB, так как измениться формат заголовка и размер полезных данных страницы.

--

С третьей проблемой сложнее. У нас есть хорошее инженерное понимание как следует её устранять (см. http://en.wikipedia.org/wiki/Merkle_tree, кстати, git действует именно так). Но объем изменений программного кода при этом будет (предположительно) кардинальным. Поэтому пока представляется не рациональным "лечить" LMDB. Возможно что проще будет переписать как было задумано (см. https://github.com/ReOpen/ReOpenLDAP/issues/7)

--

Как обычно, конструктивная критика, пожелания и соображения - всё приветствуется.

34
Несколько дополнений к новости:

  • Эта последняя версия, которую можно собрать для Windows.
  • Ищется меинтейнер для *BSD платформ, иначе выпилим.
  • Ищется волонтер для обратного перевода man-страниц и популяризации/продвижения проекта среди англоязычной аудитории.

35
В ReOpenLDAP добавлена возможность ограничения synrepl-сеансов, находящихся в стадии первоначальной синхронизации.
В итоге это уменьшает время синхронизации кластера при старте, одновременно существенно уменьшая пиковое потребление ресурсов (оперативной памяти и процессорного времени).

--

Такая синхронизации, или иначе говоря сверка записей в локальной базе с удаленной стороной, происходит всегда для refreshOnly режима и вначале refreshAndPersist.
При этом syncrepl формирует и сверяет в памяти списки записей c удаленной стороны (через поставщика syncprov) и записей в локальной базе.
Соответственно, именно в этот момент времени можно наблюдать пиковое потребление памяти и процессорного времени.

В кластере, состоящим из нескольких серверов работающих в режиме multi-master репликации, первоначальная синхронизация может одновременно выполняться несколькими экземплярами syncrepl.
В этом случае потребление памяти и нагрузка на CPU могут быть в разы (10 и более раз) больше чем при штатной работе.

Проблема усугубляется тем, что при конкурентной первоначальной синхронизации каждый экземпляр syncrepl будет пытаться внести в локальную базу практически идентичные изменения.
Соответственно, суммарно только один экземпляр syncrepl отрабатывает эффективно, а остальные просто в холостую, при этом мешая друг-другу.
Особо это актуально при подключении к кластеру нового сервера с "пустой" базой.

Наши нагрузочные тесты показывают уменьшение потребление памяти в 2-5 раз и одновременно уменьшение времени синхронизации multimaster-кластера от 3 до 25 раз.

--

Актуальная стабильная версия в ветке master на https://github.com/ReOpen/ReOpenLDAP.

Новая "фича" и опции её настройки описаны в русскоязычных man-страницах (пока только в русскоязычных), см. https://github.com/ReOpen/ReOpenLDAP/commit/4d9505532f8ac6f294ae780e33c4f495fd06b7d0

Леонид

36
В ReOpenLDAP добавлена поддержка "кворума" при репликации, плюс внесено несколько доработок для обхода неоднозначных ситуаций при multi-master репликации.

Актуальная стабильная версия в ветке master на https://github.com/ReOpen/ReOpenLDAP.

Новая "фича" и опции её настройки описаны в русскоязычных man-страницах (пока только в русскоязычных), см. https://github.com/ReOpen/ReOpenLDAP/commit/1c94bc17ec285388e8a8299399ed537754fc3028

37
Общий раздел / Развитие ReOpenLDAP
« : 13 Февраль 2015, 20:52:06 »
Продолжу информировать о ходе нашего проекта здесь на форуме, пока так просто удобнее.

После создания форка у нас была небольшая дилемма. Требовалось как-то "идейно" определиться с балансом/компромиссом между сохранением набора возможностей относительно родительского OpenLDAP и обеспечением качества/стабильности.
Суть проблемы в том, что крайне сложно обеспечить тестирование всех возможностей OpenLDAP, всех комбинаций наложений (оверлеев) и механизмов манипуляции данными (бакендов).
Если поддерживать весь спектр аппаратных платформ и операционных систем, на которых (теоретически) может работать OpenLDAP, то проблема существенно усугубляется.

С одной стороны, в оригинальном OpenLDAP, декларируется поддержка всего этого "зоопарка". С другой стороны, от меинтейнеров OpenLDAP не удалось получить какого-либо конкретного списка платформ, операционных систем и компиляторов, с которыми производится тестирование или хотя-бы сборка проекта.
По сообщениям в списке рассылке, точнее по обращениям за помощью из-за проблем и сбоев, можно сделать выводы о том, что текущая версия OpenLDAP может гарантированно успешно эксплуатироваться только на 64-битных Linux системах, а также на 64-битных версиях Windows при сборке с помощью 64-битной версии MinGW. Работа на 32-битных системах возможна с ограничениями, например без LMDB. Есть проблемы совместимости с OSX и т.д.

Нам нужно было хорошо подумать и принять решение — что поддерживать и тестировать, а что точно вычеркнуть. На этой неделе мы пришли к идее такого решения с учетом наших возможностей и собственных целей. Точнее говоря, мы выработали принцип, по которому будем «отрезать».
Итак, ReOpenLDAP будет ориентирован на промышленную эксплуатацию в сфере телекоммуникаций (высокие нагрузки, высокая доступность, стабильность, 24x7). Соответственно:
  • Будет ликвидирована поддержка (ReOpenLDAP точно не будет даже собираться): ОС Windows, OSX и устаревших клонов Unix, компиляторов не совместимых с gcc и clang.
  • Будет ограниченна поддержка (ReOpenLDAP вероятно можно будет собрать, но какого-либо тестирования мы проводить не будем): 32-битные платформ, FreeBSD и прочих BSD-клонов, как минимум пока не найдется меинтейнер.
  • Будут удалены возможности, которые в родительском OpenLDAP считаются плохо поддерживаемыми, экспериментальными и/или нестабильными: dnssrv, sql, ndb (mysql cluster).
  • Возможно будут удалены возможности, которые сложно тестировать (обеспечить качество), либо которые редко затребованы (вопрос требует изучения): perl/shell, rwm (rewrite), chain, pcache, translucent, relay.
  • Возможности linux и gcc/clang будут использовать более полно. Например, точно будет сборка с использование LTO (link time optimization), что дает на 10% меньший размер кода и на 5-10% повышение производительности.

Как и прежде идеи и пожелания приветствуются.

38
Общий раздел / Re: Развитие ReOpenLDAP
« : 09 Февраль 2015, 14:20:35 »
Ок, будем считать, что молчание - знак согласия ;)

39
Общий раздел / Развитие ReOpenLDAP
« : 30 Январь 2015, 14:32:01 »
Приветствую.

Как представитель команды разработчиков ReOpenLDAP хочу пояснить некоторые ближайшие намерения и обсудить их.

1) По производственной необходимости нам приходиться вносить несовместимость с оригинальным OpenLDAP.
Пока это выразилось только в опции checkpoint для mdb-бэкенда.
Напомню - в оригинале интервал задается в минутах, а у нас в секундах.
Однако для массового применения и "попробовать" подобные моменты очень неудобны, так как необходимо внимательно прочесть документацию и аккуратно поправить конфиг.

Поэтому наше предложение = добавить опцию конфигурацию с условным названием iddqd.
Если опция есть, то действует "новый" смысл некоторых параметров, иначе режим совместимости.
Например в slapd.conf: reopenldap iddqd

2) Аналогично, условная опция idkfa для включения дополнительного assert-контроля, включая контроль блоков динамической памяти.
Для ясности поясню:
 - вопреки ожиданиям в оригинальном коде OpenLDAP достаточно ошибок, в том числе с использованием и повторным освобождением блоков памяти.
 - мы придерживаемся стратегии fail-fast (http://en.wikipedia.org/wiki/Fail-fast, http://habrahabr.ru/post/218325/), с тем чтобы выявить максимум проблем при тестировании и в ходе промышленной эксплуатации видеть проблемы явно (и быстро исправлять их), а не гадать над "странными непонятными/редкими глюками".
- однако для многих сценариев использования такой жесткий контроль может приводить к неожиданно-неприемлемым падениям, причем когда без контроля ошибка может не проявляться вовсе.
- поэтому наш "фирменный" контроль будет включаться условной опцией idkfa (точнее говоря, выключаться при её отсутствии).

Например в slapd.conf: reopenldap iddqd idkfa

3) Было найдено несколько изъянов в реализации репликации, исправление которых требует некого аналога biglock (http://en.wikipedia.org/wiki/Giant_lock).
В качестве иллюстрации проблемы - в фазе "delete non present" клиент репликации может удалить db-входы, которые отсутствует на сервере репликации, но были добавлены локально (или реплицированны с других серверов) после начала локального поиска (см. https://github.com/ReOpen/ReOpenLDAP/issues/12).
Поэтому мы намерены реализовать "большую блокировку" для сериализации (последовательного атомарного выполнения) всех операций изменений данных (add, delete, modify, rename/modrnd).

Однако, при реализации функционала biglock мы несколько раз сталкивались с особенностями качества кода OpenLDAP.
Так например, даже тесты используют chain-наложение и ldap-бэкенд с подключением к "самому себе".
Соответственно при этом наша "большая блокировка" нарушает работу, так как одна операция взаимно блокируется другой.

Чтобы сохранить гибкость в конфигурировании, не хардкодить логику блокировок и сохранить возможность совместимости с оригинальным OpenLDAP предлагается добавить опцию конфигурации biglock с режимами none, suffix и common.
- опция будет задавать режим использования блокировок для четырех операций изменения (add, delete, modify, modrdn/rename), опосредованно для смены паролей, конфига и т.п.
- операции чтения при этом ни как не блокируются, т.е. могут идти параллельно и асинхронно в зависимости от возможностей движка хранения данных.
- режим 'biglock none' = никаких глобальных блокировок, т.е. будет соответствовать штатному поведению OpenLDAP.
- режим 'biglock suffix' = блокировка на уровне каждого суффикса, т.е. изменение сериализуются отдельно для каждого backend-а используемого для хранения данных по суффиксу.
- режим 'biglock common' = использование общей блокировки, т.е. все изменения сериализуются через одну условную очередь.

Это даст больше гибкости в настройке и избавит от необратимого хард-кодинга логики.
Одновременно с безопасной сериализацией изменений сохранится возможность полной совместимости с оригинальным OpenLDAP.

Например в slapd.conf: biglock common

Однако, пока не очевидно как лучше - сделать ли эту установку одной общей или задавать отдельно для каждого суффикса/бэкенда, тут есть небольшой конфликт интересов:
- 'biglock common' логично задавать одной общей настройкой.
- режимы 'suffix' и 'none' логично задавать персонально для каждого суффикса/бэкенда.
- самый гибкий вариант - сделать две настройки "общую" для всех и "уточняющую для каждого суффикса/бэкенда", но (видимо) это может запутать пользователей?
- идеи и пожелания приветствуются.

Леонид.

40
Первый pull-request c переводом man-страницы ldif влит в ветку 2.4

Егор, большое спасибо.

41
Егор, приветствую.

Я включил man-страницы из доступного архива в наши исходные тексты и сборку.
https://github.com/ReOpen/ReOpenLDAP/tree/man-ru-2.4

Леонид.

42
Егор, доброе утро.

"Отдельное место" только ради удобства управления изменениями.

Скорее всего вы будете заинтересованы в поддержке перевода оригинальной документации для OpenLDAP, без каких-либо добавлений наших фичей.
Нам же требуется обогатить оригинальное содержимое описанием наших нововведений и доработок, см https://github.com/ReOpen/ReOpenLDAP/releases.
Для решения подобных проблем есть http://habrahabr.ru/post/106912/, там же становиться понятно "почему git", а не svn.

Также необходимо отслеживать все изменения и синхронизировать их с доработкой программного кода.
Поддерживать документацию для линейки версий 2.4 и 2.5 (скоро обещают релиз).
Соответственно, чтобы результат вашей работы можно были отделять от наших правок man-страницы необходимо поместить в отдельную ветку (branch), а дальше действовать в соответствии с git branching model.

Плюс еще нужно управлять правами на внесение изменений.
Ведь я не могу давать вам права на внесение изменений непосредственно в наш репозиторий, это как ключи от квартиры ;)
В частности, так сложно координировать синхронность вносимых изменений и нельзя застраховаться от ошибок (особенно если вы не пользовались git).

Поэтому это должен быть самостоятельный репозиторий (отдельная копия), в котором вы полностью хозяйничаете сами (я могу вам помогать если будут трудности с git).
А изменения от вас мы будем получать через pull request, см http://habrahabr.ru/post/125999/

Ну и нам конечно нужны "не собранные" страницы, чтобы получать актуальные версии со всеми отметками по make install.

Итого, предлагаю вам список ближайших шагов:
  • Зарегистрироваться на github
  • Сделать в своем аккаунте fork нашего https://github.com/ReOpen/ReOpenLDAP
  • Завести отдельную ветку и залить в ней все исходные man-страницы
  • Направить pull request

Готов помочь если что-то непонятно, но чтобы не спамить на форуме напишите мне на leo@yuriev.ru

И на всякий случай - в git лекго пролучить список изменений для отдельного файла или каталога после какой-либо версии или даты (например чтобы узнать что по шагам менялось в оригинальной документации после релиза 2.4.40). Аналогично легко сравнить две ветки или версии (например чтобы увидеть разницу между 2.4 и 2.5).

Леонид.


43
Егор, еще раз приветствую.

Хотелось-бы обсудить интеграцию с вашими переводами.
Для адекватного процесса нам необходимо получать результат через git-репозиторий.

Соответственно, я предлагаю вам завести такой на github или еще где-нибудь.
Могу предложить завести репозиторий в https://github.com/ReOpen.
Как вариант, могу предложить gerrit на своем сервере для внутри-командного ревью изменений, но только для небольшой команды (скажем 5-10 человек, максимум 25).

Если переведенные руководства будут структурно оформлены в git, то станет возможным автоматическая генерация html-версии, а также использование переводов для дополнения официальной документации в дистрибутивах Linux. Думаю отечественные разработчики (РОСА, ALT и т.д.) будут заинтересованы.

Допускаю что подобный процесс у вас уже налажен, тогда мне нужны координаты.

44
К сожалению, в программировании и развитии проекта Ховард придерживается "стиля старой школы", от которого все большие (и особенно успешные) проекты целенаправленно уходят последние лет 20-25. Лучшая иллюстрация этому - развития ядра Linux, а оборот "стиль старой школы" - тут очень дипломатично, скажем так.

В большом проекте ясность и прозрачность программного кода становится крайне важной, равно как и полноценное использование инструментов c методиками. Начиная от средств языка и компилятора для страховки от человеческих ошибок, заканчивая принципами Continuous Integration. Иначе learning curve становится неприемлемой, авторам становится труднее поддерживать проект, а новых разработчиков не приходит. Изменения и совершенствования становятся очень тяжелыми и баго-опасными, падает мотивация, накапливается технический долг (aka technical debt). Такие проекты либо осуществляют революцию (что дорого), либо обречены на постепенную консервацию и медленную смерть. Корифеи таких проектов нередко пытаются отрицать проблему, проявляя признаки психологической защиты.

Именно всё перечисленное мы наблюдаем в OpenLDAP:
  • Факт: В багтрекере много ошибок вида "у нас засбоило, примерно вот таком случае", которые годами остаются в подвешенном состоянии.
  • Факт: Много недоделанных, полу-заброшенных features - как например sql-бакенд.
  • Факт: Изменений со стороны практически не поступает - их как-раз таки не сотни и не десятки, а единицы.
  • IMHO: Качества кода оставляет желать лучшего, несчетное количество "карточных домиков" когда внешне безобидное изменение приводит к скрытым ошибкам.

Прошу понять, что я достаточно объективен, хотя есть и эмоциональная составляющая. Меня позвали спасать внутренний проект когда пришли к тупиковой ситуации - под нагрузкой (не целевой промышленной, а просто при циклических тестах) все официальные версии OpenLDAP работают не более нескольких часов, как правило 5-10 минут. После погружения в исходный код OpenLDAP я впал в facepalm. Приходится ассенизировать по производственной необходимости, что "доставляет".

На фоне вышесказанного, позиция Ховарда выглядит как попытка сохранить лицо и "мыши кололось, но продолжали есть кактус". Его ответы на замечания и комментарии в дискуссиях уже давно "широко известны в узких кругах", так сказать репутация заработана. Казалось-бы, тут можно поспорить с критикой, оттолкнувшись от тезиса "так оно же работает", но увы - наши опыты и официально найденные и признанные ошибки (по нашему списку ITS, например c отсутствием volatile) показывают, что это скорее миф и удачное стечение обстоятельств "повезло, не сбойнуло".

По нашему убеждению, официальные релизы OpenLDAP и LMDB нельзя назвать production ready. В этом контексте вызывают озабоченность публичные заявления Ховарда и Symas. Грубо говоря, людей сознательно вводят в заблуждение. Насколько я понял, у нашего менеджмента есть намерение очень серьезно развенчать мифы Symas Corp о готовности, стабильности и вообще пригодности их продуктов для какой-либо промышленной эксплуатации, особенно сферы broadband-телекома (в инфраструктуре сетей мобильной связи на LDAP очень многое возложено). Хотя моя задача сейчас - как раз добиться этой декларируемой стабильности и работоспособности :)

45
Участники (переводчики) проекта Pro-LDAP.ru приглашаются к участию.
Мы заинтересованы в интеграции переведенных man-ов в ReOpenLDAP.

Страницы: 1 2 [3] 4