curl is used in command lines or scripts to transfer data. curl is also used in cars, television sets, routers, printers, audio equipment, mobile phones, tablets, settop boxes, media players and is the Internet transfer engine for thousands of software applications in over TEN BILLION INSTALLATIONS.. In this episode Daniel Stenberg the creator of Curl talks about his journey, how Curl came to be, the challenges and the benefits of being an open source project, and what he is up to now at WolfSSL. Daniel is a legend and Curl is an incredible tool that is used the world over!
POPCAST SHOW DETAILS
YouTube: https://bit.ly/3xgmmCj
Audio Podcast (Apple, Spotify, and others): http://bit.ly/35MXfte
Follow us on (Twitter): https://twitter.com/PopcastPop
Follow us on (Linkedin): https://www.linkedin.com/company/the-popcast-with-danpop
Timeline/Topic
00:00 - Opener/Sponsors
00:14 - Introduction to the creator of Curl Daniel Stenberg
00:36 - Daniel's Journey
04:15 - What big problem was CURL trying to solve?
09:30 - Donating Curl and libCurl as an open source project and the overall benefit of Open Source
13:32 - Do people take advantage of Open Source?
14:56 - Advice for Folx starting an Open Source Project.
16:10 - Things that really impressed Daniel on Curl contributions.
18:33 - What one element is what helped propel Curl adoption?
21:08 - What is the future of Curl?
23:00 - WolfSSL
25:30 - Daniel Stenberg, What work are you most proud of?
Please like and leave a comment if you enjoyed the episode! it helps the show!
Episode Links
free - ebook - https://curl.se/book.html
Brought to you by:
***SUSE Rancher Government Services***
***Cisco***
Check out Cisco's super informative blog https://ciscotechblog.com/
***CIVO***
Civo is an alternative to the big hyperscale cloud providers.
They've launched world's first managed Kubernetes service powered by K3s.
With sub 90 second cluster launch times, a simplified Kubernetes experience,
and predictable billing, Civo is on a mission to create a better developer experience.
Get $250 free credit to get started. Sign up today at https://civo.com/popcast
***Teleport***
Teleport allows engineers and security professionals to unify access for SSH servers, Kubernetes clusters, web applications, and databases across all environments. You can download Teleport at https://goteleport.com/popcast
***COCKROACH LABS***
Discover @CockroachDB the most highly evolved distributed SQL database on the planet.
Kubernetes-native and built from the ground up to help companies of all sizes including Bose,
Comcast, and Equifax scale fast, survive anything, and thrive everywhere.
Sign up for a free 30-day trial and get a free t-shirt at https://cockroachlabs.com/popcast
***Styra***
Learn how to operationalize Open Policy Agent at scale with Styra: https://hubs.ly/H0Pnkm20
- [Announcer] This episode of the "POPCAST" is brought to you by these sponsors.
- Hello everyone and welcome to the "POPCAST." So this is a winner of the Polhem Prize, the Polhem Prize! He's one of Sweden's finest. He probably has a lot of Ikea furniture. That's okay, so do I. He's the creator of cURL. He treasures his wife and two kids. This is Daniel Stenberg, welcome to the podcast, Daniel.
- Hello, thank you, good to be here.
- So look, we're gonna get into the cURL, everybody, but look, this journey doesn't... this journey gets to the cURL. Let's talk about your journey from beginning, the first time you started typing on a computer, saying, "I love this thing."
- Well, I started in the, I would say mid 80s when I learned about how Commodore 64 at that time. I actually have a friend--
- Timeout, timeout. We have to talk about this. So again, it's almost like we have a drinking game on the "POPCAST," cause anybody who joins the "POPCAST," it's always like this, especially in our age demographic, it's always the same thing. It's you started on a Commodore 64. I'm not stopping on the Commodore 64. I want to know, was it games? Was it games you were trying to play on the Commodore 64? What were you doing on it?
- Well, yeah, I think maybe that got my initial interest maybe when I sort of got my eyes open for the computer, but previously, when I actually became interested in programming and making it do what I tell it to do and sort of the wonders of, I can actually tell it instructions, and it will do what I tell it to do. And I figured that was fun and fascinating, so that got me hooked pretty soon.
- Got it, and so what were your early, like what early coding things were you doing? Just making like lights or making sounds? What were the things you were doing initially?
- Well, at first, of course, they were very basic things, actually, literally basic then of course, on the Commodore 64, like programming basic, but pretty soon I also learned that people were doing games and things could fly across the screen and much more complicated and advanced than basic. So me and my best friend, who also had a Commodore 64 at that time, we figured out, "Oh, they write things in assembly." So we got books and learned assembly and started to do things. Yes, so, demos and games and music, and all of that, actually we got into. We had a lot of fun, spent a lot of time on that.
- This is the drinking game. Anytime a Commodore 64 is mentioned on the "POPCAST," you just got to take a shot. I dunno, anyway, so moving on. So, we passed the Commodore 64. We go and we're like, "I love this, and I want to do," what, what happened then?
- Well, during that time, I got into the demo scene as they call it. It was pretty big in Europe. A lot of people had these meetups when we had hundreds of people in the schools every weekend and so on, and at demo competitions where we would write stuff like that. And in that period of time, of course, I got to know a lot of other Swedes and people around me that were also interested in this, and eventually that led me so that when I was 20 years old, I got an offer for a job at IBM, because I had a friend who worked there, and he knew that I knew a thing or two about computers. So, I didn't go to university at all, so I started at IBM instead. And that wasn't really development, that was just installing and configuring Unix machines or AIX machines, or AX6000. But that was the first stepping stone into actually working with IT and computers. So, after two years at IBM, I got an offer to do a development job, and then I started doing development full-time. And since then it's been development.
- Got it, all right, so everyone, I'm gonna start, but okay. What problem, the big question, everyone, what problem were you trying to solve with cURL? And I'm gonna give you my background on cURL, okay? The first time I ever used cURL was, I want to say '99, I think, and I was troubleshooting some connectivity for like, it was an external website or something of ilk. And so I'm like, "Oh, there's libcurl," and you can do cURL, and it was fine. And I was like, "This is really cool." And then literally from that part of my career all the way to now, it was like, "Oh, I'm testing API, use curl -k." Or, if you're using Kubernetes, now cURL, you know what I'm saying? So REST and all these things and be able to like test all those end points, and I'm just like, "Man," I can't believe I'm talking to you, dude. I mean, that's just the bottom line. So I want to know the problem you were trying to solve with cURL.
- Right, but I also think, I mean, looking back at the journey from what I started and from where now, I, of course, had no idea about where we were going or even where the internet or REST APIs and everything, whatever the thing that was going, so it was more of I was in the right time and did the right thing and then everything happened in the right direction, so I could just surf on that wave and everything grew from that. But okay, back in 19... it actually started before cURL, because when I started the project, initially, the first code I wrote that wasn't an actual HTTP client, it was called HTTP Gap, and that was a very late, 1996. And at that time, I just wanted to download currency rates from a website, because I was doing a currency translation service.
- But you were doing an IRC, you know what I'm saying, from what I read, right?
- Yeah, so I was writing a bot for IRC, so I had a little bot in the channels. You could ask the bot, "How much is the Japanese yen in dollars today?" Or, you know, 400 yens or whatever currency. Of course, I wanted to have as many currencies as possible. So I found one on HTTP. I just needed a little tool that would download those rates once per day or twice per day or whatever. That's how I started. And then after a while I realized that, wait a minute, there are also sites hosting currency rates over gopher. So I just need to adjust it to speak gopher as well. So I did gopher support. And then it just took a little short while, and then I realized that, oh, they also have currency rates on FTP sites. So had to add support for FTPs and have my currency service would have a lot of currencies to offer in that IRC channel. Of course, at some point I started to, you know, currency rates, it wasn't that fun anymore. I was more focusing on cURL. because I actually all of a sudden, added support for FTP upload. And then all the former names I had used for the tool were silly, so I renamed it cURL in 1998, because then it could do both downloads of those three protocols, and it could do uploads of, well, it actually could do upload of HTTP and FTP.
- The parallel's there again. I worked for an investment software during that '99 to 2012 timeframe. And so we were using it to also validate FTP sites that were downloading transactions, positions, and all of those fun things. And so using cURL, it was like, they're like "Ah." I was like, "Just use cURL," and everyone was like, "This is the way to do it." And it literally is the most, cURL is the most infectious thing in the world. It literally, like, within a minute, everyone's like, "Oh, this is it. "This is exactly how I test any type of end point," to get, like you said, FTP HTTP, all those types of things. Sorry to interrupt you, go ahead.
- No, but it was like that--
- I'm a fan boy, dude. This is like a big moment for me, dude. I want you to know that, go ahead.
- Yeah, yeah, but so that was how it started back in 1998. It was a fairly small thing. I mean, it's not super big now either, but compared to now, it was very, very small. So I started, when I released the first version of curl, 1998 in March, I think I had about 2,400 lines of code. And today it's 170,000, so it's grown substantially since then. But then, of course, it did a few things, a few protocols. And then I started to collect some users, and people started to use it, and I added features. People reported bugs, and we snowballed on. In the summer of 2000, I converted the core of cURL into libcurl, a library incident. I would be able to hand over the powers to other applications, to allow applications to download stuff as well. And that, I think, was a good move, because it then allowed others to also get the internet transfer capabilities easily. And one of those early adopters of that was PHP, the language. And that helped a lot of users that started to use libcurl, and I got back reports and even more feature requests. So now it kept on growing and growing, and we added stuff and a lot of people started to use it and started to contribute and so on.
- Can we talk about that a little bit? Because again, it takes a special kind of person to take your baby, and basically be like, "Here, world, do whatever you want with it." Can you talk about that thought process? Just look, I know it's just to enhance so more people can have eyes and create more, but give me that kind of, "Hey, I'm giving this lib out for anybody to do things." What's that thought process?
- For me, it was, I already, well years before I did cURL, I already knew about the concept of giving away source code or downloading source code, building the tool or running it. The name 'open source' was coined in 1990, actually just a month before I released cURL. So it would sort of go hand in hand, the concept of open source. But even before it was called open source, the concept existed, so before that. So I always liked that idea that you could get the code, and you could use it and improve it and help, as a collective help out to make things better. And I thought when I created cURL that I would never be able to, alone, make it a really good thing that would be this good as I want it to be. So I figured the only way to actually conquer the world was to make sure that it would be open to allow everyone to help out, so that people would test it, fix it and send me back the fixes, and we would iterate like that together to make everything better over time. And I didn't really think I would manage by my own. So I sort of didn't even think about doing it any other way.
- So, I mean let's talk about this. Would you say that cURL helped benefit the whole concept of open source? You know what I mean, because it was one of the first couple of things that was open sourced. Think of things like FFM, peg, and cURL and other kinds of open source projects and stuff like that. There has to be mainstay projects for somebody to contribute, to be the forebearers for this. Would you say that it helped enable open source to a certain degree?
- Of course, I want to believe that I at least helped a little bit, so I would be honored, yes, by having that considered. So yes, I think so, and of course, the more users we have and the bigger it gets, the more it's used, the more it gets into the limelight, so people can see it and then also copy our concepts or build on the idea that we have possibly helped out, helped people realize and sort of adopt, so yeah, sure, I think so, even if I don't think we are, we're not the founding fathers to the concept, because it existed for a long time before us that there are many, many projects that are much bigger than us.
- [Announcer] What you build and where it takes you shouldn't be limited by your database. Cockroach DB helps developers build and scale apps with fewer obstacles, more freedom and greater efficiency, so you can forget about the database and trust that it just works. Kubernetes friendly, open source and indestructible, Cockroach DB makes it easier to build and scale apps. It gives companies the freedom to serve customers anywhere, and it's backed by world-class documentation and excellent dedicated support. Discover Cockroach DB, the most highly evolved and distributed SQL database on the planet. Kubernetes native and built from the ground up to help companies of all sizes, including Bose, Comcast and Equifax scale fast, survive anything and thrive anywhere. Sign up for a free 30 day trial and get a free T-shirt at cockroachlabs.com/popcast. That's C-O-C-K-R-O-A-C-H-L-A-B-S dot com slash P-O-P-C-A-S-T
- Let me ask you this. Take off your cURL hat for a second. Put your kind of godfather, open source kind of thing, hat on. Let's talk about this. Do you think people take advantage of open source? This is a very blanketed question, but I see certain projects that like, man, there's people that are building on top of this, and they're profiting, and they're not giving back. I kind of just give me that blanket statement, and it's basically like, look, do you see in the world, right now, where people are taking advantage of open source projects in general?
- Yes, I would say that that is an easy, yes. I think we see that more and more as well since I think open source as a concept and as amount of projects and amount of code and actually, also as a share of total products is growing, it's growing in all of those areas. So it's more open source now than ever. And the share of open source in products and devices and tools and code everywhere is larger than ever before. So of course there's a lot of companies that are standing on the shoulders of open source developers and those open source developers are not always recognized, compensated or even acknowledged, that they actually helped out to that amount, whatever amount it is.
- Let me ask you this. what is something that you would give somebody who's trying to open source, the future Daniel Stenbergs out there, starting an open source project, what piece of advice would you give that person?
- I would say it's really hard, because it really depends on what you want to do with open source, because open source is more of a way to do development and provide your source. But if you want to make sure that you earn a lot of money on your open source code, or do you want your open source code to conquer the world, or do you just want to have fun and get an education or meet people and have like that? So there's a lot of different aspects there, but obviously my approach to open source has never been to earn a lot of money because then in that case, I did it wrong. I managed to get it installed in a lot of places. That's a success in that way. So I'm not sure I'm the best person to give advice in any of that. But of course, depending on what your goal is, you should consider your options and where to go with light assist and how to give things away and so on.
- Got it, got it, got it. Let me ask you this. So, from a cURL perspective, what is the one thing on the cURL side, you were like, "Wow, we got this right, I love this. "The world has taken my baby and made it even better." What was the one where you were like, "Wow, this is cool, they did this." And again, blanket statement. I'm having you say like one thing. I'm sure there's like a billion PRs, you're like, "Wow," but you know, anyway.
- Yes, but I think in most cases, most enhancements that people have done to cURL has been in line with cURL already. So, I can't recall any particular, you know, "Wow, we could build a tower on top of it "that we hadn't thought about before," but mostly it's been about gradually improving it, taking it another notch up and tightening the bolts even more. So I don't think that there's been any severe as "aha moments," you could do that, but more of a cool, great, someone actually did the effort and spent the energy and time, and they do all that work, and suddenly one day, showed up with that cool feature that we all agree that fits perfectly within the project, but nobody has really bothered to do yet. So I think we have more of a lot of those, maybe more of a boring answer, but I think actually, because I think people often ask me about what crazy things have people suggested for us to adopt, but we haven't had that problem much. But in general, people around, in the project and around the project, we're all fairly in agreement what cURL is and should be and could be in the future. So, nobody's introducing a game in the code or anything. It's just tweaking the protocol. It's doing network transfers, just in a different way.
- Got it.
- [Announcer] Learn how to operationalize open policy agent at scale with Styra. To get started, go to the link at H double T-P-S, colon, slash, slash, H-U-B-S dot L-Y slash H zero P, N-K-M two zero.
- Let me ask you this, what were you thinking, you know, there's that hockey stick growth, what do you think there was, what was one element where it was like, okay, now this is what made everybody adopt cURL much more beyond the effects kind of, foreign exchange rates you were doing initially? What was that one thing that was like, wow, this propelled this thing?
- Yeah, I don't think we have had a hockey stick growth, so I don't think there was no. For me, at least, I've tried to look back and see was there a particular fork in the road that we took to the right path and then suddenly, everything took off. But I think even there, I think the more boring answer and more accurate answer is that what makes cURL what it is, is that we're consistent and we're just iterating on things so that is what made it take off, that we could prove that we're reliable, consistent, and it gets there, and we provide the same feature and the same reliability over and over. So after a few years, when you can look back, and you can se that cURL has provided this feature for X number of years, we can really lean on it. We can rely on it. And five years later, you can still do that. And 10 years, more years, you can still do that. And I think that is what makes cURL that everyone who uses it, they know that they can lean on us for doing this. And they know that in the future, we won't break. We won't break behavior. We won't break APIs. We will still be that library to do transfers as they wanted 10 years ago, 15 years ago, and we will do that in 10 years too. I think that's true now. That has built more and more and more and more users have realized that, and they share that with their friends and everyone else do that as well. So it becomes more or less of a defacto standard API for doing transfers after a while, so yeah, it's really a spiraling effect after awhile.
- [Host] Civo is an alternative to the big hyper-scale cloud providers. They've launched the world's first managed Kubernetes service powered exclusively by K3s. With sub 90 second cluster launch times, a simplified Kubernetes experience and predictable billing, Civo's on a mission to create a better developer experience. Get $250 free credit to get started. Sign up today at Civocloud.com/popcast. That's C-I-V-O dot C-O-M slash P-O-P-C-A-S-T. Go check them out.
- And let me ask you this, 'cause you did say about future, what would you say? What are your aspirational goals with cURL? So you said 10 years from now, but what are the things, you're like, "Hey, I really want it to go this direction, maybe."
- Yeah, I've never been very good at telling the future or foreseeing where we're going, so I'm not trying that now either, but what I'm going to try to continue doing is what I've done so far for 23 years leading the company is I'm staying with my feet on the ground, and I'm looking at what we're doing now on the internet transfers, and I'm making sure that cURL remains on sort of the leading edge of doing internet transfers, and I'm looking at how do we do internet transfers in general? You know, what are the browsers doing now? What are they going to do in the next year or so? And I try to make sure that we keep up with that in the current project and keep up with how protocols evolve, new versions of HTTP three, and we can do new versions of TLS. And if anyone suggests a new way to do things that everyone should adopt, we want to be there. So that's where I want cURL to remain, and that's how I see us going forward. So there's no crazy visions or blue sky things that I anticipate that we're going to do in five years. Now I think, keeping it a core steady towards that light in the end, and then we'll see what happens. Maybe something groundbreaking happens next year, then we'll just adapt to that and make sure that cURL adapts and works with that, whatever it is.
- I just need to stop doing cURL -K, so I can make it more secure. That's kind of my thing. See a little joke, see, I got key credit. I'd do it. See, I got the cURL guy to laugh, you see that? Anyway, so Daniel, listen, I want to ask you this. So again, what are we doing now? Again, I know you're still a mainstay from the cURL perspective, but you're also a company called wolfSSL. Tell us about that.
- Yeah, so I worked for Mozilla for five years, worked on the network that the Firefox code base for HTTP and stuff like that, because that's what I think is fun, so I thought it was great to work on Firefox on those parts. But yeah, I got a bit bored by that and I left Mozilla. And when I did that, I figured I would try to make sure that I could work more with cURL and maybe even do cURL full-time, because at that time I had been working on cURL for 21 years or whatever, and I figured it was about time for me to actually try to do it full-time, and to be able to do that, I need someone to pay me to work on cURL, and how do I do that? I figured I would start selling support and help companies use cURL, because there's a lot of companies using curl and not all of them can do it, and not all of them want to do it. And I wanted to try that as a way to earn my paycheck. And then I talked to my friends at wolfSSL, who I've known for many years before this, and they have pretty much the same business idea already, but for their own set of libraries. They have a bunch of mostly TLS and encryption related libraries that they provide support for for companies and salary licensed versions and so on. So it was a match in that regard that they already did this. They had a business for it set up. They have the staffing for it. So I joined them, and we started selling cURL support under their wolfSSL umbrella. So now I tried to get companies to pay wolfSSL for cURL support contracts, so that we help them with features bugs, porting services.
- [Host] Teleport allows engineers and security professionals to unify access for SSH servers, Kubernetes clusters, web applications and databases across all environments. You can download Teleport right now at goteleport.com. That's G-O-T-E-L-E-P-O-R-T dot com.
- Very cool, very cool. So Daniel, I'm gonna ask my last question and again, legend that you are, and again, I'm so proud and happy to have you on the podcast. This has been amazing, but I'm going to ask you this last question. What work are you most proud of?
- Oh, I think it's hard to single out a particular piece. I think I'm just very proud of having brought cURL to this point, and for example, just a few months ago, one month ago, when NASA announced that they're actually using cURL in the helicopter on Mars project. And I'm not sure that the helicopter on Mars is the one I'm most proud of, but I'm very proud of having made a project this much out of my own efforts to have actually taken it to that level and maturity and acceptance, and that's super cool.
- This has been incredible. I thank you so, so much from the bottom of my heart for joining the show. Again, you're a legend. I'm a big supporter of you forever. And everyone, if you don't use, you know you use cURL, or who doesn't use cURL, all right, so big props. Thank you so much for being on the show, Daniel. I appreciate it.
- Thank you.