Как мне упаковать и продать приложение Django? - PullRequest
38 голосов
/ 03 октября 2008

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

У меня такой вопрос: как я могу упаковать и продать приложение Django, защищая его код от пиратства или кражи? Распространение нескольких файлов .py не очень хорошая идея, поскольку люди, которым я продаю их, могут просто сделать их копии и передать их.

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

Ответы [ 7 ]

56 голосов
/ 03 октября 2008

Не пытайтесь запутать или зашифровать код - он никогда не будет работать.

Я бы предложил продавать приложение Django «как сервис» - либо разместите его для них, либо продайте им код и поддержите . Составьте договор, который запрещает им распространять его.

Тем не менее, если вы решили каким-то образом запутать код - вы можете распространять приложения python полностью как .pyc (Python-скомпилированный байт-код). Так работает Py2App.

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

Как я уже сказал, я не думаю, что вы преуспеете в борьбе с пиратством с помощью шифрования или обфускации и т. Д. В зависимости от ваших клиентов, простой контракт и, возможно, некоторые действительно базовые проверки будут идти намного дальше, чем некоторые сложная система дешифрования (и опыт использования вашего приложения лучше вместо , надеюсь, не хуже )

11 голосов
/ 03 октября 2008

Вы можете упаковать все это как инстанс машины Amazon (AMI), а затем запустить приложение на Amazon EC2 . Приятно, что в этом решении Amazon будет позаботиться о том, чтобы вам выставили счет , и, поскольку вы распространяете весь образ машины, вы можете быть уверены, что все ваши клиенты используют один и тот же стек LAMP. AMI - это зашифрованный образ машины, который настроен так, как вы хотите.

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

Конечно, это решение требует, чтобы ваши клиенты размещали свои приложения в Amazon и платили соответствующие сборы.

11 голосов
/ 03 октября 2008

Я бы сказал об этом так:

  1. Шифрование всего кода
  2. Напишите установщик, который связывается с сервером с именем хоста и файлом лицензии, получает ключ дешифрования, затем дешифрует код и компилирует его в байт-код python
  3. Добавить (в установщике) модуль, который проверяет имя хоста и файл лицензии машины при импорте и умирает, если он не совпадает

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

10 голосов
/ 15 января 2009

«Шифрование» исходного кода Python (или байт-кода, или действительно байт-кода для любого языка, который его использует - не только для Python) подобен тем маленьким JavaScript-элементам, которые некоторые люди помещают на веб-страницы, пытаясь отключить правую кнопку мыши , заявив: «Теперь ты не можешь украсть мои изображения!»

Обходные пути тривиальны и не остановят решительного человека.

Если вы действительно серьезно относитесь к продаже программного обеспечения Python, вам нужно действовать серьезно. Заплатите адвокату, чтобы составить условия лицензии / контракта, попросите людей согласиться с ними во время покупки, а затем просто предоставьте им актуальное программное обеспечение. Это означает, что вам придется привлекать людей в суд, если они нарушают условия лицензии / контракта, но вам придется делать это независимо от того, что (например, если кто-то нарушает ваше «шифрование» и начинает распространять ваше программное обеспечение), и иметь фактическая правильная форма юридических слов, уже установленных на бумаге, с их подписью, будет гораздо лучше для вашего бизнеса в долгосрочной перспективе.

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

7 голосов
/ 03 октября 2008

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

4 голосов
/ 06 мая 2011

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

Django происходит от конца спектра с открытым исходным кодом от лицензирования (и запутывания). Конечно, лицензия MIT встречается чаще, чем GPL; тем не менее они оба очень далеки от чего-либо вроде лицензионного соглашения Microsoft. Многие джангофилы будут противиться закрытому исходному коду, просто потому, что это делает Microsoft.

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

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

3 голосов
/ 28 декабря 2008

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

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

...