Aporia GPL3
Giorgos Keramidas
keramida at ceid.upatras.gr
Wed Jan 20 16:20:24 EET 2010
On Wed, 20 Jan 2010 15:30:49 +0200, Antonis Christofides <anthony at itia.ntua.gr> wrote:
> Γεια σας,
>
> έχω πήξει στα νομικά καθώς ετοιμαζόμαστε να βγάλουμε ένα software που
> είναι ελεύθερο λογισμικό αλλά είναι linked με βιβλιοθήκες άλλες
> ελεύθερες με εύκολα licenses, άλλες ελεύθερες με GPL, και άλλες μη
> ελεύθερες αλλά οι οποίες ενδέχεται να εμπίπτουν στον ορισμό του System
> Library. Για όσους έχουν χρόνο να σκοτώσουν και γουστάρουν να χακεύουν
> το GPL, ένα πρόβλημα:
>
> Υπόθεση εργασίας: Η Microsoft έχει φτιάξει μια γλώσσα προγραμματισμού,
> τη N, ο Ρικούδης φτιάχνει το hello.n, και μου δίνει το source με GPL3.
> Το hello.n χρησιμοποιεί τη συνάρτηση nprint για να δείξει το "hello,
> world!", και η nprint είναι συνάρτηση της N standard library. Η
> Microsoft προφανώς δίνει μαζί με τον compiler και μια υλοποίηση της
> standard βιβλιοθήκης, αλλά τη δίνει μόνο σε object, όχι σε source.
>
> Εγώ τώρα, που έχω αγοράσει τον Microsoft N Compiler, κομπιλάρω το
> hello.n, και προκύπτει το hello.exe (που εμπεριέχει τον κώδικα της
> Microsoft για την nprint), το οποίο θέλω να δώσω στον Κεραμίδα (ο
> οποίος θέλει να το τρέξει σε FreeBSD με WINE :-). Το GPL με υποχρεώνει,
> εκτός από το exe, να δώσω στον Κεραμίδα και το "Corresponding Source".
> Είναι η N standard library μέρος του Corresponding Source;
>
> Από το GPL3:
>
> A “Standard Interface” means an interface that either is an
> official standard defined by a recognized standards body, or, in
> the case of interfaces specified for a particular programming
> language, one that is widely used among developers working in that
> language.
>
> The “System Libraries” of an executable work include anything,
> other than the work as a whole, that (a) is included in the normal
> form of packaging a Major Component, but which is not part of that
> Major Component, and (b) serves only to enable use of the work
> with that Major Component, or to implement a Standard Interface
> for which an implementation is available to the public in source
> code form. A “Major Component”, in this context, means a major
> essential component (kernel, window system, and so on) of the
> specific operating system (if any) on which the executable work
> runs, or a compiler used to produce the work, or an object code
> interpreter used to run it.
>
> Αυτός ο ορισμός έχει μεγάλη σημασία γιατί τα System Libraries στη
> συνέχεια του κειμένου του GPL εξαιρούνται από το "Corresponding
> Source", που είναι αυτό στο οποίο κολλάει ωσάν ιός το GPL.
>
> Στην περίπτωσή μας, Major Component είναι ο Microsoft N Compiler. Το N
> standard library είναι System Library αν:
>
> (a) is included in the normal form of the packaging of the Microsoft
> N Compiler (που ισχύει), but is not part of the Microsoft N
> Compiler (που επίσης ισχύει), AND
>
> (b) serves only
>
> to enable use of hello.exe with the Microsoft N Compiler (δεν
> ισχύει, αυτή η πρόταση έχει νόημα στις περιπτώσεις που Major
> Component είναι τμήμα του λειτουργικού συστήματος και όχι ένας
> compiler), OR
>
> to implement a Standard Interface (που ισχύει) for which an
> implementation is available to the public in source code form
> (που δεν ισχύει).
>
> Το συμπέρασμά μου είναι ότι επειδή δεν υπάρχει κάποια δημοσίως
> διαθέσιμη υλοποίηση της nprint (ή γενικότερα του N standard library)
> σε source code, το N standard library της Microsoft δεν είναι System
> Library, και επομένως είναι μέρος του Corresponding Source, και
> επομένως, εφόσον δεν μπορώ να κάνω το source του N standard library
> διαθέσιμο με GPL3 (ούτε καν το έχω), δεν έχω καθόλου το δικαίωμα να
> δώσω στον Κεραμίδα το hello.exe. Αλλά μου φαίνεται τραβηγμένο.
> Νομίζετε πως έχω καταλάβει κάτι λάθος;
>
> Η δεύτερη ερώτηση είναι η εξής: αν η Microsoft δίνει μαζί με το
> Microsoft N Compiler και τα sources του N Standard Library, αλλά απλώς
> για reference του developer, χωρίς να παραχωρήσει κανένα άλλο
> δικαίωμα, τότε το N Standard library είναι "available to the public in
> source code form";
Νομίζω πως όχι, το τελευταίο *δεν* είναι αρκετό ως “διαθεσιμότητα του
πηγαίου κώδικα”, γιατί ο Κεραμίδας μπορεί να μην έχει (ούτε να
ενδιαφέρεται να έχει) αγοράσει το development kit της γλώσσας N ως
“SDK”. Από την άλλη, αν δεν υπάρχει άλλη public υλοποίηση της
συνάρτησης nprint, μάλλον δεν μπορεί να ικανοποιηθεί η απαίτηση της
GPLv3 για διαθεσιμότητα του _πηγαίου_ κώδικα.
Ο διαχωρισμός του “system library” από το “προαιρετικό χαρακτηριστικό”
του τύπου “ε να μωρέ, απλά αν έχεις κι αυτό θα βλέπεις τα Ρικούδια μωβ
όποτε ανοίγεις run-length encoded Targa images”, δεν είναι και πολύ
σαφής στην GPLv3. Για παράδειγμα, ορισμένα από τα ερωτήματα τα οποία
αφήνει αναπάντητα η GPLv3 είναι:
* Η libc του συστήματος είναι system library;
* Αν ναι ποιά libc;
* Είναι system library και η BSD licensed libc.so του FreeBSD, όταν
έχεις κάνει compile με το GCC 4.X και χρησιμοποιείς ένα *συνδυασμό*
από features, τα μισά από τα οποία υλοποιούνται στη libc (π.χ. τα
VLA του C99 standard);
* Κι αν η libc.so δεν είναι η 100% “καθαρή” libc του βασικού FreeBSD
αλλά μια πειραγμένη, που έχει κι έξτρα καλούδια για embedded CPUs
τύπου X, είναι ακόμα system library ή είναι πλέον αναπόσπαστο
συστατικό ενός από τα προγράμματα που την καλούν;
* Κι αν αυτή την πειραγμένη libc.so δεν την έχεις κατεβάσει από το
FreeBSD, αλλά από ένα άλλο vendor, ο οποίος σύμφωνα με την 2-clause
BSD license έχει κάθε δικαίωμα να σου δώσει μόνο το binary, τότε
είναι system library ή όχι;
Προσωπικά, δεν είμαι σίγουρος ότι είναι ξεκάθαρο για *όλες* τις πιθανές
περιπτώσεις τι είναι “system library” και τι όχι. Ο διαχωρισμός περί
system vs. non-system libraries μου φαίνεται ότι εισάγει περισσότερα
προβλήματα από όσα υποτίθεται ότι λύνει.
More information about the Linux-greek-users
mailing list