История CMS "DreamBot"
2008-02-22 01:40Как ни странно, CMS DreamBot это проект, который начался не сегодня, и имеет почти шестилетнюю историю, которая началась тогда, когда и слова такого - CMS - не было. Вначале, CMS DreamBot называлась IIGFS и разрабатывалась в компании Интернет Инвестмент Груп .
История CMS "DreamBot"
Знакомство с Zope
В 2000 году, компания "Интернет Инвестмент Групп" (IIG, http://www.iig.ru), где я работал ведущим инженером, опробовав несколько систем поддержки веб-разработки (мой собственный перловский проект, CMS Midgard и другие), остановила свой выбор на сервере приложений Zope2. Глаза у всех горели от открывшихся возможностей, и всего за месяц был создан первый коммерческий сайт на его основе. Накопленный опыт позволил уже второму сайту, для небезызвестной "Федерации Интернет-Образования", стать первым удачным опытом CMS. Тогда же стал очевиден основной принцип получения прибыльного веб-движка: создать вместо OFS свою собственную объектную среду, заточив ее логику под "стандартную" спецификацию сайта, и, подписывая у клиента "стандартную" спецификацию, возможно, с небольшими доработками, торговать дизайном, опытом интеграции, раскрутки и созданием контента.
IIGFS
В свободное между проектами время, на свой страх и риск, ведущие разработчики IIG: написали первую версию такой системы - IIGFS. Разумеется, OFS не переписывалась с нуля, а IIGFS была создана на ее основе, грамотно используя ее возможности и объектно-ориентированное программирование. Первые сайты разрабатывались с некоторым трудом: система была сыровата, но потом наши дизайнеры и верстальщики научились штамповать оригинальный по дизайну сайт незначительными усилиями и без малейшего вмешательства программистов. В какой-то момент даже возникла задача перенесения более старых Zope-сайтов на новую платформу, которая была с успехом решена оригинальным способом: сайты были экспортированы в XML, пропущены через XSLT-преобразование и отображены на новую объектную модель. Мы гордились собой :).
Развитие IIGFS
Постепенно IIGFS разрасталась: появлялись новые решения, такие как форум, аналитика, система объектно-реляционного отображения, интернет-магазин, сайты делались для серьезных клиентов - от компании "Чистая Вода" и до "Шереметьево-Карго", и это решение продемонстрировало свою надежность, быстродействие и расширяемость, которые достигались умелым использованием особенностей Zope2 и точно выверенным балансом между реляционной и объектной базами данных. Модульность и низкая ресурсоемкость до сих пор остаются основными чертами потомков этой системы.
Наверно, мы были первыми кто написал индексацию через реляционную базу данных, отображение реляционной базы в объекты Zope, причем двумя различными способами, один из которых жив до сих пор в ks.sqltools. Мы первые сделали локализацию в Zope, хотя и не таким способом как это делается сейчас, и все это в рамках IIGFS. Нашу документацию без зазрения совести копипастили очень известные разработчики Zope-продуктов и ее читали как учебник по построению объектно-ориентированных систем.
Но, интернет-бум подошел к концу, наше сообщество распалось, и развитие оригинального кода IIGFS прекратилось
IIGFS2
Я сменил место работы, договорился с IIG о выпуске клона IIGFS под GPL (правда, толком это так и не сделал) и написал IIGFS2, добавив туда, благодаря свободе от legacy, несколько оригинальных сервисов, таких как реестр и кеширующий конвертер текста. На ее основе был сделан еще один сайт - http://www.neural.ru/ - и я совсем сменил область деятельности.
В то же время, в IIG продолжали выпускать сайты на основе IIGFS, сделав свой смешанный клон IIGFS+IIGFS2. Все это так удачно работает, что даже сейчас на вопросы о возможном апгрейде на что-то более современное, клиенты отвечают, что все работает отлично и ни в каком апгрейде нет нужды.
Знакомство с Zope3
И вот новый переворот в мире веб-разработок - сервер приложений Zope3. Я на тот момент не занимался веб-разработками, но новая технология меня заинтересовала и, исключительно из познавательного интереса была изучена. Я даже подумал о некоторых возможных доработках, однако не стал этим заниматься. В 2006 году компания "Ключевые решения" предложила мне обучить программистов работе с Zope3. В качестве задачника была использована порезанная спецификация на IIGFS2, и, в результате, я получил немного почти работающего кода, а компания - группу высококлассных специалистов.
В своем крупнейшем проекте "Ключевые решения" ни разу не воспользовались этими наработками (это противоречило лицензионным соглашением с клиентом, требовавшим полной передачи прав на весь используемый код, а для GPL-ной IIGFS это было невозможно), поэтому проект получился не таким эффективным, каким мог бы, но я-то допиливал понемногу то, что написали "ученики" и вскоре имел неплохой прототип почти работающей реализации IIGFS под Zope3.
DreamBot
Осень 2007 года... мой контракт с "Ключевыми решениями" подошел к концу, я откровенно скучаю. Встречаю нескольких старых знакомых по разработке IIGFS и предлагаю обучить их Zope3. Внезапно всплыло еще несколько моих учеников (оказывается, чему я только не учил: от офисной бюрократии до С++ и СУБД), и тоже выразили готовность принять участие в семинаре. Вначале мы планировали провести обычный семинар (т.е. засесть в офисе с проектором и слайдами), но из этого ничего не вышло и родился "Отряд добровольцев в защитных оболочках" и система обучения "Код в обмен на знания", которая сейчас активно продвигается на сайте http://ZopeLada.ru .
В качестве заданий используются куски гипотетической системы управления контентом "DreamBot", попутно изучаются пределы пластичности компонентной модели в версии "От Zope3" (многие участники видели другую модель - "от rPAS": сервера приложений "CORBA over ZODB", фактический опередившую по использованию компонентной модели Zope3 на два года). Лучшие результаты заданий я аккуратно пакетирую и выкладываю на PyPI как самостоятельные продукты. В начале февраля приходит осознание того, что бесшабашные опыты привели к закономерному результату: появлению новой CMS "DreamBot", я спешно верстаю дизайн и вот - три сайта на прототипе CMS "DreamBot" готовы. Дело за малым: выполнить нудную работу по локализации и анонсировать наше творение.
Заключение
Главный результат: всем было интересно, и каждый разработчик достиг каких-то своих целей. "Отряд добровольцев в защитных оболочках" взял первую вершину: разработан классный, эффективный и оригинальный продукт, гибкий настолько, что на нем за полчаса можно сделать все и любую его деталь можно применить везде :).



