Di colors.js, GitHub e della leggerezza con cui gli sviluppatori pubblicano codice su GitHub

20

Nel day after della protesta di Marak Squires le discussioni in merito al suo gesto continuano ad infiammare la community.

Autore di colors.js e faker.js, librerie da venti milioni di download settimanali, Squires ha deciso di compiere quello che, a suo dire, è stato un atto di protesta nei confronti delle Fortune 500s, aziende che non intende più supportare con il suo lavoro gratuito: inserire volutamente un loop infinito nel codice in modo da compromettere l’utilizzo delle sue librerie ovunque.

In seguito a questa azione, che ovviamente ha comportato disservizi a tutti gli utilizzatori, GitHub ha deciso di sospenderne l’account e di riportare la libreria allo stato precedente della modifica accusata, motivando così la scelta:

GitHub is committed to ensuring the health and security of the npm registry. We removed the malicious packages and suspended the user account in accordance with npm’s acceptable use policy regarding malware, as outlined in our Open Source Terms.

La missione di GitHub è quella di garantire la salute e la sicurezza del registry npm. Abbiamo rimosso i pacchetti malevoli e sospeso l’account rispettando le politiche a proposito di malware di npm, come illustrato nei nostri Open Source Terms.

Il tutto accompagnato da una security advisory specifica: https://github.com/advisories/GHSA-5rqg-jm4f-cqx7.

Il punto quindi è chiaro, ed è ciò che sta al centro delle discussioni di questi giorni:

  • L’autore poteva fare quello che ha fatto? La risposta è sì.
  • GitHub poteva fare quello che ha fatto? La risposta è sì.

Quindi come si trova la quadra in questo contesto? Perché quello che si chiedono tutti è “possibile quindi che uno sviluppatore non sia libero di modificare il proprio codice?”.

È chiaro che a fronte di una domanda simile il rischio che l’indignazione offuschi il ragionamento è altissimo, principalmente perché non va sottovalutato un aspetto di tutta la faccenda: se è vero che il codice in questione è stato creato da Squires, questo è pubblicato (e condiviso, e scaricato, con tutto quello che comporta in termini di banda, fruizione e diffusione) su una piattaforma proprietaria. Specificamente di proprietà di un’azienda privata la quale, come qualsiasi piattaforma online, ha un codice di comportamento e delle regole a cui qualsiasi utente è obbligato ad attenersi per usare il prodotto.

Perché GitHub è questo che è, un prodotto. Piaccia o meno.

Quindi tralasciando tutte le considerazioni di natura filosofico-morale (specificamente sulle motivazioni dell’autore), è bene mantenere sempre un certo distacco, usando le verità oggettive, in questo caso il paradigma piattaforma/regole.

In questo senso, e fa bene ricordarlo anche a noi stessi, nel momento in cui il nostro codice (libero) è su GitHub, allora valgono le regole dell’azienda GitHub (leggi Microsoft in questo caso) la quale può anche sospendere arbitrariamente il nostro account.

Da sempre appassionato del mondo open-source e di Linux nel 2009 ho fondato il portale Mia Mamma Usa Linux! per condividere articoli, notizie ed in generale tutto quello che riguarda il mondo del pinguino, con particolare attenzione alle tematiche di interoperabilità, HA e cloud.
E, sì, mia mamma usa Linux dal 2009.

20 risposte a “Di colors.js, GitHub e della leggerezza con cui gli sviluppatori pubblicano codice su GitHub”

  1. Avatar TristanTarrant
    TristanTarrant

    In pratica una variante di un episodio simile di qualche anno fa (causato dal fatto che fosse possibile rimuovere package da NPM: https://qz.com/646467/how-one-programmer-broke-the-internet-by-deleting-a-tiny-piece-of-code/ )

  2. Avatar xan
    xan

    è questo che non va bene secondo me, se un utente fa qualcosa che non ti sta bene, banni l’utente e cancelli tutti i suoi prodotti,

    non che lo espropri delle sue cose e li gestisci direttamente te come meglio credi.

    il problema era che se cancellavano tutto sarebbe stato una catastrofe mondiale.

    il tizio ha ragione, cè poco da fare.

    PS io l’avrei gestita diversamente, ma ha ragione.

    io avrei modificato l’homepage scrivendo che se non ricevo X € entro il giorno Y cancello repository e pacchetti NPM

  3. Avatar Raoul Scarazzini

    Sì, ne avevamo anche parlato qui https://www.miamammausalinux.org/2016/03/uno-sviluppatore-blocca-internet-rimuovendo-11-righe-di-codice/ ed in effetti la vicenda è molto simile, sebbene in quel caso il pacchetto
    left-pad venne semplicemente rimosso dall’autore (e poi ripristinato da NPM).

    Non ricordo un eco mediatico così sonoro, ma la soluzione lì fu ben diversa: fork e via, qui l’utente è stato considerato (a ragione) di aver violato le regole della piattaforma GitHub, e quindi disabilitato.
    Il parallelo è certamente azzeccato comunque.

  4. Avatar xan
    xan

    quello che ha fatto github dovrebbe essere fuori legge. se un utente fa una cosa contro le policy blocchi l’account e tutto il suo contenuto, non che rimane tutto impedendo all’autore di poterlo ad esempio rimuovere

    è come se mi bloccano l’account su FB ma rimangono online tutte le foto ed i post ed io non posso farci nulla.

    github dovrebbe rimuovere tutto se pensa che l’utente abbia sbagliato.

    quando github è passato a microsoft ci sono state molte discussioni a riguardo, penso che ora si sia capito chi aveva ragione

  5. Avatar Raoul Scarazzini

    Non è così che è andata, da quel che si legge quello che ha fatto GitHub è ripristinare il pacchetto disabilitando l’utente, son due cose distinte. Il pacchetto NON È l’account dell’utente, ma il suo prodotto.

  6. Avatar Raoul Scarazzini

    Cosa pensi possa essere risolto con la minaccia “se non ricevo X entro il giorno Y”… Se non ricevi… Da chi?
    Secondo me c’è un errore di fondo, ed è frequentissimo riscontrarlo nel parlare di software open-source, ed in questo senso, tanto da utilizzatore, quanto da sviluppatore sto totalmente con Torvalds quando afferma:

    GPL 2 is about a “quid pro quo”: If I give you my open-source software, you’re free to use it but must give the world back any changes you make, the reason for the GPL as far as the FSF is concerned was never ‘fairness.’

    Non ci sono minacce da fare: se dare il tuo lavoro senza farti pagare ti infastidisce, allora non farlo. Semplice.

  7. Avatar xan
    xan

    Sicuramente è corretto. Ma per tutta una serie di motivi la LF prende un pacco di soldi, questo povero cristo nessuno.

    In ogni caso la GPL non prevede supporto o garanzia o altro. Se stai usando il prodotto in modo improprio non è colpa dello sviluppatore.

    Con il suo repository può farci quello che vuole.

  8. Avatar Raoul Scarazzini

    Con il suo repository può farci quello che vuole.

    È assolutamente corretto, ma devi aggiungerci: non su GitHub. Sul fatto che il codice rimanga di proprietà dell’autore nessuno discute, infatti è la piattaforma proprietaria che lo stesso autore usa per sviluppare (e promuovere, e far usare agli altri) il proprio software che crea la variante nel ragionamento.
    Piaccia o no è così.

  9. Avatar michele
    michele

    “è come se mi bloccano l’account su FB ma rimangono online tutte le foto ed i post ed io non posso farci nulla.”
    Sai che credo che sia così. Se non ricordo male, tutto quello che pubblichi su FB è di proprietà di FB.

  10. Avatar xan
    xan

    Ma se hanno rollbackato l’ultimo commit l’autore non è più proprietario.

    Sto dicendo che GitHub può reputare il comportamento non idoneo e rimuovere autore e codice.

    Non trovo corretto rimuovere l’autore ma tenersi il codice. In pratica è un esproprio

  11. Avatar xan
    xan

    Si ma quando rimuovi l’account con il gdpr sono obbligati a rimuovere tutto.

  12. Avatar Alien1900
    Alien1900

    Non c’è nessun esproprio, l’autore è chiaramente indicato. L’autore è proprietario del codice e ne rimane githut è un repository dove si trova il codice che ha deciso di bannara l’autore dato che questo si è comportato in modo malevolo. Il codice è su github e li può rimanere dato che l’autore ha scelto di distribuire il codice con la licenza MIT, quindi chiunque ne può fare una copia se rispetta la licenza.

    Se l’autore voleva essere pagato avrebbe dovuto usare una licenza diversa, non si può pensare di distribuire un programma con la MIT e poi a un certo punto decidere di fare un ricatto per farsi pagare.

    Se gli autori potessero fare del codice che rilasciano quello che vogliono l’intero open souce collasserebbe, invece le licenze danno delle garanzie. Se io uso una certa libreria grazie alle licenze so che quella libreria potrò usarla per sempre e non che da un giorno all’altro potrebbe sparire bloccandomi l’ambiente di produzione.

  13. Avatar xan
    xan

    Facessero un fork allora, perché deve rimanere nel repository creato da lui?

  14. Avatar Alien1900
    Alien1900

    Perché il repository non è suo. Lui usava gratuitamente le infrastrutture di github ma il repository era e rimane di proprietà di github.
    Vuoi una cosa di tua proprietà, installi un suo server git su una macchina di tua proprietà oppure cerchi un servizio che ti fornisce un controllo completo del repository. Però normalmente questi servizi ti chiedono di pagare per avere un controllo completo.

  15. Avatar xan
    xan

    si chiaro, ma personalmente non trovo la cosa corretta e non penso neanche legalmente valida.

  16. Avatar Alien1900
    Alien1900

    Legalmente è sicuramente valida. La licenza di github che viene accettata per usare il servizio dice chiaramente che loro possono sospendere l’account in ogni momento senza darti motivazioni.

    Moralmente per me è corretto. Siti come github non sono repository privati degli sviluppatori. Sono sito che servono per condividere il codice tra sviluppatori, è quello il loro scopo. Chiunque intenzionalmente cerca di danneggiare il codice è giusto che venga bloccato, anche se è lo stesso autore.

    Come ho scritto sopra se uno non vuole lavorare gratis per aziende private deve solo scegliere una licenza che per esempio vieta l’utilizzo commerciale del codice. Però in questo caso è facile che il codice non venga usato da nessuno.

    Non si può pensare di “regalare” il proprio codice e poi in seguito di lamentarsi della cosa, comportandosi da bambino.

    Mi ricorda quelli che vanno su Wikipedia, scrivono per un pò, poi hanno degli screzi con qualcuno e pretendono di far cancellare tutto quello che hanno fatto. Peccato che non funziona così, una volta che contribuisci al progetto, il tuo lavoro diventa di tutti e ne perdi il controllo. Se non ti va bene, non devi contribuire.

  17. Avatar xan
    xan

    mi sembra che parlo arabo a volte…

    l’aspetto che trovo illegale, è “l’esproprio del repository” non il ban dell’account, avrebbero dovuto bannare l’account e rendere inaccessibile il repository…. magari facendo un fork

    non trovo giusto che il codice sia accessibile dallo stesso url di prima, con lo username dell’autore originale nella url.

    avrebbero dovuto creare un fork, con un altro owner e bloccare/rimuovere tutto quello sotto l’account originale

  18. Avatar Alien1900
    Alien1900

    E io ti ho scritto che la licenza di github è molto chiara. Il repository non è tuo ma di github. Loro ti lasciano usare il servizio ma se vogliono possono bannarti senza nemmeno spiegarti il motivo.

    Usare un servizio gratis porta anche a questo.

  19. Avatar xan
    xan

    mi è chiarissimo ma non è che qualunque cosa scritta sulla licenza sia automaticamente legalmente valida.

    a mio giudizio la parte che possono bannarti ma tenersi il contenuto da te prodotto (senza fare fork) va contro ad esempio al GDPR

    mia opinione personale

  20. Avatar Alien1900
    Alien1900

    Bisognere sentire un avvocato (cosa che non sono) ma il GDPR regola la protezione dei dati personali. Quindi magari l’autore potrebbe chiedere la cancellazione del suo nome, ma non del suo lavoro.

    Anche perché se ci fosse un vero problema con la GDPR sul codice scritto allora anche un fork sarebbe affetto dallo stesso problema.

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *