PDA

View Full Version : Moduli open source e moduli closed source


City_Hunter
15-02-2004, 21:22
L'argomento non è certo storia nuova, ma è rimasto sconosciuto a tutti coloro che non si fossero addentrati negli ingranaggi di Linux o ritrovati nella situazione di dover far funzionare un componente hardware particolare.

Nel corso degli anni, la prospettiva della sempre maggiore presenza di moduli closed source, rilasciati dalle case produttrici hardware, caricati dall'utente finale nel proprio kernel per far funzionare al meglio un componente, ha fatto storcere il naso non poco agli sviluppatori open source.

Verso la fine del 2001 si decise di assegnare ai vari moduli un parametro relativo alla licenza con cui venivano rilasciati e di avvisare l'utente quando questi tentasse dii caricare nel kernel un modulo closed source (il famoso "tainted kernel").
Oltre a questo, Linus Torvalds diede il permesso agli sviluppatori più fanatici e insistenti di rendere disponibili le interfacce da loro scritte (ed usate anche dai moduli closed source) soltanto ai moduli con licenza GPL o compatibile. Questo valse solo per le interfacce nuove, scritte da quel momento in poi.

Non tutti gli sviluppatori di moduli si trovarono d'accordo con questa decisione di "limitare" in qualche modo i moduli closed source, come si può leggere in questa pagina:
http://www.smcc.demon.nl/webcam/tainting.html
la sua lettura è molto interessante per comprendere a fondo il problema.

Volendo si può anche risalire alla discussione che ne scaturì nella mailing list del kernel di linux:
http://www.ussg.iu.edu/hypermail/linux/kernel/0110.2/0369.html

A questo punto dò una mia opinione in proposito e invito chi fosse interessato a fare altrettanto.
A mio parere ogni forma di estremismo è sbagliata e questo vale anche per l'open source.
Al di là della facilissima aggirabilità delle verifiche di licenza del modulo nel kernel; per esempio basterebbe creare un modulo GPL che faccia da wrapper ad una libreria closed source... e il gioco è fatto. Senza contare che basta modificare parti del kernel di linux (module.h , insmod.c et similia), cosa che chiunque è libero di fare visto che si tratta di software GPL.

Da un lato posso comprendere la volontà di evitare che i moduli closed source diventino un'abitudine troppo frequente.
Dall'altro mi riesce veramente difficile credere (sono anzi convinto del contrario) che limitando questi moduli, le case hardware cominceranno a rilasciare driver open source. E' molto più probabile che, se i moduli closed source smetteranno di funzionare (ipotesi comunque pessimistica), i produttori HW lascino del tutto il poco supporto offerto a Linux. E questo sarebbe un peccato perchè questi moduli rappresentano spesso e volentieri il modo migliore per utilizzare al meglio il proprio hardware. Chiedete a chi ha una scheda nvidia o ati se rinuncerebbe ai driver nvidia-glx o firegl.

Le case hardware sono società a scopo di lucro, ben intenzionate a proteggere i propri segreti industriali, come è normalissimo che sia.
I moduli closed source hanno rappresentato fino a questo momento l'unica via di dialogo con i produttori hardware, che hanno fornito le specifiche necessarie per creare dei drivers a patto che parte del loro lavoro restasse segreto (NDA, Non Disclosure Agreement). Se per esempio philips collabora per far funzionare la sua webcam su linux, è ragionevole pensare che non voglia rendere comunque pubblico il proprio algoritmo di compressione e decompressione dell'immagine su cui ha lavorato per anni e che rappresenta una fonte di guadagno importante.

City_Hunter
17-02-2004, 14:17
Ho pensato che non fosse una cattiva idea riportare il discorso che ho fatto con un mio amico al riguardo, tutto fa brodo per chi vuole approfondire la conoscenza non solo di Linux ma anche del mondo open source in generale.

<cruel> ma senti
<cruel> a te
<cruel> tutto questo
<cruel> non lascia un po' l' amaro in bocca?
<cruel> intendo dire
<vuoto> non ho mai creduto che linux fosse un'isola felice
<cruel> vedere gente che ha dedicato tutta la sua vita e il suo lavoro
<cruel> e poi deve scendere a compromessi, per quanto necessari essi siano
<vuoto> in realtà il kernel funziona benissimo senza i moduli closed
<vuoto> solo che ci sono certi hardware che per essere sfruttati pienamente
<vuoto> richiederebbero driver che per loro natura non possono essere open
<vuoto> io trovo che questo sia semplicemente normale
<vuoto> quello che non capisco
<vuoto> è l'estremismo nei confronti di una cosa come questa che non può essere diversa da così
<vuoto> mi rendo conto però
<vuoto> (ho letto parecchie altre discussioni nella ml del kernel)
<vuoto> che ciò che si imputa ai moduli closed source
<vuoto> è che fanno perdere un macello di tempo ai poveri cristi che debuggano il kernel
<vuoto> infatti se è un modulo closed source a far crashare il kernel, loro non possono fare nulla
<vuoto> visto che non hanno i sorgenti del modulo
<vuoto> dunque una marea di segnalazioni che arrivano di bugs e crash
<vuoto> e kernel oops
<cruel> eh già
<vuoto> sono da purgare
<vuoto> perchè sono di gente che usali moduli closed
<vuoto> e non c'è modo di stabilire se dipenda da essi o meno
<vuoto> per questo motivo si è deciso di marcare i kernel come "tainted"
<vuoto> e di non accettare segnalazioni di crash provenienti da moduli così
<vuoto> e fin qui sono d'accordo
<vuoto> invece la faccenda del non permettere ai moduli closed di sfruttare nuovi simboli realizzati da qualche programmatore estremista...
<vuoto> beh quella la trovo eccessiva
<cruel> pero' almeno agli sviluppatori del kernel dovrebbero concedere la possibilità di lavorarci sopra
<cruel> se no come dicevi...
<cruel> sarà sempre un problema, tainted o non tainted
<vuoto> secondo me deve funzionare così
<vuoto> chi usa un modulo closed
<vuoto> deve accettare implicitamente il rischio di rendere instabile il sistema
<vuoto> e solo ati (parlando di quel driver) può mettere le cose a posto
<vuoto> però
<vuoto> permettete comunque a chi usa i moduli closed di farlo pienamente
<vuoto> insomma una via di mezzo :)
<cruel> mah
<cruel> io punterei su una politica differente
<cruel> moduli open ebbasta
<cruel> magari i produttori disponibili a farlo diminuiranno
<cruel> ma basta fare delle scelte piu' oculate in fase d' acquisto
<vuoto> insomma
<vuoto> le schede video
<vuoto> funzionano quasi tutte meglio coi driver proprietari che con DRI
<vuoto> quel che dici tu è giusto per svariati componenti
<vuoto> ma in certi casi le possibilità sono due
<vuoto> o fai un driver 100% funzionante senza pubblicarne parti del codice (come la webcam philips)
<vuoto> o fai un driver basato su ingegneria inversa che funziona magari a risoluzione ridotta e framerate abbassato (come la webcam basata sul chip divio nw802)
<vuoto> ovviamente (e per fortuna)
<vuoto> non è sempre così
<vuoto> l'hardware supportato aumenta sempre più
<vuoto> però per certi componenti
<vuoto> specialmente dove ci sono di mezzo algoritmi di compressione video
<vuoto> che valgono oro (vedi webcam e schede video)
<vuoto> eh... lì è dura :)
<cruel> sì lo so
<cruel> ma in quel caso
<cruel> è ovvio che nessuno vuole perderci per avvantaggiare l' open source
<cruel> in fondo, come dicevi, sono imprese che vogliono arrivare ad un profitto
<vuoto> e non si può condannarli per questo
<cruel> sarà sempre un problema insoluto proprio per questo
<vuoto> io se lavoro
<vuoto> e la mia azienda crea un algoritmo fantastico per il video
<vuoto> che mi fa guadagnare
<vuoto> beh non si capisce perchè dovrei renderlo open e permettere ad un'azienda rivale
<vuoto> di metterselo nel programma e farmi fuori vendendo a basso costo (visto che non avrebbe le spese di sviluppo dell'algoritmo su cui ci siam fatti il mazzo noi)
<vuoto> questo è quel che accadrebbe automaticamente
<cruel> dovrebbero creare una sorta di G.P.L. soggetta pero' a copyright (un controsenso che pero' sarebbe una comoda scappatoia)
<vuoto> non verrebbe rispettata
<vuoto> laddove ci sono i codici sorgenti e la prospettiva di guadagno
<vuoto> la vedo dura
<vuoto> la verità è che nella GPL c'è molto, forse troppo idealismo
<vuoto> che cozza con la realtà fatta di concorrenza e di mercato
<vuoto> con questo non voglio dire che Linux sia fatto da un branco di illusi
<vuoto> ma semplicemente... a volte bisognerebbe cercare un compromesso tra le proprie idee e gli ideali
<vuoto> specialmente se è indolore come un modulo closed source
<vuoto> non lo si vuole debuggare? giusto... non si debuggheranno i kernel tainted
<vuoto> ma lasciatelo funzionare
<vuoto> beninteso
<vuoto> credo che dopotutto molti l'abbiano capita
<vuoto> infatti ad oggi non conosco moduli closed source che abbiano smesso di funzionare
<vuoto> sotto sotto anche il più idealista credo sappia che al momento con le case hardware la scelta è
<vuoto> supporto closed o nessun supporto
<cruel> per forza

Steve
17-02-2004, 15:06
<vuoto> la verità è che nella GPL c'è molto, forse troppo idealismo
<vuoto> che cozza con la realtà fatta di concorrenza e di mercato

Per motivi personali non ho avuto modo di seguire benissimo la vicenda, ma penso di essere libero di dare al mio software la licenza che voglio, che sia open o closed o chissa' cosa ma in fondo la scelgo io.
Concordo che molto software GPL sia gratuito perche' generato da appassionati che mettono a disposizione le proprie opere, ma deve esserci anche qualcuno che sviluppa applicazioni per Linux aprendosi un mercato all'interno del "pinguino", e questo puo' senz'altro voler dire chiudere l'accesso ai propri sorgenti.
A me e a molti non piace Microsoft perche' e' monopolista, ma non ci vedrei nulla di male nell'avere N software houses che vendono i loro prodotti per piattaforme non-Windows... penso ad esempio al monitor che mi sono appena comprato: istruzioni per il pannello di controllo, driver per Win... e il mio linux? Non lo calcola nessuno?

Erano solo i miei 2 cents, scritti di fretta.