Üyelik lisansı nedir?
Üyelik lisansı, tek seferlik bir satın almaya değil, etkin bir üyeliğe bağlı bir ürün anahtarıdır. Eklentinin, betiğinin ya da botunun üyedeki kopyası, anahtarı belirli aralıklarla kontrol eder: üyelik sürdükçe çalışır, üyelik bitince durur, üye yeniden katılırsa tekrar çalışmaya başlar. Üyelik, lisansın ta kendisidir. Nadi'nin bunun için kullandığı cümle de bu: üyeliğin, lisansındır.
Bu neden var?
Çalışan bir ürün satan herkes — bir tasarım uygulaması için eklenti, bir betik, bir bot, küçük bir web aracı — bu dengesizliği bilir. Satış bir kez olur, iş ise hiç bitmez: ana uygulamanın her yeni sürümünden sonra bir güncelleme, sorular, düzeltmeler ve iki yıl önce satın alıp sana hâlâ yazan biri.
Abonelik işin para tarafını çözer ama bir soruyu açık bırakır: aboneliği yenilemeye değer kılan ne? Ödemeyi bırakan birinin elinde ürün çalışmaya devam ediyorsa, yenilemek bir bağıştır.
Üyelik lisansı iki ucu birbirine bağlar. Kişi üye olduğu sürece kopyası çalışır. Üyelik bitince durur. Geri döndüğünde yeniden çalışır. Büyük profesyonel yazılımlar yıllardır böyle çalışıyor; yeni olan, anahtarı tek bir satın almaya değil, bir topluluktaki üyeliğe bağlamak.
Nasıl çalışır: bir anahtar, bir kontrol ve bir ek süre
Üç parça var ve her biri bariz bir sorunu çözer.
- Anahtar. Tek bir üyeye ve tek bir ürüne ait, uzun ve rastgele bir karakter dizisi. Özenli bir platform onu yazıldığı gibi değil, karıştırılmış olarak saklar; böylece veritabanını okuyan kimse anahtarları okuyamaz.
- Kontrol. Ürünün anahtarı tek bir adrese gönderir ve kısa bir cevap alır: geçerli ya da geçersiz. Ürününün içinde birkaç satır; senin çalıştırman gereken bir sunucu yok.
- Ek süre. Her evet, imzalı bir son kullanma tarihiyle gelir. Ürün onayı o süre boyunca saklar ve onay bayatlayana kadar yeniden sormaz; böylece çevrimdışı çalışır. İmza, kimsenin kendi bilgisayarındaki bir dosyayı düzenleyerek süreyi uzatmasına izin vermez.
Fikri kullanılabilir yapan, ek süredir. O olmadan ürünü çalıştırmak için internet bağlantısı şart olur ve müşterin uçakta çalışamaz hâle gelir. Onunla, en kötü ihtimalle ayrılan biri birkaç gün daha çalışmaya devam eder — bozulmayan bir ürün için gayet adil bir bedel.
En önemli soru: lisans sunucusu çöktüğünde ne olur?
Güvenebileceğin bir tasarımı güvenemeyeceğinden ayıran budur. Ürünün soruyor ve cevap gelmiyor: bağlantı koptu, platform çöktü, yanıt zaman aşımına uğradı. Ürün ne yapmalı?
Çalışmaya devam etmeli. Bir ürünü yalnızca açık bir ret durdurabilir — bu anahtarın iptal edildiğini ya da tanınmadığını açıkça söyleyen bir cevap. Sessizlik, bir hata ve bir zaman aşımı ret değildir; onları ret saymak, başkasının kesintisinin ürününü müşterinin gözü önünde bozması demektir.
Tek satırda: şüphede açık kal, kesinlikte kapan. Herhangi bir platformda kurmadan önce tam olarak bu davranışı sor ve ürününe yapıştırman söylenen kodu oku. Kod bir ağ hatasını iptal gibi değerlendiriyorsa, bedelini senin itibarın öder.
Neye dürüstçe lisans verilebilir, neye verilemez?
Sınır basit: çalışan şeylere lisans verilebilir, çalışmayanlara verilemez. Kontrol, ürünün eve telefon etmesidir; durağan bir dosya ise hiçbir yeri arayamaz.
- Eklenti, betik, uygulama, bot: çalıştırılır, dolayısıyla sorabilir ve sen onu durdurabilirsin. Burada lisans gerçektir.
- Görsel, ses dosyası, belge, hazır ayar paketi: bir kez indirilip saklanır. İçindeki hiçbir şey kimseye bir şey sormaz ve sonradan geri almanın hiçbir yolu yoktur.
Bu yüzden durağan bir dosyaya lisanslı demek, kimsenin uygulatamayacağı bir iddiadır. Onlar için dürüst mekanizma kapının kendisidir: indirmeye izin veren üyeliktir ve ayrılan, bir sonraki sürümü alamaz. Bu doğru ve faydalıdır — sadece lisans değildir ve asla lisans diye satılmamalıdır.
Her platforma ne sormalı?
Bu fikrin herhangi bir uygulamasını değerlendirmek için altı soru yeter:
- Anahtar, üyelikle aynı anda mı ölüyor, yoksa aylık bir döngüde ya da gece çalışan bir işle mi?
- Üye geri dönerse eski anahtarı da geri geliyor mu, yoksa ürününe yeni bir anahtar mı yapıştırması gerekiyor?
- Ek süre ne kadar, onu kim belirliyor ve cevap sahtesi yapılamasın diye imzalı mı?
- Platform çöktüğünde uç nokta ne diyor: «cevap veremiyorum» mu, «geçersiz» mi?
- Entegrasyon kaç satır tutuyor ve kendine ait bir sunucuya ya da veritabanına ihtiyacın var mı?
- Lisans düğmesi, asla uygulatılamayacak şeylerde de sunuluyor mu? Durağan bir dosyaya lisans vermene izin veren bir platform sana mekanizma değil, görüntü satıyordur.
Somut bir örnek: Nadi bunu nasıl yapıyor?
Nadi bir topluluk platformu; bu bölümde kendi ürünümüzü anlatıyoruz. Yalnızca bugün yaptıklarını.
- Sahip, topluluğunun kitaplığındaki bir öğeyi lisanslı olarak işaretler ve her üye, öğe kartında bir kopyalama düğmesiyle gösterilen kendi anahtarını alır.
- Anahtar, üyelik yaşadıkça doğrulanır; üyelik öldüğü anda REVOKED cevabını verir — üye ayrılmış, çıkarılmış ya da aboneliği sona ermiş olsun.
- Yeniden katıldıklarında aynı satır canlanır; böylece kimsenin hiçbir yere yeni anahtar yapıştırması gerekmez.
- Entegrasyon, ürününde aşağı yukarı on satır. Anahtarı haftada bir kontrol eder, aralarda çevrimdışı çalışmaya devam eder.
- Ek süre varsayılan olarak yedi gündür ve cevap imzalıdır; böylece ürünün, bizim ek süre belirtecimizi birinin kendi bilgisayarında düzenlediği bir dosyadan ayırt edebilir.
- Uç nokta, hata durumunda açık kalır. Cevap veremediğimizde bunu söyleriz; onun yerine asla «geçersiz» demeyiz. Bizim taraftaki bir kesinti asla iptal kılığına sokulmaz.
- Sahip, öğeyi kimin kullandığını, her lisans sahibinin durumunu — çalışıyor ya da durdu — ve ürününün en son ne zaman yoklama verdiğini görür.
- Öğenin yeni bir sürümünü yayınlamak, topluluğun tamamına değil, yalnızca anahtarı olanlara haber verir.
- Üyeliği sona ermiş birinin gördüğü ret mesajı topluluğun adını verir ve ürünü neyin geri getireceğini söyler: topluluğa yeniden katılmak.
Sınırlar, dürüstçe
Nadi'de hiçbir şeye, lisanslı olabileceğini kanıtlayana kadar lisanslı denemez. Düğme her öğede, dosyada ya da bağlantıda, o öğenin kendi ürünü kontrolümüzü gerçek bir anahtarla en az bir kez çağırana kadar kapalı kalır — «Lisanslı» kelimesinin sayfasına girmesine izin verilmeden önce ürün, mekanizmayı gözümüzün önünde gösterir. Bu yüzden bir üyenin indirip kontrole hiç bağlamadığı bir dosyaya ürünümüzün hiçbir yerinde lisanslı denmez; onun dürüst mekanizması kapıdır, indirmeye izin veren de üyeliktir. Bir lisansı kapatmaya ise her zaman izin verilir.
Hata durumunda açık kalmak bir eksik değil, bir taahhüttür. Uç nokta veritabanına soramadığında «kullanılamıyor» cevabını verir; sana verdiğimiz kod parçası da açık bir cevap olmayan her şeyi çalışmaya devam etme izni sayar. Bu, ayrılan birinin ek süresi dolana kadar çalışmaya devam edebileceği anlamına gelir ve bunu bilerek kabul ediyoruz: bizim bir dağıtımımız tekledi diye başkalarının ürünleri bozulmamalı.
Son iki sınır. Anahtar üyelikle gelir ve bugün katılmadan anahtar edinmenin bir yolu yok. Paylaşılan bir anahtar da yine tek bir üyeliğe bağlı tek bir anahtardır — o üyelik durunca o da durur.