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

С самого начала работы modstore.pro я выкладывал все исходники своих платных дополнений на GitHub. Причем, все изменения выгружались одновременно с выходом новых версий.

Многие удивлялись, мол - как так? Ты же продаёшь эти дополнения, а возможность собрать пакет из исходников тебя лишает заработка. С одной стороны - да, лишает. С другой, поддержка обеспечивается только покупателям, так что от меня не убудет.

Как я в своё время изучал исходники авторов MODX, так и многие другие начинающие программисты изучали мои исходники. Присылали исправления, задавали вопросы, всё хорошо. Однако, я не учёл одного момента, что если куча дополнений пишутся по одному лекалу, то рано или поздно они начнут друг другу мешать.

Первый звоночек прозвучал, когда вышел платный компонент msFavorites, который взял полностью всю основу (логику работы, скрипты, стили) из тоже платного Comparison. Тем самым, автор msFavorites просто лишил меня возможности добавить функционал работы с избранным в своё дополнение.

То есть, у нас теперь один компонент для работы с избранным, за 490 рублей, а другой для сравнения товаров - еще за 490 рублей. Выглядят одинаково, работают с микроскопическими отличиями.

Затем тот же автор выпускает компонент UserProfile, часть которого была просто скопирована из платного Office, да так удачно, что при установке сразу обоих дополнений, один перехватывал действия другого. То есть, бесплатная копия мешала работе родного оригинала. И это уже напрямую касалось моей платной поддержки Office - потому что именно ко мне шли с вопросами.

Затем мне пришлось переписывать логику работы AjaxForm, потому что сторонние авторы использовали его в своих дополнениях и при установке нескольких таких, они ломали друг друга. Причём, переписывал я это на чужом сайте, где изначально и родился AjaxForm. А потом заказчик купил новое дополнение в магазине, установил, и оно сломало мой уникальный функционал. Мне пришлось за свой счёт исправлять работу и улучшать AjaxForm, чтобы такого больше не повторилось. С заказчиком мы, в итоге, разругались.

Также был еще один пакет, который также повторял функционал Office - вывод заказов miniShop2. Но там, хотя бы, есть серьёзное отличие - он работает без ExtJS, что многим нравится. При этом, очевидно, я мог бы и сам добавить такой контроллер в Office, но теперь это будет выглядеть как-то не очень красиво.

Ну а вчера произошло и вовсе прекрасное - вышла бесплатная кастрированная копия Office. Автор взял идею, логику работы, основные методы, оформление, выкинул "лишние" контроллеры и представил это как свою разработку. Конечно, отсылки к оригинальному проекту и благодарности в наличии, но меня это не утешает.

Почему бы теперь не написать EasySearchFilter? Ну, взять идею mSearch2, оформление, основные методы и получится прекрасная копия моего лучшего платного дополнения.

Что тут можно сделать? Я смог придумать только одно, очевидное решение - закрыть репозитории с платными дополнениями. Всё, что успели форкнуть, остаётся на своих местах, бесплатные дополнения тоже, а вот новые версии платных пакетов будут только в магазине.

Да, я лишаюсь обратной связи через issues на GitHub, а многие разработчики не смогут честно и бесплатно установить мои компоненты для личного пользования, но другого выхода я не вижу.

Я не хочу больше видеть уши своих лучших разработок в чужих платных или бесплатных дополнениях. Я из кожи лез вон, чтобы научить всех тому, что знаю. Но научить, а не дать скопировать. Тем более так, что это потом мешает мне самому.

Надеюсь на понимание.

← Предыдущая заметка
День рождения 33
Следующая заметка →
Встреча пользователей MODX в Минске
Комментарии (51)
Alexander VAlexander V
02.11.2015 06:52

Василий, вроде все дополнения проходят премодерацию. Почему бы приложения, которые вас не устраивают поросту не пропускать в репозиторий?

gvozdbПавел Гвоздь
02.11.2015 06:54

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

Что-ж, будем надеяться, что когда-то в будущем мир станет более дружелюбным и честным, и люди станут совестливее, что в свою очередь не даст им так нагло без зазрения совести копировать чужие разработки. И тогда, опять же надеюсь, ты откроешь нам доступ к своим дополнениям вновь. :)

AlroniksИван Климчук
02.11.2015 07:30

С одной стороны наличие все большего количества пакетов - это благо. Но мне, как автору, то же было бы обидно, если бы мои наработки использовались в других компонентах, не важно, платных или бесплатных, так грубо. Как ни крути, но это копипаста. Качество добавленного кода оставляет желать лучшего. По этой же причине я против использования modExtra. Да, он упрощает жизнь, позволяет быстрее стартовать, но при этом напрочь отключает мозги у разработчика. О том же говорит и тот факт, что никто не оставил ни одного комментария к моей заметке https://modx.pro/howto/6718-assembly-transport-package-without-installing-modx/. Да, пускай у меня там немного необычный подход, возможно спорный, но я сам сел и разобрался, как все работает. И так должен делать каждый разработчик. Можно изучать чужие разработки, учится на них, перенимать опыт, но обязательно пропускать все через себя, тогда это можно назвать не плагиатом, а авторской переработкой и улучшением. Так что я поддерживаю Василия. А кто хочет получить исходники, то достаточно оплатить покупку в магазине и потом потребовать исходный код. Лицензия GPLv2 это предусматривает.

zenwalkerМаксим Полетаев
02.11.2015 07:39

На сколько я помню, твои дополнения публиковались под GPLv2. Лицензия подразумевает, что люди могут делать с ними что угодно, при условии, что модифицированный код будет опубликован. То есть ты сам разрешил людям форкать твои дополнения, а теперь психуешь, что это всё-таки произошло :)

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

bezumkinВасилий Наумкин
02.11.2015 07:58

Старые версии моих дополнений доступны под всё той же лицензией.

Для новых версий выберу что-то другое.

Максим Кузнецов
02.11.2015 17:23

Вначале отнесся также, пока не прочитал о частоте таких действий и том, что они перекрывают доступ автору оригинала впоследствии вносить изменения..

Может, действительно стоит посмотреть в сторону модерации дополнений?

Alexander VAlexander V
02.11.2015 17:38

Они вроде и сейчас премодерацию проходят.

bezumkinВасилий Наумкин
02.11.2015 17:40

Модерация проверяет, работает ли дополнение так, как заявлено.

Никто не проверяет чистоту исходного кода, и не тестирует на совместимость со всеми остальными дополнениями магазина.

Alexander VAlexander V
02.11.2015 19:24

Если не секрет, то чем обусловлен такой подход? Это же не варезник какой-нибудь в конце-концов.

bezumkinВасилий Наумкин
03.11.2015 03:19

Какой подход?

Неужели ты думаешь, что магазин генерирует настолько большую прибыль, что можно посадить отдельного человека на тестирование дополнений? Причем, не школьника?

Я тебя огорчу, но даже лучший автор магазина на выручку от продажи дополнений не может не то что съездить в Германию, но и просто бросить другие подработки.

В конце концов - это площадка для работы сторонних авторов и вся головная боль по поддержке перекладывается на них. Обрати внимание, что в магазине Битрикс, AppStore, Google PlayStore и других - понятия поддержки нет вообще.

P.S. Если вдруг в дополнениях вскрываются какие-то серьёзные косяки после продаж - мы требуем их исправления под угрозой удаления пакета из продажи. Пока еще ни одно не удалили.

Alexander VAlexander V
03.11.2015 03:31

Я догадываюсь, что прибыли там никакой. Тем не менее для сегодня не составило труда определить, что из себя представляет приложение.

bezumkinВасилий Наумкин
03.11.2015 03:39

И раньше кое-что замечал - в заметке об этом написано.

Еще раз повторяю, никто не открывает исходники и не смотрит построчно, что и откуда взято. Если начать так делать, выяснится что 90% всех платёжных методов miniShop2 взяты с mspZPayment (именно для этого он и был открыт в своё время и не закрыт до сих пор), еще 50% из modExtra и т.д.

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

AlroniksИван Климчук
03.11.2015 06:27

Радует, что мои версии платежных модулей писались хоть и с оглядкой на существующие решения, но с нуля полностью. Да и ныне существующие переписываю с нуля абсолютно. Я спокоен, ничего не нарушаю :) Я бы еще вынес PayPal из miniShop2, для сохранения целостности, но это тема для другого разговора и даже уже обсуждалась.

Алексей
03.11.2015 16:20

про глюки UserProfile и Office не знал, только разбираюсь как они работают, спасибо за информацию! - кстати речь идет о UserProfile или о UserProfile2 ? кстати да, мне сразу показалось странным, почему UserProfile бесплатен.

bezumkinВасилий Наумкин
03.11.2015 16:47

Кажется, первый - я точно не помню.

Anton
04.11.2015 07:48

Поддерживаю Василия, правильно делаешь.

Павел
04.11.2015 12:24

А как это поможет защититься от копирования? С таким же успехом можно приобрести модуль и слизать код. Давайте обфускацию еще делать

vds1
04.11.2015 15:22

А где сейчас можно найти старые исходники?

Максим Кузнецов
04.11.2015 20:21
vds1
04.11.2015 20:33

Но ведь именно отсюда их удалили.

bezumkinВасилий Наумкин
06.11.2015 07:02
Иван
06.11.2015 14:57

если нужно, могу удалить

maslitto
05.11.2015 15:23

Ну вот.Как я и думал (

Alexander VAlexander V
06.11.2015 10:39

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

Волков Николай
27.11.2015 11:14

Поддерживаю! Самостоятельно написать:

1) msFavorites - это плагин, который добавляет в массив внутри сессии id товара + чанки для msProducts что бы это все выводить. Работы на час - два. 2) mslistorders - сниппет, который генерирует для pdoFetch параметры из GETа + чанки для вывода результатов - Работы на час - два. 3) ajaxForm - всего один плагин на handleRequest для formIt + JS скрипт для фронта для отправки AJAX запроса- работы на час - два максимум 4) userProfile - не понял вообще что это, а теперь желание ознакомиться вообще напрочь пропало. Если потребуется подобное, то теперь однозначно даже смотреть на что-то кроме office не буду.

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

Alexander VAlexander V
27.11.2015 11:24

Откуда вы такие шустрые беретесь? Вы случаем с этим товарищем не вместе работаете?

Волков Николай
27.11.2015 11:28

В отличии от этого товарища, я бы никогда не написал, что перенос на modx самопала займет час. Перенос того же контента может занять неизвестно сколько.

Волков Николай
27.11.2015 11:46

Хотя, да. Пока писал, думал о том, сколько бы у меня заняло времени для реализации на конкретном сайте, а не как универсальное дополнение. Но в любом случае чего-то сложного не вижу.

bezumkinВасилий Наумкин
27.11.2015 12:22

Не видишь, пока не попробовал написать что-то универсальное и продать.

А потом полгода отвечать на вопросы, решать все проблемы и выпускать обновления. Попробуй - удивишься, гарантирую.

Волков Николай
27.11.2015 14:12

Если и попробую, то уж точно не путем копирования/резки твоего кода аналогичного дополнения :-) Но это только в будущем, тк сейчас мне хватает вопросов/проблем и тп от клиентуры, которой я разрабатываю сайты. Там другого мозговыноса хватает :-)

bezumkinВасилий Наумкин
27.11.2015 14:39

Тогда, возможно, не стоит рассказывать, что это "один-два часа не понимаю чего здесь сложного"?

Ну, просто, чтобы не выглядеть голословно?

Волков Николай
27.11.2015 16:12

Ок, я не корректно выразился, т.к. написав про "1-2 часа" , я думал о реализации для сайта с 3 bootstrap'ом, но уж точно не про универсальное дополнение из репозитория, которое запашет на одном JS.

Но тем не менее, если взять, к примеру, дополнение msFavorites, которое слизано "из тоже платного Comparison". В чем проблема скопировать код классов msCartHandler и msOrderHandler, заменить Cart и Order на Wish и WishList, а потом прилично урезать их функционал в местах связанных с количеством позиций и всеми возможностями связанными с оформлением заказа и итоговой ценой. В итоге останется только продублировать eventы, плагин для AJAX и тд . Хочешь сказать, что в итоге за час-два не получится аналог по функционалу? Вопрос только в том, что продавать это лично бы я не стал.

bezumkinВасилий Наумкин
27.11.2015 16:17

В данном конкретном случае, конечно, сложностей никаких нет. Об этом и заметка.

Верю, что такого больше не будет, от всей души.

Волков Николай
27.11.2015 16:32

Кстати, как идея на будущее, можно вообще написать классы wish и wishlist, а потом extendить их до Cart и Order handler'ы в которые при construct в config передается имя массива в сессии. Мне кажется в итоге должно получиться удобно в плане разработки в дальнейшем.

Волков Николай
27.11.2015 16:43

Касательно : "вывод заказов miniShop2. Но там, хотя бы, есть серьёзное отличие — он работает без ExtJS, что многим нравится"

Существует замечательный процессор в minishop /mgr/orders/getlist . Времени, чтобы из него сделать сниппет надо вообще чуть-чуть. Соответственно продавать такой функционал тоже не правильно.

Волков Николай
27.11.2015 16:52

В общем, надеюсь вопрос о том, что я выгляжу " голословно" снят. Иначе можно дойти до темы реферальной системы, которая вообще с самого начала присутствует и даже в minishop плагине прописана:-) Собственно, под "1-2 часа" я в том числе и имел ввиду, что почти все то, что было в сворованных дополнениях идет по факту из коробки в самом minishop'е.

bezumkinВасилий Наумкин
27.11.2015 16:54

В общем, надеюсь вопрос о том, что я выгляжу " голословно" снят

Он не может быть снят, пока ты не напишешь своё универсальное дополнение.

До той поры всё, что ты говоришь о разработке дополнений - голословно. Ибо ты их не разрабатывал.

Л - логика.

Волков Николай
27.11.2015 17:13

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

Сергей Скат
03.12.2015 13:36

что то вы вот очень странные ребят , вы чето шум подняли на пустом месте , у людей же есть выбор пользоваться/не пользоваться , есть копированный код , и что такого ? он же на гитхабе был в открытом доступе , я вот понять не могу , что плохого ? тем более что так сообщество и modx развивается быстрее и стремительнее , опять же это исключительно прекрасно , я например средней руки разработчик , и часто какой то функционал за час/два реализовать не могу , да это мой минус , да можете говорить что я ленив/непонима/надопойтиработатьвсвязной , но вот опять же мое развитие идет с изучением исходников , но это другой вопрос , я часто покупаю компаненты , и Office , и userProfeli мне пригодился как маленький кабинетик где не нужен Office и много чего еще , под свои личные нужды все же брал с гитхаба , и вот я не понимаю что плохого если на основе твоих трудов сделают что то лучше/другое/новое ? может еще ЯП свой написать с интерпритатором , а потом самому написать все библиотеки js , и не забываем про среду разработки , свою ОС , свою IDE , свой клиент FTP ?

bezumkinВасилий Наумкин
03.12.2015 15:15

По моему, ответы на все вопросы есть в моей заметке - попробуй перечитать еще раз.

Сергей Скат
03.12.2015 15:44

так ты же сам всегда говорил что научишь/покажешь/расскажешь и помогал , лично мне вообще не один раз , и вот ты научил /показал/рассказал , что же плохого что люди пользуются твоими уроками ? по моему это наоборот здорово , твоими приложениями ежедневно пользуются тысячи человек , вот это по моему круто , приятно что когда ты что то делаешь оно живет , а тебе почему то это не нравится , ты же сам форкаешь сниппеты https://bezumkin.ru/sections/components/189/

bezumkinВасилий Наумкин
03.12.2015 15:48

Я форкаю платные дополнения или что?

Речь об исходниках исключительно платных дополнений, с которых я сейчас в какой-то мере живу. Они были открыты по причине моей невероятной доброты и щедрости, которые закончились.

Об этом и статья, которую я предлагаю тебе перечитать еще раз, если до сих пор непонятно.

Сергей Скат
03.12.2015 16:12

ну а зачем столько драмы разводить ? можно же было написать проще - "Ребята , таки так я с дополнений зарабатываю , поэтому закрываю" , а то сразу резко все вокруг кто посмел посмотреть твои исходники стали в этом виноваты , прочел я твой пост , согласись не логично вступать в дискуссию не ознакомившись с материалом ? ты же сам писал что ты не продаешь компаненты , ты продаешь поддержку ? именно поэтому у тебя были открытые репозитории , разве нет ? ну закрыл ты потому что хочешь зарабатывать больше с них , ну хорошо , никто ж ниче тебе не скажет , негатива столько зачем ?

bezumkinВасилий Наумкин
03.12.2015 16:23

Драмы никакой нет, я всех уведомил о событии и объяснил, что к нему привело.

Если тебе проще всё объяснить моей алчностью - на здоровье. Только покажи сначала других авторов, которые выкладывали исходники своих платных разработок.

Сергей Скат
03.12.2015 16:26

Речь об исходниках исключительно платных дополнений, с которых я сейчас в какой-то мере живу.

ты ж сам написал ... Как бы если они тебе по карману особо не бьют тогда какой смысл ?

bezumkinВасилий Наумкин
03.12.2015 16:34

Что-то ты меня утомил уже.

Кривые копии мешают работе моих купленных дополнений и мне приходится с этим разбираться в поддержке. Я же по-русски написал в статье и привёл примеры.

Установка UserProfile ломает работу Office, потому что у него часть кода скопирована оттуда и он ловит не свои события. Создание msFavorites помешало разитию Comparison. ECC и вовсе копирует функционал Office, но бесплатно - это уж точно нехорошо для моего кармана, как считаешь? Что мешает так скопировать вообще все разработки?

Дальше этот ком будет только нарастать. Ну как можно прочитать мой текст и ничего не понять?

sergantСергей Шлоков
04.12.2015 06:27

Я изначально не разделял твой альтруизм. Из своего опыта работы с людьми могу подтвердить справедливость поговорок "Порядочных людей много. Просто они редко встречаются" и "Сделаешь 100 раз хорошее - не вспомнят. Сделаешь один раз плохое - не забудут!". Например, раньше я был добрым руководителем и меня сильно огорчало, что те люди, которым я постоянно иду навстречу, меня кидают. И пришел к решению, что пусть они кидают жесткого руководителя. Хоть не обидно будет. И стал таким. И что самое удивительное, кидать стали гораздо реже. Все приходит с опытом. Остальным хотелось бы сказать - давайте уважать друг друга. В современном мире, особенно в западном, это становится признаком слабости. Но у нас, русских (не по национальности, а по ментальности, а чем пишет Герман Садулаев) это имеет особый важный смысл. Особенно не понимаю халявщиков. Ведь заказчик же оплачивает, в чем смысл экономии. А оплачивая труд автора, вы выражаете свою благодарность ему и уважение к его работе и стимулируете его. А если уж очень денег жаль, то с большой вероятностью можно найти бесплатное решение. Вот лежали открытые исходники и ни спасибо тебе, ни денег. А вот закрыл - сразу плохой стал. Вывод: не делай хорошего, не получишь плохого. Я в свое время скачал некоторые твои дополнения для повышения квалификации и знаний, но тем не менее даже для себя купил дорогой (по сравнению с другими дополнениями) Office. Я не один такой в нашем сообществе, есть порядочные люди, но я свои платные дополнения не выкладывал в общий доступ и не буду. И не потому, что жадный. Просто я уважаю свой труд и ценю свое время и кроме меня это сделают единицы. А деньги с дополнений я все-равно отдаю сюда. Так что я поддерживаю!

bezumkinВасилий Наумкин
04.12.2015 07:05

Спасибо!

Дмитрий Иванов
20.12.2015 17:42

Печаль. Есть сайты, которые не приносят денег, но без дополнений Василия им будет очень грустно(

Алексей
24.01.2016 09:50

Добрый день! столкнулся с проблемой - при очередном обновлении фронт-энда поломалась интеграция 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.

Поскольку такого репозитория нет. Как теперь удобно собрать фронт-энд через мэнэджер зависимостей?

Чикин Артур
16.03.2016 17:27

Убрать из bower.json все платные дополнения?

bezumkin
Василий Наумкин
30.06.2022 03:58
Есть ли возможность формировать "friendly URL aliases", используя аналог translit MODx? ...
bezumkin
Василий Наумкин
27.06.2022 03:32
Спасибо за исправления, очень выручаешь =) Но учитывая количество не описаных в заметке дополнительн...
bezumkin
Василий Наумкин
27.06.2022 03:10
что будет использоваться для вывода многоуровневого меню Посмотри как работают комментарии на этом ...
bezumkin
Василий Наумкин
25.06.2022 11:56
Поправил, спасибо!
bezumkin
Василий Наумкин
22.06.2022 10:08
Я обычно не пользуюсь RTE редакторами, потому что они пишут всякое непонятное что в HTML. Но можно в...
bezumkin
Василий Наумкин
21.06.2022 01:58
onLoad(data) { this.total = data.total }, и onLoad({total}) { this.total = total }, В нашем случ...
bezumkin
Василий Наумкин
20.06.2022 14:01
Прекрасно тебя понимаю, я когда сам в этом разбирался - голова дымилась. Но зато теперь прямо-таки п...
bezumkin
Василий Наумкин
20.06.2022 09:30
Не надо, оно по умолчанию так - я просто чуть более подробно написал.
bezumkin
Василий Наумкин
19.06.2022 13:42
А можно же из 1 файла сделать 2 экспорта. По-умолчанию, и отдельно для футера: export const Footer =...
bezumkin
Василий Наумкин
19.06.2022 09:44
Тебе спасибо, что поддерживаешь рублём мои начинания!