суббота, 31 августа 2013 г.

cms 100500+100500+ модулей. Пора что-то менять


Посетила меня мысль, о разработке собственной open-source cms. Их тысячи, но большинство, не следуют пути дзен... все эти модули, компоненты, плагины, возникает сложносочетаемое приложение. Некоторые гордо называют это конструктором.

Как же разрабатывают cms?
Пишут админпанель, функции, главная страница, хуки, и добавляют возможность добавления модулей.
То есть к основному блоку - скелету, каркасу, добавляют возможность добавлять другие блоки, к ним третьи...

Все ок, пока не происходит обновление Главного блока, костяка cms. Знаете что следует? Ваши модули не работают, обновляйте их, а если не обновляется, не совместима, ищите другие модули, компоненты, пишите сами.

Работает сайт, год-два, полет нормальный. Затем находят баг, и Вы в обязательном порядке обновляетесь - потому что, безопасность сайта штука серьезная. И в большинстве случаев, танцуете с бубном)

Я (молодой веб разработчик не нюхавший пороха, незнающий как это работать в крупном серьезном проекте, считающий себя великим гуру и самым умным (сарказм)) считаю это неправильным.

Обновление cms должно происходить вместе с обновлением всех существующих модулей. Да и вообще, модули нужны ли?
Представим себе cms без лишних 100500+ модулей.
Все из коробки, установил - работает, один мануал для всей cms, очень удобно.

Как я себе это представляю:
Нужно создать три направления одной cms: 1. Магазины, 2. Портал 3. Блог.

Тем самым, мы избегаем постоянного обновления, при изменениях. Так как вероятность багов будет снижена, количеством кода. Ведь для каждого направления требуется меньше кода, чем для одного костяка. Сам не понял, что напечатал). Привожу example.

Пример:

SuperPuperCMS-shop
Один костяк, с 10 модулями. (модуль возможности оплаты, совместимости с cvs, отзывы и тп, так как не всем магазинам требуется сразу устанавливать оплату, бухгалтерию.) Не более 10 модулей в итоге.

SuperPuperCMS-portal
Один костяк, с 7 модулями. (Возможность форума например, тоже не всем порталам сразу нужна ) Не более 7 модулей в общем.

SuperPuperCMS-blog
Один костяк, с 3 модулями. (тут незнаю, блогам вообще нужны модули?) Не более 3, на всякий случай.


Возможность фотогалереи, page navigation, и других обязательных функций для любой хорошей cms вшито в общий скелет cms. Модули же, являются дополнительными необязательными возможностями, которые устанавливаются по желанию.

Да это увеличит исходный код, так сказать  "москитом" cms не будет, но это будет лишь вначале.
По мере развития проекта, в коде не будет костылей, для совместимости с предыдущими версиями, модулями сторонних разработчиков, и это не позволит исходникам разрастаться больше чем нужно для работы

Мы разработчики модулей, плагинов, компонентов - распыляемся подтачивая модули, для заказчиков, что бы добавить функции, которые затем потребуются кому то еще. Этих модулей, компонентов и плагинов, сотни тысяч! Это код, который требуется обновлять, но много ли Вы знаете разработчиков, которые обновляют модули, с каждым багфиксом cms? сотни в лучшем случае.

Это приводит к снижению безопасности, совсем недавно я обнаружил пару лазеек и зашел в админку крупного сайта с собственными блогами, потому что админ своевременно не обновил wordpress и соответственно осталась возможность навредить этому сайту-порталу. Естесственно, я написал админу, о ситуации на email, со скриншотами. Но пока не увидел результата.

После безопасности, на втором месте, удобство. Знакомый код, легче для понимания, и поиска ошибок. Меньше медитации, больше свободного времени на действительно важные дела, например научиться делать сальто) и удивлять девушек на пляже).

Действительно важные дела

Мысль сия, пришла мне в голову только сегодня, окончательно еще не созрела, поэтому пока показать ничего не могу. Вначале думаю о языке для разработки: php, python, ruby?... а может Go). Я понимаю, что одному мне это не потянуть.

UPD: Месяц назад набрел на Kohana (О, уже месяц не заглядывал в блог!), присматривался уже давно, но в этот раз решил, взяться и переделать уже проект который я писал под Asp.net.
И понял, вот оно! Единый код, открытый, легкий для освоения, и гибкий, без лишних модулей. Так что, за фреймворками будущее!