Qt Lisansı hakkında

Qt, C++ ve QML dilleri ile yazılmış açık kaynak ve çapraz derleme yapılabilen güzide bir frameworktür. (Framework için de kısaca "dev bir kütüphane" açıklamasını yapabiliriz)
https://www.qt.io/

İngilizcede "cute" şeklinde okunur.

Başlıca Windows, Linux, Mac, Android, IOS, Windows Phone, Windows RT, Arm işlemcili Linux sistemler için derleme yapabilir. Genel olarak bakınca her platform için derleme yapabilir bir şekilde çünkü açık kaynak. Sloganı "One framework to rule them all".

Çapraz platform yazılan çoğu uygulama Qt kullanır. Bunun dışında AMD Radeon Software Crimson Edition ve Proteus gibi sadece windows'da yer alan uygulamalar da Qt kullanır. Maya gibi çok büyük projelerde de imzasını görmek mümkün. Sadece çapraz derleme açısından bakmamak lazım yani. (Dipnot olarak ismi q ile başlayan programlar çok yüksek ihtimal Qt ile yazılmıştır. Örnek: Qbittorent, Qmmp, Qwinff, QCAD)
Her şeyden öte popüler Linux masaüstü ortamlarından olan KDE (K Desktop Environment) tamamen Qt ile yazılmıştır. https://www.kde.org/ (Denemek isterseniz Kubuntu 16.04'ü öneririm)
Onun da dışında Tesla arabalarının ekranları gibi önem derecesi yüksek gömülü sistemlerde de kullanılır. Evet! Tesla arabalarının arayüzünde Qt kullanılıyor.

Popülerliği henüz .NET kadar olmayan gizli bir kahramandır kendisi.

Digia firması tarafından geliştirilmektedir. (Eski sahibi Nokia'dır) Fakat ilgili firmaya herhangi bir şey olması durumunda projenin tüm hakları KDE Free Qt Foundation'a kalır. (https://www.kde.org/community/whatiskde/kdefreeqtfoundation.php) Açık kaynak olacağı ve sürekli geliştirileceği garanti altına alınmıştır.
Bu arada tabii ki sadece Digia firması tarafından geliştirilmemektedir. Aşağıdaki grafikte son 16 haftanın gelişim grafiğini görebilirsiniz. Çeşitli firma ve bağımsız geliştiricilerin emeği vardır. Hatta kaynak sayfasına gidip mantıklı değişiklik veya bugfixleri yaptığımız taktirde biz de bir ucundan tutmuş olabiliriz. Buradaki açık kaynak olması avantajı da .NET framework'den kendini ayıran en önemli nokta. Her şey tamamen açık ve herkes katkı sağlayabilir.

http://www.macieira.org/~thiago/qt-stats/current/qt-all.employer.relative.png

Qt ile ilgilenmeye başlayınca karşınıza lisans karmaşası çıkacaktır. Çoğu yerde yanlış ve/veya eksik bilgiden kaynaklı olarak "kaynağını açmak zorundasın ya da ticari lisans alacaksın" dediklerini görebilirsiniz.

Fakat işin aslı öyle değil. Açık kaynak lisansları ve sınırlamalarını derince araştırdıktan sonra aşağıda yazdığım sonuç ortaya çıkıyor. Buyurun Qt kullanırken lisans konusunda dikkat etmeniz veya dikkat etmemeniz gereken yerler.

---

Qt Framework LGPL ile lisanslanmıştır.
Bu da geliştiricilere şu şartlara uyma zorunluluğu getirir.
(Özet aşağıda)

1) Eğer statik derleme yapacaksan tüm uygulamanın kaynağını açmak zorundasın. Statik derleme ile tek bir çalıştırılabilir dosya elde edilir. .dll veya .so gibi kütüphane dosyaları ayrıca yer almaz. Uygulamaya gömülü haldedir tüm kütüphaneler.
-Bu seçenek kaynağını açmaya ya da ticari lisans almaya zorlar.

2) Eğer dinamik linkleme yaparsan kaynağını açman gerekmez. Bu statik derlemenin aksine çalıştırılabilir dosyanın yanında .dll .so dosyaları yer alması şeklinde olur. Sadece her açık kaynak uygulamada olduğu gibi kullandığın açık kaynak kütüphaneleri belirtmen lazım about bölümünde. Bunun için "About Qt" bölümü de mevcut Qt içinde. Otomatik yazıyor yazılması gerekenleri.
-Bu seçenek kaynağını açma gereksinimini ortadan kaldırır. Zaten varsayılan olarak bu ayarlıdır.

3) Herhangi bir Qt kütüphanesinin kaynağını alıp değiştirirsen bunu en az LGPL ile lisanslamalısın.
-Bu zaten Qt'un orijinal kodunu değiştirmekie ilgili. Eğer Qt kaynağını indirip (örneğin) istemediğin kısımları atar ve yeni yerler eklersen ve bununla kendi framework'ünü yaratmak istersen en az LGPL ile lisanslaman ve kaynağını sunman gerekmektedir.

Yani özet olarak Qt ile yazılan uygulamanın büyük bir sınırlaması yok. Kaynağı kapalı yapmak veya satılabilir yapmak sanıldığı gibi lisans ihlaline sebep olmaz.

Şöyle küçük bir ayrıntı da var. LGPL bu şartları "kütüphane dosyalarını son kullanıcı değiştirebilmeli" ilkesine dayanarak koyuyor. Fakat Android için gelişme yaptığımızda, uygulama dinamik derlense bile bu dosyalar bir paket dosyası olan .apk içine gömülüyor. Bu kısımda kimisi "LGPL lisansına uymaz çünkü tek paket" diyor, kjimisi de "LGPL'e uyar çünkü .apk'nin içi açılıp bakılabiliyor, değiştirilebiliyor" diyor. Qt'un kendi sitesinde yapılan açıklamaya göre "Qt ile Android uygulaması geliştirip apk dosyası elde ettiğiniz durumda lisans sınırlamasına takılmazsınız. Gönül rahatlığıyla kullanın" denmektedir.

Bu lisanslama tipinden şu sonuç çıkıyor.
"Qt'u kullanın fakat yayılmasının önüne geçmeyin. About kısmında Qt Framework'ü kullanıldığını belirtin. Bunun dışında serbestsiniz."

Tabi bunlar açık kaynak sürümü için geçerli.
Ticari sürüm için herhangi bir şart yok. Ticari sürümün amacı "hiç bunlarla uğraşma kendi kodun gibi kullan Qt kodunu"'dur. Digia firmasının son 1 yılda ticari lisans fiyatını yükseltmesi ve LGPL lisans sürümünü güncellemelerinin sebebini açık kaynak sürümünü kullandırmaya teşvik etmek için olduğuna inanıyorum. Qt'un açık kaynak versiyonunu kullanan her program bir nevi Qt reklamı da yapmış olacak.

ÖZET: Özet olarak Qt açık kaynak sürümü "yazdığın programı açık kaynak yapmak zorundasınız" anlamında değil, "kullandığınız Qt Framework versiyonu açık kaynak olacak şekilde lisanslanmıştır" anlamındadır.

Siz Qt kullanarak geliştirdiğiniz yazılımın kaynağını kapatabilirsiniz ve istediğiniz fiyatı biçebilirsiniz. Sadece about kısmındaki "Açık Kaynak Lisanslar" kısmında Qt'dan bahsedin ve uygulamanın kullandığı .dll (linux için .so) dosyalarını uygulama içine gömmeyin (Zaten varsayılan ayar bu şekildedir). Başka hiçbir şart yok.

Lisans konularını kavramak bazen zor olabiliyor. Elimden geldiğince sade bir şekilde anlatmaya çalıştım. Sorunuz varsa yine seve seve cevaplarım.

Ekleme 1: Bazı Qt modülleri GPL ile lisanslanmıştır. Bunlar ticari sürümden açık kaynak sürüme yeni eklenmiş Qt Charts, Qt Data Visualization ve Qt Virtual Keyboard modülleridir. Yukarıdaki şartlar bu modüllerin kullanımı için geçerli değildir. Lisans kısıtlamasına takılabilirsiniz.

Ekleme 2: Android tarafta apk alma ile ilgili konuya değindik fakat Google Play Store'a koyma ile ilgili bir konu geçmemiş. Google Play Store ve Microsoft Windows Store mağazaları için açık kaynak Qt sürümü çıktısı uygulama yüklemek herhangi bir ihlale girmemektedir. Fakat Apple AppStore mağaza koşulları bu durumu zorlaştırmaktadır. Bu yüzden AppStore mağazasına koymak için açık kaynak Qt sürümü kullanımını uygun değildir.

Ekleme 3: Qt sitesine girip indirmek istediğinizde bikaç soruluk bir test ile site size uygun sürümü seçmek isteyecektir. Bu testte "uygulamam açık kaynak olacak" demezseniz ticari sürüme yönlendirir. Bu satış stratejisidir. Bunun da yanında "lisans durumuyla hiç uğraşma. Gel satın al istediğin şekilde kullan" demek istenmiştir. Sonuçta Digia firması ticari lisanslardan para kazanıyor. Fakat bu durum yukarıda yazdıklarımı geçersiz kılmaz. Keza yukarıda yazdığım bilgileri de LGPL lisansı ve Qt resmi sitesinden edindim.

Yazım: 19.09.2016
Güncelleme: 20.09.2016

#Qt #QtFramework #KDE #akış #programlama #AçıkKaynak #OpenSource

BeğenFavori PaylaşYorum yap
  • Cem KOÇ @cemkoc

    Aynen o şekilde.
    Açık kaynak çoğu lisans gereği olarak kullanılan kütüphanelerden bahsedilmiş ve LGPL lisansı gereği kullanıcıya Qt kütüphanelerini değiştirebilme olanağı vermiş oluyorsunuz bu sayede.

    Bu durumda kaynağı kapatabilirsiniz istediğiniz gibi.

    About Qt eklemek için şurayı kullanabilirsiniz. (Görsel eskidir)
    http://doc.qt.io/qt-5/qmessagebox.html#aboutQt

  • emekli @emekli

    Qt hakkında pek bilgim yok ama şu aklıma takıldı Qt creator ile Qt designer, Qt linguist, Qt asistant bunlar arasında ne gibi farklar var ? birbirlerinden farkları nelerdir kısaca ?

    • Cem KOÇ @cemkoc

      Aslında tamamen birbirinden farklı kavramlar

      -Qt Creator: Qt geliştirilmesinin yapıldığı ve paketin içerisinde gelen bir IDE. Tabii ayrıca indirilip de kullanılır. En kullanışlı C++ IDE'lerinden birisidir.

      -Qt designer: Qt Creator içerisinde arayüzü görsel olarak düzenlemeye yarayan bir modüldür. Qt Creator'den bağımsız bir şey değil zaten.

      -Qt linguist: Qt uygulamaları için yerelleştirme (dil ekleme) yapmaya yarayan bir araç. Birden çok dil kullanımında bu araç çeviri olarak kullanılır veya çeviren arkadaşlara sunulur.

      -Qt asistant: Yine Qt Creator içine dahil bir modüldür. Ve hayat kurtarır kendisi. Tüm Qt kütüphanesinin döküman halidir. Bir sorun olunca önce internete bakmak yerine IDE içerisindeki Help kısmına giderek orada örnekleri ve açıklamaları görmek zaman kazandırıyor. Hem de direkt olarak kaynağından öğrenmek daha güvenli hissettiriyor.