Как мы решали задачу реализации trial-режима в анализаторе кода PVS-Studio
Для многих разработчиков программного обеспечения, выбор и изменение модели trial-режима является одной из самых трепетных и обсуждаемых задач. Для одних программ придумать модель проще, для других сложно. А некоторых людей не покидает вопрос: «Мы всё правильно сделали?». Актуальна задача выбора trial-модели и для нас, разработчиков PVS-Studio. Мы решили поделиться некоторыми сопутствующими мыслями и рассказать о том, какой новый вариант мы придумали. Надеемся, что наши рассуждения и некоторые мысли окажутся полезными и другим разработчикам.
Введение
Модель try-before-buy (или по-другому shareware) давно стала классической в современном бизнесе продажи программного обеспечения. Я искренне завидую тем, кто разрабатывает бесплатное и/или открытое программное обеспечение. Они в каком-то смысле избавлены от необходимости показать программу со всех сторон потенциальному пользователю и одновременно мотивировать его купить софт. Нет, конечно же, они должны продвигать свои программы и обилие рекламы Google Chrome и Mozilla Firefox тому подтверждение. Тем не менее там ситуация иная и я ее не рассматриваю.
Итак, что у нас есть? Статический анализатор кода – инструмент, который находит ошибки в программах подобно диагностическим сообщениям компилятора. Нужно продать этот инструмент пользователю.
Стандартный подход к продаже статических анализаторов кода
На сайтах лидеров индустрии (Coverity, Klocwork, Parasoft) вы всегда легко найдете кнопку «Free Trial» за которой, однако, кроется анкета: кто вы, откуда и зачем. Это делается для того, чтобы как можно раньше sales manager в костюме начал охоту, то есть работу. При этом саму программу пользователю иногда дают, а иногда и не дают. Почему? Ну потому что в идеале в крутых компаниях к достойному клиенту сразу же вылетает спецназ на вертолете в составе: менеджер по продажам, техническая команда для развертывания сложного окружения анализатора кода и запуска его на проекте клиента, а также человек с подвешенным языком для проведения презентации о найденных в коде потенциального клиента ошибках. После этого клиент говорит либо: «Да, мы берем этот продукт за много десятков-сотен тысяч долларов в год», либо: «Спасибо, не впечатлило».
Зачем выезд к клиенту, развертывание у него инфраструктуры и презентация по найденным ошибкам? Это делается потому, что ЛЮБОЙ статический анализатор кода дает ложные срабатывания. И если пользователь первые десять просмотренных сообщений увидит ложные срабатывания, то на 11 сообщение (даже если это реальная ошибка) он может сказать: «Это не ошибка». Просто потому что не внимателен. Конечно, читатель возразит: «Я – не такой!». Увы, но люди устроены именно так и ничего с этим не поделаешь. Поэтому лучше, когда намного более опытные люди просмотрят код потенциального клиента, найдут ошибки и сделают презентацию. Тогда, скорее всего, потенциальный клиент станет реальным. И это не только мои мысли. Об этом говорится в статье A Few Billion Lines of Code Later — Using Static Analysis to Find Bugs in the Real World, которую очень рекомендую прочитать тем, кто интересуется статическим анализом.
Как у нас в PVS-Studio было реализовано раньше
- Нередко получалось так, что интересные ошибки оказывались скрыты, а неинтересные (проще говоря, ложные срабатывания) наоборот показывались пользователю. Создавалось впечатление, что инструмент плохой.
- Пользователи не всегда понимают, что выгода от статического анализа проявляется при регулярном использовании. Недостаточно один раз «прогнать» инструмент, исправить те ошибки, которые были показаны в trial-режиме, и успокоиться на этом. Важно регулярно его запускать, чтобы как можно быстрее находить ошибки, только что внесенные в код.
- Наконец при таком trial-режиме очень трудно показать преимущества нашей очень крутой возможности Incremental Analysis. Это режим работы, когда статический анализатор автоматически запускается после компиляции и проверяет только те файлы, которые были изменены. Тем самым показывается не куча диагностических сообщений про весь проект, а только те сообщения, которые относятся к текущим изменениям пользователя. В случае если после правки двух-трех файлов и их перекомпиляции анализатор говорит про две ошибки, но одну из них не показывает – как-то не убедительно, что это крутая возможность.
- Кроме того, мы так и не знали, кто потенциальные пользователи нашего продукта, так как нигде на сайте у нас нет регистрации и прочих подобных форм.
Идеальный trial моей мечты
Здесь я немного отвлекусь от статических анализаторов и расскажу про две trial-модели, от которых я в восторге.
CAD-системы
Прежде всего, я завидую разработчикам CAD-систем, у которых часто trial выглядит так. Пользователю доступны все возможности программы постоянно и без ограничения времени. Единственное ограничения функциональности заключается в том, что… разработанную модель нельзя сохранить. Без этого функционала реальное использование инструмента невозможно, однако потенциальный пользователь может оценить все возможности программы. Супер, просто мечта.
К сожалению, для статического анализа не подходит, так как отчет о найденных ошибках хоть и можно сохранить, но это не такая уж необходимая вещь как в CAD-системах.
Игры типа World of Warcraft
Сразу скажу, что я ни разу не играл в World of Warcraft и им подобные игры, но, насколько мне известно, там trial работает так. Пользователь может бесплатно начать играть, прокачать своего персонажа до какого-то уровня и только потом ему надо платить за продолжение. Это еще одна идеальная схема, так как никто, дойдя до 15-уровня, не сможет отказаться от продолжения.
Хотя с выходом шутливого плагина Visual Studio Achievements Extension для прокачки разработчиков под Visual Studio прокачка стала актуальна и для программистов, все-таки нам это никак не приспособить.
Что в итоге сделали мы в PVS-Studio
Мы придумали использовать концепцию «кликов» – это переход к исходному коду с ошибкой при помощи клика в списке сообщений. Скачав PVS-Studio без всяких регистраций, потенциальный пользователь получает полнофункциональную версию анализатора кода. Он может проверять ей какие угодно проекты сколько угодно раз. Он получает полный список сообщений. Но у него есть только какое-то ограниченное количество кликов (переходов к коду). Например, 100. Но число не принципиально и возможно мы его будем менять. Таким образом, пользователь может посмотреть и перейти к 100 диагностикам. Повторюсь, без каких либо ограничений.
- либо купить лицензию;
- либо отказаться от использования инструмента, если он ему не понравился;
- либо попросить у нас продлить trial-режим, предоставив информацию о себе, чтобы мы могли уже как-то с ним поработать в почте.
А вот продление режима у нас в версии PVS-Studio 4.54 реализовано так. После окончания кликов пользователь отсылает нам e-mail со следующей информацией: имя, компания, причина продления trial-режима. И мы ему даем ключик еще на одну неделю. То есть имеется некоторое количество ручной работы с нашей стороны.
В следующей версии после 4.54 мы это переделаем. Будет в программе автоматическая форма для указания этой информации, и после ее отправки пользователь будет получать еще, к примеру, 500 кликов. Продлеваться trial-режим будет один раз.
Trial
Условно-бесплатное программное обеспечение (англ. Shareware , /ˈʃɛə(r)wɛ(r)/ ) — тип программного обеспечения, обусловленный особенностями распространения таких программ.
Исторически, слово обозначало программы, свободно распространявшиеся третьими лицами (например, через FidoNet, в сборниках программ на компакт-дисках) и содержавшие в себе просьбу заплатить деньги автору программы. Однако с течением времени значение изменилось и говоря о shareware все чаще стали иметь в виду не свободное распространение (которого в наше время может и не быть — программа может быть доступна только с сайта производителя) а приемы, используемые авторами shareware-программ с целью побудить пользователя заплатить за бесплатно полученную (но не бесплатную) им программу.
Сейчас shareware чаще всего понимают также тип, способ или метод распространения проприетарного ПО на рынке (то есть на пути к конечному пользователю), при котором испытателю предлагается ограниченная по возможностям (неполнофункциональная или демонстрационная версия), сроку действия (триал версия, от англ. trial /ˈtraɪəl/ — пробный) или версия с встроенным блокиратором-напоминанием (NAG) о необходимости оплаты использования программы. В лицензии также может быть оговорен запрет на коммерческое или профессиональное (не тестовое) её использование. Иногда незарегистрированная программа спустя некоторое время (например, 30 дней) прекращает запускаться. Иногда становится недоступной часть функций. Иногда функциональность остаётся в полном объёме, но пользователю время от времени показывается напоминание о том, что он пользуется незарегистрированной версией.
Статья на сайте проекта GNU описывает shareware, как собственническое программное обеспечение. [1] [2] Это не мешает некоторым программам с ограничивающей функцией распространяться под GNU GPL вместе с исходным кодом, но мнения об их свободности расходятся.
Основной способ распространения shareware-программ — это каталоги программного обеспечения или реклама в поисковых системах.
Содержание
Российская специфика
Россия занимает второе место в мире по объёмам доходов от продаж условно-бесплатных программ от независимых производителей. Многие такие программы созданы в России и продаются в США, Германии и других странах. Это небольшая, но активно развивающаяся статья экспорта высокотехнологичных продуктов.
Многие из продуктов, созданных в России, не имеют русскоязычного интерфейса. Причиной считается обширный объём нарушений авторских прав обладателей прав на продажу ПО, использование кряков и бедность населения, делающая невозможным для российских пользователей платить за программное обеспечение. Это заставляет разработчиков отказываться от распространения таких программ в России и заниматься продажами в других странах. Некоторые российские производители shareware допускают свободное некоммерческое использование своих приложений пользователями из России или стран СНГ (см. FAR Manager, Flash&Backup, Light alloy). Однако в последнее время ситуация меняется и многие приложения начинают продаваться и на территории России. Это происходит по причине повышения уровня благосостояния граждан, появления удобной системы оплаты посредством SMS-платежей, а также проведения периодических проверок юридических лиц на предмет использования контрафактного ПО.
Как из програму trial, сделать полнофункциональную программу? Какая разница между словом trial и Demo?
Вообще говоря общепринятыми терминами, демо — это урезанная версия с частью возможностей полной версии и распространяется как правило бесплатно. Триал-версия — это полная версия программы (т. е. у нее внутри есть все функции) , но либо с частью заблокированных функций либо со всеми. Триал-версия доступна на ограниченный период времени, а потом обычно нужно платить чтобы проапгрейдить ее до полной.
Обычно демо версия ПО выпускается ДО релиза полной, и не может быть проапгрейжена до полной. Но некоторые программы сделаны так, что демо версия при оплате докачивается до полной (твой случай с неро) .
Чтобы перевести триал\демо версию в полную, обычно нужно заплатить Н-ную сумму и тебе высылают ключ. Либо можно скачать кряк) (халявный ключ, стыренный, в большинстве случаев) .
А пропадет или нет — зависит от программы. Мало ли как там разработчики встроили систему защиты. да и от ключа зависит. Т. е. от кряка. Например есть программы (в частности — антивирусы например) которые при получении ключа (который ты скачал, а поидеи должен был купить) лезут в инет и проверяют этот ключ по своей базе на удаленном сервере. Ломанные ключи со временем банят, и забаненный ключ такую проверку не пройдет, и программ соответственно не продлится\обновится\ и пр.
Не вижу проблемы с Неро. Их ломанных не триальных версий в инете — ТЬМА. Хоть на торрентах (лучше с них, т. к. там все проверено и без вирусов в большинстве случаев) , хоть на спец. сайтах, хоть где.
Вообще на сколько я помню триал программа это как раз таки полноценная программа, но она ограничена сроком действия (30 дней например) , а демо, это демо-версия тоесть у нее нет полного функционала.
Хотя по поводу неро да, они так нумеруют нормально 🙂
В общем программы, которые не требуют ввода ключа и имеют надпись демо или триал, это неполноценные программы, а просто демо-версии, все другие, которым нужен серийный номер, ключ и т. д. — это полноценные программы
есть программы trial и shareware
trial это когда на определенное время (например на месяц) вам предоставляется полный доступ к программе. по истечении этого месяца программа запускаться не будет и вас попросят ввести ключ, чтобы можно было продолжить работу
shareware это когда в программе недоступны какие-то функции и присутствуют ограничения. например «Нельзя записать DVD а можно только CD» или «Нельзя создать образ диска превышающего 300МБ» . Работать такая «ограниченная» программа будет сколько угодно, но пользоваться ей неудобно, а во многих случаях практически невозможно.
trial версия всегда полнофункциональна. и если есть ключ она останется полнофункциональной на все время действия ключа.
Q-А вот у меня есть Nero 7.0 Demo версия, но при вводе ключа, проподает слово Demo и програма полностью становитьься рабочей
A-значит возможности программы вшиты в demo версию и активизируются при вводе ключа
как понять: в триальном режиме?
Сейчас под shareware чаще всего понимают также тип, способ или метод распространения проприетарного ПО на рынке (то есть на пути к конечному пользователю) , при котором испытателю предлагается ограниченная по возможностям (неполнофункциональная или демонстрационная версия) , сроку действия (триал-версия) или версия с встроенным блокиратором-напоминанием (NAG) о необходимости оплаты использования программы. В лицензии также может быть оговорён запрет на коммерческое или профессиональное (не тестовое) её использование. Иногда незарегистрированная программа спустя некоторое время (например, 30 дней) прекращает запускаться. Иногда становится недоступной часть функций. Иногда функциональность остаётся в полном объёме, но пользователю время от времени показывается напоминание о том, что он пользуется незарегистрированной версией.
не путайте шареварный режим с триальным, разные вещи, абсолютно!
шареварный (shareware) режим это режим полного действия проги, а триальный — лишь демонстрация её возможностей