il problema è che questi co-worker ci sono e se usati con giudizio aumentano di molto la produttività, quindi la gente li sta usando pochi rinunceranno a farsi fare del boilerplate code o dei bei commenti perché questo non sarebbe etico, I'm afraid ... ed essendo l'etica una mediazione sociale (a meno che .. ma vabbè), il resto del ragionamento lo possiamo lasciare come esercizio piuttosto mi chiedo come facciano quelli di Gentoo a capire esattamente come è prodotto il codice che i contributori committano devono proprio essere grandi accher! :-)) G. On Wed, 24 Apr 2024 at 01:41, Giacomo Tesio <giacomo@tesio.it> wrote:
Ciao Claudio,
Il 23 Aprile 2024 23:15:29 CEST, Claudio Agosti < claudio.agosti@hermescenter.org> ha scritto:
Ciao Giacomo; capisco le ragioni che ci sono dietro, ma devo dire che ho provato un paio di sistemi di assistenza allo sviluppo.. ed il mio giudizio finale è che sono d'aiuto anche ad uno sviluppo responsabile ed informato.
Forse nel tuo caso riesci ad usarlo bene perché sei perfettamente consapevole che non si tratta di codice scritto da una mente che ne comprende il significato (come quello scritto da un collega in peer programming).
Io l'ho visto usare a colleghi più giovani in peer programming, ed in più di un'occasione il tempo richiesto per il refactoring/debug del output è stato maggiore del tempo necessario a scrivere il codice da zero (sapendo cosa scrivere).
I colleghi in questione tendevano a fidarsi troppo dei "suggerimenti" e soprattutto non imparavano dagli errori del software (forse perché non li vivevano come propri?) Non solo: in un caso ho provato a far notare al collega i problemi che avevamo osservato durante la sessione di pp, ottenendo una reazione piuttosto piccata, come se avessi messo in discussione la sua competenza invece di quella di Copilot.
L'esperienza fin'ora mi ha lasciato un senso di diffidenza nei confronti del codice committato da chi lo usa (cui corrispondono review più lunghe, meticolose, faticose e nettamente più costose per l'azienda).
Riflettendoci, potrebbe anche aver senso tenerne conto in fase di colloquio: a parità degli altri fattori, chi non necessita di LLM per scrivere il proprio codice ha probabilmente prospettive di crescita maggiori.
Forse può essere utile se già conosci perfettamente il dominio del problema e il contesto di sviluppo (librerie, framework, servizi) nel cui caso riduce i tempi di battitura, ma onestamente non credo che siano davvero "tempi morti": l'atto di scrivere il codice "lentamente" serve a rileggerlo più volte, criticamente, individuando in anticipo potenziali problemi.
Inoltre, tale sforzo è utile a ricordarlo e dunque a debuggare mentalmente un problema più rapidamente.
sono assistito nel generare unit test più rapidamente.
Sarà sfiga, ma non gli ho visto produrre in output test utili se non in casi esteremamente basilari (come funzioni pure di natura algebrica)
Nella quasi totalità dei miei casi d'uso, la quantità dei mock da configurare rende semplicemente inutile quei tool.
Leggermente più utile è nella scrittura di esempi di utilizzo per la documentazione (ma anche in quel caso, bisogna sempre rileggere e testare manualmente che la stronzata è dietro l'angolo.
Secondo me posizioni come quella di Gentoo, sono importanti per dare un segnale, per fare un racconto di una comunità più attenta, ma poi sotto sotto, se committo del codice scritto con l'aiuto di chatgpt + co-pilot, costantemente rivisto da me... si può dire che il mio contributo sia stato AI-generato?
Sì beh... stai completamente ignorando il problema etico.
Se copi il codice che ho donato al mondo sotto un copyleft forte (supponi AGPLv3 o magari Hacking License[1]) in un progetto distribuito con una licenza incompatibile (proprietaria o permissiva che sia), sei uno stronzo e lo sai.
Se lo fai perché te lo suggerisce CopyALot, sei comunque uno stronzo, ma non lo sai.
O meglio, scegli di non saperlo, di lavartene le mani perché... "AI".
Non saprei dire, in termini di filosofia morale, se questo ti renda doppiamente colpevole o meno.
Penso però si tratti di una di quelle situazioni in cui il soggetto è pienamente consapevole che dalle proprie azioni deriverà un danno a terzi, ma non conoscendo personalmente i terzi, se ne sbatte.
Che sia usare Copilot per "risparmiare tempo", vendere criptomenate per non restare col cerino in mano o persino costruire proiettili, la questione mi sembra moralmente analoga.
Non mi sono limitato a premere tab, ma ho fatto un lavoro di selezione, riflessione, e guida di quello che mi è stato suggerito. Mi sento comunque autore e responsabile dei pezzi di codice scritti, anche se c'era un "autocomplete" un bel po' più sofisticato del solito.
Per questo dovresti analizzare con più attenzione le implicazioni etiche.
Anche se produci sempre codice "open", quel codice deriva dal codice donato da altri perché sia sì riutilizzato, ma a certe condizioni, prima fra tutte un'attribuzione corretta [2]
Tu stai inevitabilmente violando quelle condizioni.
Se te ne senti davvero responsabile, come concili la consapevolezza di sfruttare il lavoro di migliaia di altri sviluppatori di software libero senza neppure citarli e la tua idea di te?
La scarsa probabilità di essere beccati è rilevante dal punto di vista legale, ma da quello morale no.
Per il software libero questi LLM costituiscono un danno secco: hai notato che Microsoft si è guardata bene dall'usare i propri sorgenti per programnare statisticamente GitHub Copilot?
Perché?
Poteva farlo senza incorrere in ovvie violazioni delle licenze di terze parti.
E mediamente il codice Microsoft è più testato, documentato e... "professionale" di quello caricato su GitHub.
Non l'ha fatto perché era ben consapevole che quel sorgente sarebbe stato distribuito ed incorporato dentro prodotti proprietari di concorrenti. E non voleva danneggiare sé stessa, per cui ha scelto di danneggiare tutti gli sviluppatori di software libero che sono individualmente più deboli (e collettivamente disorganizzati).
Per questo, anche se funzionassero bene, preferisco non usare simili strumenti.
E trovo eticamente molto grave favorirne lo sviluppo e normalizzarne/legittimarne l'utilizzo [3].
Giacomo
[1] <https://encrypted.tesio.it/documents/HACK.txt>
[2] il noto caso di Quake è stato solo più facile da identificare, ma CopyALot funziona sempre così (al netto di string replace) e non può che funzionare così < https://peertube.opencloud.lu/w/eW497u3UYXmQwcQu9LYEDR>
[3] vedi ad esempio < https://www.softwareheritage.org/2023/10/19/swh-statement-on-llm-for-code/
_______________________________________________ nexa mailing list nexa@server-nexa.polito.it https://server-nexa.polito.it/cgi-bin/mailman/listinfo/nexa