Про закрытие исходников платных дополнений

С самого начала работы modstore.pro я выкладывал все исходники своих платных дополнений на GitHub. Причем, все изменения выгружались одновременно с выходом новых версий.
Многие удивлялись, мол - как так? Ты же продаёшь эти дополнения, а возможность собрать пакет из исходников тебя лишает заработка. С одной стороны - да, лишает. С другой, поддержка обеспечивается только покупателям, так что от меня не убудет.
Как я в своё время изучал исходники авторов MODX, так и многие другие начинающие программисты изучали мои исходники. Присылали исправления, задавали вопросы, всё хорошо. Однако, я не учёл одного момента, что если куча дополнений пишутся по одному лекалу, то рано или поздно они начнут друг другу мешать.
Первый звоночек прозвучал, когда вышел платный компонент msFavorites, который взял полностью всю основу (логику работы, скрипты, стили) из тоже платного Comparison. Тем самым, автор msFavorites просто лишил меня возможности добавить функционал работы с избранным в своё дополнение.
То есть, у нас теперь один компонент для работы с избранным, за 490 рублей, а другой для сравнения товаров - еще за 490 рублей. Выглядят одинаково, работают с микроскопическими отличиями.
Затем тот же автор выпускает компонент UserProfile, часть которого была просто скопирована из платного Office, да так удачно, что при установке сразу обоих дополнений, один перехватывал действия другого. То есть, бесплатная копия мешала работе родного оригинала. И это уже напрямую касалось моей платной поддержки Office - потому что именно ко мне шли с вопросами.
Затем мне пришлось переписывать логику работы AjaxForm, потому что сторонние авторы использовали его в своих дополнениях и при установке нескольких таких, они ломали друг друга. Причём, переписывал я это на чужом сайте, где изначально и родился AjaxForm. А потом заказчик купил новое дополнение в магазине, установил, и оно сломало мой уникальный функционал. Мне пришлось за свой счёт исправлять работу и улучшать AjaxForm, чтобы такого больше не повторилось. С заказчиком мы, в итоге, разругались.
Также был еще один пакет, который также повторял функционал Office - вывод заказов miniShop2. Но там, хотя бы, есть серьёзное отличие - он работает без ExtJS, что многим нравится. При этом, очевидно, я мог бы и сам добавить такой контроллер в Office, но теперь это будет выглядеть как-то не очень красиво.
Ну а вчера произошло и вовсе прекрасное - вышла бесплатная кастрированная копия Office. Автор взял идею, логику работы, основные методы, оформление, выкинул "лишние" контроллеры и представил это как свою разработку. Конечно, отсылки к оригинальному проекту и благодарности в наличии, но меня это не утешает.
Почему бы теперь не написать EasySearchFilter? Ну, взять идею mSearch2, оформление, основные методы и получится прекрасная копия моего лучшего платного дополнения.
Что тут можно сделать? Я смог придумать только одно, очевидное решение - закрыть репозитории с платными дополнениями. Всё, что успели форкнуть, остаётся на своих местах, бесплатные дополнения тоже, а вот новые версии платных пакетов будут только в магазине.
Да, я лишаюсь обратной связи через issues на GitHub, а многие разработчики не смогут честно и бесплатно установить мои компоненты для личного пользования, но другого выхода я не вижу.
Я не хочу больше видеть уши своих лучших разработок в чужих платных или бесплатных дополнениях. Я из кожи лез вон, чтобы научить всех тому, что знаю. Но научить, а не дать скопировать. Тем более так, что это потом мешает мне самому.
Надеюсь на понимание.

51 комментарий

Василий, вроде все дополнения проходят премодерацию. Почему бы приложения, которые вас не устраивают поросту не пропускать в репозиторий?
Павел Гвоздь
Теперь понимаю, Василий! Прекрасно понимаю. Если ты посчитал, что это самый нормальный выход из подобной ситуации - то я поддерживаю. Хоть и печально всё это. Однако помоему любители копипаста всегда смогут купить дополнение получая при этом новые версии и копировать всё, что там есть, также, как и раньше?
Что-ж, будем надеяться, что когда-то в будущем мир станет более дружелюбным и честным, и люди станут совестливее, что в свою очередь не даст им так нагло без зазрения совести копировать чужие разработки. И тогда, опять же надеюсь, ты откроешь нам доступ к своим дополнениям вновь. :)
Иван Климчук
С одной стороны наличие все большего количества пакетов - это благо. Но мне, как автору, то же было бы обидно, если бы мои наработки использовались в других компонентах, не важно, платных или бесплатных, так грубо. Как ни крути, но это копипаста. Качество добавленного кода оставляет желать лучшего. По этой же причине я против использования modExtra. Да, он упрощает жизнь, позволяет быстрее стартовать, но при этом напрочь отключает мозги у разработчика. О том же говорит и тот факт, что никто не оставил ни одного комментария к моей заметке https://modx.pro/howto/6718-assembly-transport-package-without-installing-modx/. Да, пускай у меня там немного необычный подход, возможно спорный, но я сам сел и разобрался, как все работает. И так должен делать каждый разработчик. Можно изучать чужие разработки, учится на них, перенимать опыт, но обязательно пропускать все через себя, тогда это можно назвать не плагиатом, а авторской переработкой и улучшением. Так что я поддерживаю Василия. А кто хочет получить исходники, то достаточно оплатить покупку в магазине и потом потребовать исходный код. Лицензия GPLv2 это предусматривает.
Максим Полетаев
На сколько я помню, твои дополнения публиковались под GPLv2. Лицензия подразумевает, что люди могут делать с ними что угодно, при условии, что модифицированный код будет опубликован. То есть ты сам разрешил людям форкать твои дополнения, а теперь психуешь, что это всё-таки произошло :)
Понятно, что дополнения — твой хлеб и ребята поступают нечестно, продавая людям твой-же код. Если ты против форков, дополнения нужно публиковать под закрытой лицензией, типа «код можно использовать в целях обучения, но нельзя создавать продукты на основе него». Тогда твой наезд будет обоснован.
Василий Наумкин
Старые версии моих дополнений доступны под всё той же лицензией.
Для новых версий выберу что-то другое.
Максим Кузнецов
Вначале отнесся также, пока не прочитал о частоте таких действий и том, что они перекрывают доступ автору оригинала впоследствии вносить изменения..
Может, действительно стоит посмотреть в сторону модерации дополнений?
Они вроде и сейчас премодерацию проходят.
Василий Наумкин
Модерация проверяет, работает ли дополнение так, как заявлено.
Никто не проверяет чистоту исходного кода, и не тестирует на совместимость со всеми остальными дополнениями магазина.
Если не секрет, то чем обусловлен такой подход? Это же не варезник какой-нибудь в конце-концов.
Василий Наумкин
Какой подход?
Неужели ты думаешь, что магазин генерирует настолько большую прибыль, что можно посадить отдельного человека на тестирование дополнений? Причем, не школьника?
Я тебя огорчу, но даже лучший автор магазина на выручку от продажи дополнений не может не то что съездить в Германию, но и просто бросить другие подработки.
В конце концов - это площадка для работы сторонних авторов и вся головная боль по поддержке перекладывается на них. Обрати внимание, что в магазине Битрикс, AppStore, Google PlayStore и других - понятия поддержки нет вообще.
P.S. Если вдруг в дополнениях вскрываются какие-то серьёзные косяки после продаж - мы требуем их исправления под угрозой удаления пакета из продажи. Пока еще ни одно не удалили.
Я догадываюсь, что прибыли там никакой. Тем не менее для сегодня не составило труда определить, что из себя представляет приложение.
Василий Наумкин
И раньше кое-что замечал - в заметке об этом написано.
Еще раз повторяю, никто не открывает исходники и не смотрит построчно, что и откуда взято. Если начать так делать, выяснится что 90% всех платёжных методов miniShop2 взяты с mspZPayment (именно для этого он и был открыт в своё время и не закрыт до сих пор), еще 50% из modExtra и т.д.
Просто вот такого наглого копирования функционала еще не было. И не будет, по крайней мере в нашем репозитории. Если ты захочешь прислать клон любого дополнения, которое уже есть в магазине - будет отказ.
Иван Климчук
Радует, что мои версии платежных модулей писались хоть и с оглядкой на существующие решения, но с нуля полностью. Да и ныне существующие переписываю с нуля абсолютно. Я спокоен, ничего не нарушаю :) Я бы еще вынес PayPal из miniShop2, для сохранения целостности, но это тема для другого разговора и даже уже обсуждалась.
Алексей
про глюки UserProfile и Office не знал, только разбираюсь как они работают, спасибо за информацию! - кстати речь идет о UserProfile или о UserProfile2 ? кстати да, мне сразу показалось странным, почему UserProfile бесплатен.
Василий Наумкин
Кажется, первый - я точно не помню.
Поддерживаю Василия, правильно делаешь.
А как это поможет защититься от копирования? С таким же успехом можно приобрести модуль и слизать код. Давайте обфускацию еще делать
А где сейчас можно найти старые исходники?
Но ведь именно отсюда их удалили.
если нужно, могу удалить
Ну вот.Как я и думал (
Да пацаны кончилась халява. При том, что даже на файлопомойках это было не найти. Есть русская поговорка...
Волков Николай
Поддерживаю! Самостоятельно написать:
1) msFavorites - это плагин, который добавляет в массив внутри сессии id товара + чанки для msProducts что бы это все выводить. Работы на час - два. 2) mslistorders - сниппет, который генерирует для pdoFetch параметры из GETа + чанки для вывода результатов - Работы на час - два. 3) ajaxForm - всего один плагин на handleRequest для formIt + JS скрипт для фронта для отправки AJAX запроса- работы на час - два максимум 4) userProfile - не понял вообще что это, а теперь желание ознакомиться вообще напрочь пропало. Если потребуется подобное, то теперь однозначно даже смотреть на что-то кроме office не буду.
Конечно, я сейчас на вскидку написал, а если в живую начать писать то, что-то в итоге может оказаться несколько сложнее, но тем не менее смысла воровать нет. Тем более, если самостоятельно это писать, то шансов конфликтов дополнений с первоисточниками минимум.
Откуда вы такие шустрые беретесь? Вы случаем с этим товарищем не вместе работаете?
Волков Николай
В отличии от этого товарища, я бы никогда не написал, что перенос на modx самопала займет час. Перенос того же контента может занять неизвестно сколько.
Волков Николай
Хотя, да. Пока писал, думал о том, сколько бы у меня заняло времени для реализации на конкретном сайте, а не как универсальное дополнение. Но в любом случае чего-то сложного не вижу.
Василий Наумкин
Не видишь, пока не попробовал написать что-то универсальное и продать.
А потом полгода отвечать на вопросы, решать все проблемы и выпускать обновления. Попробуй - удивишься, гарантирую.
Волков Николай
Если и попробую, то уж точно не путем копирования/резки твоего кода аналогичного дополнения :-) Но это только в будущем, тк сейчас мне хватает вопросов/проблем и тп от клиентуры, которой я разрабатываю сайты. Там другого мозговыноса хватает :-)
Василий Наумкин
Тогда, возможно, не стоит рассказывать, что это "один-два часа не понимаю чего здесь сложного"?
Ну, просто, чтобы не выглядеть голословно?
Волков Николай
Ок, я не корректно выразился, т.к. написав про "1-2 часа" , я думал о реализации для сайта с 3 bootstrap'ом, но уж точно не про универсальное дополнение из репозитория, которое запашет на одном JS.
Но тем не менее, если взять, к примеру, дополнение msFavorites, которое слизано "из тоже платного Comparison". В чем проблема скопировать код классов msCartHandler и msOrderHandler, заменить Cart и Order на Wish и WishList, а потом прилично урезать их функционал в местах связанных с количеством позиций и всеми возможностями связанными с оформлением заказа и итоговой ценой. В итоге останется только продублировать eventы, плагин для AJAX и тд . Хочешь сказать, что в итоге за час-два не получится аналог по функционалу? Вопрос только в том, что продавать это лично бы я не стал.
Василий Наумкин
В данном конкретном случае, конечно, сложностей никаких нет. Об этом и заметка.
Верю, что такого больше не будет, от всей души.
Волков Николай
Кстати, как идея на будущее, можно вообще написать классы wish и wishlist, а потом extendить их до Cart и Order handler'ы в которые при construct в config передается имя массива в сессии. Мне кажется в итоге должно получиться удобно в плане разработки в дальнейшем.
Волков Николай
Касательно : "вывод заказов miniShop2. Но там, хотя бы, есть серьёзное отличие — он работает без ExtJS, что многим нравится"
Существует замечательный процессор в minishop /mgr/orders/getlist . Времени, чтобы из него сделать сниппет надо вообще чуть-чуть. Соответственно продавать такой функционал тоже не правильно.
Волков Николай
В общем, надеюсь вопрос о том, что я выгляжу " голословно" снят. Иначе можно дойти до темы реферальной системы, которая вообще с самого начала присутствует и даже в minishop плагине прописана:-) Собственно, под "1-2 часа" я в том числе и имел ввиду, что почти все то, что было в сворованных дополнениях идет по факту из коробки в самом minishop'е.
Василий Наумкин
В общем, надеюсь вопрос о том, что я выгляжу " голословно" снят
Он не может быть снят, пока ты не напишешь своё универсальное дополнение.
До той поры всё, что ты говоришь о разработке дополнений - голословно. Ибо ты их не разрабатывал.
Л - логика.
Волков Николай
Л-логика в том, что мы говорим немного о разном. Я говорю о том, что код того функционала из твоих платных дополнений воровать - полнейший маразм со стороны тех товарищей, т.к. в самом коде минишопа это все есть, если подумать. Ты же зацикливаешься на том, что я не реализовывал такие штуки, как дополнения. В каком то смысле мы оба правы получается.
Сергей Скат
что то вы вот очень странные ребят , вы чето шум подняли на пустом месте , у людей же есть выбор пользоваться/не пользоваться , есть копированный код , и что такого ? он же на гитхабе был в открытом доступе , я вот понять не могу , что плохого ? тем более что так сообщество и modx развивается быстрее и стремительнее , опять же это исключительно прекрасно , я например средней руки разработчик , и часто какой то функционал за час/два реализовать не могу , да это мой минус , да можете говорить что я ленив/непонима/надопойтиработатьвсвязной , но вот опять же мое развитие идет с изучением исходников , но это другой вопрос , я часто покупаю компаненты , и Office , и userProfeli мне пригодился как маленький кабинетик где не нужен Office и много чего еще , под свои личные нужды все же брал с гитхаба , и вот я не понимаю что плохого если на основе твоих трудов сделают что то лучше/другое/новое ? может еще ЯП свой написать с интерпритатором , а потом самому написать все библиотеки js , и не забываем про среду разработки , свою ОС , свою IDE , свой клиент FTP ?
Василий Наумкин
По моему, ответы на все вопросы есть в моей заметке - попробуй перечитать еще раз.
Сергей Скат
так ты же сам всегда говорил что научишь/покажешь/расскажешь и помогал , лично мне вообще не один раз , и вот ты научил /показал/рассказал , что же плохого что люди пользуются твоими уроками ? по моему это наоборот здорово , твоими приложениями ежедневно пользуются тысячи человек , вот это по моему круто , приятно что когда ты что то делаешь оно живет , а тебе почему то это не нравится , ты же сам форкаешь сниппеты https://bezumkin.ru/sections/components/189/
Василий Наумкин
Я форкаю платные дополнения или что?
Речь об исходниках исключительно платных дополнений, с которых я сейчас в какой-то мере живу. Они были открыты по причине моей невероятной доброты и щедрости, которые закончились.
Об этом и статья, которую я предлагаю тебе перечитать еще раз, если до сих пор непонятно.
Сергей Скат
ну а зачем столько драмы разводить ? можно же было написать проще - "Ребята , таки так я с дополнений зарабатываю , поэтому закрываю" , а то сразу резко все вокруг кто посмел посмотреть твои исходники стали в этом виноваты , прочел я твой пост , согласись не логично вступать в дискуссию не ознакомившись с материалом ? ты же сам писал что ты не продаешь компаненты , ты продаешь поддержку ? именно поэтому у тебя были открытые репозитории , разве нет ? ну закрыл ты потому что хочешь зарабатывать больше с них , ну хорошо , никто ж ниче тебе не скажет , негатива столько зачем ?
Василий Наумкин
Драмы никакой нет, я всех уведомил о событии и объяснил, что к нему привело.
Если тебе проще всё объяснить моей алчностью - на здоровье. Только покажи сначала других авторов, которые выкладывали исходники своих платных разработок.
Сергей Скат
Речь об исходниках исключительно платных дополнений, с которых я сейчас в какой-то мере живу.
ты ж сам написал ... Как бы если они тебе по карману особо не бьют тогда какой смысл ?
Василий Наумкин
Что-то ты меня утомил уже.
Кривые копии мешают работе моих купленных дополнений и мне приходится с этим разбираться в поддержке. Я же по-русски написал в статье и привёл примеры.
Установка UserProfile ломает работу Office, потому что у него часть кода скопирована оттуда и он ловит не свои события. Создание msFavorites помешало разитию Comparison. ECC и вовсе копирует функционал Office, но бесплатно - это уж точно нехорошо для моего кармана, как считаешь? Что мешает так скопировать вообще все разработки?
Дальше этот ком будет только нарастать. Ну как можно прочитать мой текст и ничего не понять?
Сергей Шлоков
Я изначально не разделял твой альтруизм. Из своего опыта работы с людьми могу подтвердить справедливость поговорок "Порядочных людей много. Просто они редко встречаются" и "Сделаешь 100 раз хорошее - не вспомнят. Сделаешь один раз плохое - не забудут!". Например, раньше я был добрым руководителем и меня сильно огорчало, что те люди, которым я постоянно иду навстречу, меня кидают. И пришел к решению, что пусть они кидают жесткого руководителя. Хоть не обидно будет. И стал таким. И что самое удивительное, кидать стали гораздо реже. Все приходит с опытом. Остальным хотелось бы сказать - давайте уважать друг друга. В современном мире, особенно в западном, это становится признаком слабости. Но у нас, русских (не по национальности, а по ментальности, а чем пишет Герман Садулаев) это имеет особый важный смысл. Особенно не понимаю халявщиков. Ведь заказчик же оплачивает, в чем смысл экономии. А оплачивая труд автора, вы выражаете свою благодарность ему и уважение к его работе и стимулируете его. А если уж очень денег жаль, то с большой вероятностью можно найти бесплатное решение. Вот лежали открытые исходники и ни спасибо тебе, ни денег. А вот закрыл - сразу плохой стал. Вывод: не делай хорошего, не получишь плохого. Я в свое время скачал некоторые твои дополнения для повышения квалификации и знаний, но тем не менее даже для себя купил дорогой (по сравнению с другими дополнениями) Office. Я не один такой в нашем сообществе, есть порядочные люди, но я свои платные дополнения не выкладывал в общий доступ и не буду. И не потому, что жадный. Просто я уважаю свой труд и ценю свое время и кроме меня это сделают единицы. А деньги с дополнений я все-равно отдаю сюда. Так что я поддерживаю!
Василий Наумкин
Спасибо!
Дмитрий Иванов
Печаль. Есть сайты, которые не приносят денег, но без дополнений Василия им будет очень грустно(
Алексей
Добрый день! столкнулся с проблемой - при очередном обновлении фронт-энда поломалась интеграция mSearch2 со сборкой через bower.json:

  "dependencies": {
    "Tickets": "bezumkin/Tickets",
    "code-prettify": "google/code-prettify",
    "AjaxForm": "bezumkin/AjaxForm",
    "mSearch2": "bezumkin/mSearch2",
    "gsap": "~1.18.0",
    "fontawesome": "~4.5.0",
    "sisyphus": "~1.1.103",
    "markitup-markitup": "~1.1.14",
    "font-awesome": "fontawesome#~4.5.0"
  },
Теперь на команду
bower install bezumkin/mSearch2
Бовер конечно выводит:

bower mSearch2#*            not-cached git://github.com/bezumkin/mSearch2.git#*
bower mSearch2#*               resolve git://github.com/bezumkin/mSearch2.git#*
bower mSearch2#*               ECMDERR Failed to execute "git ls-remote --tags --heads git://github.com/bezumkin/mSearch2.git", exit code of #128 fatal: remote error:    Repository n
ot found.

Additional error details:
fatal: remote error:
  Repository not found.
Поскольку такого репозитория нет. Как теперь удобно собрать фронт-энд через мэнэджер зависимостей?
Чикин Артур
Убрать из bower.json все платные дополнения?
bezumkin.ru
Personal website of Vasily Naumkin
Прямой эфир
Александр Наумов
23.07.2024, 00:20:37
Василий, спасибо большое!!
Василий Наумкин
01.07.2024, 11:56:41
Да, верно, именно так. А в контроллере, скорее всего, ловить данные методом post.
Василий Наумкин
26.06.2024, 09:38:15
О, точно, вылезает если не залогинен. Спасибо, исправил!
Василий Наумкин
09.04.2024, 04:45:01
> Ошибка 500 Это не похоже на ошибку Nginx, это скорее всего ошибка PHP - надо смотреть его логи. ...
Василий Наумкин
20.03.2024, 21:21:52
Volledig!
Андрей
14.03.2024, 13:47:10
Василий! Как всегда очень круто! Моё почтение!
russel gal
09.03.2024, 20:17:18
> А этот стоило написать хотя бы затем, чтобы получить комментарий от юзера, который ничего не писал...
Александр Наумов
27.01.2024, 03:06:18
Василий, спасибо! Извини, тупанул.
Василий Наумкин
22.01.2024, 07:43:20
Давай-давай!
Василий Наумкин
24.12.2023, 14:26:13
Спасибо!