Привет, друзья.
Так уж вышло, что в этот самый день, ровно 10 лет назад состоялся первый релиз InstantCMS версии 1.0.0. Пропустить такую дату было никак нельзя, поэтому приглашаю вас к милой ностальгической беседе о том, с чего всё началось и куда в итоге пришло. Никогда раньше мне не приходилось писать подобных постов, так что, если он скатится в через чур личные мемуары - извиняйте заранее. Раз уж этот проект тесно связан с моей личностью, то и рассказ придется начать с себя, как бы нескромно это не выглядело.
InstantCMS 1.0.0
На дворе лето 2007 года. Провинциальные российские пользователи интернета заканчивают свой плановый переход с диал-апа на выделенки, впервые постигая радость от непонятных доселе слов "аська", "торрент" и "p2p". Никому неизвестный сайт "Вконтакте" еще не отпраздновал свою первую годовщину, а мало кому известный (и дико лагающий) сайт Youtube совсем недавно отметил два года. Группа Кровосток еще пишет свой культовый альбом "Гантеля", а я - защищаю диплом и заканчиваю вуз.
Этим же летом 2007-го я устраиваюсь на свою первую официальную работу в Екатеринбурге - штатным программистом в интернет-провайдер "Новатор", ныне уже несуществующий. Надо сказать, что программирование всегда было лишь моим хобби, поскольку вуз я закончил педагогический и на последних курсках работал преподавателем в "Уральской академии современных информационных технологий" - вёл курсы по Flash и HTML. Собственно, мой опыт программирования на тот момент был больше связан с написанием десктопных утилит на Delphi и Borland C++ (продажа курсовых и дипломов по программированию неплохо помогала бедному студенту). Ничего серьезного под веб я еще не делал, но уже очень хотел, изучая PHP в перерывах между убойным весельем в своей общаге.
Первый свой "сайт" (если можно назвать сайтом полдюжины сверстанных в блокноте HTML-страничек) я сделал еще в школе, году наверно в 1998-м. Но интерес к PHP и вебдеву в целом у меня появился гораздо позже. Его мне привил друг, который в 2005-2006 годах делал какие-то сайты на движках и даже (по слухам) получал за это деньги. Он же и показал мне первую CMS в моей жизни. Это был Subdreamer.
Не знаю, как с ним обстоят дела сейчас, но помню, что тогда меня очень поразила возможность править сайт из админки. Хотя, это уже не было чем-то революционно новым (тот же Wordpress вышел уже в 2003, а предок Joomla - Mambo - и того раньше). В итоге, к окончанию вуза у меня был опыт создания пары сайтов на PHP (один из них - для родной кафедры) и куча добра на Flash. Показав всё это на собеседовании в Новаторе, я был сразу принят. В мои задачи входила разработка внутренних сайтов провайдера - сервисов для абонентов, каталогов пиратских фильмов и игр - в общем всего того, чем должен был обладать любой приличный провайдер в 2007 году. Разумеется, для этого необходимо было использовать какой-то движок. Я остановился на Joomla, которая тогда была бесспорным лидером в этой области. Однако, что-то пошло не так и Joomla мне довольно быстро разонравилась. Уже не помню, что именно с ней было не так, но это, наверно, и не важно. Гораздо важнее то, что моё руководство понимало во всей этой кухне еще меньше меня и мои руки были полностью развязаны. Всё это привело к тому, что в ноябре того же 2007 года молодость и глупость заставили меня сесть и начать изобретать свой велосипед. Впрочем, тогда это не выглядело так странно, как выглядело бы сейчас.
Помню, что работа над собственной CMS настолько увлекла, что я посвящал ей не только рабочее время, но и кучу свободного. О, этот восторг понимающих зрителей, когда ты показываешь им переставку модуля из одной колонки в другую через админку! Его не спутать ни с чем. Энтузиазма придавало и то, что все новые фишки моментально шли в дело - применялись на служебных сайтах и обкатывались реальными пользователями.
Ближе к весне самодельная CMS без названия начала обретать какие-то формы законченного продукта и настала пора задумываться над тем, какого будет её будущее. Первым делом, необходимо было имя. Оно пришло совершенно случайно, когда я обходил один банк за другим, пытаясь получить первый в жизни кредит на первый в жизни новый(!) компьютер. В одном из банков я увидел рекламу новой линейки кредитных карт - Visa Instant. Не знаю почему, но слово Instant меня зацепило - казалось, что в сочетании с аббревиатурой "CMS" оно будет звучать неимоверно круто. Спустя 10 лет, вроде бы, не было ни разу, когда бы я пожалел о том выборе.
Приближаясь к апрелю 2008 я был почти готов сделать официальный "релиз". Правда, вдохновленный собственными успехами, я собирался сделать CMS платной. И даже вёл какие-то переговоры с дизайнерами, готовыми наверстать шаблонов для "новой коммерческой CMS" за какие-то деньги. Домен у меня уже был - еще с конца января - и вот, в конце марта я залил на него первый официальный сайт для (тогда еще) "платной CMS" и начал гордо чего-то жsдать. Какие-то останки того первого сайта помнит даже веб-архив.
Впрочем, ждать пришлось недолго. Ровно до того момента, как один из старших товарищей в сфере IT, выслушав мою, полную оптимизма, презентацию и посмотрев на движок, сказал - "Круто. Только как ты собираешься это продавать?". Это поставило меня в тупик. Как продавать я действительно не имел понятия. Уже не помню всю цепочку дальнейших рассуждений, но результат нам всем известен - буквально через пару недель я сменил вывеску на "опенсорс" и 4 апреля выложил для свободной загрузки InstantCMS 1.0.0:
(кликните на иконку фотоаппарата в нижнем левом углу и выберите Toggle Fullscreen, чтобы увеличить скриншоты)
InstantCMS 1.x
После релиза 1.0.0 я неожиданно быстро начал получать обратную связь от первых пользователей. Люди начали присылать свои отзывы, пожелания и даже куски кода. Всё это довольно сильно мотивировало и я работал над движком буквально как сумасшедший, по началу выдавая по 1-2 обновления в месяц. Скажем, версия 1.0.1 появилась уже через 10 дней и существенно преобразила движок.
Все эти бесконечные обновления исправляли старые баги, добавляли новые, портили нервы, но всё равно - процесс был безумно веселым для вчерашнего студента. Потом, конечно, энтузиазм стал угасать, но чаще по довольно объективным причинам. Уже через пару лет я женился, устроился на новую престижную работу в компанию Ideco (они до сих пор делают крутейшие штуки, рекомендую). Но, тем не менее, процесс развития неуклонно шел. Не буду подробно описывать что и когда было сделано в тот период, ибо список огромен. Любой желающий может ознакомиться с ним здесь.
Отмечу лишь некоторые, скажем так, наиболее значимые этапы. Например, версию 1.5.2, что вышла 1 сентября 2009 года. В ней самой не было ничего особо примечательного, но она стала стартом для человека, который в дальнейшем сильнее всего повлиял на судьбу всего проекта в целом - ровно через неделю после её выхода на сайте регистрируется Fuze. Я смутно помню как он попал в мои контакты в ICQ и донимал вопросами по коду. Еще хуже помню тот момент, когда меня это окончательно достало (в хорошем смысле) и я пустил этого парня к полноценной работе над релизами. Пожалуй, это было самое грамотное моё решение из всех, что я принимал за эти 10 лет. Что было дальше вы знаете сами.
Так же отмечу версию 1.7, над которой мы очень плотно работали совместно с Fuze, пытаясь успеть сделать релиз до начала нового 2011 года. В итоге, она вышла 7 декабря. Именно в этой версии впервые появился тот темно-синий дизайн фронта и светлый дизайн админки, который идет по-дефолту во всех последующих версиях линейки 1.x.
InstantCMS 2
Версия 1.9 была последней, над которой мы плотно работали вместе с Fuze. Далее, нам обоим стало очевидно, что текущая архитектура движка сильно морально устарела и, несмотря на её кажущуюся простоту, уже не позволяла внедрять новые фишки гибко и красиво, без необходимости каждый раз затевать глобальный рефакторинг. Нужно было что-то менять.
И вот, где-то ближе к концу 2011 года (точных дат, опять же, не вспомню) я начал работу над долгостроем - InstantCMS 2, а Fuze продолжил активную поддержку первой ветки. За первые несколько месяцев не было написано ни строчки кода для "двойки" - я ждал, пока в голове сложится более-менее полная картина того, что и как необходимо сделать. Хотелось добиться универсальности и простоты кода одновременно. Чтобы не нужно было больше писать новый компонент на каждый чих. Так родилась концепция "типов контента". Примерно в то же время я узнал, что нечто похожее уже есть в Drupal - только весьма запутанно, судя по отзывам. Встала задача сделать "примерно так же", только лучше. Не мне судить, получилось ли это в итоге, но лично меня результат вполне устроил.
Работа над InstantCMS 2 заняла несколько лет. Это по-прежнему самый объемный проект из всех, что я когда-либо делал. Думаю, многие из вас прекрасно помнят тот период, который можно озаглавить одной общей фразой - "Когда уже??".
К лету 2012 года пазл уже начал складываться, было готово первое сырое ядро и основа для главной фишки - типы контента. Первое видео о новом движке я выложил 29 мая 2012 года. Спустя еще год, в августе 2013, "двойка" уже была близка к готовности. Но потребовался еще несколько месяцев, прежде чем было решено впервые дать её пользователям. В ноябре 2013 вышел "первый релиз-кандидат", которые многие обозвали "сырой альфой". Что ж, это было довольно справедливо, поскольку до нормального релиза пришлось подождать еще полгода.
И вот, 1 мая 2014 года, исторический момент таки настал - релиз InstantCMS 2.0.0. Всё, что было дальше, происходило уже при непосредственном участии многих из вас. Не вижу смысла подробно об этом рассказывать, ибо раздел "Новости" на этом сайте помнит всё и без меня.
Главное, к чему мы пришли с InstantCMS 2 - это полноценное вовлечение сообщества в работу над движком. Огромное спасибо всем вам - тем, кто присылает свои правки кода или документации, сообщает об ошибках в отведенных для этого местах, да и просто рассказывает своим друзьям о нашем проекте.
Подводя итоги
Я восхищаюсь вашим мужеством, если вы дочитали до этого момента. Настало время немного похвастаться. Думаю, мы все заслужили это право.
И так, что же представляет из себя InstantCMS сейчас? Будем откровенны, это по-прежнему малоизвестный движок для "ценителей", коим он и был с самого своего рождения. Да, счёт реализованных сайтов перевалил за десятки тысяч, но мы так и не стали частью "поп-культуры" в мире веб-строительства. Не берусь судить, хорошо это или плохо, это просто факт. Но у нас есть кое-что, чем мы по праву можем гордиться без всяких оговорок:
-
Мы всё еще живы. Звучит глупо, но, думаю, многие из вас представляют насколько это сложно - не перегореть и не забросить всё к чертям за столько лет. И дело здесь даже не в деньгах, вернее не столько в них. Потому что, возьмем, например, LiveStreet - перспективный движок, появившийся почти в одно время с InstantCMS, но наделавший гораздо больше шума. Я уверен, что он принес своим авторам неплохие деньги. Однако, это не спасло его от гибели, к сожалению. Мы же продолжаем развиваться. Сейчас, в основном, благодаря титаническим усилиям Fuze и его воле к достижению целей. Но и у вашего покорного слуги есть кое-какие идеи в запасе. И я обязательно их реализую, как только снова смогу себе это позволить. Думаю, уже скоро.
-
У нас - лучшее сообщество. Несмотря на частые склоки, ссоры и ругань, мне кажется, что сообщество InstantCMS - это большая семья по-настоящему добрых и открытых людей. И я пишу это не ради банальной лести. Любой из вас подтвердит, что это факт.
-
InstantCMS - единственная российская опенсорс CMS с полной и подробной документацией. Наш мануал - это особая гордость. Сотни страниц текста, множество часов обучающих видео, работающая ссылка "Помощь" в каждом(!) разделе админки - это уровень серьезного коммерческого продукта, а не проекта группы энтузиастов. Большую роль в этом, опять же, сыграли вы - дорогие участники нашего сообщества.
- InstantCMS - это гибкий универсальный движок. Думаю, это утверждение весьма справедливо и нам таки удалось сделать систему, которая является одновременно мощной, но при этом - очень легко расширяемой.
Что дальше?
Полагаю, что я вас уже порядочно утомил, поэтому финальная часть будет самой краткой.
Никто не знает, что дальше. Не буду писать здесь больше оптимистичных дежурных фраз, напишу лишь, что думаю - дальше нас ждут следующие 10 лет развития. И мне будет безумно интересно посмотреть, куда они нас приведут. Надеюсь, и вам тоже.
Большое спасибо, что вы с нами, друзья. InstantCMS - это не программный код. InstantCMS - это все мы. С юбилеем!
Желаю дальнейшего развития и успехов!