12 причин не использовать самописные CMS
08-01-2010 | Автор: Yaroslav.CH |
Рубрика: Система управления сайтом (CMS)
Метки: Заказчику
106

Чаще всего, самописные системы возникают как «наш ответ Чемберлену» — в пику уже существующим CMS. И этим «заболеванием» страдают 99% разработчиков сайтов — в какой-то момент, в порыве инфантильного максимализма программист, многие десятки часов проведший «в обнимку» с кодом какой-либо системы, восклицает — «Доколе! Сколько можно возиться с этим убожеством?! Я же знаю как сделать лучше!» и мало-помалу «я знаю!» превращается в твердую уверенность «я могу!» и вот уже, глядишь, строчка за строчкой начинает вырисовываться костяк нового детища.
Однако всем хорошо известно чем и куда вымощена соответствующая дорога и потому любая, даже самая прекрасная идея, при неправильном подходе к ее реализации может обернуться проблемами для всех ее пользователей.
Ниже мы рассмотрим те минусы, которыми обременена практически каждая самописная система и причины по которым стоит воздержаться от ее использования.
Кроме того, на рынке присутствуют и бесплатные самописные системы, разрабатываемые одиночками-энтузиастами.
Под понятием «самописная CMS» подразумевается массовый продукт. Уникальные разработки, предназначенные для решения «одноразовых» нестандартных задач — в этой статье не рассматриваются.1. Жесткая привязка к одному разработчику
Представьте себе машину, которая разработана таким образом, что может быть заправлена исключительно одним видом топлива, который продает одна-единственная заправка в городе. При этом само-собой разумеется, что эта заправка является стопроцентным монополистом.
Ситуация с самописными CMS выглядит абсолютно так же — приобретая или устанавливая самописную систему, клиент попадает в полную зависимости от ее разработчика, которая выражается в следующем:
- все разработки, доработки и изменения CMS производятся только с помощью автора системы;
- изменение ценовой политики или лицензии на использование CMS находится исключительно в сфере ответственности автора;
- дальнейшее развитие системы или отказ от последующей разработки зависит исключительно от ее автора.
Говоря откровенно, автор системы может делать все, что ему заблагорассудится — закрывать разработку, продавать ее кому угодно, да хоть по примеру Одноклассников — ввести платные смс за регистрацию/скачивание дистрибутива/обновлений или встроить в последнее бесплатное обновление системы скрытый скрипт, скачивающий базу данных клиентов тех сайтов, чьи владельцы отказались платить за использование системы. Примеры, конечно, максималистские, но по факту автора практически ничто не ограничивает.
Пользователь же, наоборот — ограничен практически во всем и не может никоим образом влиять на политики лицензирования или же ценообразования. Даже в случае заключения договора на использование платной самописной CMS, учесть все пункты с одной стороны попросту невозможно, а с другой — сам автор не согласится на жестко регулирующие его деятельность пункты. В ситуации же с бесплатными CMS — система вообще поставляется под девизом «as is» — используете на свой страх и риск и за какие-либо возникшие в процессе эксплуатации ошибки или финансовые потери автор ответственности не несет.
2. Аудит безопасности
Основой любой системы является не красивый дизайн или удобный функционал, а безопасность. Согласитесь, никому не нужна CMS, пусть даже обвешанная всевозможными «рюшиками», но которую может взломать студент первого курса КПИ.
Но только вот вундеркиндов, способных совмещать в себе отличного разработчика, гениального системного архитектора и блестящего специалиста по безопасности — можно пересчитать по пальцам одной руки, а следовательно, вопрос защищенности системы чаще всего остается лишь на уровне знаний программиста-автора, а этого, согласитесь, никоим образом не может быть достаточно.
Да, конечно можно обратиться к компаниям, которые за определенную сумму проведут аудит системы, но а) это стоит хороших денег и б) аудит покажет «дыру», но не научит ее исправлять, а случаи «поднял зонтик — упала шляпа» известны повсеместно — где гарантия, что исправление одного эксплоита не приведет к появлению другого? И так может длиться до бесконечности. Именно поэтому аудит нужно проводить на регулярной основе, но авторы бесплатных самописных CMS чаще всего отвечают фразой: «а кто заплатит за аудит?», а платных — либо проводят его исключительно формально, что называется, «у Ашота» или же вообще обходят этот вопрос стороной, предпочитая потерять не в меру любопытного клиента.
3. Малая распространенность системы
Практически все, даже самые ярые противники Open Source признают, что пользовательский аудит может в определенной степени заменить профессиональный аудит безопасности — тысячи программистов и разработчиков, ежедневно модифицирующих систему под нужды клиентов, рано или поздно найдут ту потенциальную угрозу, которая может существовать в системе и добавят ее в багтрекер для последующего исправления официальной командой разработчиков или даже больше — просто сами пришлют готовое решение.
В случае же платной самописной CMS, количество таких пользователей сводится к самому автору системы, а бесплатной — к автору и небольшой группе «сочувствующих», использующих систему для своих нужд (чаще всего на малозначимых проектах и не слишком активно).
4. Проработка системной архитектуры
Учитывая тот факт, что проработка системной архитектуры имеет непосредственное и принципиальное значение для функционирования системы в целом, этот вопрос является одним из наиболее важных при старте разработки. И от того, насколько качественно была выполнена проработка, зависит вся дальнейшая судьба развития системы.
Учитывая, что заказчик обычно не способен оценить корректность архитектуры системы по причине закономерной недостаточности знаний в этой области, естественно этот вопрос остается на совести разработчика. Но как и в случае с безопасностью — вундеркинды встречаются крайне редко, а потому вопрос построения архитектуры самописной системы чаще всего раскрывается по методике — «не нужно изобретать велосипед». Разработчик берет за основу архитектуру одной из уже существующих популярных систем, вносит пару-тройку правок (но абсолютно не факт, что нужных и полезных) и говорит: «смотрите, моя новая архитектура революционна!».
4. Качество кода
Уровень кода самописных систем изначально равен уровню их разработчика, но поскольку это «спектакль одного актера», оценить этот уровень по-сути может только сам разработчик. Для пользователей это может быть чревато тем, что если на начальной стадии разработки — при минимуме функций — система будет казаться быстрее существующего аналога, то в дальнейшем это может обернуться теми же проблемами — перегруженностью, ошибками, несоответствием стандартным требованиям хостингов и т.д. В итоге получится, что пользователь поменял хорошо если только шило на мыло.
5. Программистам для программистов
Давайте вспомним, почему Windows, при всей своей проблемности и ошибочности, до сих пор занимает лидирующее место среди операционных систем, используемых пользователями? По простой, в сущности, причине — она проста для освоения и не требует специфических знаний.
От многих пользователей я часто слышу — «административная часть Joomla для меня сложна, а я не хочу разбираться». А, в сущности, в ней нет ничего экстраординарного — ее интерфейс лишь немного отличается от привычных «деревоподобных» интерфейсов. Но для многих уже и это становится проблемой.
Итак, помимо того, что наш автор должен быть разработчиком, специалистом по безопасности и системным архитектором — кроме этого, он должен быть еще и специалистом по юзабилити.
6. Отсутствие полноценной пользовательской документации
Документация — ахиллесова пята любого программного обеспечения. Из всех CMS, с которыми я за свою практику имел дело, адекватные руководства пользователя были только лишь максимум у пяти процентов систем.
Остальные же 95%, в лучшем случае описывались разрозненными статьями на тему «Как сделать...» или же инструкциями уровня «нажмите левую кнопку мыши», а в худшем — просто ничем, предоставляя пользователю самостоятельно догадываться о назначении того или иного элемента «методом научного клика».
7. Отсутствие API
Почему Twitter в одночасье стал настолько популярен? Почему Yandex.Карты с некоторых пор можно встретить практически повсеместно? Ответ прост — полноценный API, который позволяет программистам разрабатывать на его основе сторонние приложения.
И хотя API не является обязательным атрибутом CMS, его наличие ощутимо упрощает разработку сторонних приложений для сайта, таких как, например — связь с внутренними системами компании (SAP, SRM, модули электронной торговли и документооборота).
8. Проблема наличия лазеек
Разработчикам популярных Open Source или же проприетарных систем невыгодно оставлять какие-либо «черные ходы» по той простой причине, что в Open Souce системе они будут быстро найдены пользовательским сообществом, а в платных CMS с закрытым кодом — аудитом. Кроме того, если в отношении системы любого типа лицензирования хотя бы несколько раз будет поднят вопрос лазеек и будут приведены доказательства их наличия, то с популярностью и прибылью можно будет попрощаться раз и навсегда.
В случае же самописной CMS — таких гарантий нет, поскольку нет ни пользовательского аудита, ни специализированного. А малая распространенность системы позволит довольно легко скрыть наличие лазейки, если ее разработчик будет разумен и осторожен. Но только вот для пользователя такой системы это не сулит ничего хорошего.
9. Отсутствие профессионального сообщества и службы поддержки
Популярные Open Source CMS хороши своими открытыми сообществами, в которых можно быстро найти ответ на большинство типовых задач. Поддержка проприетарных систем управления всегда обеспечивается службой поддержки и help desk. А к кому обращаться в случае использования самописной системы?
10. Отсутствие поддержки сторонних специалистов (бес- и платных)
Ок, давайте даже попробуем оставить в стороне глобальное понятие сообщества и определить — кто же может выступать в качестве хотя бы уж советчика в вопросах использования самописной системы? И снова — только сам ее автор. Банально — кому задать вопрос, если что-то не получается? Однако учитывая то — сколько уже профессий должен совмещать в себе этот человек, трудно себе представить наличие у него еще и способности заниматься одновременно разработкой и поддержкой большого количества пользователей.
11. Отсутствие профессиональных тестировщиков
Многие считают, что тестирование — довольно простое дело. Казалось бы, ну чего там — сел, прошелся по функциям системы, выписал ошибки и отдал программисту на исправление. Однако на практике все далеко не так просто. Я не буду детально останавливаться на методиках тестирования, интересующиеся могут почитать отдельную статью в Википедии, достаточно полно раскрывающую общие понятия и профессионального тестирования программного обеспечения.
12. Отсутствие четкого вектора монетизации или скрытый вектор (для бесплатных CMS)
Все мы прекрасно понимаем, что разработка CMS — дело сложное и отнимающее много времени, которое может быть потрачено на разработку оплачиваемых проектов. Соответственно, автор системы должен каким-то образом покрывать недополученную прибыль. Например, одним из таких способов является перевод системы на коммерческие рельсы.
Процесс выглядит так — начала пользователям предлагается система в качестве бесплатного ПО, но с определенной версии (чаще всего той, с которой система приобретает более-менее завершенный и полнофункциональный вид), автор заявляет, что отныне все обновления будут платными. То есть все те, кто уже успел поставить, настроить и подогнать под свои нужды систему могут или оставаться на старой версии, либо же платной получать обновления.
Согласитесь, с одной стороны автора как бы можно и понять — мол, ну не может же человек заниматься таким полезным делом абсолютно бесплатно, но с другой, вернемся к п.1. — пользователь системы абсолютно зависит от желаний разработчика и выбора не имеет.
Второй же вариант развития событий выглядит и вовсе удручающе — автору в какой-то момент попросту надоедает заниматься не приносящей прибылью деятельностью или в его жизни что-то меняется и ему требуются дополнительные финансы (женитьба, рождение ребенка, постройка дома — мало ли что), но внутренние убеждения не позволяют принуждать пользователей платить за использование системы, а времени на ее разработку остается все меньше и меньше. А на donation долго не проживешь — наши реалии отличаются от западных. Закономерным итогом станет полное прекращение поддержки и в лучшем случае найдется тот, кто перехватит падающий «флаг» и продолжит разработку, а в худшем — система благополучно канет в лету.
Выводы
Исходя из всех вышеописанных причин, я всегда рекомендую заказчикам воздерживаться от приобретения или использования самописных CMS, поскольку ни единого действительно положительного момента в их применении нет, а головной боли они могут доставить крайне много.
Из своей личной практики скажу, что уже несколько раз я сталкивался с самописными CMS с такой архитектурой, что перенос сайта на новую систему в одном случае стоил заказчику на 20% больше, чем стоимость предыдущей разработки (не учитывая стоимость нового сайта), а в других — перенос приходилось осуществлять практически вручную, поскольку создавать систему импорта было просто нецелесообразно.
Подумайте, стоит ли оно того?

@SibNext: а я работал с индусами — ты знаешь, самое интересное, что как программеры они были очень даже неплохи, а вот наши тестеры оказались просто отвратными. Но тут нельзя говорить — «все их программеры» или «все наши тестеры» — кому как повезло.
З.Ы. Да уже как-то чуть ли не по привычке :)
@Vitaliy:
Соглашусь по сути, что из-за стремления написать свое, пусть в расчете «лучше и лучше», загибается много перспективных проектов. Развиваются ДЖПЛ-проекты только те, где собрался коллектив. Если автор тянет один, то это рано или поздно приводит к смерти его самописа. Получается,стОит возникнуть сообществу, т.е. появиться заинтересованным в нем профессионалам, и проект становится «на крыло»?
Автор статьи — НА ВОРДПРЕССЕ СВЕТ КЛИНОМ НЕ СОШЕЛСЯ!
Ну почему талантливые отеч. профессионалы-светлые мозги, не видят очевидных вещей? Этот монстр себя изживает, его ждет та же судьба, что и ПХП-Нюке.
Впрочем, это конечно, оффтоп.
@Ацкий сисОдмин:
Как показывает практика — в основном, да.
А я разве где-либо говорил, что нужно использовать только WordPress? То, что на нем работает этот блог — лишь дань удобству и не более того. Я совершенно сознательно не упоминал в статье какие-либо конкретные системы, чтобы не разводить holy wars по поводу и без :)
PHP-Nuke изжил себя по обратной к изложенной в этой статье причине — слишком много кто начал его дорабатывать, доделывать, исправлять и корректировать, тягая одеяло на себя. Итог получился закономерный.
Не упоминал, но любовь к нему лезет из всех щелей.
ПХП-Нюке — так уж и по этой причине? Или по причине того, что тупиковой оказалась сама его парадигма — вместо блоков универсального типа там конкретно жесткие блоки. Даже сейчас в более новых разработках заметно «наследие»(php-fusion, danneo, small-nuke — все тоже самое. Тогда как в 2_z project-e (весьма жаль, что умирает:- ((() и NGCMS уже все более гибко. Не агитирую. И аз не программер, может профаню?).
«Удобство» блин! У вас глюк в комментах. Курсор по строке стрелочками не двигается, и еще что-то. Может виноват мой брауз(Макстон),но в других блогах все ок.
Но самое что меня напрягло: даже не последняя версия, а 2.9.1-поставил на денвер на локали, так ни в ИЕ ни в макстоне даже в админку не пускает(только в опере). Хорошо удобство...
А это ИМХО уже проблема совместимости. Если Макстон или ИЕ 6 — не мудрено, что будут глюки.
@Ацкий сисОдмин:
Хм, ошибочное, на мой взгляд, мнение. Я вообще еще использую и другие CMS. Просто для блога WordPress действительно проще.
То, о чем говорил я — внешняя причина, то о чем Вы — внутренняя :) Но обе действительно присутствуют.
Нет, это действительно проблема в моем блоге и я все еще с ней разбираюсь.
Это проблема не WordPress, а как правильно отметил коллега SibNext — совместимости. Макстон в принципе не стоит рассматривать как отдельный браузер — это просто надстройка на ИЕ, использующая его движок.
Спасибо автору за полезную статью. Абсолютно согласен со всеми пунктами,но особое удовольствие доставило прочтение комментариев. Всегда интересно какими словами тебя называют ))).
Да, я пишу собственную CMS, но в последнее время использую её исключительно для своих проектов.
Никогда не запускал сайтов на WordPress, Joomla и прочих. Просто перестал делать сайты на заказ. Для этого сейчас достаточно школоты и прочих умельцев. Без обид, но запустить блог или визитку на современных публичных CMS может любой, знакомый с компьютером.
Более серьёзные проекты считаю лучше делать не для дяди, а для себя. Пусть они приносят денежку мне. Именно для таких целей нет лучше собственной CMS`ки, которую знаешь вдоль и поперёк.
@bm:
Собственная CMS разрабатывается 1-2-3 людьми. И тут 2 стороны медали. С одной стороны уязвимости (даже если они и есть) не будут никем использоваться в следствие не распространенности данного продукта. А с другой стороны они обязательно будут. И в гораздо большем количестве, нежели в CMS, над которыми работают сотни людей.
Естественно я не имею ввиду уникальные проекты. Т.к. Вы говорите про систему для своего сайта или блога — то тут речь о масштабности я так подозреваю не идет.
@bm: спасибо за комментарий.
В таком ракурсе — полностью соглашусь с Вашим подходом. В том случае, если разрабатываются уникальные проекты — использование своей CMS практически всегда банально выгоднее, чем доработка одной из «шаблонных».
Тут Вы несколько перегибаете — да, блог или визитку действительно может запустить практически любой, но сайты, построенные на бесплатных (да и платных тоже) CMS не ограничены только этими типами. И, опять же, если сам по себе проект типовой, то нет смысла писать под него отдельную систему, тем самым увеличивая для заказчика риски и стоимость.
Добрый день, Ярослав.
Недавно нашел ваш сайт. В первую очередь заинтересовала статья 12 причин не использовать самописные CMS. В первую очередь хотелось бы отметить высокую полезность для меня (да и наверное для всех остальных посетителей) этой стати непосредственно и самого блога вообще.
У моей компании сайт написан на самодельной CMS системе. Человек, который писал сайт сейчас занят и по тому не хочет принимать участие в доработке. Веб-судии также не хотят браться за доработку сайта – говорят, что дешевле написать новый сайт.
Ну в общем все так как вы описали в своей статье.
Но для нового сайта почти все студии предлагают сайты со своей «не шаблонной» CMS которая полностью, по их словах, удовлетворит ВСЕ мои потребности. В этих студий очень впечатляющее портфолио как по брендам, так и по дизайну и функционалу. Насчет готовых CMS они говорят, что их под мое ТЗ не очень подходят и их надо будет сильно «выкручивать», что скажется на адекватной работоспособности системы.
И небольшое количество студий предлагают платные системы 1С-Битрикс (были также предложения NetCat) и бесплатные Joomla и TYPO3 и говорят что мое ТЗ легко реализуется на этих системах. Но работы этих студий (функционал) мне как раз и не очень нравятся и не очень им доверяю.
И мне, как и другим заказчикам сайтов, которые сами не могут дописать сайт на основе CMS, остается вариант купить сайт с самописной CMS. И соответсвенно еще раз «наступить на теже грабли». Чего б сильно не хотелось.
На сайт мною написано детальное ТЗ на 100страницах и боюсь что самописная CMS может не подойти под него. И прочитав вашу публикацию, совсем растерялся.