- Модульность (ох, как много светлых вострых копий разбилось об эту стену и дерзких сердец угасло. Но мы-то - старые циники; плюс - терять уже нечего)
Модульность - это система блоков и плагинов. Необходимо разработать и воплотить такой принцип движка, чтобы наращивание (урезание) функциональности не оказывало влияния на прочий функционал.
зы: модули не отменяют нормальных уровней абстракции - KISS - Keep It Simple, Stupid (вдруг кто не в курсе) - "Будь проще, идиотина"
& JMS - Just Make Simple - "Тупо сделай проще". Принцип был придуман совместно во время работы в %companyname%. Одна из любимых программерских фраз была: "Давай сделаем это ещё проще" - В принципе, на этом можно было бы и закончить ;) потому что дальше технические подробности.
Внутренний формат представления данных: XML (andnearbird), включая протоколы, интерфейсы и пр. (кроме, разве что, JSON) - База данных (наверняка, понадобится ;) PostgreSQL.
Почему? По сумме критериев: она достаточно мощна (вдруг кто-нить соберётся делать порталы?), распространена у хостеров, не-MySQL, на постгре можно делать нормальную бизнес-логику. Тем более, что нас модули - желющие могут и поменять.
Кстати, подключение конкретных обработчиков и надо сделать модулями-плагинами. - Шаблонизатор. Какой шаблонизатор?! о_О
а) PHP - лучший шаблонизатор
б) у нас же XML - для него есть XSLT
в) можно сказать, что это будет шаблонизатор pull типа (смарти типа push)
Ядро.
Ядром системы будет пхп. Что за странный выбор, спросите вы? Что эдакового вы хотите видеть в ядре, чего нет в пхп, спрошу я вас?
MVC.
МВЦ не существует.
Модули.
Плагины являются самодостаточными или наследованными компонентами.
На вход получают дозу XML, или не получают. Выдают свой XML, как правило. Плагинов без вывода очень мало.
Подключаются
Виджеты!
Работают только с визуальной частью плагинов.
Очень интересно, но непонятно пока, как это подключать.
Helpers
Хелперы - весьма полезная штука. Посмотрим, как оно уживётся с пул-шаблонизатором.
ps: http://code.google.com/p/yeap/