Jeg utvikler en programvare i Python som skal distribueres til kundene til arbeidsgiveren min. Arbeidsgiveren min ønsker å begrense bruken av programvaren med en tidsbegrenset lisensfil.
Hvis vi distribuerer .py-filene eller til og med .pyc-filene, vil det være enkelt å (dekompilere og) fjerne koden som sjekker lisensfilen.
Et annet aspekt er at arbeidsgiveren min ikke ønsker at koden skal leses av kundene våre, i frykt for at koden kan bli stjålet, eller i det minste de "nye ideene".
Finnes det en god måte å håndtere dette problemet på? Helst med en hyllevareløsning.
Programvaren skal kjøres på Linux-systemer (så jeg tror ikke py2exe vil gjøre susen).
Python, som er et byte-kode-kompilert tolket språk, er svært vanskelig å låse ned. Selv om du bruker en exe-pakker som py2exe, er oppsettet av den kjørbare filen velkjent, og Pythons bytekoder er godt forstått.
I slike tilfeller må man vanligvis gjøre en avveining. Hvor viktig er det egentlig å beskytte koden? Inneholder den virkelige hemmeligheter (for eksempel en nøkkel for symmetrisk kryptering av bankoverføringer), eller er du bare paranoid? Velg det språket som lar deg utvikle det beste produktet raskest, og vær realistisk med hensyn til hvor verdifulle de nye ideene dine er.
Hvis du bestemmer deg for at du virkelig trenger å håndheve lisenssjekken på en sikker måte, kan du skrive den som en liten C-utvidelse slik at lisenssjekkkoden blir ekstra vanskelig (men ikke umulig!) å reversere, og la hoveddelen av koden være i Python.
Er arbeidsgiveren din klar over at han kan "stjele" ideer som andre får fra koden din? Jeg mener, hvis de kan lese arbeidet ditt, kan du også lese deres. Kanskje er det bedre å se på hvordan du kan dra nytte av situasjonen enn å frykte hvor mye du kan tape.
[EDIT] Svar på Nicks kommentar:
Ingenting vunnet og ingenting tapt. Kunden har fått det han vil ha (og har betalt for det siden han gjorde endringen selv). Siden han ikke frigir endringen, er det som om den ikke skjedde for alle andre.
Hvis kunden nå selger programvaren, må de endre opphavsrettsmerknaden (noe som er ulovlig, så du kan saksøke og vil vinne -> enkel sak).
Hvis de ikke endrer merknaden om opphavsrett, vil kundene på andre nivå legge merke til at programvaren kommer fra deg og lure på hva som foregår. Sjansen er stor for at de vil kontakte deg, slik at du får vite om videresalget av arbeidet ditt.
Igjen har vi to tilfeller: Den opprinnelige kunden solgte bare noen få eksemplarer. Det betyr at de ikke tjente mye penger uansett, så hvorfor bry seg. Eller de solgte i stort volum. Det betyr at du har bedre muligheter til å lære om hva de gjør og gjøre noe med det.
Men til syvende og sist prøver de fleste selskaper å overholde loven (når omdømmet deres er ødelagt, er det mye vanskeligere å gjøre forretninger). Så de vil ikke stjele arbeidet ditt, men samarbeide med deg for å forbedre det. Så hvis du inkluderer kildekoden (med en lisens som beskytter deg mot enkel videresalg), er sjansen stor for at de bare vil skyve tilbake endringene de har gjort, siden det vil sørge for at endringen er med i neste versjon og at de ikke trenger å vedlikeholde den. Det er vinn-vinn: Du får endringer, og de kan gjøre endringene selv hvis de virkelig trenger dem, selv om du ikke er villig til å inkludere dem i den offisielle versjonen.