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