id: Гость   вход   регистрация
текущее время 07:10 24/11/2020
Владелец: SATtva редакция от 22/02/2012 16:28 (автор: SATtva) Печать
Категории: софт, сайт проекта, ошибки и баги, разное, сообщество
создать
просмотр
редакции
ссылки

Это старая редакция страницы Разработки / Движок за 22/02/2012 16:28.


Движок openSpace: разработка и доработка


Скачать openSpace

Оглавление документа:


Пожелания и предложения по развитию программной платформы openSpace следует публиковать в параграф Идеи (если она будет принята в план разработки, то её перенесут в параграф Сделать).
Убедительная просьба вносить сообщения обо всех обнаруженных ошибках в работе сайта, багах и недоработках непосредственно в текст страницы (параграф Исправить), но не в комментарии документа!
Основой платформы сайта служит движок openSpace, представляющий собой сильно модифицированную wiki-систему WackoWiki. Выбор пал на нее из-за простоты устройства, модульности, позволяющей легко изменять систему и подгонять под специфические нужды, наконец, субъективная характеристика — код написан на PHP, и для хранения данных используется БД, а не файловая система.


Поскольку сайт не является wiki в обычном смысле, движок подлежит ряду доработок. В частности, от поддержки ВикиИмен оказалось больше вреда, чем блага, поскольку большинство страниц раскиданы по кластерам, а не размещены в корне сайта, и экранировать все встречающиеся слова со смешанным регистром не слишком удобно. Есть и другие изменения, внесенные в оригинальный движок: основные из них перечислены ниже.

Сделать


  • Форма ввода новостей
  • Страница вывода новостей
  • RSS-канал новостей
  • Новая система опросов/голосований (компонент администрирования, компонент ввода опросов, компонент вывода архивных опросов)
  • Отображение опросов в канале новостей
  • Аскетичное оформление
  • Опция: сравнение редакций документа по исходному тексту страниц (без исполнения WackoFormatter)
  • Email-уведомление пользователя при передаче ему прав владения документом
  • Функция массовой чистки комментариев страницы
  • Функция удаления всех страниц кластера
  • Возможность быстрого возврата на прокомментированную страницу после удаления комментария
  • Контроль стойкости пароля при регистрации и изменении пароля
  • Контроль длины текста сохраняемых страниц (предотвращение потери части очень длинного текста)
  • Функция массового удаления прикрепленных к странице файлов
  • Специальный синтаксис для размещения картинок-ссылок
  • Система рейтинговых оценок страниц
  • Компонент вывода списка страниц с самым высоким / самым низким рейтингом
  • Реализация "Песочницы" для практикования в использовании wiki-разметки
  • Расширение пользовательских параметров и полей профиля
  • Введение опциональной поддержки BBCode для форматирования текста
  • Восстановление новостной рассылки и ее автоматизация
  • Конвертор базы данных из phpBB в Wacko
  • В метаданных страницы сделать отдельное поле "Название"
  • Перенос форума на платформу wiki, унификация сайта
  • RSS-канал форума
  • Листание страниц комментариев, предпросмотр комментария перед сохранением, правка и удаление, распечатка комментариев вместе со страницей
  • Вывод комментариев и изменений, сделанных с последнего посещения пользователя (плюс выделение разделов форума/тем с новыми комментариями)
  • Доработка каталога сайта и других каталогов страниц: переход к произвольной странице, алфавитный указатель
  • Внутренняя система резервного копирования (стандартные средства не подходят вследствие объемов базы данных)
  • Полностью переписать компонент tree (оптимизация по скорости и работе с новой структурой базы данных)
  • Полностью переписать подсистему аутентификации и обработки сессий, дабы сделать невозможным перехват и повторное использование истекших куков
  • Учет и отображение пользовательской статистики в заголовках комментариев
  • Возможность для гостей подписывать комментарии и правки страниц
  • Компоненты вывода списка разделов форума, тем в разделе, модерации сообщений и тем
  • Единый административный журнал событий (системный лог)
  • Установка на сайт SSL-защиты (наконец!)
  • Доработка страницы пользователей: просмотр профилей, списки страниц и пр.
  • Компонент внутренней приватной связи между пользователями сайта
  • Интеграция GnuPG в движок сайта
  • Сделать возможность просмотра опросов, стоящих в премодерации, всеми посетителями сайта
  • Кэширование результатов ?тяжелых? SQL-запросов
  • Изменить структуру списков ACL, добавить правило 'create', определяющее права на создание подстраниц (и, возможно, 'upload' для загрузки файлов)
  • Список недавно удалённых документов
  • Элементы страницы для работы с серверами ключей
  • Сводная страница новых комментариев и новых редакций
  • Обновленный тест Тьюринга
  • Поддержка html-кода на постраничной (индивидуальной) основе
  • Расширение возможностей модерации комментариев за пределы форума на регулярные страницы сайта (также возможность выноса комментариев из форума в иные кластеры)
  • Единый рубрикатор на основе ключевых слов документа. Иерархии рубрик. Упрощенный поиск по рубрикам/ключевым словам
  • Реализовать предложения по упрощению работы Гостей
  • Возможность загрузки в профиль открытого ключа PGP, используемого в дальнейшем для шифрования забытого пароля и сообщений приватной связи. Реализовано.
  • Элементы страницы для работы с сетью доверия
  • Компонент динамического управления рабочими группами
  • Компонент администрирования пользовательских профилей
  • Дополнительный флаг для прав доступа: изменение свойств и правка документа должны быть подтверждены подписью PGP
  • Усиление защиты аккаунтов:
    • привязка (salt) в пользовательских паролях (защиты от тривиальных и идентичных паролей, rainbow-атак)
    • хранить в базе данных H(H(pwd)), в cookie — H(pwd) (защита при компрометации БД), снимаю шляпу перед Стивом Мёрдоком
  • Явный список внешних ссылок документа в хэндлере print

Переход к бета-стадии (v0.9b)

  • Инсталлятор
  • Права доступа на участие в опросах (и просмотр определённых опросов?). Также указывать ID опросов для упрощения ссылок на них. Возможность комментирования опросов. (Перенести опросы в адресное поле документов, но использовать специфический хэндлер?)
  • Соответствие XHTML 1.0 Transitional
  • Универсальная (многоязычная) адресация страниц. Требуется: 1) заглавная страница для каждого языка, 2) уникальный ключ на поля { lang, tag(?), supertag }.
  • Вывод страниц в кодировке UTF-8
  • Автоматическое формирование списка авторов для документа.
  • Полный рефакторинг кода:
    • хэндлеры, действия и административные модули переписать в классы вместо inline-php
    • вынести lang-strings действий и хэндлеров в самостоятельные динамически подгружаемые lang-файлы

Исправить


  • При создании страницы наследование прав доступа должно происходить от родительского документа кластера, вместо использования дефолтных
  • В некоторых случаях не создаётся список прав доступа при создании новой страницы в кластере
  • XML-код каналов не отвечает спецификациям RSS
  • Отсутствует pubDate для элементов канала новостей
  • Не отображается список последних комментариев
  • Контекстный поиск производится по полному пути к текущему документу вместо только имени документа
  • Параметр datetime во внутренних ссылках не имеет смысла. Можно удалить (одновременно исправит проблему с якорями на страницах с datetime в url)
  • Действия {{orphaned}} и {{wanted}} не работают для любых вложенных страниц кластера
  • Функция импорта XML не отслеживает ссылки внутри импортируемых документов
  • Переименование (перенос) страницы не обрабатывает контекстные (относительные) ссылки
  • Есть ли смысл в ВикиИменах, если они практически не используются с учетом структуры сайта? Отключить
  • Некорректное сохранение файлов на определенных страницах (определенные литеры в именах, нюанс хостинга)
  • RSS новостей генерирует не верные ссылки (например для новости "Новое название и обновление платформы проекта" дан URL, по которому новость не доступна). Ну и хотелось бы, чтобы по RSS новостей была доступна не только ссылка на новость, но и текст новости.
  • При открытии http://www.pgpru.com/ происходит явная переадресация на страницу /Главная
  • Переименование (перенос) страницы не затрагивает прикрепленные к ней файлы
  • При удалении страницы прикрепленные файлы остаются в файловой системе и БД
  • Повторное несоответствие RSS-каналов спецификациям RSS (non-ASCII в строках URL)
  • Новости в RSS – заголовки новостей, создаваемые из wiki-имени, не имеют пробелов
  • Поисковая система неуклюже работает с комментариями страниц: каждый комментарий может быть открыт как страница, в результатах поиска непонятно, какая страница была прокоментирована, и т.д.
  • Ошибка в хэндлере rate: не учитывается нулевой балл при оценке страницы
  • Панель управления доступом к документу: список пользователей для передачи прав владения нерационален (в дальнейшем от регистрации новых участников может стать чрезвычано длинным). Следует заменить на поисковую форму.
  • Некорректная работа подсистемы закладок: закладки устанавливаются, но не удаляются (не действует виртуальная отрисовка ссылок)
  • При простом листании (перезагрузке) страниц обновляется код CAPTCHA в комментариях (особенно в форуме) и впустую расходуются попытки. Альтернатива: обновлять можно сколько угодно, а попытки тратить только при вводе и валидации кода, но само число попыток снизить до 5-10.
  • Слишком большой поток уведомлений о новых комментариях. Следует сообщать только один раз, а затем молчать, пока пользователь не просмотрит страницу.
  • Оптимизировать SQL-запрос для поиска отсутствующих страниц (нынешний не успевает исполниться до таймаута)
  • Устранен ряд некритических уязвимостей класса XSS и SQL Injection (поисковик, модули опросов и рейтинга страниц)
  • Улучшен поисковик в плане вида выдачи результатов
  • Прямые ссылки на комментарии выдают неверную страницу комментариев (первую или последнюю)
  • Невозможна передача имени страницы в кодировке, отличной от CP1251: отображается пустой документ
  • При указании внутренней ссылки на комментарий документа, отследить обратную связь становится невозможно. В таких случаях в таблице ссылок следует устанавливать ссылку на базовый документ.
  • Ликвидировать рабочую группу Files. Дать возможность каждому владельцу страницы загружать на неё файлы.
  • Критическая ошибка в функциях определения административных и модераторских полномочий с потенциальной возможностью получения полномочий незарегистрированными гостями
  • Переместить все hardcoded-ссылки в вызовы метода href()
  • Скорректировать функции экспорта/импорта XML-документов согласно новой структуре БД
  • Процедура очистки устаревших данных (лог, редакции и т.д.): неверный расчет даты приводит к удалению всех элементов старше 1 дня
  • Ошибка в функции определения прав доступа HasAccess(), способная в определённых ситуациях привести к раскрытию данных (в частности, при рассылке уведомлений на изменения документа с ограниченным доступом)
  • Во избежание семантических атак, следует отключить параметр nomark для директив include и randomphrase (здесь добавить рамку) в PGP-подписанных текстах
  • Автоматически блокировать отображение раздела в новостных сообщениях
  • При переименовании темы форума через модераторский интерфейс не трогать заголовок, если сообщение электронно подписано
  • При разделении темы форума из первого комментария не создаётся новый документ (tag), и следующие комментарии отделяются в никуда (comment_on)
  • Отработка процедуры замены надстрочных кавычек на кавычки-лапки в классе типографики в некоторых случаях выдаёт пустую строку (очевидно, некий артефакт в регулярных выражениях). В данный момент исправление не представляется возможным, типографический корректор отключен.
    • Форматтеры переработаны, проблема исправлена, корректор включен.
    • Поправка: более детальное тестирование показало, что в определённых случаях проблема сохранилась. Однако, стало возможным отключение части функций типографики (в частности, обработки кавычек) без ущерба для остальной функциональности. Окончательное решение пока не найдено.
  • Критическая уязвимость в панели модерации (недостаточная проверка параметров функции), позволяющая в определённых ситуациях удалить все страницы сайта
  • Несколько подряд вызываемых редакций одного и того же комментария имеют один и тот же урл, что приводит к невозможности редактировать несколько раз подряд один и тот же комментарий в браузерах с активным использованием хэша (links, elinks и другие).
    • Примечание: в связи с технической сложностью и нехваткой времени решение этой проблемы отложено на будущее.
  • При использовании BBCode-разметки если использовать цитирование в списке, сообщение выводится некорректно (большая часть не выводится вообще), не говоря уже о корректном форматировании.
    • Обход: использовать только wiki-разметку в указанном случае.
  • В файле structure.sql из папки files\backup\20071020_000000 нет указания кодровки таблиц (ENGINE=MyISAM DEFAULT CHARSET=cp1251;). После восстановлении из бэкапа система не функционирует. (Исправлено в 0.8.24a)
  • ссыылки вида google:несколько+слов не работают. (Исправлено в 0.8.24a)
  • Нет связи с главным ключём при подписывании материалов, т.е. при смене подключа для подписи выдаёт: "неопределенная ЭЦП ключом 0x12345678, не зарегистрированным на сайте". Чтобы избежать такой ошибки, нужно либо вручную обновить ключ на сайте (удалить и загрузить по-новой), либо отправить на сервер ключей и дождаться, пока сайт в плановом порядке обновит его сам.
  • В броузере Opera не отображается панель Wiki разметки, что делает неудобным оформление постов. Прошу обязательно исправить.
    • Код панели разметки несовместим с Оперой. Он целиком заимствован из WackoWiki. Если разработчики решат его исправить, исправление будет принято и в oS. Либо исправьте сами и пришлите патч.
  • Вставляется дополнительный пробел после точки: X.X, например, становится X. X. Если мотивации этому нет, то следует починить.
  • Поиск: если в поле "Автор" указать "Гость", то поиск не срабатывает. Контрпример: поиск слов "pgpru" или pgpru* возвращает "Результатов не найдено", хотя есть (один из примеров) /comment43978.
  • При вставке ссылки, содержащей кириллические символы, копированием из firefox (например, из русской википедии), бьётся кодировка, и ссылка становится нерабочей (сайт не делает преобразование "URL-encoded → UTF-8").
    • Обходной путь: перенабирать кириллические символы в ссылках руками при вставке в вики-документы.

Идеи


  • Возможность загрузить в профиль электронную визитку (vCard ver. 3.0) и её подпись.
  • Автоматическое получение метки времени на каждую редакцию документа.
  • Замена RSS 2.0 на Atom 1.0 (RFC 4287), как на свободный и более современный формат.
  • Добавить тэг [offtopic] (можно сокращённо [off]), чтоб по умолчанию (без клика) показывал бы только одну строку, в начале которой он стоит, а по клику веcь блок до закрывающего тега [/off]. Или даже сделать тег [subtopic имя_подтемы], при клике на котором будут раскрыты все субтопики с этой подтемой.
  • Было бы не плохо сделать древовидными комментарии: ответ на комментарий дается под конкретным постом, а не просто в общей ветви. Так же полезно добавить возможность отображения комментариев как с первой записи, так и с последней (новые записи в начало)
  • Надпись "Комментарий добавлен" лучше сделать зелёной.
  • Поиск попросту не работает, use-case нулевой, я в шоке! (пункты 2 и 3 — крайняя необходимость, 1, 4, 5 и 6 — можно отложить на потом):
    1. Так называемый
      стандартный поисковый синтаксис: знаки "плюс", "минус", "звездочка", скобки и т.д
      должен быть описан, либо дана ссылка на его описание. Мне, например, совершенно неочевидно есть ли отличие "слово1 + слово2" от "слово1+слово2". Так же, не ясно как использовать скобки. Выводить каждому эти правила эмпирически — не лучший подход.
    2. Очень существенная часть полезной информации размещена как комментарии к каким-то, зачастую слабо связанным с темой самого комментария, темам. Найти эти комментарии очень трудно. Ввиду этого наличие переключателя "Не искать в комментариях страниц" при отсутвии переключателя "Искать только в комментариях страниц" — форменное издевательство. Предлагается реализовать. Да, и лучше писать "в комментариях к станицам", а не "комментариях страниц" (страницы сами комментируют?) — так точней и звучит лучше.
    3. В выводе результатов поиска вместо того, чтобы (как и делают поисковики типа гугла) показывать кусок текста, содержащий искомое слово или их комбинацию, всегда выводится начало комментария. Не трудно догадаться, что если искомое слово (предложение, цитата) — где-то в середине "простыни", часто посвящённой ответу на несколько слабо связанных между собой вопросов, то догадаться, где же оное среди десятков безликих шапок комментариев, практически невозможно. Это ключевой момент, который полностью обесценивает наличие поиска на сайте. Если трудно сейчас реализовать вывод контекста, путь хотя бы найденные комментарии выводятся полностью, целиком.
    4. В выводе результатов поиска, в порядке очень странного и необъяснимого исключения, показывается сам вики-сорс со всей текстовой разметкой вместо того, чтобы показывать собственно результат её действия. Это улучшает восприятие? Кроме того, это существенный privacy leak: одно и то же "на печати" можно получить разными способами и используя разные форматы (BB, вики-разметку и т.д.), и в самих комментариях этого не будет видно, зато отлично видно в поиске: кто, и как в точности использует эту разметку и какие именно из её элементов.
    5. В поле "Автор" логично было бы включить поддержку списка пользователей (не забывайте, что Гость — тоже пользователь!). Т.е. если указано "SATtva, unknown", это бы значило "все документы/комментарии, опубликованные либо SATtva'ой, либо unknown'ом".
    6. Было бы очень кстати реализовать поиск по документам/комментариям, появившимся за последние n месяцев (или m лет, если им больше года), добавив соответствующее поле/параметр. Часто хорошо помнится, когда примерно было опубликовано то или иное, но вот поисковику на сайте это не объяснить.
  • Разрешить при создании темы вводить ограничения для комментаторов. Например, запрещать им писать под гостем, чтобы псевдоним в теме был обязателен. Или, если более общо, можно разрешить вводить допусимую (для создателя темы) долю таких комментариев (на каждой странице или во всей теме)
  • Выделение цитат <[цитата]> неудобно по двум причинам: нужно переходить в латинский регистр и символы разные. А ведь это одно из наиболее часто используемых форматирований! Ну и поскольку в первую очередь оптимизировать надо самое частое, то хорошо бы добавить возможность выделять цитаты на русском регистре и повтором символа, например ;;цитата;;. Или лучше \\цитата\\ – даже на шифт не надо нажимать.
  • При использовании сносок (разметка наподобие ((*1)) и ((#1))) оные относятся ко всей странице, а не к комментарию, где они нужны (т.е. если в одном комментарии уже есть первая сноска, то первую сноску во втором комментарии необходимо нумеровать как минимум с двух). Лучше, когда каждый комментарий — "корнем" для собственных сносок. При желании сослаться на объект в других комментариях или на объект в самом топике можно воспользоваться другими элементами wiki.
  • Появление нового опроса не отображается в "последних изменениях". Почему бы не добавить? Сайт проще всего отслеживать по странице последних изменений и последних комментариев — там должны быть отражены все изменения, произошедшие на сайте. К тому же, было бы намного удобней иметь не 2 страницы ("комментариев" и "изменений"), а одну, где все изменения отражены.