История проекта Shop-Script

Пока наша команда погружена в разработку фреймворка Вебасист, приложений «Сайт», «Блог» и «Поддержка», немного расскажу о том, как создавался проект Shop-Script.

shop.vofka.ru

Shop-Script я начал писать осенью 2001 года, то есть почти десять лет назад. Я тогда был студентом 2-го курса ВМиК МГУ и решил поизучать PHP. Писал код по вечерам в общаге ГЗ МГУ и написал первую версию скрипта примерно за месяц. Идея написать скрипт магазина появилась из желания сделать какое-нибудь полезное упражнение на PHP и заработать немного денег.

Упражнение переросло в профессию. Первая копия Shop-Script была продана 21 января 2002 года на дискетке за $70 ($50 — сам скрипт, $20 — установка на сервере заказчика). Встречался с заказчиком на станции метро «Кузнецкий мост» (даже помню его домен — starshop.ru — сейчас, правда, этот магазин уже не работает). Осталось отчетливое воспоминание: на деньги с первой продажи я купил шаурму.

Интересующимся я предлагаю скачать ту первую версию скрипта, которая продавалась за $49 аж до 2004 года: Shop-Script 1.0 (Zip-архив; 70 КБ). Скрипт был спроектирован неправильно априори, полностью построен на процедурном коде типа «лапша», однако, не требовал никакого вникания в архитектуру кода в принципе. Какой файл править — понятно из его названия. Я тогда не сильно беспокоился вопросами организации кода. Все проекты, которые делал до Shop-Script, были, в основном, академическими: интересные алгоритмические задачи, но не крупные проекты. Тем более, все былоне для веба. Впрочем, скрипт работал, стал приносить немного денег, а это позволило не искать постоянную работу и продолжать заниматься проектом.

Скрипт так и назывался тогда — скриптом. Первый сайт о скрипте я тогда запустил на поддомене личного сайта shop.vofka.ru. Сохранилась только версия этого сайта без картинок (версия web.archive.org):

Shop-Script 1.0, 2.0

Название Shop-Script было придумано где-то в 2002—2003 году (точно не помню), открыт сайт www.shop-script.com, на котором продукт стал представлен в двух версиях: 1.0 за $49 и 2.0 за $199. Версии различались по функционалу. Тогда продукт стал похож уже на нечто взрослое. Сайт выглядел вот так:

Развитию Shop-Script тогда поспособствовал проект WebAsyst, который начал мой отец. Мы решили, что лучше будет оба интернет-проекта предлагать от имени одной компании. Так Shop-Script стало можно купить по безналу, а затем и с помощью кредитной карты. (Впрочем, еще где-то год я продолжал продавать Shop-Script «на коленке»: встречался с покупателями в метро, передавал скрипты на дискете.)

Получилось так, что сначала Вебасист стимулировал развитие Shop-Script, а затем уже Shop-Script «повел за собой» Вебасист, став его центральной частью. Help me help you.

Shop-Script FREE, PRO

В 2004 году Shop-Script 2.0 был переименован в Shop-Script PRO, Shop-Script 1.0 снят с продажи, и с нуля быстренько написан бесплатный скрипт Shop-Script FREE (его можно скачать до сих пор; мне, кстати, он нравится своей примитивностью). Я наивно думал, что модель распространения freemium сработает, но она не сработала. Сайт и логотип Shop-Script в 2004 году:

Делая линейку Shop-Script сейчас, я бы, конечно, не стал давать продуктам такие ужасные названия версий: FREE, PRO, PREMIUM. Но ничего страшного — это нормальный этап взросления продукта.

В 2004 году мы арендовали маленький офис на ст. м. Октябрьская в Москве, и тогда началось цивилизованное развитие Shop-Script.

Shop-Script PREMIUM

В то время я оказывал всю техническую поддержку по Shop-Script самостоятельно и единолично, плюс делал разные заказные модификации «под ключ» за дополнительную плату. Все это не позволяло заниматься развитием продукта. Ситуация казалось почти тупиковой, так как средств на решение практически не было, а рутинные заказы занимали все рабочее время. В команде тогда нас было всего трое (мы с отцом да офис-менеджер). Однако, в 2005 году эти задачи удалось разрешить за счет привлечения дополнительных инвестиций: мы открыли службу поддержки в Краснодаре, и я перестал заниматься заказными доработками Shop-Script. Это сильно освободило от «тякучки» и позволило относительно быстро выпустить новый продукт — Shop-Script PREMIUM за $299, который обеспечил стабильное финансовое состояние компании на определенном этапе. Сайт и логотип 2006 года (кстати, идея логотипа-то — ничего так!):

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

Shop-Script PREMIUM был одним из первопроходцев среди продуктов для создания интернет-магазинов в рунете. Сейчас может показаться, что решений всегда было предостаточно, в том числе и бесплатных, но тогда это было не так. Некоторые продаваемые сегодня продукты копировали Shop-Script: начиная с текста лицензионного соглашения и веб-интерфейсов отдельных экранов до полного клонирования продукта (вот, например, клон продукта Shop-Script PREMIUM, доработанный «специалистами» до своей разработки, существуещий до сих пор — shopcms.ru). Подобные проявления не могли не радовать. Ощущалась радость от того, что ты прокладываешь какую-то новую свою дорогу.

Shop-Script PREMIUM, также как и самая первая версия скрипта, был организован на процедурном коде. Можно (да и нужно, конечно) долго ругать применение процедурного кода в больших проектах, однако, на мой взгляд, именно за счет простого «плоского» кода продукт полюбился фрилансерам и получил распространение в рунете. Без какой-либо документации легко было понять какой файлик надо открыть и поредактировать, чтобы выполнить задачу заказчика (внедрить такую-то маленькую функцию, подправить шаблон и т.п.). Конечно, я не пропагандирую процедурную организации кода, однако, не стоит недооценивать преимущества плоского построения отдельных элементов по принципу «посмотрел, и сразу понято как пользоваться». Ладно, это отдельная большая тема.

С выходом Shop-Scrtip PREMIUM версия PRO почти перестала продаваться. Все хотели сразу все возможности и готовы были доплатить за них лишние сто долларов.

WebAsyst Shop-Script

Shop-Script PREMIUM лег в основу следующей версии продукта — WebAsyst Shop-Script. С выпуском этого продукта в 2008 году произошло окончательное слияние WebAsyst и Shop-Script: Shop-Script стал полноценным приложением семейства WebAsyst. (До этого сайты Shop-Script и WebAsyst объединяла только одинаковая контактная информация.)

Я до сих пор сомневаюсь насчет того, что идея технологически сделать Shop-Script частью Вебасиста была правильной, потому что этим мы сильно усложнили код Shop-Script. Вебасист к тому времени уже был довольно разросшийся, и не сказать, что полностью правильно выстроенный. Возможно, правильно было бы тогда заняться реорганизацией Вебасиста в сторону Shop-Script, а не наоборот. Но что сделано, то сделано.

В то время мы были излишне увлечены идеей созданием веб-сервиса, позволяющего создать интернет-магазин сразу, видели за SaaS будущее, и стали гнаться за двумя зайцами: и чтобы скрипт магазина получился хороший, и чтобы веб-сервис работал. Это стратегически было неправильным направлением, так как двух зайцев, как известно, не поймаешь. Так и получилось: подстраивая продукт под веб-сервис, пострадала внутренняя файловая организация скрипта. Моим упущением было также и то, что я слишком много отдал на откуп разработчикам (хоть их было всего один-два) в архитектуре кода, сам не участвовал в разработке. Это привело к тому, что изначально запланированное внедрение хорошей модульной организации кода принесло больше вреда, чем пользы: из-за «правильной» организации кода стало тяжело добраться до самого кода и понять, когда он вообще срабатывает. WebAsyst Shop-Script был сразу же не принят фрилансерами и разработчиками.

Тем не менее, идеологически Shop-Script хорошо вписался в многоприложенческую концепцию Вебасиста. Сначала мы сделали хостед-версию WebAsyst Shop-Script, а потом и версию с открытым кодом, которая до сих пор доступна на сайте Shop-Script.

Сегодня WebAsyst Shop-Script — громоздкий продукт, инертный и немобильный в отношении нововведений. Однако, он до сих пор остается целостным: как бы кто ни ругал исходный код, задачу создания розничного интернет-магазина Shop-Script решает хорошо. Без преувеличений. Начиная от того, как будет добавляться первый продукт, и заканчивая тем, как владелец магазина понесет первый заказ на Почту России. Я до сих пор могу рекомендовать его друзьям, если вижу, что их задача — организовать обычный розничный интернет-магазин. Интернет-магазин моей жены — «Мега Подарки» — тоже работает на Shop-Script. Пожелания, конечно, есть, но они есть в работе любой системы (в Твиттере, вон, тоже некоторым 140 символов недостаточно). Грубо могу оценить, что 80% задач создания интернет-магазина решаются сегодняшним Shop-Script полностью. Непригодность Shop-Script начинается только тогда, когда требуется кастомизация логики работы.

Фреймворк

На этом история заканчивается. Дальше — коротко о будущем. Немобильность Shop-Script для нас сегодня является очень большой проблемой. То, что продукт не выдержит конкуренции в текущем виде, стало понятно уже давно. И сейчас это особенно видно по тому, как продукт стал продаваться вне рунета (я имею версию продукта на английском языке). Мы могли бы продолжать наращивать функционал Shop-Script и дальше, однако, это только бы отсрочило проблему. С неповоротливостью мы решили бороться, сделав ход конем: взяв в новую версию Shop-Script из старых только опыт и идею, а код переписать полностью заново. И в Shop-Script, и во всем Вебасисте. Именно так появился фреймворк Вебасист.

Новая версия Shop-Script ожидается в 2012 году и будет работать на основе фреймворка Вебасист. Разработчикам, интересующимся новым Shop-Script, рекомендую посмотреть, как организован фреймворк. Вместе с новыми приложениями «Сайт» и «Блог», которые мы скоро выпустим, технически это будет уже почти половина нового Shop-Script (я имею ввиду организацию кода, дизайн-редактор и т.п.). В общем, я с большим энтузиазмом смотрю на будущее продукта. Сегодня у нас хорошая команда и накоплено много опыта, чтобы не допустить прошлых ошибок в новом Shop-Script.

Спасибо за внимание.