Intellect Board — cистема управления сайтом

Построение сайта на основе форума

Intellect Board — cистема управления сайтом »   История Intellect Board
История Intellect Board
С 2001 по 2003 год участники Объединенного Открытого Проекта Gram и 4X_Pro занимались переводом, поддержкой и развитием версии Ikonboard 2.1.9, получившей название "Русский Ikonboard". Однако к лету 2003 года стало ясно, что Ikonboard 2.x безнадежно отстал в своем развитии и дальнейшее его развитие неэффективно, и возникла идея написать свой собственный форумный движок, который будет свободен от недостатков Ikonboard, но не будет содержать излишеств вроде визуального редактора или огромного объема JavaScript-кода, которые к тому времени появились во многих других движках. Целевой пользователь этого движка определялся как "продвинутый пользователь, не нуждающийся в подсказках и умеющий самостоятельно изучать необходимые материалы (например, выучить коды смайликов и BoardCode), для которого экономия траффика важнее удобства пользования".

Основной концепцией нового движка стала идея "сайт на основе форума с дополнительными разделами". Работа над движком началась осенью 2003 года. Изначально движок писался на Perl без использования СУБД, но с принятием специальных мер по недопущению падения производительности при большом количестве файлов. В феврале 2004 года была написана первая альфа-версия и framework для нее, получивший название XAPPI (XXXX Pro's Advanced Perl Programming Interface).

Ключевыми идеями, которые планировалось реализовать в новом скрипте, были:
1) модульный подход: сайт состоит из разделов различных типов (форум, статьи, файл-архив, фото), за каждый тип раздела отвечает свой модуль;
2) интегрированность — единая система представления пользователей, текстов сообщений/статей/комментариев, загруженных файлов, с точки зрения пользователя — единая система поиска и регистрации;
3) наличие возможности поиска любой информации (сообщений, тем, пользователей) по критерию любой сложности;
4) разветвленная система прав доступа, которая позволяла бы назначать минимально необходимые уровни для выполнения тех или иных действий на уровне отдельных пользователей, а также динамически повышать уровни с ростом количества сообщений;
5) интеллектуальная система модерирования, позволяющая администратору/модератору описывать правила, на основании которых принималось решение о недопуске/постановке на премодерацию сообщения.
В качестве проектных названий форума рассматривались варианты Total Board (что должно было подчеркивать пункты 2, 3, 4 позволяли почувствовать полный контроль над форумом) и Mega Board (что означало форум с негораниченными возможностями, которые возникали с помощью пунктов 1 и 4). Однако в итоге из-за пунктов 3 и 5 было выбрано название Intellect Board, так как предполагалось, что именно интеллектуальные функции сложного поиска и правил модерации будут отличать этот движок от всех прочих.

Однако через некоторое время стало ясно, что PHP имеет целый ряд преимуществ по сравнению с Perl, в частности, PHP-скрипты более просты в установке, на PHP существенно проще обнаруживать и устранять ошибки, PHP есть почти на всех тарифных планах платных хостингов в отличие от Perl. Также стало ясно, что использование СУБД позволит гораздо более эффективно реализовать идею №3 — сложный многокритериальный поиск.
Всвязи с этим в мае 2004 года развитие Perl-версии Intellect Board было остановлено, а 3 июня 2004 года началась работа над PHP-версией с использованием СУБД MySQL, которая получила номер Intellect Board 2.00. Релиз этой версии предполагался 10 августа (в этот день Объединенному Открытому Проекту исполнялось три с половиной года), но из-за неожиданной болезни ведущего (и единственнного на тот момент) разработчика 4X_Pro был сдвинут на несколько дней, и в итоге версия 2.00 вышла 13 августа 2004 года. Этот день и считается началом существования Intellect Board.

Основная задача версии 2.00 была создание форума, с функциональностью, примерно равной Ikonboard 2.x (на смену которого она и планировалась) и phpBB, поэтому в ней было только два типа разделов: стандартный форум и контейнер. Реально же концепция "сайт на основе форума" была реализована только в версии 2.10 (конец 2004 года), где появились разделы "Статьи", "Файл-архив" и "Новости". Версия 2.10 из за резкого роста объема кода оказалась весьма нестабильной, поэтому вскоре (в феврале 2005 года) была выпущена версия 2.12, основной целью которой было исправление ошибок.

В версии 2.13, вышедшей в июне 2005 года, было добавлено еще два типа разделов: фотогалерея и энциклопедия. Кроме того в этой версии был проведен существенный пересмотр всех SQL-запросов из-за отказа от концепции "вся статистика должна генерироваться на лету", которая приводила к катастрофическому падению производительности при больших объемах данных. В версиях 2.14 (сентябрь 2005) и 2.15 (декабрь 2005 года) добавлялись различные второстепенные функции и исправлялись ошибки.

Следующим серьезным шагом в развитии Intellect Board стала версия 2.18, вышедшая в июне 2006 года. Основной задачей этой версии стало приведение к стандартам HTML и CSS шаблонов форума, а также всех SQL-запросов — к стандарту ANSI SQL, что позволило реализовать запланированную еще в 2.00 поддержку других СУБД, в частности, PostgreSQL. Кроме того, в этой же версии впервые появился экспорт тем в RSS и была проведена большая работа по снижению нагрузки на базу данных.

В июле 2006 года в целях повышения безопасности IntB был объявлен хак-конкурс по поиску в нем критических уязвимостей.

В версии 2.19, вышедшей 10 февраля 2007 года (к шестилетию существования Объединенного Открытого Проекта) наиболее существенным нововведением стали человеко-читаемые URL (HURLs), фиксация индексации поисковыми системами, и возможность промежуточного сохранения редактируемого сообщения в черновик без перезагрузки страницы.

Версия 2.20 (13 августа 2007 года, к третьей годовщине проекта Intellect Board) содержала в себе два принципиальных новых типа раздела: блог пользователя и личную фотогалерею, которые создавались по запросу самого пользователя без участия администратора (при условии наличия у пользователя достаточного уровня), и в которых пользователь получал автоматически модераторские права. Кроме того, были добавлены две принципиально новых возможности: адресная книга и Ignore-лист, в результате чего форум приобрел базовые функции социальной сети.

Изначально планировалось, что версия 2.20 будет последней, однако в дальнейшем было принято выпустить версию 2.22, в которой была реализована функциональность, необходимая для одного из проектов, созданных 4X_Pro: импорт RSS, темы только для модераторов, а также был полностью переписан механизм вывода сообщений в теме. Кроме того, на отдельную страницу были вынесены комментарии к статьям, фотографиям и файлам, а также был сделан ряд более мелких доработок.

Осенью 2006 года стало ясно, что в серии Intellect Board 2.x существует слишком много недостатков, устранение которых по трудоемкости сравнимо с написанием нового форума полностью с нуля. В частности, к таковым относится отсутствие разделение обработки и вывода данных (что создает проблемы с выводом HTTP-заголовков в некоторых ситуациях), неудобная система шаблонизации, неэффективная работа с БД и недостаточно высокое качество HTML-кода. Кроме того, поменялась и сама целевая аудитория из-за того, что с одной стороны, экономия траффика в настоящее время становится все менее и менее актуальной, с другой — 4X_Pro пришел к выводу, что между удобством пользователя и экономией траффика нет столь явного противопоставления, и иногда выгоднее потратить сотню-другую байт на написание JavaScriptа для проверки правильности заполнения формы, чем тратить траффик на отсылку неправильно заполненной формы на сервер. Кроме того, также утратила актуальность идея "сайт на основе форума", постепенно сменившись на вариант "CMS + форум" (иногда поэтому Intellect Board 3.x называется Intellect CMS).

Все это привело к мысли о необходимости писать новую версию с нуля. В течение некоторого времени в начале 2007 года делались попытки совместить разработку версий 2.x и 3.x, но это оказалось крайне неэффективным, всвязи с чем 4X_Pro принял следующее решение: доделать запланированные доработки в версии 2.22 и передать развитие версии 2.x пользователю Gram, который активно участвовал в проекте с версии 2.18, после чего приступить к работе только над 3.x. Это и было сделано 26 декабря 2007 года, сразу после версии 2.22.

В настоящее время основная концепция развития Intellect Board 3.x выглядит так: "сайт как древовидная структура произвольных объектов с задаваемыми свойствами". Среди этих обеъктов могут быть статические страницы, статьи, фотографии, чаты, страница со списком разделов форума (аналог контейнера верхнего уровня в 2.x) и т.д. Но в отличие от 2.x, где у каждого типа разделов был строго определенный набор свойств, жестко задаваемых в таблице тем и дополнительной таблице для соответствующего типа разделов, в 3.x будет создан механизм, позволяющий описывать и динамически изменять наборы свойств для каждого типа объектов (а также, возможно, даже для отдельных объектов), что создает практически неограниченные возможности для дальнейшего расширения.

Кроме того, в Intellect Board 3.x планируется следующее:
1) возврат к концепции framework + движок для того, чтобы дать возможность создания своих проектов на основе IntB 3.x
2) пересмотр подхода к работе с базой данных: если раньше слой, обеспечивающий независимость от СУБД, просто дублировал вызов соответствующих функций для работы с СУБД с другим префиксом, то теперь работа ведется на уровне логических операций (например, "получить массив данных по определенному запросу" вместо "выполнить запрос", "извлечь очередной ряд данных").
3) обеспечение независимости модулей друг от друга и стиля форума за счет того, что шаблон для отображения, языковые константы и настройки сохраняются совместно с самим модулем
4) строгое разделение обработки и вывода данных (так называемый паттерн MVC)
5) возможность обработки данных различными шаблонизаторами (что, например, позволит избежать дублирования кода при необходимости вывода темы и RSS для этой темы, а также сделает принципиально возможным написание шаблонизатора, который будет использовать шаблоны других движков)
6) поддержка мультисайтовости и мультидоменности (т.е. работы с несколькими сайтами, которые с точки зрения хостинга являются aliasами, но при этом движок выдает для них разный контент)
7) возможность самодиагностики (т.е. наличие в каждом модуле процедуры проверки наличия необходимых ему прав доступа и расширений PHP на данном хостинге)
8) возможность подключения/отключения модулей "на ходу", что позволит обновлять IntB 3.x на уровне модулей, а не релизов, как это было в 2.x
9) изменение подхода к созданию/обновлению структуры БД: вместо описания запросов, которые необходимо выполнить, описывается структура, которую необходимо получить в итоге, после чего модуль работы с БД сравнивает ее с существующей и вносит необходимые изменения.
10) переход на кодировку UTF-8 (с возможностью сжатия данных при необходимости)
11) значительное усовершенствование средств отладки, а в перспективе — автоматизация предрелизного тестирования, что позволит избежать last minute bugs.
12) уделение значительно большего внимания документации для разработчиков

В настоящее время готова первая альфа-версия Intellect Board 3.x, однако последующая разработка была приостановлена из-за необходимости завершения 2.x






1 посетитель просмотрел этот раздел за последние 10 минут
В том числе: 1 гость, 0 скрытых пользователей

Последние RSS
Ограничение доступа
не отображаются разделы
Архив версий
Установка стиля на Intellect Board 2.22
Завершилась работа над новой версией 3.00

Самые активные 5 тем RSS


Время выполнения скрипта: 0.0120. Количество выполненных запросов: 7, время выполнения запросов 0.0000
Creative Commons License Rambler's Top100 Rambler's Top100 Рейтинг@Mail.ru Valid HTML 4.01 Transitional Valid CSS!