История проекта Shop-Script
20 июля 2011Пока наша команда погружена в разработку фреймворка Вебасист, приложений «Сайт», «Блог» и «Поддержка», немного расскажу о том, как создавался проект 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.
Спасибо за внимание.
26 комментариев
Переход на новую версию будет платный?
ответитьДа, переход на новую версию будет платным, потому что это будет полностью новым продуктом. Детали перехода с WebAsyst.ru на фреймворк мы еще обсуждаем, и как только они будут утверждены, мы их озвучим.
ответитьОчень интересно было прочесть. Спасибо за честность.
ответитьНадеюсь что для людей, которые приобрели WebAsyst, особенно полные комплекты, будут очень больше скидки для перехода на новый продукт,иначе будет очень обидно. Да,никто не спорит, вы заработаете денег на переходе, если он будет платным, при чем по полной программе, но думаю во первых, далеко не все будут переходить на новые продукты за деньги, так как у многих очень много доработок, настроек, продуктов, туча потраченных денег на доработки функционала, на покупку дополнительных модулей, думаю при всем при этом радость перехода на новый продукт за деньги у многих отпадет. Совсем другое дело переход на новый продукт бесплатно или с небольшой платой. Тут люди уже подумают и скорее всего перейдут на новый продукт.
ответитьУ тех, у кого сайты существенно доработаны стоимость самой лицензии ничтожна по сравнению со стоимостью доработок. Поэтому такие не перейдут хоть за деньги, хоть бесплатно.
ответитьОпачки - http://habrahabr.ru/blogs/infosecurity/124898/
ответитьДа, мы уже в курсе. Максимально, насколько смог, ответил по поводу описанного случая: http://blog.webasyst.ru/shop-script-private-data-indexed-problem-summer-2011/
ответитьНо мы-то с вами понимаем, что наличие robots.txt спасли бы отца русской демократии? Не выдавать текст на них в <noindex>\ не включать noindex в meta страницы со статусом, и даже не добавить те пресловутые две строки в robots.txt - сидеть на почке с порохом, играясь спичками.
ответитьС privacy не шутят.
robots.txt не является полным решением проблемы, потому что он сработает только для поисковых ботов. Какой-нибудь другой бот может просто не учитывать эти данные.
ответитьВ целом практику отправки ВСЕХ адресов, которые посетил пользователь, куда-то еще (как Яндекс.Метрики отправил адреса в общий индекс) я бы не назвал правильной. К такому поведению система показа информации о заказах и статусах оказалась неготова. Я уверен, что далеко не только наш движок оказался к этому неготовым, и можно ждать подобных случаев на других сайтах...
Вам не нужно решить проблему отправки ВСЕХ адресов куда-то ещё, вам нужно только минимально обеспечить privacy покупателей, и robots.txt с этим справилось бы.
ответитьПравильно, неправильно - это так, как оно есть, и с этим нужно считаться. Я бы на вашем месте выпустил обновление с правильным robots.txt
http://www.webasyst.net/changelog.html - пока здесь этого обновления нет.
Кстати, вот позиция Яндекса:
ответитьhttp://webmaster.ya.ru/replies.xml?item_no=10941
Да, мы эту позицию читали. Обратите особое внимание на комментарий http://webmaster.ya.ru/replies.xml?parent_id=10956&item_no=10941&with_parent=1#reply-webmaster-10956
ответитьА вот и наша позиция и ответ Яндексу: http://habrahabr.ru/company/webasyst/blog/124968/
ответитьЧудная у вас позиция... meta name="robots" content="noindex" - и не было бы проблем. А валить с больной головы на здоровую - глупое занятие и выглядит некрасиво.
ответитьЧто то как то дороговато выходит.
ответитьShop-Script с трудом справляется с нынешним напором. А были оплачены как и сами скрипты, так и их доработка. И тут шанс выделиться... Новый Фреймворк! Но!
Переход платный, а это опять покупка скрипта, доработка и поддержка его за отдельную плату. Всё за деньги и всё по кругу...
Хочется, конечно, надеяться на лучшее, но...
>Да, переход на новую версию будет платным, потому что это будет полностью новым продуктом
ответитьсобственно кого это волнует? Имя не поменяется. А то что код будет переписан мало кого волнует, это будет все тот-же шоп-скрипт. Как вы будете объяснять людям далеким от программирования (например пользующимся вашим веб-сервисом), что они должны просто так неизвестно за что заплатить. У них уже есть лицензия на шоп-скрипт, а с них требуют денег за обновление.
Проигрышная стратегия.
Согласен, что стратегия платного перехода проигрышная.
ответитьИ из текущих клиентов многие откажутся и продажи могут упасть.
Если уж так нужны деньги за обновление, то велосипед как-бы уже изобретен. Это платные обновления и/или платная техподдержка с умеренной платой за период. С одной стороны это понятно и посильно для клиента, не уменьшает продаж, с другой стороны это сильно стимулирует разработчика к внимательному отношению к клиенту и выпуску востребованных обновлений.
Решать конечно вам.
Несогласен насчет того, что стратегия платных обновлений проигрышная. И вот почему: http://www.webasyst.com/ru/blog/post/27/
ответитьВозможно она и не проигрышная, но если по другому, то тоже много вопросов остается. Задал их в указанной Вами теме.
ответитьМне как пользователю важно что бы сохранилась логичность и простота работы в админке как это сейчас например.
ответитьЧто вы думаете об этом проекте tomatocart.com ? открытый код, можно позаимствовать оттуда удачные решения.
я про WA SS говорил, очень удобная админка, я из за нее и купил движок
ответить>>проекты, которые делал до Shop-Script, были, в основном, академическими
ответитьПрошу прощения, но глядя на функционал скрипта и его эволюцию, то как из SSP большая часть перекочевала в WASS без изменений, потом так и осталась, а сейчас планируется уже переход на фреймворк - создается впечатление, что привычка заниматься академическими проектами так и осталась.
Честно говоря, очень хотел-бы услышать от Владимира, что "да мы слышим пожелания пользователей и идем им на встречу", но к сожалению...
Здравствуйте! Когда ожидать новую версию? До конца года осталось 1,5 месяца, а обещали в 2012 году!
ответитьВладимир Владимирович, передайте госзаказ на разработку ShopScript'a мне, и мы уложимся за 2 недели!
ответитьЕсли в течении месяца новый продукт не будет выпущен, то он Ваш, Сергей Кужугетович!
ответитьShop-Script будет представлен в декабре 2012.
ответить