Qt ve lisanslama hakkında

286 views
Skip to first unread message

Hüseyin Cem KOÇ

unread,
May 12, 2016, 3:30:55 PM5/12/16
to Qt Türkiye
Merhaba Qt ailesi,

Çıkmazda olduğum bazı cevaplar aldığım ama sonuca ulaşamadığım bir soruyu yöneltmek istiyorum.

Bilindiği gibi Qt kütüphaneleri açık kaynak olarak LPGL lisansı ile lisanslanıyor. Bakıldığında LGPL lisansı genelde kütüphaneler için kullanılan ve kullananın kodunu açmasına gerek duyulmayan bir lisans türü.

Ben bugüne kadar "Qt ile yazdığın programı en az LGPL seviyesinde lisanslaman lazım" diye biliyordum. Fakat bir süredir okuduklarımdan şu sonuç çıktı.

"Kaynağını açmak zorunda değilsin. Ama kütüphane linklemesini dinamik yapman lazım."

Ki burada da aklıma şu takılıyor. Ben bu kütüphaneleri programın yanında verebilir miyim ? Yoksa kullanıcı mı yüklemesi lazım harici olarak ? (Android tarafta APK kısmı biraz daha farklı heralde. Ayrıca bu kütüphaneleri linux de eklemek kolay ama windowsta daha karışık.)

Qt Download sayfasında "Kodumu korumak istiyorum" dediğin an deneme ve sonra satın alma kısmına gönderiyor.

http://stackoverflow.com/questions/11994053/can-i-use-qt-lgpl-license-and-sell-my-application-without-any-kind-of-restrictio

Buradaki soruya gelen cevaba bakılırsa "Dinamik linkleme yaptıktan sonra kafana takma" gibi bir sonuç ortaya çıkıyor.

Sizin bu konudaki bilgilerinizi de almak isterim. Özet olarak sorularım şu.

1) LGPL lisansına bakarsak kodu kapatmamız gerekmez. Zaten yazdığımız kod C kodu dışında bişey değil. Haliyle Qt ile alakalı kısım sadece kütüphaneler kısmında ortaya çıkıyor. Ki kütüphaneleri de değiştirmiyoruz. Orada da dinamik linkleyerek zaten bu sorun da aşılıyor.

2) Androiddeki APK ler bir nevi statik linklemeye girer mi ? Haliyle açık kaynak yapmak veya lisans satın almak durumunda mıyız ?

3) Lisans bilgileri ve yukarıdaki linkteki cevaba bakarsak Qt nin "kodumu kapatmak istiyorum" seçeneğiyle satın alma kısmına göndermesi bir satış taktiği mi sadece ? Yoksa atlanılan bir nokta ve gerçekten satın alınması gereken bir lisans var mı ?

Açık/kapalı kaynak tercihimden öte yazdığım kodu lisanslamak istersem beni kısıtlayacak etmenlerin ne olduğunu bilmek istiyorum.
Şimdiden teşekkürler.

mucip....@gmail.com

unread,
May 12, 2016, 5:10:31 PM5/12/16
to qttu...@googlegroups.com
Merhabalar,
Gerçekten güzel soru olmuş?! Ben de halen bunu anlamış değilim?! Statik/dinamik derlemedir gidiyor. Belki çok vakıf olmadığımdan ama basitçe anlatılabilir mi mesela?

Ben Linux'da programı yazdım. Win tarafında mingw ile programı derledim ve deploy ile başka bilgisayarda doğrudan çalışacak hale getirdim. Bu şekilde satışını yapabilir miyim mesela?! Kodu açmıyorum. Sadece tüm ihtiyaç duyulan dosyaları bir dizin altında toplayıp başka makinalarda çalıştırıyorum. Bu yasal mıdır?...

--
--
Qt Türkiye E-Posta Listesi
Yazılanlardan sadece yazan sorumludur...
Mesaj göndermek için qttu...@googlegroups.com
Listeden çıkmak için qtturkiye-...@googlegroups.com
Liste hakkında daha fazla bilgi için
http://groups.google.com/group/qtturkiye
Qt Türkiye: http://qt.comu.edu.tr
---
Bu iletiyi Google Grupları'ndaki "Qt Türkiye" grubuna abone olduğunuz için aldınız.
Bu grubun aboneliğinden çıkmak ve bu gruptan artık e-posta almamak için qtturkiye+...@googlegroups.com adresine e-posta gönderin.
Daha fazla seçenek için https://groups.google.com/d/optout adresini ziyaret edin.



--
Kolay gelsin,
Mucip:)

Caglar AKYUZ

unread,
May 12, 2016, 5:42:37 PM5/12/16
to Qt Türkiye
2016-05-12 22:00 GMT+03:00 Hüseyin Cem KOÇ <hck...@gmail.com>:
> Merhaba Qt ailesi,
>

Merhaba,

> Çıkmazda olduğum bazı cevaplar aldığım ama sonuca ulaşamadığım bir soruyu
> yöneltmek istiyorum.
>

Kisa cevap: kodunuzu acmak zorunda degilsiniz.

> Bilindiği gibi Qt kütüphaneleri açık kaynak olarak LPGL lisansı ile
> lisanslanıyor. Bakıldığında LGPL lisansı genelde kütüphaneler için
> kullanılan ve kullananın kodunu açmasına gerek duyulmayan bir lisans türü.
>
> Ben bugüne kadar "Qt ile yazdığın programı en az LGPL seviyesinde
> lisanslaman lazım" diye biliyordum. Fakat bir süredir okuduklarımdan şu
> sonuç çıktı.
>
> "Kaynağını açmak zorunda değilsin. Ama kütüphane linklemesini dinamik yapman
> lazım."
>
> Ki burada da aklıma şu takılıyor. Ben bu kütüphaneleri programın yanında
> verebilir miyim ? Yoksa kullanıcı mı yüklemesi lazım harici olarak ?
> (Android tarafta APK kısmı biraz daha farklı heralde. Ayrıca bu
> kütüphaneleri linux de eklemek kolay ama windowsta daha karışık.)
>
> Qt Download sayfasında "Kodumu korumak istiyorum" dediğin an deneme ve sonra
> satın alma kısmına gönderiyor.
>
> http://stackoverflow.com/questions/11994053/can-i-use-qt-lgpl-license-and-sell-my-application-without-any-kind-of-restrictio
>
> Buradaki soruya gelen cevaba bakılırsa "Dinamik linkleme yaptıktan sonra
> kafana takma" gibi bir sonuç ortaya çıkıyor.
>
> Sizin bu konudaki bilgilerinizi de almak isterim. Özet olarak sorularım şu.
>
> 1) LGPL lisansına bakarsak kodu kapatmamız gerekmez. Zaten yazdığımız kod C
> kodu dışında bişey değil. Haliyle Qt ile alakalı kısım sadece kütüphaneler
> kısmında ortaya çıkıyor. Ki kütüphaneleri de değiştirmiyoruz. Orada da
> dinamik linkleyerek zaten bu sorun da aşılıyor.
>

Ben burada bir soru goremedim :)

> 2) Androiddeki APK ler bir nevi statik linklemeye girer mi ? Haliyle açık
> kaynak yapmak veya lisans satın almak durumunda mıyız ?
>

Hayir. Android uzerinde de dinamik olarak derleme yapilmis bir sekilde
dagitabilirsiniz. Lisans gerekli degil, kapali kaynak olabilir.

> 3) Lisans bilgileri ve yukarıdaki linkteki cevaba bakarsak Qt nin "kodumu
> kapatmak istiyorum" seçeneğiyle satın alma kısmına göndermesi bir satış
> taktiği mi sadece ? Yoksa atlanılan bir nokta ve gerçekten satın alınması
> gereken bir lisans var mı ?
>

Tabi sonucta onlar da bu isten para kazanmak istiyor. Siteleri
birazcik "yonlendirici" olabilir ;)

> Açık/kapalı kaynak tercihimden öte yazdığım kodu lisanslamak istersem beni
> kısıtlayacak etmenlerin ne olduğunu bilmek istiyorum.

Windows icin:

- Uygulamaniz ile birlikte dll'leri de dagitin. (yukleme kolayligi acisindan)

Linux icin:

- Direk uygulamanizi dagitin, zaten sistemde kutuphaneler bulunuyor.

Android icin:

apk olarak dagitabilirsiniz, bir sorun yok [1].

Yukaridaki hicbir durumda, uygulamanizi acik kaynak yapmak zorunda degilsiniz.

Tesekkurler,
Caglar

[1] https://wiki.qt.io/Licensing-talk-about-mobile-platforms#Qt_for_Android_.2F_Necessitas

Gurkan Karakus

unread,
May 12, 2016, 11:59:55 PM5/12/16
to qttu...@googlegroups.com
Merhaba

Bildiğim kadarıyla dinamik derlerseneniz ve uygulamanın help/about kısmında kütüphaneleri nereden aldığınızı belirtirseniz sorun olmuyor.

Gürkan

Necdet Yücel

unread,
May 13, 2016, 2:50:04 AM5/13/16
to qttu...@googlegroups.com
Selamlar,

Neden yazdığınız programı bir özgür yazılım olarak lisanslamak yerine kaynağını kapatmaya çalışıyorsunuz? Kullandığınız o özgür kütüphaneler olmasaydı her şeyi baştan yazmanız gerekecekti. Onları böyle kullanabilirken sizin kaynağı kapatmaya çalışmanızın nedeni nedir acaba?

Kolaylıklar diliyorum.


---
Necdet Yücel
http://about.me/nyucel

12 Mayıs 2016 22:00 tarihinde Hüseyin Cem KOÇ <hck...@gmail.com> yazdı:

--

Hüseyin Cem KOÇ

unread,
May 13, 2016, 4:42:44 AM5/13/16
to Qt Türkiye, cag...@bilkon-kontrol.com.tr
Cevabını için öncelikle teşekkür ederim.
Evet gerçekten de 1. şıkta soru yokmuş. Sadece onay bekledim :)

Android tarafta tek bir apk oluşuyor. Fakat yine de kütüphaneler .so olarak içerisinde olduğu için dinamik sayılıyor burada okuduğum kadarıyla.
http://stackoverflow.com/questions/36242351/qt-for-android-is-bundle-qt-libraries-in-apk-considered-as-static-or-dynamic
Sizin de dediğinizi destekler konumda. Bu soru çözüme kavuştu.

Qt lisansı "statik linkleme ve tamamen özgürlük" veriyor o zaman anladığımız kadarıyla.

Kütüphaneleri de dağıtma hakkımızın olması güzel olmuş. Linux ortamında her ne kadar sisteme entegre etmek kolay olsa da bazen sıknıtı çıkabiliyor. Orada da uygulama yanında dağıtabiliyor olmamız gayet büyük kolaylık.

İlginiz için teşekkürler. Aklımdaki sorulara cevap oldu bunlar :)


13 Mayıs 2016 Cuma 00:42:37 UTC+3 tarihinde Caglar AKYUZ yazdı:

Hüseyin Cem KOÇ

unread,
May 13, 2016, 4:44:16 AM5/13/16
to Qt Türkiye
Help/About kısmını daha önce de duydum. Zaten lisans gereği kütüphaneden bahsetmek gerekiyor diye tahmin ediyorum. Ayrıca Qt gibi güzel bir framework ü çevremde yaymaya çalışan biri olarak zaten bu tarz bi reklam da yaparım.

Cevabınız için teşekürler.

13 Mayıs 2016 Cuma 06:59:55 UTC+3 tarihinde Gurkan Karakus yazdı:

Hüseyin Cem KOÇ

unread,
May 13, 2016, 4:52:26 AM5/13/16
to Qt Türkiye
Merhabalar.

Aslında sizin gibi düşünüyorum ben de. Zaten açık kaynak savunucusuyum. Yazdığım sorunun sonunda da belirttiğim gibi kapalıyı tercih ettiğimden değil sadece oluşacak yazılımın lisanslamada hangi engeller beni bekliyor onu görmekti.

Aslında yeri gelir güvenlik sebebi ile kodun bir kısmını veya yanındaki küçük bir programcığı kapalı kaynak sunmak zorunda olmak durumunda kalırım diye düşündüm. Ya da yazdığım programı kullanacak kişinin isteği de bunu seçmede etkin olabilir. Dediğim gibi açık kaynak savunucusu olduğum için zaten zorunda kalmadıkça kodum herkese açıktı.

Cevabınız için teşekkürler.

13 Mayıs 2016 Cuma 09:50:04 UTC+3 tarihinde Necdet Yücel yazdı:

Hüseyin Cem KOÇ

unread,
May 13, 2016, 4:54:37 AM5/13/16
to Qt Türkiye
Merhabalar.

Aslında benim dediğim olay ile sizin dediğiniz olay arasında fark var.
Programı hem açık kaynak yapıp hem satışını zaten yapabilirsiniz. LGPL buna izin veriyor GPL lisansının aksine.

İyi çalışmalar.

13 Mayıs 2016 Cuma 00:10:31 UTC+3 tarihinde Mucip Ilbuga yazdı:

Burak Arslan

unread,
May 13, 2016, 7:01:27 AM5/13/16
to qttu...@googlegroups.com
selamlar,

On 05/12/16 22:00, Hüseyin Cem KOÇ wrote:
> Açık/kapalı kaynak tercihimden öte yazdığım kodu lisanslamak istersem
> beni kısıtlayacak etmenlerin ne olduğunu bilmek istiyorum.

bu konu da surekli burada konusuluyor. bir onceki tartisma burada:
https://groups.google.com/forum/#!msg/qtturkiye/qHLMPpFD42I/aFQuWeA-CAAJ

ozetle konu statik/dinamik baglama meselesi degil. konu kullaniciya
istedigi qt versiyonunu kullanma ozgurlugunu verme / vermeme meselesi.
desktop platformlarda statik baglama yaparak kullanicinin elinden bu
ozgurlugu aliyorsunuz. mobil platformlarda ise qt'u uygulama topagina
(apk vb) gomup topagi imzalayarak bu ozgurlugu elinden aliyorsunuz,
apk'nin icinde statik/dinamik baglanmis olmasi kimseyi ilgilendirmiyor,
sonucta imzali dosyaya kullanicinin mudahele sansi olmadigi icin LGPL'in
sartlarini yerine getirememis oluyorsunuz.

kisaca desktop icin dinamik baglama ile LGPL sartlarini yerine
getiriyorsunuz ancak modern mobil platformlara dagitim yapacaksaniz
ticari lisans almaniz gerekli.

simdi detayli cevaba gecelim:

I)

desktop platformlar icin;

uygulamayi dagitmayacaksaniz istediginizi yapabilirsiniz.

uygulamayi dagitacaksaniz deployment'i statik baglama ile yaparsaniz
uygulamanizi en az LGPL ile lisanslamak zorundasiniz. Eger dinamik
baglama yaparsaniz uygulamanizin icinden aboutQt() a ulasilabilen bir
yer oldukca uygulamanizin lisansini istediginiz sekilde yapabilirsiniz.
bkz https://doc.qt.io/qt-5/qmessagebox.html#aboutQt

II)

mobil platformlar icin, yine uygulamayi dagitmayacaksaniz istediginizi
yaparsiniz.

uygulamayi magazalar (google play store, apple app store vb) vasitasiyla
dagitmayacaksaniz desktop kurallarina tabisiniz. yani orn. apk dosyasini
birisi web sitesinden indirecekse ve icinden Qt dosyalari .so olarak
cikiyorsa uygulamanizin lisansini kafaniza gore hazirlayabilirsiniz.
cunku kullanici apk dosyasini acip icindeki Qt dosyalarini kolaylikla
degistirebilir. Tabii bunu kullanabilmesi icin once imzasiz apk kurma
ozelligi calisan (bir baska deyisle rootlanmis) bir cihaz kullaniyor
olmasi gerekli.

Magazalar vasitatisiyla dagitim yapildiginda ise konu biraz da
cetrefilli bir hal aliyor.

Biliyorsunuz magaza dagitimi yapabilmek icin uygulama topagini
olusturduktan sonra bir de imzaliyorsunuz. Bunu yaparak da kullanicinin
kod degistirme ozgurlugunu elinden aliyorsunuz. Cunku cihazlar ontanimli
ayarlarinda imzasiz (veya tampered) program calistirmayi reddediyor.

Bunun istisnasi Android platformundaki Ministro namli uygulama. Android
4.x ve alti icin uygulamanizi "Ministro Services"a bagimli hale
getiriyorsunuz. Boylece uygulamayi kurduktan sonra ilk baslatmada
Ministro ilgili Qt kutuphanelerini indiriyor. 1) Uygulamanizin topagina
Qt kutuphanelerini gomup imzalamadiginiz icin 2) Kullanici sizin
uygulamanizdan bagimsiz Qt kutuphanelerini istedigi gibi
degistirebildigi icin LGPL sartlarini saglamis oluyorsunuz.

Malesef, Google ilgili sistem cagrilarini kapattigi icin Ministro
Android 5.x ve ustuyle uyumlu degil. Bu yuzden 5.x ve uzerine deployment
yapacaksaniz iOS kurallarina tabisiniz.

Bu ve onceki mesajlarimla ilgili sorunuz varsa cevaplamaya calisirim.

Kolay gelsin
Burak

Caglar AKYUZ

unread,
May 13, 2016, 7:26:28 AM5/13/16
to Qt Türkiye
2016-05-13 13:48 GMT+03:00 Burak Arslan <mi...@burak.online>:
> selamlar,
>

Selamlar,

[...]

> Magazalar vasitatisiyla dagitim yapildiginda ise konu biraz da
> cetrefilli bir hal aliyor.
>
> Biliyorsunuz magaza dagitimi yapabilmek icin uygulama topagini
> olusturduktan sonra bir de imzaliyorsunuz. Bunu yaparak da kullanicinin
> kod degistirme ozgurlugunu elinden aliyorsunuz. Cunku cihazlar ontanimli
> ayarlarinda imzasiz (veya tampered) program calistirmayi reddediyor.
>
> Bunun istisnasi Android platformundaki Ministro namli uygulama. Android
> 4.x ve alti icin uygulamanizi "Ministro Services"a bagimli hale
> getiriyorsunuz. Boylece uygulamayi kurduktan sonra ilk baslatmada
> Ministro ilgili Qt kutuphanelerini indiriyor. 1) Uygulamanizin topagina
> Qt kutuphanelerini gomup imzalamadiginiz icin 2) Kullanici sizin
> uygulamanizdan bagimsiz Qt kutuphanelerini istedigi gibi
> degistirebildigi icin LGPL sartlarini saglamis oluyorsunuz.
>
> Malesef, Google ilgili sistem cagrilarini kapattigi icin Ministro
> Android 5.x ve ustuyle uyumlu degil. Bu yuzden 5.x ve uzerine deployment
> yapacaksaniz iOS kurallarina tabisiniz.
>

Bu durum LGPL uygulamalar icin gri bir nokta, sadece Qt icin degil, ve
bu aciklama bana da daha tutarli geliyor. Fakat Qt icin durum biraz
farkli, zira sitesinde bu durumun kapali kod uygulama gelistirmeye
engel teskil etmeyecegini acikca belirtmisler. iOS kurallari icin olan
durum ,benim anladigim kadari ile, Apple'in uygulamalar icerisinde
dinamik kutuphanelere izin verip vermemesine bagli ama Android icin
boyle bir durum soz konusu degil. Bence apk olarak bir Qt uygulamasini
dagitmak (dinamik baglama ile) son derece yasal.

Tesekkurler,
Caglar

Burak Arslan

unread,
May 13, 2016, 7:35:01 AM5/13/16
to qttu...@googlegroups.com
On 05/13/16 14:26, Caglar AKYUZ wrote:
> Fakat Qt icin durum biraz
> farkli, zira sitesinde bu durumun kapali kod uygulama gelistirmeye
> engel teskil etmeyecegini acikca belirtmisler.

Ayni yere mi bakiyoruz?

https://www.qt.io/faq/

"""
The user of your application has to be able to re-link your application
against a different or modified version of the Qt library. With LGPLv3
it is also explicitly stated that the user needs to be able to run the
re-linked binary on it’s intended target device.
"""


Caglar AKYUZ

unread,
May 13, 2016, 7:44:50 AM5/13/16
to Qt Türkiye
2016-05-13 14:34 GMT+03:00 Burak Arslan <mi...@burak.online>:
> On 05/13/16 14:26, Caglar AKYUZ wrote:
>> Fakat Qt icin durum biraz
>> farkli, zira sitesinde bu durumun kapali kod uygulama gelistirmeye
>> engel teskil etmeyecegini acikca belirtmisler.
>
> Ayni yere mi bakiyoruz?
>
> https://www.qt.io/faq/
>

Aslinda suraya:

https://wiki.qt.io/Licensing-talk-about-mobile-platforms#Qt_for_Android_.2F_Necessitas

Tesekkurler,
Caglar

Burak Arslan

unread,
May 13, 2016, 7:54:21 AM5/13/16
to qttu...@googlegroups.com
Burayi bana ikinci kez soyluyorlar. Ayni cevabi vereyim:


On 03/30/16 08:10, Burak Arslan wrote:


On 03/29/16 14:23, Zakir Maho wrote:
Qt Community (Open Source lisans) kullanarak mobil uygulama geliştirdiğimizde Android 5 ve üzeri de dahil olmak üzere uygulamamızı dağıtabiliyoruz (bkz: Android ve iOS için lisans (bu sayfa 2 mart 2016'da güncellenmiş))

Qt Commnunity lisansi dedigimiz LGPL. LGPL'in sartlari ise acik. Kullaniciya dynamic library'leri degistirme imkani verme zorunlulugunuz var. Lisansi okumaya useniyorsaniz Qt Legal FAQ'ta bunlar daha basit bir dille tekrar anlatilmis.

Google Play Store'dan indirilen APK'nin icine dynamic library olarak koydugunuz Qt dosyalarina relinking imkani vererek LGPL sartlarina uymanin yolunu anlatmadikca Wiki'ye "siz raat olun, no worries" yazmanin bir degeri yok.

Burak


Kisaca:


 Bence apk olarak bir Qt uygulamasini
dagitmak (dinamik baglama ile) son derece yasal.

Yanlis.

Burak

Caglar AKYUZ

unread,
May 13, 2016, 8:38:07 AM5/13/16
to Qt Türkiye
> 2016-05-13 14:34 GMT+03:00 Burak Arslan <mi...@burak.online>:

[...]

> Google Play Store'dan indirilen APK'nin icine dynamic library olarak
> koydugunuz Qt dosyalarina relinking imkani vererek LGPL sartlarina uymanin
> yolunu anlatmadikca Wiki'ye "siz raat olun, no worries" yazmanin bir degeri
> yok.
>

Re-link'ten kastiniz nedir? apk icinde kutuphanler zaten dinamik
kutuphane olarak dagitiliyor, isteyen herkes apk'yi acip kutuphaneleri
degistirebilir ve yeniden paketleyebilir?

Tesekkurler,
Caglar

> Burak
>

Hüseyin Cem KOÇ

unread,
May 13, 2016, 1:44:59 PM5/13/16
to Qt Türkiye
Evet gerçekten de apk içerisindeki kütüphane dosyaları değiştirilip yeniden paketlenebiliyor. Bunun için apk elde olması yetiyor.
Böyle olması durumu değiştirir mi ? Özellikle Play Store dışında da aynı dosyayı farklı bir kaynaktan sağlayabilme imkanı olursa ?

Bu arada cevabınız için teşekkür ederim.

13 Mayıs 2016 Cuma 14:54:21 UTC+3 tarihinde Burak Arslan yazdı:
On 05/13/16 14:44, Caglar AKYUZ wrote:
apk.png
Screenshot_20160513-203959.png
Reply all
Reply to author
Forward
0 new messages