Unity’nin açık kaynak konusundaki çifte standardı: VLC engeli
(mfkl.github.io)- VLC for Unity, Unity oyun motoru ile VLC multimedya motorunu bağlayan açık kaynaklı bir entegrasyon ve Aralık 2019’dan beri Unity Store’da platforma özel ikili dosyalar dağıtıyordu
- 2023 yazının sonlarında Unity’den gelen e-postanın ardından yayıncı hesabı hemen engellendi; aylar süren görüşmelere ve LGPL kodunu dışarıda bırakma önerisine rağmen Store’a dönüşe izin verilmedi
- Unity Store’da FFmpeg gibi LGPL bağımlılıkları içeren çok sayıda asset hâlâ bulunuyor; Unity Editor ve çalışma zamanı da Lame, libiconv, libwebsockets, websockify.js gibi LGPL kütüphaneleri kullanıyor
- Asset kaldırıldıktan sonra müşteriler bakım ve derleme güncellemelerini sormaya başlayınca Videolabs, Unity Store olmadan da ikili dosya satmak için kendi sitesinde Videolabs Store’u açtı
- Videolabs Store, VLC Unity eklentisi ikili dosyalarının yanında LibVLC·FFmpeg için ticari destek yapısını, LibVLCSharp lisansını, LibVLC ebook’unu, Kyber’i ve planlanan Unreal entegrasyon ürünlerini de kapsıyor
Unity Store’dan engellenen VLC for Unity
- VLC for Unity, Unity tabanlı oyunlarda VLC motorunu kullanan bir medya oynatıcı oluşturmayı mümkün kılan bir köprü entegrasyonu
- Unity, Mono aracılığıyla; LibVLC ise kendi başına yüksek taşınabilirliğe sahip olduğundan bu entegrasyon çapraz platform kullanımı hedefliyor
- Unity Store’da Aralık 2019’dan beri VLC for Unity’nin açık kaynak entegrasyon ikili dosyaları dağıtılıyordu ve hedeflenen platform sayısı 3’tü
- Windows
- UWP
- Android
- 2023 yazının sonlarında Unity bir e-posta gönderdikten sonra yayıncı hesabı hemen engellendi
- Sonraki aylarda e-posta yoluyla bir uzlaşma aranmış, hatta asset’ten LGPL kodunu çıkarma önerilmiş olsa da Unity Store’a geri dönüşe izin vermedi
- Unity paketi içindeki tüm LGPL kodları kaldırılsa bile geri dönülemeyeceği yanıtı verildi
- Unity Store’da FFmpeg gibi LGPL bağımlılıkları içeren yüzlerce ila binlerce asset bugün de mevcut
- Unity’nin kendisi de Editor ve çalışma zamanında LGPL bağımlılıkları kullanıyor ve bu durum Unity ile dağıtılan oyunları da etkiliyor
- Örnek kütüphaneler olarak Lame, libiconv, libwebsockets, websockify.js listeleniyor
- Unity’nin tüm açık kaynak bağımlılık listesi ayrı bir listede görülebilir
- Temel çatışma, Unity’nin LGPL açık kaynak kütüphaneler kullanırken Unity Store yayıncıları ve kullanıcılarının LGPL tabanlı dağıtımına izin vermemesinde yatıyor; bu da çifte standart oluşturuyor
Videolabs Store ve ticari destek
- VLC for Unity asset’i kaldırıldıktan sonra mevcut ve yeni müşteriler bakımın sürüp sürmeyeceğini ve derleme güncellemelerinin nasıl alınacağını sormaya başladı
- Birçok şirket LibVLC SDK ve FFmpeg gibi ilgili teknolojileri kullandığı için Videolabs kendi Videolabs Store’unu açmaya karar verdi
- Mevcut ve yeni müşteriler, Unity Store olmadan da açık kaynak VLC Unity eklentisinin ikili dosyalarını satın alabiliyor
- VLC for Unity açık kaynak olduğu için kullanıcıların bunu kendilerinin derlemesi de mümkün
- Videolabs Store, LibVLC ve FFmpeg için ürün ve hizmet sunum yapısını netleştiren bir kanal işlevi görüyor
- Bazı kullanıcılar sorun çözümü veya yeni özellikler talep ediyor ancak topluluğun ve az sayıdaki gönüllünün sınırlı zamanı nedeniyle buna yanıt vermenin sınırları var
- Videolabs ekibi, VLC ve FFmpeg uzmanlarından oluşuyor ve çeşitli protokoller, formatlar ve platformlarla ilgileniyor
- Sunulan multimedya danışmanlık paketleri 3 saat, 10 saat ve 24 saatlik; tek seferlik hizmet ya da aylık abonelik olarak satın alınabiliyor
- Destek kapsamına özel derlemeler, hata düzeltmeleri, SDK entegrasyonu ve belirli gereksinimlere yönelik soru-cevap dâhil
- İşletim sistemi platformu veya toolkit fark etmeksizin destek verilebiliyor
- Store’da LibVLCSharp ticari lisansı ve LibVLC ebook da yer alıyor
- Planlanan ürünler arasında ultra düşük gecikmeli oyun ve masaüstü akışı ile uzaktan kontrol SDK’sı Kyber ve Unreal gibi ek oyun motoru entegrasyonları bulunuyor
4 yorum
Motoru bile düzgün yapamayan bir şirket, saçma sapan ne varsa hepsini yapıyor demek ki lol
Belirsiz ve uç bir düşünce olabilir ama teknoloji sektöründe anlaşılmaz bir sorun çıktığında suçun çoğu zaman takım elbiselilerde olduğunu düşünmeden edemiyorum.
Unity yine...
Lisanslama meselesi yüzünden şirket batmanın eşiğine kadar gelmişti; yine de insanları sinirlendirmeyi başarıyorlar haha
Hacker News yorumları
Hukuk ekibinin yanlış bilgilendirilip bunu sözleşmeye koyduğu açık görünüyor
Yazıda da söylendiği gibi Unity asset’lerinin önemli bir kısmı LGPL bağımlılıkları kullanıyor; Unity’nin kendisi de LGPL asset’leri kullanıyor ve Unity ile yapılmış yayımlanmış oyunlarda da LGPL asset’leri var
Niyet büyük olasılıkla yalnızca GPL bağımlılıklarını filtrelemekti
GPL ile LGPL arasında büyük fark var; LGPL, belirli koşullara uyulduğunda kapalı kaynak bir uygulamanın açık kaynak bir kütüphaneye link vermesi durumunda uygulamanın kaynak kodunun açılmasını gerektirmeyecek şekilde tasarlanmış bir lisans
Buna karşılık GPL, GPL kodu içeren türev çalışmanın tamamının GPL olarak dağıtılmasını ve kaynak kodunun da yayımlanmasını gerektiren daha katı şartlara sahip
Örneğin imzalamanın zorunlu olduğu platformların mağazaları üzerinden dağıtılan uygulamaların, kullanıcı LGPL bileşenlerini değiştiremediği için LGPL bileşenleri içeremeyeceğini düşünmüştüm
Hukuki ayrıntıları bir kenara bıraksak bile LGPL, GPL’den daha esnek olsa da hâlâ oldukça kısıtlayıcı; bu yüzden kapalı kaynak yazılımların işi basit tutması ya da ilgili alanda uzman bir avukata danışıp uyumluluğu dikkatle doğrulaması gerekir
Bu açıdan Unity’nin LGPL yazılımlarını yasaklaması anlaşılır. Bu, bunu düzgün yapamayacakları anlamına gelmiyor; Unity’nin ya da sağlayıcının mağazaya yüklenen her asset’i her seferinde hukuken incelemesinin gerçekçi olmamasından kaynaklanıyor
2025’te bile HN’de dahi kimsenin LGPL’in somut olarak ne anlama geldiğini veya uygulama gereksinimlerini kesin bilmemesi tuhaf
Durum bu kadar karmaşık, kafa karıştırıcı ve yoruma açıkken, insanların gerçekten anlayabileceği daha iyi yeni bir lisans sistemi oluşturmak için kesinlikle alan var
MIT gibi lisanslar herkes tarafından nispeten net anlaşılıyor; ancak çeşitli GPL türevlerinin ve daha karmaşık özel lisansların ideal olarak daha iyi bir şeyle değiştirilmesi gerekir
Burada önemli olan Unity Asset Store’da neye izin verildiği
Unity’nin, Unity oyunlarına linklenebilecek her şeyi mağazasında kabul etme zorunluluğu yok; o dönemdeki sağlayıcı sözleşmesi de basitçe LGPL asset’lerinin mağazada satılamayacağını söylüyor gibi görünüyor
Mağazanın ek gereksinimler koyması şaşırtıcı ya da haksız değil; üçüncü taraf içerik dağıtıcısı olarak riski azaltmak için de sebepleri var
Ayrıca Unity Asset Store’daki asset’lerin mutlaka yalnızca Unity’de kullanılması gerekmiyor; bazı asset’ler lisanslarına bağlı olarak başka motorlarda da kullanılabiliyor: https://support.unity.com/hc/en-us/articles/34387186019988-C...
Ancak LGPL bileşenleri içeren başka asset’leri dağıtmaya devam ederken LGPL kurallarını tutarlı şekilde uygulamamak daha büyük bir sorun
LGPL temelde kullanıcının açık kaynak kütüphaneyi değiştirebilmesini, yeniden derleyebilmesini ve bu yeni kütüphaneyi mevcut uygulamaya yeniden entegre edebilmesini şart koşar
LGPL kütüphanesi kullanan geliştiricinin bunu “mümkün kılması” gerekir; fakat bunun pratikte ne anlama geldiği yoruma açıktır
Avukatların ve şirketlerin LGPL’den uzak durmasının nedeni de GPL’den daha fazla yorum alanı içermesidir
Burada bu varsayımın geçerli olup olmadığından pek emin değilim
Unity’nin avukatları şirketi mahvetmeye devam ediyor ve bu pek şaşırtıcı değil
Eskiden orada çalışmıştım; teknik başarılarıyla gurur duyuyordum ama bunun dışındaki neredeyse her şeyden utanıyordum
Düzeltme: Aslında bağlantılıymış; VLC çekirdek geliştiricilerinin çoğu VideoLabs’te çalışıyormuş
Orijinal yorumu bırakıyorum
Bu blog yazısı https://videolabs.io adresindeki “VideoLab Store”a bağlantı veriyor; VLC’nin (VideoLAN’in kısaltmasıdır, VideoLab’in değil) logosuna çok benzeyen ama aynı olmayan bir logoyu büyükçe kullanıyor
Ana sayfada hatta “Hire the VLC team” ifadesi bile yer alıyor
Bildiğim kadarıyla VideoLab’in VideoLAN kâr amacı gütmeyen kuruluşuyla ilgisi yoktu ve insanları VLC geliştiricileriymiş gibi yanıltmaya çalışıyor gibi görünüyordu
Şu anda VideoLabs, VLC çekirdek geliştiricilerinin çoğunu istihdam ediyor ve bu kişiler VLC geliştirmenin ana itici gücü
Bu şekilde yapılandırılmasının nedeni, Videolabs şirketi sonsuza kadar var olmasa bile VLC’nin sonsuza kadar özgür yazılım olarak kalmasını ve kâr amacı gütmeyen kuruluşun da yaşamaya devam etmesini sağlamak
Açık kaynak projelerinde oldukça tipik bir yapı; VideoLAN örneğinde danışmanlık yapan 3-4 şirket var
Özünde, VLC’nin başlıca katkı verenlerinin çoğunu istihdam edip maaş ödeyerek bu ekosistemde çalışmalarını sağlayan; bunu da danışmanlık ve diğer hizmetlerle finanse eden kâr amaçlı bir tüzel kişilik
VLC kod tabanına da epey katkıda bulunuyor
Bir ortaklık kapsamında birlikte çalışmış biri olarak şunu da ekleyeyim: “kâr amaçlı” ifadesi çoğunlukla yalnızca hukuki biçimi anlatıyordu, düşünce tarzlarını değil
Üstelik Videolabs https://www.videolan.org/videolan/partners.html sayfasında da listelenmiş
Proje tarafı bu şirketi iyi tanıyor gibi görünüyor
Bugün VLC’nin başlıca katkı verenlerinden biri olarak, tarihsel geliştiricileri istihdam ediyor ve VLC ile FFmpeg ekosistemleri etrafında özel çözümler geliştiriyor
Tanıtım sayfasına göre bunlar VLC’nin ana bakımcılarıymış
Yanılıyorsam düzeltilmesini isterim
Anladığım kadarıyla LGPL v2 kodu kullanmak konsol çıkışlarında da sorun değil. v2’de Tivoization karşıtı madde yok; yani son kullanıcı kilitli bir platform yüzünden programı yeniden linkleyemese bile bunun sorun olmadığı anlamına geliyor.
Ancak websockify.js ve muhtemelen başka bağımlılıklar LGPL v3 ve bu da, son kullanıcının ilgili bileşeni değiştiremediği Nintendo Switch gibi platformlara dahil edilemeyecekleri anlamına geliyor gibi görünüyor.
Unity’nin bu tür bileşenleri kilitli platformlardan hariç tutup tutmadığını, yoksa sadece LGPL v3’ü ihlal mi ettiğini merak ediyorum.
Bu madde, Tivo’nun yaptığı şeyi engellemek için oldukça dar yazıldı. Yani kilitli işletim sistemi içeren bir cihaz satarken içinde *GPLv3 yazılımı bulundurma durumunu hedefliyor.
Uygulanabilmesi için yazılımın bir “kullanıcı ürünü” içinde aktarılması ve bu aktarımın, ürünün sahiplik ve kullanım haklarının alıcıya devredildiği bir işlemin parçası olması gerekiyor.
“Kullanıcı ürünü” genellikle kişisel, ailevi veya ev içi kullanım için kullanılan maddi kişisel mülkiyeti ya da bir konut alanına dahil edilmek üzere tasarlanıp satılan şeyleri ifade eder.
Nintendo Switch örneğinde bu, Nintendo’nun Switch’in kendisine ya da satın alındığında beraber gelen şeylere *GPLv3 yazılımı koyamayacağı anlamına gelir.
Sonradan indirilip kurulan ek yazılımlar, Nintendo çevrim içi mağazasından ya da fiziksel medya olarak satılan yazılımlar Tivoization karşıtı maddenin kapsamına girmez.
Dolayısıyla yalnızca bu madde açısından bakarsak Unity’nin kilitli platformlar için *GPLv3 kodu içermesinde ya da geliştiricilerin Unity ile o platformlar için oyun yapmasında bir sorun yok.
Sorun olabilecek şey *GPLv3’ün diğer kısımlarıdır. Apple veya Nintendo gibi uygulama mağazaları üzerinden yazılım dağıtılıp satın alındığında, indirilen kopyaları oluşturan ve dağıtan taraf Apple ya da Nintendo’dur.
Telif hakkı sahibinden izin alınmışsa sorun yoktur; ancak bu tür mağazaları kullanmak için genellikle yeniden dağıtımı veya tersine mühendisliği yasaklayan şartları kabul etmek gerekir ve bu *GPLv3 ihlalidir.
Telif hakkı sahibi kullanılan tüm kodların telif haklarına sahipse Apple’a veya Nintendo’ya dağıtım izni verebilir.
Ancak uygulama ya da oyun üçüncü taraf bir *GPL kütüphanesi içeriyorsa ve o üçüncü taraf mağaza işletmecisine böyle bir lisans vermediyse, o uygulama ya da oyun ilgili mağazada dağıtılamaz.
Ölü linkteki içeriğin kopyası.
Apple’ın da Unity ile aynı sorunu var. macOS’ta
% bash --versionçalıştırırsanız GNU bash 3.2.57 görürsünüz; GPL v2’nin son sürümü olan 3.2’den sonrasına geçemedikleri için eski bir sürümü kendileri sürdürüyorlar.ABD ölçütleriyle sigara içecek, oy verecek ve savaşa katılacak kadar eski bir sürüm; Apple da kullanıcıları zsh’ye taşımaya çalışıyor.
LGPL 2.1’e baktım; lisanstaki “or later” kısmı tuhaf. Kullanıcı kendi takdirine göre GPL 2.1 veya üzerindeki herhangi bir sürüme geçebilir.
Ancak kütüphane yazarının COPYING dosyasında LGPL’i, tam olarak LGPL 2.1’i ya da önerilen “LGPL 2.1 or later” ifadesini belirtmesi gerekiyor.
Unity’nin LGPL kodunu “deprecated” olarak nitelemesi, kod LGPL sürümünü sabitlemediği sürece anlaşılır. Çünkü yukarı akış LGPL sağlayıcısı, bash gibi her an lisans rug pull’u yapabilir.
Ancak VLC kütüphanesi burada “LGPL 2.1 only” olarak işaretlenmiş; yani GPL3’e sıçramadıkça rug pull yapamayacağını açıkça iddia etmiş oluyor: https://code.videolan.org/explore/projects/starred
Yine de VLC lisansı düzgün biçimde dahil etmemiş; COPYING ve COPYING.lib LGPL sürümünün sabitlenip sabitlenmediğini söylemiyor, README.md’de ise
libVLC, the engine is released under the LGPLv2 (or later) license.yazıyor: https://code.videolan.org/videolan/vlcBu yüzden Unity’nin endişesi bir ölçüde haklı görünüyor. “or later” v3’ü de içeriyor ve v3, hile önleme teknolojileri ya da konsollar gibi şeylerle özellikle uyumsuz.
Yine de benim tahminim, Unity’nin VLC’nin uyguladığı algoritmalar üzerinde patenti olan üçüncü bir tarafı kızdırmaktan endişe ettiği ve bu gizli anlaşmanın ayrıntılarını saklamak için LGPL’i bahane olarak kullandığı yönünde.
Godot daha iyi
Unity bugünlerde kötü bir iş tercihi.
Ticari bir motor seçecek olsam, en azından avukatlarını açık kaynak geliştiricileri rahatsız etmek yerine Apple’la savaşmak için kullanan Epic Games’i seçerdim.
İlginçtir, sağlayıcı sözleşmesinde 5.10.4 yok gibi görünüyor: https://unity.com/legal/provider
Bir zamanlar bu madde yer alıyordu:
5.10.4 Provider represents and warrants that its Assets shall not contain (a) any software licensed under the GNU General Public License or GNU Library or Lesser General Public License, or any other license with terms that include a requirement to extend such license to any modification or combined work and provide for the distribution of the combined or modified product’s source code upon demand so that Customer content becomes subject to the terms of such license; or (b) any software that is a modification or derivative of any software licensed under the GNU General Public License or Library or Lesser Public License, or any other license with terms similar thereto so that Customer content become subject to the terms of such license.Ancak Wayback Machine’e göre 3 Aralık ile 12 Aralık arasında kaldırılmış
Projemde Unity’yi gerçekten kullanmak istiyorum
Editörü ve API’si gerçekten hoşuma gidiyor; teknolojiye pek aşina olmayan insanlar için editör içinde çeşitli araçları oldukça kolayca hazırlayabiliyorsunuz
Ama Unity, kullanıcıya düşmanca davranışlarıyla, “gelecek yıl gerçekten stabilize edeceğimize söz veriyoruz” tarzı 20 beta paketiyle ve boş projelerde bile ciddi biçimde kötüleşen performansıyla her adımda kullanımı zorlaştırıyor
Şu anda çoğunlukla Godot kullanıyorum ve fena değil, ama Unity ile tam olarak kıyaslanamaz
Unity’nin artık deprecated ilan ettiği bir paketi yükledi diye hesabı kalıcı olarak engellediğini mi söylüyorsunuz? Bunlar ne içiyor?
Kendi medya oynatıcısıyla mı rekabet ediyor? Yoksa VLC’yi yapan kişi bir Unity yöneticisinin eski sevgilisiyle mi çıkıyor?
Gerçekten aptalca bir trend ve hep birlikte buna karşı durmamız gerekiyor, ama henüz o noktada değiliz
Unity’nin notunu yorumlayınca, VLC kütüphanesini Unity Store’dan sildikleri ve Unity ile olan sözleşme şartlarını ihlal ettiği gerekçesiyle VLC grubunun Unity Store hesabını kalıcı olarak engelledikleri anlamı çıkıyor
Kurumsal jargonun anlaşılması zor olabilir. Belki de kurumsal jargonun asıl amacı budur
Unity yine düşmanca tavrını gösteriyor
Böyle bir nedenle bir geliştiriciyi kalıcı olarak engellemek delilik
Bu olay Ağustos 2023’te, kurulum başına ücret krizinden önce yaşandı
Şaşırtıcı değil. Unity gerçekten berbat bir şirket