В любом случае идеального решения нет. Невозможно сделать что-то универсальное, подходящее для любого проекта.
Искусственный интеллект такого пока не умеет.
Судя по большому количеству различных CMS, идеал пока не достигнут. Да и понятно, что каждому проекту идеальна будет своя система... Поэтому делать что-то универсальное - почти наверняка гиблая затея. Если система будет много уметь, то будет сложной (новые люди не начнут ей пользоваться). В этом и основная проблема, как я понимаю.
Иногда даже со списком целых чисел долго приходится возиться, чтобы подобрать реализацию, оптимальную по скорости и памяти для текущей задачи. А CMS - гораздо больше и сложнее...
Конечно, стремиться надо. Особенно, если есть желание :) Но это напоминает выбор автомобиля со следующими характеристиками: чтобы был самый вместительный, самый проходимый, самый быстрый и самый экономичный. Ясно, что условия несколько несовместны. Ощущение такое, что с CMS эта же беда - надо выделять подмножества CMS (как минимум, лёгние-быстрые-простые и мощные-медленные-сложные), а в них уже искать идеалы (автомобили пошли по этому пути).
Я тоже согласен, что не может быть идеальной cms, если есть возможность, то своя cms - идеальная, но только для себя в первую очередь.
Хорошо бы конечно знать другие разработки Drupal, Joomla - это поможет с идеями для своей cms.
Я пытался освоить Drupal "побыстрому", но обламался :) - не зря говорят, что порог входа высокий.
Применительно к универсальной cms наверно также подходит принцип использования любой абстракции - выигрываем в скорости, зато проигрываем в гибкости.
Я тоже уже сто раз переписывал свою CMS, но потом понял, что много делаю лишнего. И сейчас перевожу на фреймворк и понял что много времени потерял на постоянные переделки, когда например в фреймворке то, что занимало 20 строк можно реализовать пятью-десятью, соответственно и размеры файлов уменьшаются
Написание своего кода развивает мозг, использование фрейворков ускоряет производительность.
Не надо бросаться в крайности, для любой проблемы, есть свои пути решения. Для себя лучше свою цмску использовать, а для клиентов на фрейморке.
Поэтому вначале имеет смысл писать велосипеды, пусть даже их ломают - главное не бросать, продолжать развиваться.
Ведь как говорят: пока с велосипеда много раз не упадешь, ездить не научишься.
А когда уже научился ездить, лучше брать фреймворк. Потому что фреймворк - это квинтэессенция опыта многих разработчиков в самых разных проектах. Оттуда можно много что почерпнуть. Если хорошо научился, чувствуешь силы - включайся в его разработку.
Человеку не обязательно писать свою CMS, чтобы быть опытным. Иногда хватает 2-3 крупных необычных проектов, чтобы иметь опыт!
А под CMS можно понимать и работу с ModRewrite + модули Новостей и гостейвой книги на файлах. Тоже своего рода CMS =)
Знаете поговорку? "Мы можем сделать быстро, дешево и качественно! Выбирайте любые два пункта."
Так и с супер CMS. Чем более она "супер" по одним параметрам - тем более "говно" по другим.
Мне кажется проблема в несоответствии возможностей фреймворка и требований к системе. Нельзя написать универсальный фреймворк для всего. Стоит начать с простого и, возможно, таким его и оставить.
К примеру у нас есть простенький фреймворк для работы с данными, который используется уже несколько лет без изменений.
Правильно. Если это не торговля лицом перед тем, как дать опенсорс-жизнь для своего движка, то иначе пост абсолютно лишен смысла и пользы, и в лучшем случае сойдет на "я пиздат, но как-то в печали"
Позволю с Вами не согласиться в полной мере. Создание собственного велосипеда безусловно повышает опыт с технической стороны (по-просту, изучение языка). Но сам начинающий программист не сможет создать правильную архитектуру приложений, для этого нужно изучать чужой код. ИМХО
это уже называется опыт, а мое мнение: если программист подсмотрел какой то алгоритм или хитрое решение, а не сам до него допер методом проб и ошибок, то толку от него будет не много. как показывает практика, езда на чужом коде заканчивается там, где появляются нестандартные или крупные проекты.
Истина в первичной инстанции!
Мой опыт именно таков, что как тока что-то не стандартное, всё пишется руками. Максимум что стандартно, это основа загружающая модули, система прав (если есть), и набор каких-то основных модулей типа шаблонизаторов, работы с базой и в таком духе. Всё остальное начинает писаться своими руками.
З.Ы. Я вообще начинал странно - я не сделал не единого простого сайта - все проекты были от среднего размера, сейчас по специфике работы перешел на большие системы автоматизации бизнеса - даже с присутствием фреймворка, специфично заточенного именно под эти задачи (а лет ему уже больше 6-ти, решено оочень много типовых задачь да и не типовых тоже), почти 70% кода мы всёравно пишем руками, потому что специфичная логика. Специфичный функционал или бизнес правила конкретного предприятия. Так что вы правы на все 100%. Программист, всё время сидевший на фреймворке и не вылазящий за пределы его функционала в случае сложного проекта сядет в огромную лужу.
согласен с Вами, однако считаю Ваше утверждение справедливым в случае, если кусок кода или алгоритм по-просту украден, но если программист потратил время на изучение подсмотренного алгоритма или интересного решения, то понимание подсмотренного решения даст почву для разработки своего решения в нестандартной ситуации
Выход: нанимаешь программиста, который будет вместо тебя постоянно дописывать и рефакторить код. А ты просто делаешь сайты клиентам и получаешь деньги. Вот :)
Я отлично понимаю Вашу ситуацию. Но не совсем понятно другое: при чём тут выбор фрэймворка для разработки и функционала CMS?
1. Предположим, у вас написан отличный движок без использования стандартных фрэймворков и на собственном шаблонизаторе. Тогда всё, что нужно это добавлять модули или даже рассмотреть возможность адаптации модулей от других известных CMS. Зачем что-то менять?
2. С другой стороны: движок не очень, новые модули идут со скрипом, есть недоделки в движке, которые некогда исправлять. Тогда оставьте как есть и напишите новую версию снуля. К чему усовершенствовать запорожец.
В любом случае фрэймворк не при чем, по той причине, что и с ним можно наломать дров, которые потом никогда не сложишь. И я сталкивался с этим не раз. В то же время, недавно сдал комерческую CMS на собственном фрэймворке, но при этом моя собственная CMS на зенде. Главное — архитектура и не важно какие средства для этого выбраны.
Дерзайте и удачи Вам!
Проблема не в архитектуре, а в том - что руки чешутся что-нибудь поменять, добавить. Причем далеко не всегда из-за того, что CMS не справляется с задачами сайта, иногда выходит рефакторинг ради рефакторинга) Вот и думаю, может проще юзать мощный фреймворк, где архитектура продиктована авторами.
Эээх... Как я вас понимаю. Велосипеды, велосипеды... Изобретать или не изобретать? А с чего все взяли, что это велосипед? Потому что очень простой?
Почему в одном фреймворке я нахожу педали, в другом двигатель внутреннего сгорания, в третьем белечье колесо? Почему, каждый раз у меня возникает желание взять отсюда это, а отсюда это, не... нет это. О! Уже мотоцикл получается, а вот так вообще танк! Может мопед лучше? Он легкий, если что на себе можно дотащить... Нет! Мне нужен трансформер! Доктор, я болен?
по моему ты на верном пути.
Я сам давно тоже начинал писать свою cms, писал и бросил
взялся за готовую cms, изучил досконально, дофига чего не хватало, опять с нуля сел за свою кмс, писал писал и надоело опять, все эти глюки, доработки. Решил сесть на cmf, нашел подходящие, изучил, попробовал, написал с десяток сайтов, пришел к выводу что много че опять не хватает для полного счастья. В итоге опять засел за свою кмс(cmf), и если найду че нить поумнее своей и поумнее тех, которыми я пользовался, то обязательно опять подсяду на них... =) (все это познавал в течении 4 лет) Ошибок в собственно писной кмс со временем становится все меньше и меньше и это очень радует, скоро будут просто мелкие исправления и доработки...
Чем приятно писать свою - можно взять у каждого по ягодке с сливками!
Пишу только ядро, мощный фундамент системы, а стены и крышу строю индивидуально по случаю. За счет этого достигается большей универсальности.
Строю только для собственного удобства. ИМХО
Спасибо, интересный опыт. Ситуация такая же, но я пока со своей CMS не переходил. Только заимствовал идеи, а иногда и полностью классы из других фреймворков
Придерживаюсь максималистического взгляда, что будущая cms должна быть полностью ассинхронной тобишь на AJAX.
Очень хотелось бы узнать есть ли такие???
В своё время искал и не нашёл... занялся разработкой такой, можно посмотреть betta архитектуры...
http://itlife-studio.ru/#life/project/weblife_assembly
Ещё думаю можно различать два вида cms:
1) профессиональная. CMS должна требовать минимум новых знаний, касательно её самой... работать всё должно с уже привычными конструкциями языков на которых она написана... Аналогия операционные системы linux собирай как тебе надо.
2) пользовательская. CMS с навороченной админкой.. галочками, кнопочками... натыкал что надо и социальную сеть запустил... ну уж изволь, много ты исправить не сможешь... всё уже вшито. Аналогия MS Windows
имхо, ajax хорош в меру. во фронтенде он должен применяться только по необходимости, иначе поисковики ничего не увидят. также, я с опаской отношусь к множественным ajax запросом. иногда быстрее получается забрать 1 статический файл, чем выполнить 2 ajax запроса
О велосипедах и фреймворках