1 _ _ ____ _ 2 ___| | | | _ \| | 3 / __| | | | |_) | | 4 | (__| |_| | _ <| |___ 5 \___|\___/|_| \_\_____| 6 7 How cURL Became Like This 8 9 10In the second half of 1997, Daniel Stenberg came up with the idea to make 11currency-exchange calculations available to Internet Relay Chat (IRC) 12users. All the necessary data are published on the Web; he just needed to 13automate their retrieval. 14 15Daniel simply adopted an existing command-line open-source tool, httpget, that 16Brazilian Rafael Sagula had written. After a few minor adjustments, it did 17just what he needed. 18 19Soon, he found currencies on a GOPHER site, so support for that had to go in, 20and not before long FTP download support was added as well. The name of the 21project was changed to urlget to better fit what it actually did now, since 22the http-only days were already passed. 23 24The project slowly grew bigger. When upload capabilities were added and the 25name once again was misleading, a second name change was made and on March 20, 261998 curl 4 was released. (The version numbering from the previous names was 27kept.) 28 29(Unrelated to this project a company called Curl Corporation registered a US 30trademark on the name "CURL" on May 18 1998. That company had then already 31registered the curl.com domain back in November of the previous year. All this 32was revealed to us much later.) 33 34SSL support was added, powered by the SSLeay library. 35 36August 1998, first announcement of curl on freshmeat.net. 37 38October 1998, with the curl 4.9 release and the introduction of cookie 39support, curl was no longer released under the GPL license. Now we're at 4000 40lines of code, we switched over to the MPL license to restrict the effects of 41"copyleft". 42 43November 1998, configure script and reported successful compiles on several 44major operating systems. The never-quite-understood -F option was added and 45curl could now simulate quite a lot of a browser. TELNET support was added. 46 47Curl 5 was released in December 1998 and introduced the first ever curl man 48page. People started making Linux RPM packages out of it. 49 50January 1999, DICT support added. 51 52OpenSSL took over where SSLeay was abandoned. 53 54May 1999, first Debian package. 55 56August 1999, LDAP:// and FILE:// support added. The curl web site gets 1300 57visits weekly. 58 59Released curl 6.0 in September. 15000 lines of code. 60 61December 28 1999, added the project on Sourceforge and started using its 62services for managing the project. 63 64Spring 2000, major internal overhaul to provide a suitable library interface. 65The first non-beta release was named 7.1 and arrived in August. This offered 66the easy interface and turned out to be the beginning of actually getting 67other software and programs to get based on and powered by libcurl. Almost 6820000 lines of code. 69 70August 2000, the curl web site gets 4000 visits weekly. 71 72The PHP guys adopted libcurl already the same month, when the first ever third 73party libcurl binding showed up. CURL has been a supported module in PHP since 74the release of PHP 4.0.2. This would soon get followers. More than 16 75different bindings exist at the time of this writing. 76 77September 2000, kerberos4 support was added. 78 79In November 2000 started the work on a test suite for curl. It was later 80re-written from scratch again. The libcurl major SONAME number was set to 1. 81 82January 2001, Daniel released curl 7.5.2 under a new license again: MIT (or 83MPL). The MIT license is extremely liberal and can be used combined with GPL 84in other projects. This would finally put an end to the "complaints" from 85people involved in GPLed projects that previously were prohibited from using 86libcurl while it was released under MPL only. (Due to the fact that MPL is 87deemed "GPL incompatible".) 88 89curl supports HTTP 1.1 starting with the release of 7.7, March 22 2001. This 90also introduced libcurl's ability to do persistent connections. 24000 lines of 91code. The libcurl major SONAME number was bumped to 2 due to this overhaul. 92 93The first experimental ftps:// support was added in March 2001. 94 95August 2001. curl is bundled in Mac OS X, 10.1. It was already becoming more 96and more of a standard utility of Linux distributions and a regular in the BSD 97ports collections. The curl web site gets 8000 visits weekly. Curl Corporation 98contacted Daniel to discuss "the name issue". After Daniel's reply, they have 99never since got in touch again. 100 101September 2001, libcurl 7.9 introduces cookie jar and curl_formadd(). During 102the forthcoming 7.9.x releases, we introduced the multi interface slowly and 103without much whistles. 104 105June 2002, the curl web site gets 13000 visits weekly. curl and libcurl is 10635000 lines of code. Reported successful compiles on more than 40 combinations 107of CPUs and operating systems. 108 109To estimate number of users of the curl tool or libcurl library is next to 110impossible. Around 5000 downloaded packages each week from the main site gives 111a hint, but the packages are mirrored extensively, bundled with numerous OS 112distributions and otherwise retrieved as part of other software. 113 114September 2002, with the release of curl 7.10 it is released under the MIT 115license only. 116 117January 2003. Started working on the distributed curl tests. The autobuilds. 118 119February 2003, the curl site averages at 20000 visits weekly. At any given 120moment, there's an average of 3 people browsing the curl.haxx.se site. 121 122Multiple new authentication schemes are supported: Digest (May), NTLM (June) 123and Negotiate (June). 124 125November 2003: curl 7.10.8 is released. 45000 lines of code. ~55000 unique 126visitors to the curl.haxx.se site. Five official web mirrors. 127 128December 2003, full-fledged SSL for FTP is supported. 129 130January 2004: curl 7.11.0 introduced large file support. 131 132June 2004: 133 134 curl 7.12.0 introduced IDN support. 10 official web mirrors. 135 136 This release bumped the major SONAME to 3 due to the removal of the 137 curl_formparse() function 138 139August 2004: 140 Curl and libcurl 7.12.1 141 142 Public curl release number: 82 143 Releases counted from the very beginning: 109 144 Available command line options: 96 145 Available curl_easy_setopt() options: 120 146 Number of public functions in libcurl: 36 147 Amount of public web site mirrors: 12 148 Number of known libcurl bindings: 26 149 150April 2005: 151 152 GnuTLS can now optionally be used for the secure layer when curl is built. 153 154September 2005: 155 156 TFTP support was added. 157 158 More than 100,000 unique visitors of the curl web site. 25 mirrors. 159 160December 2005: 161 162 security vulnerability: libcurl URL Buffer Overflow 163 164January 2006: 165 166 We dropped support for Gopher. We found bugs in the implementation that 167 turned out having been introduced years ago, so with the conclusion that 168 nobody had found out in all this time we removed it instead of fixing it. 169 170March 2006: 171 172 security vulnerability: libcurl TFTP Packet Buffer Overflow 173 174April 2006: 175 176 Added the multi_socket() API 177 178September 2006: 179 180 The major SONAME number for libcurl was bumped to 4 due to the removal of 181 ftp third party transfer support. 182 183November 2006: 184 185 Added SCP and SFTP support 186 187February 2007: 188 189 Added support for the Mozilla NSS library to do the SSL/TLS stuff 190 191July 2007: 192 193 security vulnerability: libcurl GnuTLS insufficient cert verification 194 195November 2008: 196 197 Command line options: 128 198 curl_easy_setopt() options: 158 199 Public functions in libcurl: 58 200 Known libcurl bindings: 37 201 Contributors: 683 202 203 145,000 unique visitors. >100 GB downloaded. 204 205March 2009: 206 207 security vulnerability: libcurl Arbitrary File Access 208 209August 2009: 210 211 security vulnerability: libcurl embedded zero in cert name 212 213December 2009: 214 215 Added support for IMAP, POP3 and SMTP 216 217January 2010: 218 219 Added support for RTSP 220 221February 2010: 222 223 security vulnerability: libcurl data callback excessive length 224 225March 2010: 226 227 The project switched over to use git instead of CVS for source code control 228 229May 2010: 230 231 Added support for RTMP 232 233 Added support for PolarSSL to do the SSL/TLS stuff 234 235August 2010: 236 237 Public curl releases: 117 238 Command line options: 138 239 curl_easy_setopt() options: 180 240 Public functions in libcurl: 58 241 Known libcurl bindings: 39 242 Contributors: 808 243 244 Gopher support added (re-added actually) 245