Python'da işverenimin müşterilerine dağıtılacak bir yazılım geliştiriyorum. İşverenim yazılımın kullanımını zaman kısıtlı bir lisans dosyası ile sınırlamak istiyor.
Eğer .py dosyalarını veya hatta .pyc dosyalarını dağıtırsak, lisans dosyasını kontrol eden kodu (derlemeden çıkarmak ve) kaldırmak kolay olacaktır.
Bir diğer husus ise işverenimin kodun müşterilerimiz tarafından okunmasını istememesi, kodun ya da en azından "yeni fikirlerin" çalınabileceğinden korkmasıdır.
Bu sorunu çözmenin iyi bir yolu var mı? Tercihen hazır bir çözümle.
Yazılım Linux sistemlerinde çalışacak (bu yüzden py2exe'nin işe yarayacağını sanmıyorum).
Python, bayt kodu ile derlenen yorumlanmış bir dil olduğundan, kilitlenmesi çok zordur. py2exe](http://py2exe.org) gibi bir exe-packager kullansanız bile, çalıştırılabilir dosyanın düzeni iyi bilinir ve Python bayt kodları iyi anlaşılır.
Genellikle bu gibi durumlarda bir ödünleşim yapmanız gerekir. Kodu korumak gerçekten ne kadar önemli? İçinde gerçek sırlar mı var (banka transferlerinin simetrik şifrelenmesi için bir anahtar gibi), yoksa sadece paranoyaklık mı yapıyorsunuz? En iyi ürünü en hızlı şekilde geliştirmenizi sağlayacak dili seçin ve yeni fikirlerinizin ne kadar değerli olduğu konusunda gerçekçi olun.
Lisans kontrolünü gerçekten güvenli bir şekilde uygulamanız gerektiğine karar verirseniz, lisans kontrol kodunun tersine mühendislik için ekstra zor (ancak imkansız değil!) olabilmesi için küçük bir C uzantısı olarak yazın ve kodunuzun büyük kısmını Python'da bırakın.
İşvereniniz, diğer insanların sizin kodunuzdan elde ettiği fikirleri çalabileceğinin farkında mı? Yani, onlar sizin çalışmanızı okuyabiliyorsa, siz de onlarınkini okuyabilirsiniz. Belki de bu durumdan nasıl fayda sağlayabileceğinize bakmak, ne kadar kaybedebileceğinizden korkmaktan daha iyi bir yatırım getirisi sağlayacaktır.
[Nick'in yorumuna cevap:
Kazanılan ve kaybedilen bir şey yok. Müşteri istediğini aldı (ve değişikliği kendisi yaptığı için parasını ödedi). Değişikliği yayınlamadığı için, sanki diğer herkes için olmamış gibi olur.
Şimdi müşteri yazılımı satarsa, telif hakkı bildirimini değiştirmek zorundadır (ki bu yasa dışıdır, bu yüzden dava açabilirsiniz ve kazanırsınız -> basit dava).
Telif hakkı bildirimini değiştirmezlerse, 2. seviye müşteriler yazılımın sizden geldiğini fark edecek ve neler olduğunu merak edeceklerdir. Muhtemelen sizinle iletişime geçecekler ve böylece çalışmanızın yeniden satıldığını öğreneceksiniz.
Yine iki vakamız var: Orijinal müşteri sadece birkaç kopya sattı. Bu da zaten fazla para kazanmadıkları anlamına gelir, o halde neden uğraşsınlar ki? Ya da çok sayıda satmışlardır. Bu, onların ne yaptığını öğrenmeniz ve bu konuda bir şeyler yapmanız için daha iyi bir şans anlamına gelir.
Ancak sonuçta, çoğu şirket yasalara uymaya çalışır (itibarları bir kez zedelendiğinde, iş yapmak çok daha zordur). Bu yüzden çalışmanızı çalmazlar, ancak onu geliştirmek için sizinle birlikte çalışırlar. Dolayısıyla, eğer kaynağı eklerseniz (sizi basit bir yeniden satıştan koruyan bir lisansla), büyük olasılıkla yaptıkları değişiklikleri geri alacaklardır, çünkü bu, değişikliğin bir sonraki sürümde olmasını ve bakımını yapmak zorunda kalmamalarını sağlayacaktır. Bu iki tarafın da kazanacağı bir durumdur: Siz değişiklikleri alırsınız, onlar da eğer gerçekten ihtiyaç duyarlarsa, siz resmi sürüme dahil etmek istemeseniz bile değişikliği kendileri yapabilirler.
getdropbox.com'daki adamların Linux da dahil olmak üzere istemci yazılımları için bunu nasıl yaptıklarına bir göz atmalısınız. Kırılması oldukça zordur ve koruma mekanizmalarını aşmak için oldukça yaratıcı bir sökme işlemi gerektirir.