Daniel Stenberg – cURL, Rockbox och FOSS-Sthlm
Våren 2009 lärde jag känna Daniel genom att vi på jobbet funderade på att använda libcurl. Det slutade med att jag hackade lite på det och att vi således drog igång FOSS-Sthlm som i sin tur ledde till att vi fick hit RMS som ledde till denna publikation. Daniel är en hacker extraordinaire och det är nog inte många som undkommit att använda, eller något som använder, cURL eller annat han stoppat sina fingrar i.
Du var aktiv inom C-64 demoscenen (Confusing Solution, Super Swap Sweden, Horizon) i slutet på 80-talet. Kan du brätta lite om detta och din övriga bakgrund innan du blev involverad i öppen källkod?
Jag upptäckte tjusningen med datorer nån gång i början av 80-talet. Jag och en klasskompis (Kjell) skrev in data-satser i BASIC från några av de första C64-tidningarna hemma hos honom och jag var såld. När jag och brorsan Björn jobbade extra på loven samlade vi ihop till vår första dator som vi köpte när jag var 14 år.
Jag gick direkt in för att programmera och lärde mig snabbt BASIC och hur man kunde göra enkla grejor. Vädligt snart insåg man att de coola grejorna man kunde se andra göra och alla spelen och så inte var gjorda med BASIC. Vad använde de? Assembler.
Så vi tre (jag, Kjell och Björn) dök helhjärtat in i 6502-assemblerns underbara värld och vi började hacka demos för vi gillade såna och vi vill också göra demos. Vi insåg att alla fanns i demo-grupper och hade nick-names och så, och vi var inte sämre utan blev snabbt ”Confusing Solution” (vi kunde vara självironiska redan då).
Av en ganska lycklig slump organiserade Triad och Fairlight (två av den tidens giganter på ”demo-scenen”) ett ”copy-party” i vår högstadieskola i Huddinge senvintern 1986 och vi sögs än djupare in i andan och gemenskapen. Där träffade vi likasinnade, släppte vårt första demo någonsin och senare under våren 87 blev vi rekryterade av Fonzi till Super Swap Sweden som då var en stor och känd grupp som gjorde både ”cracks” och några demos. Vi släppte fler demos under SSS-flaggan och blev bättre och lärde oss mer om C64:ans alla odokumenterade hörn, opkoder och kretsar.
En del av oss hoppade av SSS efter ett tag och skapade istället Horizon tillsammans med ett gäng andra demo-hackers och nu var vi ledande. Vi vann en hel rad av demo-tävlingar i Sverige och Danmark under flera år. Vi organiserade också några av de största nerd-träffarna i norden under den perioden.
C64:an gyllene tid dalade bort sakta men säkert för oss, och flera av oss kikade på att göra hoppet till Amigan och fortsätta likadant där – det var ju vanligt på den tiden – men Amigans helt ”obegränsade” förutsättningar med ohemult mycket ram, supersnabb CPU, blitter och musikkrets tog på något vis bort mycket av vad vi ansåg vad charmen med demo-hacking. Vi släppte bara ett enda demo på Amigan.
Istället drog jag och Kjell runt 1991 igång projektet FrexxEd – en text editor för Amiga. Samma år – 20 år gammal – debuterade jag på riktigt i IT-branchen genom att börja på IBM och jag jobbade där med RS/6000 och dess OS som hette och fortfarande idag heter AIX. Min först introduktion till unix och C. Wow. Jag var såld. ”Unix är framtiden!” sade jag till min tjej då (hon skulle senare bli fru Stenberg och är det fortfarande), som förstås inte hade en aning om vad jag pratade om… Jag lärde mig allt jag kunde främst genom man-sidor.
På IBM lärde jag mig att det fanns massor med gratis källkod till program att tillgå. Att det finns en ascool editor som heter Emacs som man kan göra allt med. Mycket av inspirationen och idéer till FrexxEd som vi alltså jobbade på vid den tiden fick jag genom mina upptäckter och lektioner med Emacs på jobbet. Emacs på amigan fanns visserligen men den kom inte till rättvisa där och vi såg att vi kunde göra bättre i den (begränsade) miljön.
I princip det enda som vi gjorde på Amigan var att hacka FrexxEd – och jag skrev även ett separat script-språk för editorn – Frexx Programming Language (FPL) – som jag skrev portabelt att byggas och köras på divers unixar likväl som Amiga etc. Under tiden hackade Björn ihop ett BBS-system under OS/2 som i princip skrevs helt och håller i FPL.
1993 började jag jobba som C-utvecklare på riktigt (på Frontec Railway Systems) och skrev inbyggda system som mätte temperaturer på tågaxlar som passerade mätstationer – och jag kom i kontakt och fick hacka på både SunOS och DELL Unix på jobbet. Jag upptäckte IRC och att det fanns massor med folk därute att snacka med. Jag hängde en hel del på #amiga på efnet, innan ircnet fanns. Det ledde snart till att jag på fritiden skrev på en IRC-bot tillsammans med en kompis från #amiga – en bot som kunde scriptas med FPL… Vi släppte botten (Dancer) och FPL helt open source. Det var liksom inte mycket att fundera på. Om vi kunde stå på jättars axlar och använda så mycket bra programvara så var det minsta vi kunde göra att likaså dela med oss.
Nu var Amigan ute ur mitt liv, nu använde jag jobbets modem-pool med dial-back till att logga in på jobbets olika unix-maskiner och IRC:a och hacka bots. Jag hängde väl en del i #amiga och #amigaswe fortfarande då massor av folk där var mina vänner.
En dag slog det mig att det ju vore cool att ha en tjänst till botten där man kunde be den växla valutor. Många gånger diskuterades priser, så varför inte kunna erbjuda att botten kan säga vad 100 SEK blir i dollar just idag etc? OK, då behövs ett kommandorads-verktyg som kan ladda ner kurser från en webb-sida.
Jag hittade ett litet verktyg som hette ‘httpget’ och var skrivet av en Brasilianare. Det passade nästan perfekt. Det behövdes bara lite små fixar och patchar. Jag donade till…
Snart hade jag väl mer eller mindre tagit över ledartröjan i projektet när jag hittade en valuta-sajt som fanns på GOPHER så jag fick implementera support för det också. Och då var ju ‘httpget’ inget bra namn längre så det fick bli ‘urlget’. Snart hade även FTP-support lagts in och när väl FTP var stött var steget till att få till upload väldigt litet.
När verktyget även kunde göra upload hade ju namnet blivit fel igen så det blev till att byta igen. curl var fött. curl som i ”see URL” eller ”client for URLs”. I mars 1998 kom första releasen av curl.
På namnet låter det som Frexx är kanske är besläktat med REXX (och således ARexx) – stämmer det eller är det bara ett ovanligt sammanträffande?
Det var faktiskt inte avsiktligt, utan blev mest en lite jobbig koppling. ARexx användes ju flitigt på Amigan som script-språk i applikationer, medan vi ju använde FPL. Kanske var det inte det smartaste namnet, men vi gillade det! ==)
Just ”Frexx” kom till mest som ett skoj-ord. Mer som ”fräckt” skrivet på ett annorlunda sätt – med ”Ed” ditlagt i slutet i samma stil som flera andra text- editorer gjorde på Amigan på den tiden. Just två x i slutet av ordet är något som vi tyckt om länge, vilket ju också senare resulterade i att vårt företagsnamn fick två x i slutet.
Öppen Källkod verkar ju funka för jag hittade repon med både FrexxEd och FPL på github och de har hackats på detta år verkar det som.
Verkligen. Just FrexxEd var dock shareware väldigt länge. Vi kom ju från C64:an och Amigan där FOSS var ett obekant begrepp och det fanns liksom inte alls inom kulturen – synd nog. Men till slut lärde vi oss den rätta läran och släppte det helt öppet och i modern tid har folk som idag kör något av de nya Amigaos-versionerna fått upp intresset för FrexxEd och de har portat det. Det är förstås kul att det fortfarande lever – över 20 år gammal kod.
Det är väl framförallt cURL projektet du är mest associerad med men även Rockbox, libssh2, c-ares är du väl rätt aktiv i? historiskt, vilka andra projekt har du involverat dig i?
curl är det som ligger mig närmst och hjärtat och det projekt där jag fortfarande spenderar mest tid på. Sedan kommer nog libssh2 och c-ares.
Jag började som sagt med Dancer, en IRCbot, och jag spenderade en hel del tid i hypermail – ett program för att konverta mailboxar till HTML-sidor. Jag har skrivit ‘mail2sms’ för att konvertera mail till SMS, och varit med i Smash för att skicka SMS till operatörers modem-mottagare. Jag är med i Trio – ett *printf och sträng-hanteringslib. Jag har bidragit med kod till och jag är med och ”tycker” i wget. Jag var tidigt med och var committer i Subversion-projektet. Jag skriver och underhåller ‘roffit’ – ett verktyg för att skapa HTML-sidor från nroff-filer. Jag var med och startade Rockbox och jag har bidragit med tusentals commits där, även om jag numera inte bidrar så väldigt aktivt där längre. Jag kommenterar lite på git-listan och hjälper dem använda libcurl så bra som möjligt… det finns en binge till, och några har jag säkert glömt bort.
Ohloh.net räknar över 20000 publika commits jag gjort i opensource-projekt, och även om jag vet att det finns en del svenskar som har fler så tror jag inte det är många.
Det är inte direkt FOSS, men jag försöker aktivera mig och tycka och ha åsikter inom IETF och de arbetsgrupper som jobbar med protokoll och grejor som intresserar mig. Därför finns jag numera nämnd i två RFC:er och jag försöker ge mina bidrag inom HTTP, FTP och liknande.
Många RFC:er tar ju väldigt lång tid och det känns som en del byråkrati kring det vilket jag har svårt för; speciellt som FOSS utvecklare där jag är van att saker går rätt snabbt fram. Är det samma för dig eller är det ibland långsamma tempot positivt?
För mig är jobbet inom IETF mycket mer en fråga om teknik och interoperabilitet etc. Att vara med och se till att specar blir gjorda rätt, tar rätt saker i beaktande och inte går över gränsen till saker de inte borde. Det främjar alla.
Som exempel kan nämnas jobbet som nyligen gjordes inom IETF för att speca hur cookies används i HTTP. Cookies har funnits i kanske 15 år och den enda spec som egentligen använts är på hundra rader och är totalt oanvändbar. Försök har gjorts genom åren att rätta till det men de misslyckades. Till slut startades en grupp som jobbade med att pränta ner hur cookies faktiskt fungerar idag. Jag kände att jag som implementatör av en cookie-”maskin” som funkat bra i många år kunde bidra med rätt bra feedback och en helt annan vinkel än de flesta andra som var med där – som merparten kom från webbläsarvärlden. Jag var glad att kunna ge min input för bidra till att RFC6265 blev så pass bra som den blev!
Du berättade att cURL växte fram ur httpget men innehåller den fortfarande någon kod därifrån eller gjordes cURL som en clean re-write?
Det var aldrig någon rewrite, utan bara en gradvis omskrivning. Mer och mer skrevs om och en dag fanns det helt enkelt inga spår kvar av det ursprungliga programmet kvar. httpget var ett mycket litet och enkelt program på bara några hundratals rader C. Rafael Sagula, han som skrvit httpget, var kvar i projektet i början och var helt med på vad som hände och hur jag förändrade det.
Jag är lite ledsen över att vi inte har en komplett versions-historik ända tillbaks till den första tiden. Vi bytte hosting och versionshantering flera gånger och i början var vi inte så nogräknade med historiken. Den äldsta koden vi har kvar i git är från slutet av 1999. Den äldsta tarbollen vi har är från början av 1998.
Din Ohloh.net kudos rank är #63 och nyligen har Google uppmärksammat ditt arbete med cURL. Jag antar att du tycker detta är roligt men sätter det inte lite extra press en att man ska hjälpa nykomlingar, skriva kod på ett visst sätt och allmänt vara ett bollplank?
(Daniel om Googles tack för cURL: http://daniel.haxx.se/blog/2011/12/06/a-special-thank-you-from-google/)
2009 fick jag också utmärkelsen Nordic Free Software Award tillsammans med Simon Josefsson. Sammantaget görs såna här saker förstås att jag känner mig uppskattad och att mina insatser syns i åtminstone en del sammanhang…
Jovisst. Jag känner absolut att jag har en extra skyldighet att göra rätt där jag är involverad även om jag också i ren foss-anda anser att alla som vill få saker gjorda någonstans i första hand ska se till att själva kliva fram och ta initiativet till en förändring. Men det är också det jag gör som gör att jag får uppskattning. Det blir en positiv spiral.
Oavsett ranking på en speciell sajt (vars ranking-system i övrigt är mycket märkligt och inte värt att lägga alltför mycket vikt vid) så känner jag att jag varit med länge, gjort mycket och har ett socialt nätverk som ger mig ett bra fundament för att stå upp för det som jag tycker är rätt, och för att streta emot där jag tycker fel begås.
Jag vill hjälpa till och förbättra världen där jag kan, och FOSS-världen är ett område där jag försöker.
Ditt företag Haxx sysslar en hel del med embedded där linux har blivit väldigt populärt. Hur har din erfarenheter från ”resurssnål” demo-programmering på C-64 hjälpt dig?
Det var verkligen min inkörsport till vad jag är och gör idag. Jag har aldrig riktigt lämnat ”metallen” sedan dess, utan har fortfarande kvar känslan av att det är nära hårdvaran och OS:t som allting är som bäst. C64:an gav mig insikten exakt hur CPU:er och assembler fungerar, sedan har det förstås utvecklats massor sedan dess men det var en kanongrund.
På Haxx är vi fyra styckan personer. All vi fyra var med i Horizon, demo-gruppen vi skapade 1988…
Haxx är lite av min dröm sedan hur länge som helst omvandlad till verklighet. Vi är ett litet antal nära vänner som alla är experter på inbyggda system och Linux. Vi jobbar som expert-konsulter för företag som bygger diverse inbyggda system, och ofta hjälper vi de som i sin tur är de som bygger grejorna till slutkunder.
Inbyggda system idag betyder i väldigt hög grad Linux och massor med open source. Faktum är väl egentligen att Linux och FOSS ökar överallt utom kanske på desktop.
Hur har din inblandning i olika FOSS projekt hjälpt till för att få uppdrag och hur brukar era kunder ställa sig till att dela med sig av det ni gör för dom om du t.ex. utökar en FOSS komponent?
Jag får en hel del förfrågningar runt uppdrag som kommer som en direkt effekt av att jag involverat mig i FOSS-projekt, ja. Det är en ganska bra form av marknadsföring för mig och mitt företag. Fast jag kan också fascineras över hur många av mina kunder som inte alls har koll på min ”FOSS-sida” eller inte bryr sig alls om den.
När det gäller direkta uppdrag att modifiera existerande projekt, som kanske att lägga till features eller förbättra någon del, så brukar det inte vara några problem. Uppdragsgivarna är då ofta redan från början införstådda att det är någon form av opensource-licens involverad. Det händer t.om ganska ofta att det är ett direkt krav i kontraktet att förändringar de betalar för SKALL gå in i mainline – vilket också säkert är varför de gärna köper tjänsten direkt av den som maintainar projektet för då är chanserna för det mycket bättre. Självklart finns det också fallen då kontrakt på beställningar mer eller mindre förutsätter att all kod man skriver på ett uppdrag ska förbli stängd och företagets hemliga egendom, men det brukar inte vara ett problem utan mer en effekt av hur mycket programutveckling har gjorts genom tiderna.
En lite lustig detalj i sammanhanget är dock att flera av mina kunder inte har velat skylta med sin egen närvaro i projekten utan har betalat för att få förändringar gjorda, men utan att copyright anges till företaget och utan att företaget nämns i några som helst publika sammanhang! För omvärlden förefaller det då bara som att jag fått extra inspiration och energi under en period… Personligen tycker jag det är att försitta en chans till god publicitet.
cURL har funnits sedan 1996 och växer ständigt. Hur kom det sig att du valde BSD licensen över t.ex. GPL och hur känns det att cURL används i välidigt mycket annat så som git?
Från början visste jag inte riktigt vilken licens jag skulle ha, utan använde faktiskt GPL utan att riktigt tänka efter. Med tiden kom jag att diskutera licenser med vänner och fundera över vad som är rätt och fel och vad jag egentligen ville med licensen till curl.
1998 när jag släppte curl 4.9 så bytte vi till MPL-licensen. Den är mycket liberalare och passade mycket mer med vad jag egentligen ville att folk skulle göra: bidra med förändringar om de faktiskt ändrar curl-koden men i övrigt kunde de göra vad de ville.
Det visade sig dock vara ett osmart val när jag väl lanserade libcurl – curl som ett library gjort för andra program att använda – eftersom MPL ansågs vara GPL-inkompatibelt så folk som använde GPL kunde inte enkelt använda libcurl. Så 2001 blev libcurl MIT-licensierat istället och jag har inte ångrat mig sedan dess.
Självklart inser jag att folk kan ta min kod, ändra i den och skeppa den med sina grejor och bli miljonärer utan att jag nånsin får tillbaks förändringarna eller så. Men i realiteten är det inte ett problem eftersom folk inte vill fastna i sina egna forks och genom att undvika copyleft-licens har jag tvärtom lyckats locka mängder med företag att använda min produkt. Företag som annars skulle skippat den och kanske använt något stängt istället.
curl-sajten listan 120-nånting företag som använder libcurl i kommersiella produkter. Sen tillkommer förstås några hundra foss-projekt såsom git som använder det.
Det känns helt enkelt otroligt bra. Det ger mig också en position av ansvar och noggrannhet, eftersom fel och misstag som slipper ut lätt kan drabba väldigt stora mängder användare – om jag har otur. Och det händer förstås ändå då och då…
Detta kan väl vara ett ibland halvsvårt övervägande – dels vill man kanske sälja konsultjobb eller support kring ens mjukvara men dels vill man att många ska använda den och förbättra den.
Ja absolut, det är helt fullt av paradoxer runt detta!
Jag skulle kanske allra helst få massor med betalda uppdrag att förbättra och utöka curl, men i verkligheten så är det redan ett väldigt komplett och stabilt projekt. De flesta som behöver något av det curl erbjuder hittar det redan utan att betala någon.
Varje utökning eller förändring som görs av mig i projektet på eget initiativ tar bort möjligheten för mig att göra samma sak åt någon för pengar, samtidigt som underhåll och ett levande projekt är det som gör att folk bibehåller förtroendet för projektet och min roll däri.
Ett mindre fungerande program skulle kunna leda till fler support- och buggfix- uppdrag == inkomst, men ett mindre fungerade program skulle vara mindre attraktivt i välja i första hand.
Just det faktum att curl har en väldigt liberal licens har gjort att företag väldigt sällan har några legala eller etiska problem med att använda det inom i princip vilka projekt som helst, vilket leder till att jag får rätt mycket frågor om support och en strid ström med patchar från folk på företag som använder curl.
Hur ser framtiden ut, är det några nya större projekt på gång eller intressanta saker som lockar?
curl är ju mitt pimära projekt. Mina engagemang i c-ares och libssh2 är direkt kopplade till att jag skulle få libcurl bättre, även om båda är stand-alone och oberoende från libcurl så är de byggstenar som behövs.
I samma anda har jag på senaste tiden kikat mycket på SPDY och då framför allt libspdy och jag har gjort mina första trevare där, och jag hoppas kunna jobba lite mer där framöver för att en dag kunna få libcurl att prata SPDY på samma sätt som browsers kommer att göra det inom en snar framtid.
I övrigt finns det massor med grejor kvar att fix och ordna inom curl-projektet och inte minst support och debugging av problem tar en avsevärd andel av min foss-tid (som till största delen än idag är fritid).
Jag planerar aldrig väldigt långt framåt utan hugger i när jag får syn på något. Jag bangar inte för att clone git-repos, patcha kod och pilla om för att få saker att funka. Om det är något jag får för mig att göra och de existerande alternativen inte är bra nog, ja då kanske jag antingen bidrar till det alternativ som verkar närmast dit jag vill, eller så startar jag ett eget projekt.
Jag vill också fortsätta se till att vi får grymma foss-sthlm-träffar med föredrag och aktiviteter som är roliga och intressanta. Med RMS-besöket och hur bra det gick med det, bevisade också att vi mycket väl kan klara av större arrangemang om vara villkoren är rätt…
Det två åren som vi kört FOSS-Sthlm nu har ju definitivt visat att det finns ett intresse både från communityn och framförallt från företag. Trodde du att det skulle bli så här stort?
Det trodde jag verkligen inte! Jag hade i min enfald fått intrycket att vi inte var så många med det här intresset i Stockholmsområdet efter att jag deltagit på diverse open source-, linux- och BSD- event genom åren. Att vi genom att bli mer tekniska och mer nerdiga kunde attrahera såhär många människor förvånade mig. Det har verkligen varit en superkul upptäckt och jag tror vi har mycket mer kul att hämta och göra inom foss-sthlm framöver.
Slutligen, för studenter och andra som vill bli involverade i FOSS vad är dina tips?
”Scratch your own itch” är ett mantra jag tror på. Det bästa är att gräva och fixa där man redan är. Har man ett program man inte gillar, några problem man har eller kan åtgärda? Någon dokumentation som saknas eller är fel? Kan man rita nya ikoner eller hjälpa till med att erbjuda support på en mailinglista eller forum för ens favoritprogram?
Har man aldrig gjort något inom FOSS tidigare så är det bäst att man börjar med att läsa. Läs utvecklar-mailinglistan för ditt favoritprogram ett tag. Läs deras forum. Kolla release-notes på senaste releasarna. Lär känna kulturen inom det projektet där du tänker dig att en insats av dig kan behövas.
När du fått lite hum om hur det verkar funka, posta dina förslag på förbättringar, dina buggrapporter eller dina patchar. Var beredd på att få förklara dig. Kom ihåg att det är vanliga människor du pratar med (med eventuella språkliga problem och kulturkrockar), var hövlig, ödmjuk och artig så kommer du hur långt som helst.
Väldigt vikigt är förstås: ha kul när du gör det!
One Response to Daniel Stenberg – cURL, Rockbox och FOSS-Sthlm
Lämna ett svar Avbryt svar
Arkiv







[...] Claes at foss-magasin.se asked a bunch of questions about me, my commitments within the FOSS community and related matters recently over email. This Swedish interview just now went public: Daniel Stenberg – cURL, Rockbox och FOSS-Sthlm. [...]