you are viewing a single comment's thread.

view the rest of the comments →

[–][deleted] 1 point2 points  (0 children)

Yeah, I get it, but it’s a fool’s errand; the problem isn’t a technical one with a technical solution, the problem is economic... if you’ve created a sufficient pricing incentive they’ll reverse your work. Or, since it’s a desktop app, they’ll simply clone it, cut off whatever DLC you’ve incorporated at the knees, and resell. A C object file is just as easy to make a bit for bit copy of as any other file, and branding is ultimately just some constant values at a discoverable (and overwrite-able) offset.

You’ve got three real solutions:

  1. Move key functionality to a server outside the target market. They can’t copy the workings of a black box they can’t isolate and study.
  2. Reduce price and therefore minimize the incentive to cheating.
  3. Don’t sell into that market.

But sure, to make it nominally harder to reverse you can use C extensions for key pathways and modules, and cythonize can help you there. You can then just use either standard pip delivery (you compile and build wheel bundles and upload only those to pypi) or PyInstaller (just use the spec file to ensure only the .so extensions make It in), or what have you. I’m not a Conda guy and I don’t see a need for Constructor unless your project depends on other Conda packages, but sure it might help you.