Connect with us

Linux

Intervista con il creatore di curl e sviluppatore di software Daniel Stenberg



Eanche se non usi il comando curl ogni giorno, è molto probabile che tu stia ancora usando curl e non lo sai. IoT e tantissimi altri servizi su Internet dipendono da libcurl per le operazioni di rete. Daniel Stenberg è uno sviluppatore di software svedese, destinatario del Polhem Prize 2017, su cURL. Recentemente ho fatto una rapida domanda e risposta con Daniel sull’avvio del progetto di ricciolo e sul suo flusso di lavoro quotidiano.



Chi sei e cosa fai?

Sono Daniel Stenberg. Uno sviluppatore di software che vive e lavora appena fuori Stoccolma, in Svezia. Le persone potrebbero riconoscermi principalmente come fondatore e sviluppatore principale del progetto curl. Il progetto open source che ho avviato che crea uno strumento da riga di comando e una libreria per eseguire trasferimenti Internet lato client. Anche se ovviamente ho partecipato anche a molti altri progetti open source e ho fatto cose come partecipare all’IETF per produrre le specifiche del protocollo Internet.

Come sei entrato nello sviluppo del software per la prima volta?

Nella prima metà degli anni ’80, quando ero ancora adolescente, alcuni miei compagni di classe e amici hanno iniziato con i computer e sono stato subito incuriosito e interessato. Potremmo passare ore a inserire le righe DATA dalle prime riviste di computer dell’epoca per far apparire uno stupido giochino o qualcosa del genere. Era l’età del Commodore 64 e nella primavera del 1985 fui finalmente in grado di comprarne uno mio insieme a mio fratello minore, Björn. Abbiamo subito imparato il Basic sulla cosa e dopo un po ‘ci siamo tuffati nella programmazione assembler e abbiamo imparato a scrivere demo e giochi e davvero spremere il più possibile dalla piccola cosa (google “Horizon C64 demo”). Da quell’età mi è piaciuto lo sviluppo di software.

Perché hai scelto un modello open source per curl?

Non c’era mai alcuna alternativa o dubbio nella mia mente che sarebbe stato open source già quando ho iniziato a lavorare sul codice nei progetti che utilizzavano altri nomi prima che diventassero curl. Il termine “open source” non è stato coniato fino all’inizio del 1998, appena prima del primo rilascio di curl. Prima di allora era solo … codice.

A quel tempo, ero già stato per diversi anni impressionato dalla quantità di codice disponibile gratuitamente là fuori, avevo già lavorato un po ‘sull’open source e volevo entrare a far parte della fantastica comunità di persone che contribuiscono alla ricchezza di disponibili gratuitamente Software. Non avevo nemmeno dubbi sul fatto che per riuscire a realizzare un buon progetto software partendo da un progetto per hobby fatto solo da me, sarebbe stato necessario renderlo aperto in modo che altri potessero dare una mano. Per farlo funzionare su piattaforme a cui non ho accesso. Per testarlo in ambienti che non posso raggiungere.

Dopotutto, era solo un piccolo strumento di trasferimento Internet. Niente di speciale o particolarmente avanzato …

Puoi condividere fatti interessanti e meno conosciuti sul progetto di ricciolo?

Molte persone pensano al progetto curl come “lo strumento della riga di comando” o forse anche come “lo strumento della riga di comando http” e penso che questo porti a domande su come curl possa essere 170.000 righe di codice o su come possiamo ancora correggere i bug ogni giorno nel progetto dopo 23 anni. La realtà è ovviamente che lo strumento da riga di comando curl è alimentato dalla libreria di trasferimento libcurl, che supporta 26 diversi protocolli di trasporto, è stato eseguito su 86 diversi sistemi operativi su 22 diverse architetture di CPU e può essere costruito per utilizzare 14 diverse librerie TLS ecc. Ha un’API versatile e potente ed è stato installato in dieci miliardi di installazioni in tutto il mondo. E tutti i protocolli si evolvono continuamente con nuove versioni e nuove pratiche e fare trasferimenti di rete su Internet significa comunicare con molte strane implementazioni di server dall’altra parte – e curl deve fare bene con tutti e nessuno di loro!

La relativa semplicità dello strumento da riga di comando e il fatto che non interrompiamo il comportamento aiutano a dare agli utenti l’impressione che curl funzioni allo stesso modo oggi di dieci anni fa, perché in molti modi lo fa. Le righe di comando che potresti eseguire dieci o quindici anni fa sicuramente funzionano ancora con curl. Ciò non significa che nel frattempo non abbiamo riscritto quasi tutto internamente per assicurarci che potesse farlo e continuare a funzionare con il modo moderno di fare le cose di Internet.

Che aspetto ha un “giorno nella vita” quando gestisci un progetto critico come curl?

Dal 2019 lavoro per wolfSSL. In wolfSSL offriamo supporto commerciale per il ricciolo alle aziende. Ciò significa che quando ho clienti con esigenze o progetti a pagamento, dedico parte della mia giornata a quelli per assicurarmi che siano felici. Ma mi assicuro sempre di poter occuparmi anche dei problemi di supporto più urgenti. Pagare i clienti mi permette di lavorare sui ricci tutto il giorno, a vantaggio di tutti.

Inizio la mia giornata lavorativa intorno alle 8 del mattino, dopo la colazione e dopo aver cacciato i ragazzi ai loro compiti scolastici (che ovviamente ultimamente sono stati soprattutto da casa). Rispondo alle e-mail di curl, rispondo alle domande di supporto di curl, mi occupo di problemi di curl, rivedo le richieste pull e le modifiche proposte e lavoro su nuove funzionalità e risolvo i bug di curl. Vivo in curl / curl su GitHub, sfoglio e modifico molto codice curl con Emacs.

Lavoro da casa a tempo pieno da molti anni e non ho colleghi fisicamente nelle vicinanze (sono l’unico dipendente svedese di wolfSSL), quindi le mie interazioni sociali avvengono principalmente su Slack, Twitter, mailing list e nell’IRC #curl canale. E l’occasionale riunione video con i clienti o i compagni di squadra di wolfSSL.

Di notte, quando il resto della mia famiglia va a letto, passo un paio d’ore in più sullo sviluppo dei ricci. È perfetto, poiché nel frattempo sono spesso arrivate alcune cose nuove e i lavori CI per le mie richieste pull hanno avuto il tempo di produrre un feedback a cui reagire e dare un altro giro.

Non tutto quello che faccio è legato all’arricciatura, quasi tutto è almeno correlato all’arricciatura in un modo o nell’altro.

Descrivi la configurazione hardware e software del tuo computer. Che hardware usi? E quale distro software / Linux (Unix) usi quotidianamente?


La mia macchina desktop di sviluppo più affidabile e principale per il mio churn quotidiano è un’installazione Debian Linux (sid / unstable) e due schermi 4K da 27 pollici. Uso KDE / plasma e ho passato molto tempo in Emacs, terminali e gdb. curl è ancora un progetto abbastanza leggero in termini di volumi di codice sorgente, quindi i miei tempi di compilazione e ricostruzione sono brevi anche se la mia macchina è in realtà piuttosto vecchia ormai. Un core-i7 con 8 core di diversi anni fa con 32 GB di RAM. Dopo la configurazione, la creazione di curl da clean richiede meno di 20 secondi. Una tipica invocazione dello script di configurazione di curl richiede meno di 30 secondi per me. Ovviamente faccio entrambe le cose abbastanza spesso però.

Inoltre, ho un “laptop per videoconferenze” dedicato (che esegue Windows), un “laptop da portare con me su viaggi / conferenze” (di nuovo Debian) e un mac mini per quando non riesco a evitare il debug dei problemi di macOS.

Ho la mia casa collegata con fibra e connessione 1000/1000 mbit.

Di quali app / software / strumenti open source non puoi vivere senza?

Emacs e gdb immagino. Emacs perché l’ho imparato già nel 1991 al mio primo lavoro in IBM e lo uso quotidianamente da circa tre decenni. gdb perché non c’è niente di simile e non riesco a capire come lldb non dovesse essere compatibile con gdb nei loro comandi.

Ma veramente. Ho vissuto diversi grandi cambiamenti nell’architettura del computer nella mia vita e finché posso sviluppare software sono bravo e posso sempre adattarmi a nuovi strumenti e modi quando necessario.

Qual è il miglior consiglio che hai mai ricevuto?

Onestamente non posso dirlo. Vorrei poter. Penso che in generale il mio modo di fare le cose sia guidato da ciò che vedo fare e con cui riescono i progetti di successo e da ciò che leggo e sento che leader di successo e sviluppatori open source condividono con il mondo – come geni collettivi piuttosto che individuali – ma posso ” t estrarre o identificare qualsiasi consiglio autonomo o quotabile che mi è rimasto impresso.

Che consiglio daresti a chi inizia da zero con il mondo dello sviluppo di software open source?

Scopri cosa è divertente, fallo e continua a farlo.

Deve essere divertente per farti affrontare al meglio le sfide e gli ostacoli lungo il percorso e per trovare la motivazione per scalare le montagne che a prima vista potrebbero sembrare troppo ripide. Devi farlo davvero e non aspettare o pensarci solo come una sfida teorica perché non sarà mai la stessa cosa. E non devi pensare che qualunque cosa farai avrà una gratificazione immediata o una storia di successo. Potresti dover continuare a fare queste cose per molto tempo prima che gli altri vedano la loro grandezza.

Durante la codifica:

  1. Ascolti musica di sottofondo?
    Lo voglio. La musica funziona alla grande per me per isolarmi dal resto del mondo e costruire una buona bolla. Mi aiuta a concentrarmi su ciò che leggo e su cui lavoro, escludendo il resto del mondo e l’ambiente circostante. Anche se non sono solo in casa, uso delle buone cuffie con cancellazione del rumore.
  2. Il momento migliore per scrivere codice per te? Di giorno o di notte?
    Non credo sia importante per me. Se ho solo un obiettivo o una missione chiari, posso essere focalizzato sul laser e super guidato indipendentemente dall’ora del giorno.
  3. Te o caffè?
    Caffè. Nero senza zucchero.
  4. IDE / editor di testo?
    Emacs
  5. Suggerimento shell preferito?
    Il mio miglior consiglio per la shell è mostrare il ramo git corrente nel prompt della shell!
    Ho anche notato che stavo costruendo curl così spesso nel mio terminale che ho finito per creare un alias per “b‘che funziona “make -sj7“Nella mia directory curl. Mi fa risparmiare molti colpi di chiave ogni giorno! (e prima che qualcuno me lo chieda, io uso -j7 risparmiare un core, che ho notato aiuta quando ad esempio faccio live streaming mentre ricostruisco curl)

Cosa fai quando non stai hackerando curl?

Adoro passare il tempo con la mia famiglia (moglie e due figli), ad esempio andando a sciare in inverno. Mi piace anche giocare a floorball, che è la mia attività sportiva ricreativa preferita che svolgo regolarmente o nella metà più calda dell’anno mi piace il kayak.

Nota dell’editore: Puoi seguire Daniel Twitter/ home page per le avventure quotidiane dello sviluppatore di software open source. Questa intervista è stata condotta il 19 marzo 2021.




Ti e piaciuto questo articolo?
Supporta il mio lavoro, facendo una donazione!

Click to comment

Leave a Reply

Esegui l'accesso per Commentare.

Di tendenza

Close Popup
Questo sito utilizza i cookie per migliorare servizi ed esperienza dei lettori. Se decidi di continuare la navigazione senza blocchi premi su Accetto, oppure continua tranquillamente la navigazione, nessun dato sulla tua navigazione verrà raccolto.
Close Popup
Privacy Settings saved!
Impostazioni

Quando visiti un sito Web, esso può archiviare o recuperare informazioni sul tuo browser, principalmente sotto forma di cookies. Controlla qui i tuoi servizi di cookie personali.

Questi cookie sono necessari per il funzionamento del sito Web e non possono essere disattivati nei nostri sistemi.

Cookie tecnici
Per utilizzare questo sito web usiamo i seguenti cookie tecnici necessari:
  • wordpress_test_cookie
  • wordpress_logged_in_
  • wordpress_sec
  • swpm_session

Google Adsense
Usiamo la pubblicità di Google solo per mantenere attivi i nostro sito. Con ip anonimizzati.

Rifiuta tutti i Servizi
Save
Accetta tutti i Servizi