Some maintenance is scheduled for today which requires LiveJournal to be down briefly. Please see this post for details.

Дон Карлос (kastaneda) wrote,

Feature-rich проекты

Задумался, почему я не пользуюсь современными открытыми сайтодвижками разной направленности - теми же InTerra, WackoWiki (да хотя бы phpBB) и подобными проектами?.. Всяких возможностей - дохрена. Что хитрого понадобится - можно самому дописать. Всё уже есть, готовое, работающее и совершенно халявное. Клонировать всё это “по-своему” можно, разумеется, - был бы в этом смысл. (Что я, собственно, и делаю в своих разработках). Что же не так?

А вот что. Мне такие проекты не нравятся “из коробки”. Надо всё настраивать, перекрашивать и перекраивать. Первый шаг - открыть config.inc.php, вписать чего-то умного и посмотреть на результат. А дальше начинается торба.

Итак, хочу в этом движе супер-пупер-движке новую фичу. Свою. Уникальную. Совершенно не нужную остальному миру. И... всё. Мне надо разобраться во всех потрохах довольно крупного проекта с развитой внутренней структурой. Лезу в код, начинаю читать и через полчаса начинаю колотиться головой об стену со словами “кто ж так строит”. (Кому это знакомо - поднимите руки! :)

А вот теперь - интересное наблюдение. Чтобы разобраться во всей структуре проекта, в методах подключения своих модулей, в корневых библиотеках и т.д., мне мешают те самые фичи. Которых, как уже упоминалось, дофига. Я вижу три экрана кода, который что-то очень полезное делает, но за этим я пропускаю две строчки, которые это всё связывают в одну структуру. Со временем я их всё-таки нахожу, но...

Через три дня свежеустановленный движок отправляется в /dev/null.

Теперь - парадоксально тупой вывод про идеальный движок чего-то (блога, wiki, форума, итд итп). “Ядро” системы должно быть 1) минимальным, 2) прозрачным, 3) самодостаточным. (Пункты 1 и 2 - не синонимы). Всё остальное, все навороты проекта должны привинчиваться отдельно, даже если идут в базовой поставке.

Что у нас должно получиться? Берём такой вот mycoolengine-1.0.tar.gz, распаковываем. Видим (например) подкаталоги base и extensions. Внутри base всё очень просто и понятно. И этот base работает без каких-либо фокусов: если это у нас, например, движок блога, то в base сидит самый что ни на есть примитивнейший блог, и ничего более (можно даже без комментариев к постам). Разобраться с base и/или внести в него изменения - дело пяти минут. Внутри extensions сидит нечто в эннадцати экземплярах, которое простой инсталляцией (например, раскомментированием одной строки в каком-нибудь modules.inc.php) расширяют функциональность продукта до нужной конфигурации. Будут к тому блогу и комментарии, и рубрикаторы всех мастей и фасонов, и синдикация с ЖЖ, и автотипографика с wiki-разметкой, и каналы RSS, и комменты на мыло, и френдлента, и регистрация постоянных посетителей, и...

Ну и? Сейчас кто-то обязательно скажет “подумаешь, открыл Америку через форточку!” и будет почти прав. Почти, потому что я не знаю (к примеру) ни одного opensource feature-rich форума (уровня invision’а или phpBB), у которого есть минимальная конфигурация меньше чем на полметра исходников.
Tags: q-revo, webdev
  • Post a new comment

    Error

    default userpic

    Your reply will be screened

    Your IP address will be recorded  

  • 2 comments