Vlákno názorů k článku Binární ovladače + jádro = porušení GPL od Botulin - Nedávno jsme ve firmě tuto otázku řešili také....

  • Článek je starý, nové názory již nelze přidávat.
  • 5. 10. 2006 7:47

    Botulin (neregistrovaný)
    Nedávno jsme ve firmě tuto otázku řešili také. Velmi pěkně je podstata problému odvozeného díla vysvětlena na http://www.ics.muni.cz/zpravodaj/articles/336.html, kde pan Ladislav Lhotka vysvětluje GPL. Protože neznám zdrojové kódy ovladačů od nVidia a ATI, nemohu říci, kde je pravda. Nicméně protože se jedná o ovladače grafických karet a kernel pouze poskytuje api, považuji v článku uvedené tvrzení za nesmyslné a odporující GPL. Z principu není možné považovat program nebo ovladač (lhostejno, zda je linkovaný staticky nebo dynamicky) za odvozené dílo, pokud není založen na zdrojových kódech ovladačích stejného nebo podobného hardware tedy grafické karty (kernel sice obsahuje určité moduly pro grafické karty, ale dá se s úspěchem pochybovat, že by tyto moduly byly přímo (Cut & Paste + modify) použity při vývoji modulů pro graficé karty nVidia nebo ATI). Zřejmě tedy zkompilované moduly nVidia a ATi na LiveCD nejsou v žádném případě odvozeným dílem. Pro zastavení distribuce Kororaa si budou muset najit jiný důvod. Podle mého soukromého názoru je právě tento pokus o zastavení distribuce Kororaa proti duchu i znění GPL a tedy silně neetický.
  • 5. 10. 2006 7:57

    LK (neregistrovaný)
    Přesně toto mě napadlo taky. Souhlasil bych s vývojáři ATI, že ovladač má dvě části. Jednu z nich distribuovanou pod GPL přilinkovanou na jádro, druhou distribuovanou pod proprietární licencí v binární formě, přičemž ta první (GPL) volá kód v té druhé. To mi přijde jako čisté řešení.
    Pokud by to mělo být špatně, mohli bychom se dočkat zákazku distribuce libovolného binárního kódu spolu s kernelem. Jaký je potom rozdíl mezi kernel->GPL kód ovladače->binární kód (ovladače ATI a nVidia) a kernel->GPL kód (např. X)->binární kód (proprietární aplikace)? Jen to, že aplikace běží v user módu, zatímco kód ovladače v kernelovém? Pokud ano, začínám chápat jistého člověka, který GPL nazval rakovinou, co nakazí vše, čeho se dotkne.
  • 5. 10. 2006 8:25

    pet (neregistrovaný)
    Souhlasil bych s vývojáři ATI, že ovladač má dvě části. Bohužel po kompilaci při následném linkování obě tyto časti spojíte do jednoho modulu a používáte/distribujete vcelku. Takže legální live distibuce podle mne může ovladače zkompilovat, ale linkování může provést az při startu systému.
    Ale purista by jiste mohl namítat, že šířeníní live distribuce je šíření jednoho díla (oné distribuce) a proto tam propietární ovladače nesmí být ani přibalené. A kudy z toho teď ven?
  • 5. 10. 2006 13:48

    Petr Bren
    Ale purista by jiste mohl namítat, že šířeníní live distribuce je šíření jednoho díla (oné distribuce) a proto tam propietární ovladače nesmí být ani přibalené.

    To by musel byt papezstejsti nez papez, protoze FSF povazuje "kolekce" GPL a non-free softwaru na jednom mediu za legalni. Distribuce z tohoto pohledu neni jednim dilem; neni to jeden program, jsou to oddelitelne kusy.

  • 5. 10. 2006 8:26

    laoce (neregistrovaný)
    NO ale problem v GPL moze byt /podla mna / aj v tom ze ak ta cast ovladacov co je pod GPL vola nieco co pod GPL nie je ako sa k takej informacii dostali??? keby existovalo oficialne API k sourceclosed casti graf. ovladacov ktore ta opensource cast vola ..tak okej ...ale ak vyuziva nezdokumentovane vlastnosti tych binariek tak to je asi ten problem ...
  • 5. 10. 2006 9:36

    LK (neregistrovaný)
    Aha, ted jsem se na to dival a je to tak. Ja mel za to, ze ten jaderny modul vola binarni kod v nejakem .so, ale on ho (jako libfglrx_ip.a) prilinkovava primo k tomu GPL modulu.
  • 5. 10. 2006 9:57

    Botulin (neregistrovaný)
    Ani tak se z toho modulu nestavá odvozené dílo. Je to modul, který byl slinkován ze zdrojových kódů, které vycházejí z rozdílných prací. Je to kompilát, který neporušuje ani jediné ustanovení GPL.
  • 5. 10. 2006 10:12

    LK (neregistrovaný)
    Obávám se, že potom už ano, protože jde o jednu binárku, jejíž část byla napsána pod GPL a tudíž se jedná o odvozeninu a dle §2b u GNUv2 musí být celé dílo uvolněno pod GPL (problematická vlastnost "čeho se GPL jen trochu dotkne, stává se automaticky GPL celé"). Osobně bych to, je-li to technicky možné, řešil rozdělením ovladače na dva kusy, jeden binární jako .so knihovna, druhý po GPL a mělo by být po problémech. Kdyby to ale šlo tak snadno, už to asi udělali, že. Tuší někdo, kde je problém?
  • 5. 10. 2006 10:49

    MarSik (neregistrovaný)
    Problem bych tipoval na to, ze jaderne moduly nemaji jak zavolat .so knihovnu. Navic je tam jeste jina otazka, a to je licencni ujednani k tem proprietarnim driverum, hlavne co se redistribuce tyce (necetl jsem ho, takze nevim jestli je povoleno nebo ne, ale je to potencialni problem pro vsechny distribuce)
  • 5. 10. 2006 10:55

    Botulin (neregistrovaný)
    Celkem běžný omyl. Ta binárka ani její část nebyla napsána, ale zkompilována z více částí. Tyto části jsou rozdílnými pracemi, které mají rozdílné licence, které ale umožňují další šíření, což je naprosto v pořádku. Přitom při sestavování se používají hlavičkové soubory z kernelu, tedy se jedná o využití způsobem rovným použití knihovny. Výsledný genreovaný kód nespadá pod GPL. Z GPL GNU v.2. vyplývá jediná povinnost pro distributora a to přibalit kompletní zdrojáky kernelu, což je GPL, a přidat tam linkovatelné, třeba i binární, části inkriminovaného ovladače (zde zřejmě distribuční balíčky ovladačů od nVidie a ATI v kompletní podobě), tak aby si i uživatel mohl výsledný modul samostatně sestavit. Opět připomínám, že kernel API vás nenutí udělat ovladače pod GPL.
  • 5. 10. 2006 16:22

    Haplo (neregistrovaný)
    Presne tak to vidim aj ja.

    Vyvojar kernelu ktory rozputal tento problem akosi neoddeluje binarnu a zdrojovu podobu diela. Aby ovladac platil ako odvodene dielo, musi obsahovat nejaku cast kodu povodneho kernelu. V tom pripade musi byt pod GPL. Vyvojari ovladaca to vsak elegantne obisli a rozdelili GPL a non-GPL cast. Tieto sa pri naslednej kompilacii spoja dokopy.

    Predstavte si situaciu ze do svojej komercnej aplikacie staticky zlinkujete nejaku GPL kniznicu. Bude to odvodene dielo ? Ak je odpoved ano, potom mame velky problem. Nic a tym myslim UPLNE nic nemoze pracovat s linuxovym kernelom co nieje GPL. Preto su v GPL licencii casti ktore vymedzuju odvodene dielo (obsahuje a modifikuje GPL kod) a kompilat/kompozicia (vyzuziva a komunikuje s GPL kodom).

    Bohuzial nejaky purista si nevidel dalej od svojho kodu a nevie si dane veci odlisit.
  • 5. 10. 2006 18:16

    Shadow (neregistrovaný)

    Možná je to trošku jinak. Mrkněte na zdroják GPL:

    You must cause any work that you distribute or publish, that in whole or in part contains or is derived from the Program or any part thereof, to be licensed as a whole at no charge to all third parties under the terms of this License.

    Vidíte tam ty tři spojky or? Pokud jsem si váš thread správě pochopil, říkáte, že binární modul nemá jako _součást_ zdrojáky jádra, tudíž není odvozeným dílem. Ale odvozené dílo není v GPL definováno jako dílo obsahující části GPL kódu. Tyto dvě oblasti jsou v GPL definovány zvlášť. Vy píšete:

    Preto su v GPL licencii casti ktore vymedzuju odvodene dielo (obsahuje a modifikuje GPL kod) a kompilat/kompozicia (vyzuziva a komunikuje s GPL kodom).

    Sám vidíte, že tak to ale není. V GPL není nápsáno, že odvozené dílo = dílo, které modifikuje nebo obsahuje GPL kód. Ta zmíněná sekce říká, že je nutno při šíření zachovat GPL licenci jak u díla obsahující nebo modifikující GPL kód, tak u díla, které je od něj odvozené. Obojí je stanoveno nezávisle na sobě a co je horší, pokud nejsem slepý, GPL nedefinuje, co je to "odvozené dílo".

    Takže ono to zřejmě spadá do kategorie chápání a interpretace tohoto pojmu. A tam, vzhledem k tomu, že v této věci doposud nerozhodl žádný soud, je značný prostor pro spekulace. Linusovo stanovisko je jasné - cokoliv, co silně využívá vnitřnosti a chody uvnitř jádra, je odvozené dílo (doporučuji přečíst celý jeho mail, já jsem si jen dovolil malinký kus vytrhnout z kontextu a přeložit, takže na tento kousek nereagujte a raději si přečtěte celou jeho reakci). Vaše stanovisko může být jiné, a až v této věci bude třeba rozhodovat nějaký soud, bude deklarovat zase svoje stanovisko. A dokud se tak nestane, budeme donekonečna spekulovat.

  • 5. 10. 2006 21:27

    ernie (neregistrovaný)
    A podle mého jest dílem odvozeným dílo povahy takové, že jest v něm zakompováno dílo původní, případně část ködu jeho.

    Takže pokud do svého programu nepřepíšu kus GPL kódu, nebo jej s ním STATICKY neslinkuju, tak si myslím že dílo odvozené není.

    Pokud chci používat vnitřní pochody v kernelu jen tím, že volám jeho funkce, nestvořil jsem odvozené dílo, pokud do svého programu přepíšu pro jeho funkci nezbytnou část jádra nebo jiného GPL programu, (ale dokažte mi že jsem to opsal a nevymyslel) mám odvozené dílo. Takže kdyby NVIDIA udělala GPL jaderný modul - zavaděč+interface , který by si po zavedení donahrál binární nonGPL část a každé to bylo zvlášť...
    Nevím jestli by to šlo v kernelu se nevyznám, ale možná by to bylo řešení...
  • 7. 10. 2006 19:32

    Shadow (neregistrovaný)
    Já se obávám, že pojem "odvozené dílo" je v právním řádu chápán poněkud více ze široka a nikoliv pouze jako "dílo obsahující části původního díla". Jakmile vytváříte ovladač na základě znalosti vnitřních pochodů jádra, de facto vytváříte dílo "založené" na jádře. A to může být z právního hlediska chápáno jako dílo odvozené.

    Samozřejmě může a nemusí, zatím v této věci žádný soud nerozhodl, takže my to _nevíme_, pouze se _domníváme_, že je to tak či onak. Můžeme se o to do nekonečna hádat, ale žádný z našich závěrů není v této věci směrodatný - soud může mít jiný názor.

    Tento závěr vývojář distribuce Kororaa učinil taktéž - nelze s jistotou rozhodnout, protože to nikdo s jistotou neví. Ale vzhledem k tomu, že v případě platnosti tohoto pohledu na pojem "odvozené dílo" by se autor distra Kororaa dopustil porušení licence GPL, zvolil menší ze dvou zel a ovladače pro jistotu odstranil.
  • 7. 10. 2006 20:24

    ernie (neregistrovaný)
    Dobrá, v tom případě je to otázka toho, jak sestavit ovladač tak, aby se koza nažrala a vlk zůstal celý :oD. Odvodit interface od jádra, ten dát pod GPL , a binární ovladač, který bude s interfacem spolupracovat, nevím jestli by to šlo, ale bylo by to možné řešení, ale to je spíš otázka pro výrobce ovladačů, nikoliv distribucí.
  • 7. 10. 2006 21:14

    Shadow (neregistrovaný)
    To řešíme níže v diskusi a přišli jsme na mnoho možných řešení. Věříme, že autor distra Kororaa _má_ řadu možností, jak zajistit, aby se vlk nažral a koza zůstala celá, jen z nich zatím žádnou nepoužil.
  • 9. 10. 2006 0:01

    ernie (neregistrovaný)
    Všiml jsem si , jen na některých řešeních by se musel podílet i výrobce hardware, ale pokud dodává své drivery tak by na jejich úpravu mohl přistoupit.
  • 5. 10. 2006 8:19

    Haplo (neregistrovaný)
    Uplne suhlasim. Je to somarina takto "zneuzivat" GPL licenciu.

    To co existovalo ako XGL live cd je kompozicia, nie odvodenina. Podla postoja prislusnych vyvojarov potom nesmiem ani prilinkovat ku kernelu cisto moj kod, ktory vyuziva exportovane API jadra ? Veda ja nemodifikujem originalne zdrojove kody, ani sa ich nesnazim distribuovat pod inou licenciou. Len pouzivam co bolo vytvorene a na ucel na ktory to bolo vytvorene.

    Tento postoj je smerovanie k zaniku Linuxu ako rozsireneho OS.
  • 5. 10. 2006 8:20

    Haplo (neregistrovaný)
    sakra aj s tym krepym root webom. vzdy mi to zmeni titulok prispevku na tu kravinu "dalsi reklamny clanok", hoci som klikol na odpovedat ...