1. The curl Project
1. The curl Project ๊ด๋ จ
Curl started in 1996 (back then it was called httpget
). It was created by Rafael Sagula, who later transferred the project to Daniel. Daniel renamed the project to curl in 1998. In 2000, he extracted the networking functionality into the libcurl
library, and curl itself became a command-line wrapper around it.
Curl stands for "client for URLs". It's a tool for client-side internet transfers with URLs. An internet transfer is an upload or download using a specific protocol (curl supports quite a few), where the endpoint is identified by a URL.
Curl is open sourced (curl/curl) under the (slightly modified) MIT License. It accepts contributions from anyone, no paperwork required. There are about 15 people who can accept PRs. The lead (and only full-time) developer is Daniel.
Curl supports a crazy number of protocols, from HTTP, FTP and TELNET to IMAP, LDAP and GOPHER. It runs on 92 operating systems and has over 20 billion installations worldwide.
Curl
+ libcurl
is about 160K lines of code. Curl is released every 8 weeks and has about 250 releases as of August 2023.
After the release, there is a 10-day cool-down, followed by a 21-day feature window, followed by a 25-day feature freeze.
Curl has an extensive reference documentation. To see the short version, try this:
curl --help
#
# Usage: curl [options...] <url>
# -d, --data <data> HTTP POST data
# -f, --fail Fail fast with no output on HTTP errors
# -h, --help <category> Get help for commands
# -i, --include Include protocol response headers in the output
# -o, --output <file> Write to file instead of stdout
# -O, --remote-name Write output to a file named as the remote file
# -s, --silent Silent mode
# -T, --upload-file <file> Transfer local FILE to destination
# -u, --user <user:password> Server user and password
# -A, --user-agent <name> Send User-Agent <name> to server
# -v, --verbose Make the operation more talkative
# -V, --version Show version number and quit
#
# This is not the full help, this menu is stripped into categories.
# Use "--help category" to get an overview of all categories.
# For all options use the manual or "--help all".
To see the full version, try curl --manual
(be careful, it's huge).
There is also a book named Everything curl available online, and commercial support provided by the company Daniel works for.