Статьи

Выбор Вики: Докувики

В течение последних нескольких месяцев медленно оценивали некоторые из вики и собирались (посмели) порекомендовать одну или две вики PHP там.

Основной причиной для покупок является текущая вики WACT , которая использует PHPWiki .

Хотя в PHPWiki нет ничего принципиально неправильного, чем больше у вас документов и версий документов, тем медленнее кажется. Временами, когда я пытался выяснить, почему это происходит медленно, я обнаруживал, что коду не хватает прозрачности — может быть, это только я, но на самом деле не заинтересован в том, чтобы тратить много времени на изучение базы кода. Так что сейчас PHPWiki представляет собой «зверя», с которым я не хочу возиться.

Кроме того, как упоминает Джефф ;

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

Другая проблема (жалоба, которая у нас была) — это отсутствие какого-либо индекса / карты сайта. В WIKI есть более нескольких страниц, на которые нигде нет ссылок, и единственный способ сделать их обнаруживаемыми — это создать страницы ссылок вручную (как мы это сделали здесь ).

В противном случае, поскольку кодовая база PHPWiki является «вещью», которую я не думаю, что кто-либо из нас хочет прикоснуться, мы не сможем воспользоваться ею в других местах, например, по-настоящему интегрировать сгенерированные документы API с вики (есть отдельная здесь вы найдете блог об интеграции сгенерированных документов API с динамическим контентом, комментариями пользователей и т. д., о которых я расскажу в другой раз), или о создании некоторого загружаемого «руководства» из него.

Наконец, я чувствую себя некомфортно из-за содержимого, хранящегося в базе данных — из-за многих других проблем сложно изменить WIKI с помощью чего-либо, кроме веб-интерфейса.

В любом случае, один или два других WIKI, на которые я смотрел (все они основаны на PHP, но другие, такие как TinyWiki, были очень заманчивыми);

MediaWiki — теперь Википедия работает на MediaWiki (как они здесь упоминают — лучший аргумент в пользу PHP и масштабирования?), Что явно делает его очень сильным кандидатом. Он имеет несколько замечательных функций, таких как экспорт docbook, и база кода, как правило, приятна для изучения. Но что мне не нравится, так это то, что он снова использует базу данных (хотя в ней есть отличный выбор вспомогательных инструментов администратора) и создает общее ощущение, что она станет «центром вселенной», если мы ее используем, что делает вещи как интеграция с API документов сложно.

Yawiki , работа над которым ведется Полом Джонсом, которого вы, возможно, знаете из Savant . В общем, как и куда идет, особенно чистая база кода. Он снова использует БД и действительно ищет что-то более развитое (0.17 в прошлый раз, когда я смотрел). Впрочем, лучше всего воспользоваться преимуществами Text_Wiki при переходе с PHPWiki.

PmWiki — это файловая вики и почти абсолютный «победитель» того, что я ищу. Получите хорошее представление о здравомыслии разработчиков, исследующих код, в том смысле, что они, кажется, использовали простейшую реализацию, возможную во всех случаях, и я подозреваю, что она будет хорошо масштабироваться с точки зрения объема информации, которой он управляет. Не очень хорошо это ключевое слово «global», которое присутствует во всем коде. Также у меня есть сомнения по поводу того, в каком формате хранится контент; это своего рода ini-файл, который будет нуждаться в специализированном парсере в дополнение к парсеру для разметки вики. Кроме того, изменения (различия) сохраняются вместе с самим содержимым (в одном файле), что может привести к некоторым довольно большим файлам, так как страница подвергается множественному редактированию (примечание: она хранит самую последнюю версию страницы в виде единого объекта , что хорошо — это не реконструкция страницы из различий). В противном случае разметка похожа на PHPWiki и может снова привести к проблемам детерминизма.

DokuWiki — чем больше я на это смотрю, тем больше он мне нравится (код здесь ). Я думаю, что Андреас Гор, автор, сумел получить правильные основы …

+ Это основано на файлах, и то, что хранится, это именно то, что вы набрали. Это очень помогает, если вам нужно использовать стандартные инструменты файловой системы для редактирования. Например, DokuWiki для поиска использует Unix find (1) и grep (1) по умолчанию.

+ Он использует пространства имен при создании страниц. Пространства имен относятся к URL. Каждое пространство имен является каталогом, поэтому, если мой идентификатор страницы — wact: tags: list, он будет соответствовать структуре файла / каталога, например ./wact/tags/list.txt, — что позволит создавать полезные индексы WIKI.

+ Синтаксис вики выглядит детерминированным, плюс Dokuwiki поставляется с панелью инструментов редактирования, которая помогает с разметкой, а также поддерживает сочетания клавиш .

+ Старые версии документов хранятся отдельно в заархивированных архивах. Онлайн различия поддерживаются.

+ Dokuwiki управляет конфликтами, когда два человека редактируют один и тот же документ, аналогично CVS — второй человек, который сохраняет свой документ, вынужден управлять изменением (с помощью diff).

+ Соответствует модному слову (CSS, XHTML, RSS и т. Д.).

С другой стороны, кажется, что он еще не обрабатывает наборы символов i18n (что может включать переписывание его вики-парсера, который в настоящее время основан на PCRE ), но кодовая база (на удивление) мала и, как правило, проста для понимания — есть место для улучшение в коде (в любом случае, с моей точки зрения), но ничего особенного, и я думаю, что было бы очень легко вносить изменения постепенно. Поскольку основные принципы верны (в частности, способ хранения файлов), я вижу, что могу интегрировать это с документами API WACT.

Масштаб это тоже вопрос без ответа. Например, генерация индекса может потребовать некоторого изучения, а некоторые файлы конфигурации (например, файл wordblock) могут потребовать разбивки на более мелкие части по мере их роста. Опять же, поскольку я думаю, что Dokuwiki делает правильные вещи при хранении файлов, настройка его на емкость не должна быть серьезной проблемой.

В любом случае — надеюсь, это полезное исследование. Спасибо Андреасу за Докувики — есть ли шанс получить его на Sourceforge?