
Είμαι ανάπτυξη ενός GPL άδεια εφαρμογή σε Python και πρέπει να γνωρίζουν αν το GPL επιτρέπει το πρόγραμμά μου για να χρησιμοποιούν ιδιόκτητα plug-ins. Αυτό είναι [ό, τι το ΤΧΣ έχει να πει](http://www.gnu.org/licenses/gpl-faq.html) για το θέμα:



> 
> **Εάν ένα πρόγραμμα με άδεια GPL χρησιμοποιεί plug-ins, ποιες είναι οι απαιτήσεις για τις άδειες ενός plug-in;**
> 
> 
> Εξαρτάται από το πώς το πρόγραμμα επικαλείται plug-ins του. Εάν το πρόγραμμα χρησιμοποιεί πιρούνι και exec να επικαλεστεί plug-ins, τότε τα plug-ins είναι ξεχωριστά προγράμματα, έτσι ώστε η άδεια για το κυρίως πρόγραμμα δεν παρέχει καμία απαιτήσεις για αυτούς.
> 
> 
> Εάν το πρόγραμμα συνδέει δυναμικά plug-ins, και κάνουν τη λειτουργία κλήσεις μεταξύ τους και το μερίδιο των δομών δεδομένων, πιστεύουμε ότι αποτελούν ένα ενιαίο πρόγραμμα, το οποίο πρέπει να αντιμετωπιστεί ως επέκταση τόσο του κύριου προγράμματος και τα plug-ins. Αυτό σημαίνει ότι τα plug-ins πρέπει να κυκλοφορήσει υπό την GPL ή GPL συμβατή με άδεια χρήσης ελεύθερου λογισμικού, και ότι οι όροι της GPL πρέπει να ακολουθούνται κατά την κατανομή των εν λόγω plug-ins.
> 
> 
> Εάν το πρόγραμμα συνδέει δυναμικά plug-ins, αλλά η επικοινωνία μεταξύ τους περιορίζεται στην επίκληση της «κύρια» λειτουργία του plug-in με κάποιες επιλογές και περιμένει να επιστρέψει, ότι είναι μια οριακή περίπτωση. 
> 
> 
> 


Η διάκριση μεταξύ πιρούνι / exec και δυναμική σύνδεση, εκτός του ότι είναι το είδος των τεχνητών, δεν μεταφέρουν στο ερμηνευθεί γλώσσες: τι γίνεται με ένα πρόγραμμα Python / Perl / Ruby, που παίρνει φορτωμένο με `import`ή `execfile`;


(Edit: Καταλαβαίνω γιατί η διάκριση μεταξύ πιρούνι / exec και δυναμική σύνδεση, αλλά φαίνεται σαν κάποιος που ήθελε να συμμορφωθούν με την GPL, αλλά να πάει ενάντια στο «πνεύμα» --I don't-- θα μπορούσε να χρησιμοποιήσει μόνο το πιρούνι / exec και ενδοεπικοινωνία επικοινωνίας για να κάνει σχεδόν τίποτα).


Η καλύτερη λύση θα ήταν να προσθέσετε μια εξαίρεση για την άδεια μου για να επιτραπεί ρητά η χρήση των ιδιόκτητων plugins, αλλά δεν είμαι σε θέση να το πράξουν δεδομένου ότι είμαι με τη χρήση [Qt](http://trolltech.com/products/qt) / [PyQt](http://www.riverbankcomputing.co.uk/software/pyqt/intro) που είναι GPL.

 
Ιδιόκτητο plug-ins για τα προγράμματα GPL: τι γίνεται με ερμηνεύεται γλώσσες;
=============================================================================




> 
> ο διαχωρισμός μεταξύ πιρούνι / exec και δυναμική σύνδεση, εκτός του ότι είναι το είδος των τεχνητών,
> 
> 
> 


Δεν νομίζω τεχνητό της σε όλα. Βασικά είναι ακριβώς κάνει η διαίρεση με βάση το επίπεδο ολοκλήρωσης. Αν το πρόγραμμα έχει «plugins», το οποίο είναι ουσιαστικά φωτιά και να ξεχάσουμε χωρίς ολοκλήρωσης επίπεδο API, τότε το έργο που θα προκύψει είναι μάλλον απίθανο να θεωρηθεί παράγωγη εργασία. Σε γενικές γραμμές ένα plugin το οποίο απλώς διχαλωτή / exec'ed θα ταίριαζε αυτά τα κριτήρια, αν και μπορεί να υπάρχουν περιπτώσεις όπου αυτό δεν συμβαίνει. Η περίπτωση αυτή ισχύει ιδίως εάν ο κωδικός «plugin» θα μπορούσε να λειτουργήσει ανεξάρτητα από τον κωδικό σας επίσης.


Εάν, από την άλλη πλευρά, ο κώδικας εξαρτάται έντονα από την υπό την GPL εργασίας, όπως εκτενώς καλώντας APIs, ή ενσωμάτωση σφιχτή δομή δεδομένων, τότε τα πράγματα είναι πιο πιθανό να θεωρηθεί παράγωγη εργασία. Δηλαδή, το «plugin» δεν μπορεί να υπάρξει από μόνη της, χωρίς το προϊόν GPL, και ένα προϊόν με αυτό το plugin εγκατεστημένο είναι ουσιαστικά μια που προέρχεται έργο του άδεια GPL προϊόντος.


Έτσι, για να γίνει λίγο πιο σαφής, οι ίδιες αρχές θα μπορούσαν να ισχύουν για ερμηνεύεται τον κωδικό σας. Αν η ερμηνεία κώδικα βασίζεται σε μεγάλο βαθμό από APIs σας (ή το αντίστροφο), τότε θα μπορούσε να θεωρηθεί παράγωγη εργασία. Αν είναι απλά ένα σενάριο που εκτελεί μόνη της με εξαιρετικά μικρό ολοκλήρωσης, τότε δεν μπορεί.


Μήπως αυτό κάνει πιο λογικό;

 

@Daniel 


> Η διάκριση μεταξύ πιρούνι / exec και δυναμική σύνδεση, εκτός του ότι είναι το είδος των τεχνητών, δεν μεταφέρουν στο ερμηνευθεί γλώσσες: τι γίνεται με ένα πρόγραμμα Python / Perl / Ruby, που παίρνει φορτωμένο με εισαγωγή ή execfile;


Δεν είμαι σίγουρος ότι η διάκριση **είναι** τεχνητή. Μετά από ένα δυναμικό φορτίο ο κωδικός plugin μοιράζεται ένα πλαίσιο εκτέλεσης με την άδεια GPL κώδικα. Μετά από ένα πιρούνι / exec δεν το κάνει.


Σε anycase Θα ήθελα να μαντέψει ότι `import`η ING προκαλεί το νέο κωδικό για να τρέξει στο ίδιο πλαίσιο εκτέλεσης και την άδεια GPL λίγο, και θα πρέπει να την αντιμετωπίσουμε σαν την δυναμική περίπτωση σύνδεσμο. Οχι?

 

Πόσο πληροφορίες που σας μοιράζονται μεταξύ των plugins και το κύριο πρόγραμμα; Αν κάνετε τίποτα περισσότερο από την εκτέλεση τους και περιμένουν τα αποτελέσματα (κοινή χρήση δεν δεδομένων μεταξύ του προγράμματος και το plugin στη διαδικασία) τότε θα μπορούσε πιθανότατα να ξεφύγει με τις οποίες είναι ιδιόκτητο, διαφορετικά θα πρέπει πιθανώς να είναι GPL» ρε.

 