This article is more than 1 year old
Curl, the URL fetcher that can, marks 25 years of transfers
Utility began as a personal project, found its way into billions of devices
Daniel Stenberg has observed the 25th anniversary of the curl open source project with the publication of curl 8.0.0, the 215th release of the command line tool, and a modest tele-celebration.
The name curl, originally rendered as "cURL" to emphasize its function, stands for "Client for URLs" or "Client URL Request Library" or its recursive form, "curl URL Request Library."
It's a command line tool and library for transferring data with URLs. Once installed on a device with command line access, curl can be used, through a text command, to send or fetch data to and from a server using a variety of network protocols.
Any developer who is serious about writing code that interacts over a network has probably used curl, or does so regularly. Presently, billions of devices rely on curl – cars, mobile phones, set top boxes, routers, and other such items use it internally for data transfer.
"The curl project started out very humbly as a small renamed URL transfer tool that almost nobody knew about for the first few years," said Stenberg in a blog post. "It scratched a personal itch of mine."
The first version of curl debuted on March 20, 1998 as version 4.0. It had 2,200 lines of code and had been adapted from projects known as httpget and urlget.
As Stenberg explained, curl 4.0 supported just three protocols, HTTP, GOPHER and FTP, and 24 command line options. Version 8.0.0 can handle 28 protocols and 249 command line options.
"The first release of curl was not that special event since I had been shipping httpget and urlget releases for over a year already, so while this was a new name it was also 'just another release' as I had done many times already," he wrote.
HTTPS and TELNET support soon followed. According to Stenberg, curl was initially released under the General Public License (GPL) but was put under an Mozilla Public License (MPL) by the end of 1998. In 2001, curl added a new license that's close but not identical to the MIT license, alongside the MPL license, which was dropped in 2002.
- If your apps or gadgets break down on Sunday, this may be why: Gpsd bug to roll back clocks to 2002
- Memory safety is the new black, fashionable and fit for any occasion
- Sophos: Log4Shell would have been a catastrophe without the Y2K-esque mobilisation of engineers
- Keep calm and learn Rust: We'll be seeing a lot more of the language in Linux very soon
The project has become a juggernaut. Stenberg says that his goal has been simply to keep improving the code over time. And in the years he and other contributors have worked on it, curl grew and grew, reaching hundreds of millions of installations in 2010. Today it's estimated to have been installed more than ten billion times.
As of the start of 2023, curl consisted of 155,100 lines of code. It incorporates contributions from more than 2,800 people, and more than 1,100 commit authors who have created more than 30,000 commits. Bug bounties for curl code fixes add up to more than $48,000.
In his observance of curl's 25th anniversary, Stenberg has received thanks from various users of the software. But it has not always been pleasant – two years ago, he noted that he had received death threats from an unhappy user.
Stenberg, who lives and works in Sweden, expressed gratitude in his anniversary post for being able to work full time on what began as a hobby project – he was hired in 2019 by WolfSSL to focus on curl. He also thanked the many contributors who have kept the project going and growing.
A celebratory Zoom conference included more accolades and further fond reminiscing.
As for the next 25 years of curl, Stenberg says he tries to avoid making predictions. "I hope to stay active in the project and to continue working with client-side internet transfers for as long as it is fun and people want to use the results of my work," he said.
That work may never be done. A mere seven hours after curl 8.0.0 debuted, Stenberg pushed 8.0.1 to deliver a bug fix. ®