DedSec Project

Βασικά στοιχεία αδειών λογισμικού — DedSec Project

Άδειες λογισμικού — καταγραφή δικαιωμάτων πριν από τη διανομή Το πρόβλημα της διανομής Ένα αποθετήριο μπορεί να περιλαμβάνει δικό σου κώδικα, βιβλιοθήκες τρίτων, εικόνες, γραμματοσειρές και…

Άδειες λογισμικού — καταγραφή δικαιωμάτων πριν από τη διανομή

Το πρόβλημα της διανομής

Ένα αποθετήριο μπορεί να περιλαμβάνει δικό σου κώδικα, βιβλιοθήκες τρίτων, εικόνες, γραμματοσειρές και έτοιμα εκτελέσιμα αρχεία. Η δημόσια προβολή πηγαίου κώδικα δεν σημαίνει αυτόματη άδεια επαναχρησιμοποίησης. Μία δήλωση πνευματικής ιδιοκτησίας δεν αντικαθιστά σαφή άδεια χρήσης. Πριν δημιουργήσεις πακέτο διανομής, χρειάζεσαι κατάλογο με κάθε στοιχείο που πράγματι περιλαμβάνεται, την προέλευση ή έκδοσή του, τους όρους χρήσης και τις σχετικές γνωστοποιήσεις. Η ένδειξη UNKNOWN απαιτεί διερεύνηση· δεν σημαίνει MIT ή ελεύθερη χρήση.

Εκτελέσιμος έλεγχος πληρότητας Python 3

Αποθήκευσε ως license_lab.py και εκτέλεσε python3 license_lab.py. Τα στοιχεία είναι φανταστικά και το πρόγραμμα δεν κατεβάζει κώδικα ούτε αποφασίζει αν συγκεκριμένη άδεια καλύπτει νομικά τη διανομή.

def inventory(entries):
    seen, problems = set(), []
    for e in entries:
        name = e.get("name")
        if not name or name in seen:
            problems.append("missing/duplicate component")
        seen.add(name)
        if e.get("origin") == "third-party":
            if not e.get("license_id") or e["license_id"] == "UNKNOWN":
                problems.append("unknown license: " + str(name))
            if not e.get("notice"):
                problems.append("missing notice: " + str(name))
    return problems

good = [
    {"name":"main","origin":"owned"},
    {"name":"helper","origin":"third-party","license_id":"MIT","notice":"fixture notice"},
]
assert inventory(good) == []
bad = good + [{"name":"art","origin":"third-party","license_id":"UNKNOWN","notice":""}]
assert len(inventory(bad)) == 2
print("PASS: missing license and notice detected")

Τα όρια ενός αυτόματου ελέγχου

Η συνάρτηση ανιχνεύει άγνωστους ή διπλούς κωδικούς στοιχείων και απουσία αναγνωριστικού άδειας ή σημειώσεων για εξαρτήσεις τρίτων. Δεν μπορεί να αποδείξει ότι ο δηλωμένος τύπος άδειας αντιστοιχεί στην πραγματική πηγή, ότι επιτρέπεται συγκεκριμένη εμπορική χρήση ή ότι έχουν ικανοποιηθεί υποχρεώσεις γνωστοποιήσεων, αναφοράς δημιουργού, διπλωμάτων ευρεσιτεχνίας και διάθεσης πηγαίου κώδικα. Αυτά προϋποθέτουν εξέταση των αυθεντικών όρων και των αρχείων που όντως διανέμονται. Ξεχώρισε εξαρτήσεις που υπάρχουν μόνο κατά τη μεταγλώττιση από εκείνες που περιλαμβάνονται στο τελικό προϊόν.

Στοχευμένες ασκήσεις

  1. Πρόσθεσε εικόνα από τρίτο με UNKNOWN και χωρίς σημείωση άδειας. Επιβεβαίωσε δύο ξεχωριστές ελλείψεις και μην εφευρίσκεις δικαιώματα για να περάσει ο έλεγχος.
  2. Βάλε δύο εξαρτήσεις με το ίδιο όνομα αλλά διαφορετικές εκδόσεις. Εξήγησε γιατί χρειάζονται πλήρη μοναδικά αναγνωριστικά.
  3. Σύγκρινε δημοσίευση μόνο πηγαίου κώδικα με διανομή εκτελέσιμου που περιλαμβάνει βιβλιοθήκες. Βρες τι αλλάζει στον κατάλογο.
  4. Δημιούργησε σημείωμα αδειών για μία φανταστική βοηθητική βιβλιοθήκη MIT και έλεγξε ότι περιλαμβάνεται στο δοκιμαστικό αρχείο διανομής.

Παραδοτέα: PASS, πίνακας στοιχείων και δικαιωμάτων, ανοικτά ερωτήματα συμμόρφωσης και βήμα ανθρώπινης επιθεώρησης. Το υλικό είναι εκπαιδευτικό και δεν αποτελεί νομική γνωμοδότηση.