← All Spotlight Stories

Spotlight: Daniel Stenberg

Creator of curl

Daniel Stenberg
On
Share on Twitter Share on LinkedIn Share on Facebook

Hey Daniel, can you tell us about your background? Where did you grow up? How did you venture into programming?

I was born in November 1970. I grew up in the same southern suburb of Stockholm, Sweden that I live in now. I had a safe and comfortable childhood with four siblings and loving parents. In my teens, I bought my first computer – a Commodore 64, together with my younger brother Bjorn. On that, I quickly learned the wonders of programming while I made it do several things. I also soon realized that I had to use an assembler to make cool things on that computer truly, so I learned 6510 assembler and started writing demos. I enjoyed programming and spent a lot of my spare time in my late teens doing that (in a demo group we called Horizon).

When I later finished school, and at the age of twenty after serving my mandatory military service, I applied for a course at the university. Instead, I got a job offer at IBM, which I accepted. I never went back to school again. I got my first proper programming job in 1993, and I’ve been working as a developer since then. Since 2019, I have worked full time on curl. Mixing spare time and work time.

What inspired you to build curl?

In late 1996, I needed a tool for myself to do basic HTTP transfers. I wanted the transfers to download currency rates a few times a day so that the currency exchange service I was writing for my IRC bot always had new data to work with. I found an existing little open-source tool that was focused and did the job almost the way I wanted it to do. The tool was called httpget. I first submitted a few patches to fix some minor issues but was soon offered to take over maintenance of that little project. I did. I then started developing it further, and when it got support for more protocols, it was renamed to urlget.

A little later, I added upload support as well, and again it had a misleading name. On March 20, 1998, I did the first release under yet a new name. This time I called it curl, and it handled HTTP, GOPHER, and FTP. Of course, all of those were my spare time projects. I worked as an embedded systems developer during the days. When curl was created and shipped, I wanted it to shine, work, and improve. So, I’ve never stopped working on that.

How many other core contributors work on curl today, apart from yourself?

It’s difficult to tell a specific number. I am the only person working full-time on curl. The active core maintainers are less than a dozen, and there are usually around 10-13 people who do more than ten commits through a typical calendar year. Still, there are about 950 individuals who wrote a commit, and nearly 2,500 contributors who helped out in other ways. We also welcome new contributors and committers at a relatively high pace.

curl Logo
22K+
Stars
745
total contributors
~22 years
since first release

What problem does curl solve for its users?

In three words: Client-side Internet transfers. Anyone who needs to transfer data over one of the major Internet Transfer Protocol will likely find that curl can help them do it. The tool curl and the library libcurl run on more than 80 operating systems, on more than 20 CPU architectures, and are installed more than ten billion times worldwide. It has become almost a de-facto Internet transfer choice.

What are some major features coming up in curl in the next releases?

In general, we don’t have very specific or detailed long-term plans for curl. Wherever the Internet development goes in terms of transfers, HTTP, and the likes, curl follows. HTTP/3, for example, has been in the works for a long time now. While curl has rudimentary support already, there’s plenty of room for more improvements in that department. We’ve discussed the potential of adding support for WebSockets and other new protocols, including ManageSieve, Gemini, and ICAP. There does not seem to be an end to what protocols people can think about adding to curl; the coolest major feature to be added in the next year probably hasn’t been discussed or proposed yet!

What has been the most frequent feature request from users in the project that you haven’t gotten to yet?

I don’t know. In general, I don’t find that people are repeating feature requests too badly, possibly because we already list many of them in our TODO document. And also partly because we add features and functionality frequently. We’re also open to people’s contributions and additions, so you can always join in (or pay someone) and help features become a reality if you want them to get implemented badly!

Who is the ideal user of curl? What are some use cases of using curl?

Someone who needs to add Internet transfer capabilities to their script, application or device. At least as long as that transfer can be done using one of the most commonly used protocols.

Are there any success stories about other people or organizations using this project that you would like to share?

A recent success is, of course, that curl was used in the Mars 2020 Helicopter project. curl is otherwise such a wild and crazy success story that virtually all internet-connected people on earth are already using curl daily, even if in most cases, it is indirectly via another tool, application, or device. The world’s seven most valuable companies (per market cap) are known to ship products using (lib)curl. At least 22 known car brands ship curl in their vehicles. In some of the world’s top websites, some users are doing ~one million HTTP requests/second using libcurl. It is shipped as a component in all modern operating systems, like Windows, macOS, Chrome OS, iOS, Android, and Linux distributions.

If someone wants to support the development of curl, where can they donate?

Please head over to our Open Collective.

About DeepSource
DeepSource helps you automatically find and fix issues in your code during code reviews, such as bug risks, anti-patterns, performance issues, and security flaws. It takes less than 5 minutes to set up with your Bitbucket, GitHub, or GitLab account. It works for Python, Go, Ruby, and JavaScript.
Get started for free
Get new spotlight stories delivered to your inbox.
Subscribe to get notified when we add a new spotlight story, once every month.