Il rispetto della GPL nei Tribunali Italiani....
Scopro stamattina che è di qualche giorno fa la decisione del Tribunale di Venezia su una questione legata al rispetto dei vincoli della GPL. Sembra essere la prima nel suo genere, nel nostro Paese. => Storico riconoscimento del Software Libero in Italia: dal tribunale di Venezia la prima ordinanza cautelare che tutela la licenza GPL. https://www.dynamic.ooo/press/groundbreaking-acknowledgment-of-free-software... Bye, DV -- Damiano Verzulli e-mail: damiano@verzulli.it --- possible?ok:while(!possible){open_mindedness++} --- "...I realized that free software would not generate the kind of income that was needed. Maybe in USA or Europe, you may be able to get a well paying job as a free software developer, but not here [in Africa]..." -- Guido Sohne - 1973-2008 http://ole.kenic.or.ke/pipermail/skunkworks/2008-April/005989.html
Ciao Damiano, ho letto la decisione l'altro giorno, ma mi ha lasciato perplesso. On Thu, 23 Dec 2021 13:18:35 +0100 Damiano Verzulli wrote:
Scopro stamattina che è di qualche giorno fa la decisione del Tribunale di Venezia su una questione legata al rispetto dei vincoli della GPL.
Sembra essere la prima nel suo genere, nel nostro Paese.
Il fatto che la GPL venga riconosciuta anche in Italia come valida e vincolante è molto positivo. In particolare questo passaggio ``` In ogni caso la diffida non è stata seguita da adempienza ex art. 8 comma 3; pertanto la licenza è venuta meno, e Ovation può validamente adire gli strumenti inibitori. ``` sancisce l'efficacia in Italia delle clausole di terminazione delle licenze libere. Ma a leggere con attenzione l'ordinanza del giudice[1] la mia impressione è che entrambe le parti abbiano fatto un bel po' di casino. Ed anche certe affermazioni del Giudice sembrano confuse (se non propriamente errate). A quanto posso leggere, "Ovation vanta diritto patrimoniale d’autore avendolo acquisito in forza di un rapporto di consulenza e contratto d’opera verbale, che sarebbe documentato da fatture da essa pagate." Nota la parola "verbale". "Non è chiaro come i resistenti ritengano fosse possibile stornare utili dalla società a beneficio dei resistenti (che non se ne dichiarano soci; non risultano documenti che permettano di ricostruire le compagini delle due società in causa) ma ciò non rileva ai fini che interessano: essendo invece rilevante che i resistenti ammettano di fatto la concessione a Ovation dei diritti di sfruttamento, nella forma della licenza GNU citata." Questa ammissione "di fatto" è interpretata dal Giudice come una concessione ESCLUSIVA di diritti "nella forma della licenza GNU citata", ma la GNU GPLv3 [2] NON CEDE i diritti d'autore (o alcun altro diritto) ma concede permessi specifici e NON esclusivi. Il Giudice poi scrive "Pertanto la difesa qui svolta sulla qualità di creatori dei resistenti è inconferente: è evidente che anche i “creatori” sono tenuti a rispettare il diritto come da essi volontariamente conferito a Ovation, potendo certamente continuare a sviluppare e derivare da DCE anche in proprio, ma rispettando i termini della GNU a beneficio di Ovation." Ma poiché la GNU GPLv3 NON è un copyright assignment questa consequenzialità non esiste, tant'è che la Free Software Foundation suggerisce di cederle il copyright esclusivo dei progetti GNU, per poter agire in giudizio a tutela della libertà degli utenti in caso di violazioni. [3] Questo errore interpretativo del Giudice, imho, apre alla ragionevole possibilità di ribaltare la sentenza in un eventuale ricorso. Alle informazioni disponibili, SE la esplicita cessione del copyright non è documentabile da Ovation con qualcosa di più di accordi verbali, allora il Giudice ha preso una seria cantonata. Un altro passaggio tecnicamente problematico della sentenza è questo: ``` Non sono certo le funzionalità a costituire il terreno di confronto dei software, ma i codici sottostanti. Pertanto è piuttosto il rinvenimento di stringhe di codice uguali o simili, o in numero non minimo, a rilevare per dare corpo alla tesi della derivazione: e non certo l’esistenza di parti diverse. Due diversi programmatori che operino indipendentemente e creino diversi programmi ab initio esprimono naturalmente con codici diversi le operazioni che il programma deve eseguire; e lo stesso programmatore, che realizzi due programmi diversi, di cui uno ceduto ad altri, può e deve usare diversi codici, così come un romanziere non può riciclare frasi e capitoli da un’opera ad un’altra, se della prima abbia ceduto il diritto di sfruttamento economico. ``` Anche se la deduzione in questo caso fosse corretta (questo specifico software è un opera derivata dell'altro specifico software), il ragionamento generale portato a supporto di tale deduzione è pericolosamente superficiale: non tiene conto delle API disponibili che possono dar luogo a notevoli somiglianze ANCHE fra opere completamente distinte. In altri termini, due diversi programmatori che operino indipendentemente e creino diversi programmi ab initio, in molti casi concreti produrranno codice simile. Certamente è sempre POSSIBILE che un software venga scritto in modi diversi, scientemente o meno, ma equivalenti, ma non è una condizione di per sé probabile in presenza di API pre-esistenti con cui bisogna interagire. Il paragone fra il programmatore ed il romanziere è invece corretto (MA bisogna verificare che la cessione del diritto di sfruttamento economico sia esclusivo. E forse anche che la seconda opera riduca o infici o riduca in qualche modo tale diritto). Poi il Giudice scrive: ``` In verità, la presenza di 8200 righe di codice su 300.000 identiche è sufficiente, in questa sede cautelare, a denunciare la derivazione di E-Addons (che pacificamente è cronologicamente successivo ) da DCE. ``` Anche qui, sebbene la derivazione probabilmente esiste, meno del 3% di linee di codice corrispondenti non la dimostrano affatto! Il modo corretto di provare la derivazione fra due opere software è studiare la storia del loro sviluppo, analizzando i repository che ne tracciano i cambiamenti. In occasione della violazione da parte di un ingegnere di Google della GPLv2 che rimosse il mio nome da Harvey senza rimuovere il mio codice [4], io avevo esplicitamente richiesto che preservassero la storia del repository (`git revert`). Loro riscrissero (`git rebase`) tale storia, mischiando in enormi commit anche modifiche del tutto identiche alle patch che avevo contribuito. Anche volendo proprio credere alla buona fede, tale scelta fu un errore proprio perché riscrivendo la storia, oltre a spaccare tutti i fork precedenti su GitHub, persero la possibilità di dimostrare di NON aver incluso le mie patch e di aver riscritto esattamente e stesse modifiche. Perlatro il Giudice ha riconosciuto la questione dell'interoperabilità: ``` L’ordine inibitorio viene dato con salvezza di un quantum minimo di righe di codice (che si quantificano in 500) a salvaguardia di identità accidentali o inevitabili, in particolare per salvaguardare la interoperabilità con terzi ``` ma senza sapere come queste 500 righe di codice siano state calcolate, risulta impossibile dire se sia una "salvaguardia" ragionevole o meno. Non conosco WordPress (mai installato o programmato), ma Linux espone oltre 350 chiamate di sistema [5]: se si trattasse di un eseguibile di quella dimensione per Linux sarebbe molto probabile trovare ben più di 500 linee di codice identiche o quasi identiche rispetto a qualsiasi altro programma. Per questo per poter dimostrare la derivazione fra due sarebbe meglio studiarne l'evoluzione patch per patch. Giacomo [1] https://web.archive.org/web/20211223135503/https://e-addons.com/ordinanza-13... [2] https://www.gnu.org/licenses/gpl-3.0.en.html [3] La FSF simultaneamente concede una licenza allo sviluppatore stesso di fare qualsiasi cosa con il proprio software, incluso il diritto rilicenziarlo in modo proprietario, in modo che la libertà dello sviluppatore non venga meno. https://www.gnu.org/licenses/why-assign.en.html https://www.fsf.org/bulletin/2014/spring/copyright-assignment-at-the-fsf https://www.gnu.org/prep/maintain/maintain.html#Legal-Matters [4] http://www.tesio.it/2018/02/14/what-i-wish-i-knew-before-contributing-to-ope... [5] https://linuxhint.com/list_of_linux_syscalls/
Poi il Giudice scrive: ``` In verità, la presenza di 8200 righe di codice su 300.000 identiche è sufficiente, in questa sede cautelare, a denunciare la derivazione di E-Addons (che pacificamente è cronologicamente successivo ) da DCE. ```
Anche qui, sebbene la derivazione probabilmente esiste, meno del 3% di linee di codice corrispondenti non la dimostrano affatto!
Il modo corretto di provare la derivazione fra due opere software è studiare la storia del loro sviluppo, analizzando i repository che ne tracciano i cambiamenti.
Concediamo al giudice l'attenuante di essere pioniere in questo genere di giudizi. Tuttavia, se può essere utile in altri contenziosi o in questo stesso ma in successivi gradi di giudizio, vorrei aggiungere un breve commento. L'utilità dell'indicazione delle righe di codice in quel modo è pari a zero. 300000 sono LOC? (Lines of Code), NCLOC? (Non-Comment Lines of Code), LLOC? (Logical Lines of Code). L'ultima versione di Wordpress [1] è composta da: 481702 LOC, 318458 NCLOC e 104268 LLOC. Dubito fortemente che un add-on di un plugin di WP sia composto da 300000 LOC. WP ha una miriade di plug-in, uno di questi è Elementor [2]. Per Elementor, a sua volta, ci sono centinaia di add-on [3]. Questi plug-in e add-on possono essere scaricati dalle rispettive pagine, sul sito di Wordpress, ad esempio qui [4] Non ho trovato pagine per E-Addons né per DCE, non ho potuto, quindi, analizzare il codice. A. [1] https://wordpress.org/ [2] https://wordpress.org/plugins/elementor/ [3] https://github.com/lukecav/awesome-elementor#third-party-add-ons [4] https://wordpress.org/plugins/addon-elements-for-elementor-page-builder/
participants (3)
-
Antonio Iacono -
Damiano Verzulli -
Giacomo Tesio