Pregunta

Actualmente, tengo una aplicación Django que desarrollé para mis clientes, pero ahora estoy empezando a ver cómo venderla a las personas para que se alojen ellos mismos.

Mi pregunta es esta: ¿cómo puedo empaquetar y vender una aplicación Django, mientras protejo su código de piratería o robo? Distribuir un montón de archivos .py no suena como una buena idea, ya que las personas a quienes les vendo también podrían hacer copias de ellos y transmitirlos.

Creo que para el propósito de este problema sería seguro asumir que todos los que compren esto ejecutarán la misma configuración (LAMP).

¿Fue útil?

Solución

No intentes ofuscar o encriptar el código, nunca funcionará.

Sugeriría vender la aplicación Django " como servicio " - puede alojarlo para ellos o venderles el código y el soporte . Escriba un contrato que les prohíba redistribuirlo.

Dicho esto, si estuvieras determinado a ofuscar el código de alguna manera, puedes distribuir las aplicaciones de Python completamente como .pyc (código de bytes compilado de Python). Así es como funciona Py2App.

Todavía será redistribuible, pero será muy difícil editar los archivos, por lo que podría agregar algunas cosas básicas de licencia, y no se lo frustrará por unos pocos # s ..

Como dije, no creo que tenga éxito en la lucha contra la piratería a través del cifrado o la ofuscación, etc. Dependiendo de sus clientes, un contrato simple, y tal vez algunas verificaciones realmente básicas irán mucho más lejos que algunas sistema de descifrado complicado (y haga que la experiencia de usar su aplicación mejor , en lugar de ojalá no sea peor )

Otros consejos

La forma en que lo haría es esta:

  1. Encripta todo el código
  2. Escriba un instalador que se ponga en contacto con el servidor con el nombre de host y el archivo de licencia de la máquina y obtenga la clave de descifrado, luego descifra el código y lo compila en el bytecode de Python
  3. Agregue (en el instalador) un módulo que verifica el nombre de host y el archivo de licencia de la máquina al importar y muere si no coincide.

De esta manera, el usuario solo tiene que ponerse en contacto con el servidor cuando el nombre de host cambia y en la primera instalación, pero obtiene una pequeña capa de seguridad. Podría cambiar el nombre de host a algo más complejo, pero realmente no hay necesidad, cualquiera que quiera piratear esto lo hará, pero un simple mecanismo como ese mantendrá a la gente honesta honesta.

Puede empaquetar todo como una instancia de máquina de Amazon (AMI), y luego hacer que ejecuten su aplicación en Amazon EC2 . Lo bueno de esta solución es que Amazon se encargará de facturando por usted , y como está distribuyendo la imagen completa de la máquina, puede estar seguro de que todos sus clientes están utilizando la misma pila LAMP. La AMI es una imagen de máquina encriptada que se configura como lo desee.

Puede hacer que Amazon le facture al cliente una tarifa única, una tarifa basada en el uso o una tarifa mensual.

Por supuesto, esta solución requiere que sus clientes alojen su aplicación en Amazon y paguen las tarifas correspondientes.

" Encriptación " El código fuente de Python (o bytecode, o realmente bytecode para cualquier idioma que lo use, no solo Python) es como esas pequeñas cosas de JavaScript que algunas personas ponen en las páginas web para intentar desactivar el botón derecho del ratón, declarando " ahora usted ¡No puedo robar mis imágenes! "

Las soluciones alternativas son triviales y no detendrán a una persona determinada.

Si realmente quieres vender un software de Python, debes actuar en serio. Pague a un abogado para redactar los términos de la licencia / contrato, haga que las personas los acepten en el momento de la compra y luego déjelos tener el software real. Esto significa que tendrá que llevar a la gente al tribunal si violan los términos de la licencia / contrato, pero tendrá que hacerlo sin importar qué (por ejemplo, si alguien rompe su "cifrado" y comienza a distribuir su software), y Tener la forma adecuada de palabras legales ya establecidas en papel, con su firma, será mucho mejor para su negocio a largo plazo.

Si realmente eres ese paranoico acerca de las personas " robando " su software, sin embargo, simplemente se adhiere a un modelo alojado y no les da acceso al servidor. Muchas empresas exitosas se basan en ese modelo.

Nunca podrás mantener el código fuente de las personas que realmente lo desean. Es mejor comprender este hecho ahora y ahorrarse el dolor de cabeza más adelante.

¿Puedo hablar francamente, como amigo? A menos que su aplicación sea realmente increíble, es posible que no obtenga muchos compradores. ¿Por qué perder el tiempo en abogados, ofuscación, licencias y todo eso? Usted puede ganar una mejor reputación al abrir su código ... y mantenerlo.

Django proviene del extremo de código abierto del espectro de las licencias (y ofuscación). Por supuesto, la licencia MIT es más común que la GPL; aún así, ambos están muy alejados de algo como el EULA de Microsoft. Muchos Djangófilos se resisten al código fuente cerrado, simplemente porque eso es lo que hace Microsoft.

Además, las personas confiarán más en su código, ya que podrán leerlo y verificar que no contenga ningún código malicioso. Recuerde, " ofuscación " significa " ocultar; " ¿Y quién realmente sabrá exactamente lo que has escondido?

Por supuesto, no hay una manera fácil de monetizar el código de código abierto. Pero puede ofrecer sus servicios o incluso publicar una campaña en Pledgie.com, para aquellos que están agradecidos por todo su excelente trabajo.

Una cosa que deberías considerar es lo que hace FogBugz. Simplemente incluya un pequeño binario (tal vez un programa en C) que se compila para las plataformas de destino y contiene el código para validar la licencia.

De esta manera, puede mantener honestas a las personas honestas con un dolor de cabeza mínimo de su parte.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top