curl and new 
technologies

   March 5, 2013
Daniel Stenberg
â—Ź
    Free Software
â—Ź
    Network hacker
â—Ź
    Embedded developer
â—Ź
    Consultant


    Email:     daniel@haxx.se
    Twitter:   @bagder
    Web:       daniel.haxx.se
    Blog:      daniel.haxx.se/blog
Before

Now

Then

How?
Questions?




  Interrupt!
What is curl?
â—Ź
    curl and libcurl
â—Ź
    Transfer data using application 
    protocols
Put in more words
curl is a command line tool for transferring data 
with URL syntax, supporting DICT, FILE, FTP, FTPS, 
Gopher, HTTP, HTTPS, IMAP, IMAPS, LDAP, LDAPS, 
POP3, POP3S, RTMP, RTSP, SCP, SFTP, SMTP, 
SMTPS, Telnet and TFTP. curl supports SSL 
certificates, HTTP POST, HTTP PUT, FTP uploading, 
HTTP form based upload, proxies, cookies, 
user+password authentication (Basic, Digest, 
NTLM, Negotiate, kerberos...), file transfer 
resume, proxy tunneling and a busload of other 
useful tricks.
500 million 
  users
Really 500 million users?
â—Ź
    Mac OS X           ●
                           PHP sites
â—Ź
    TVs                â—Ź
                           ...
â—Ź
    IOS
â—Ź
    Linux
â—Ź
    Games
â—Ź
    Version control 
    systems
One day 15 years ago...
â—Ź
    Scratched an itch
Contributors over time
â—Ź
    1000+ in total
â—Ź
    Increasing linearly
Number of committers
â—Ź
    74 unique within 12 months
â—Ź
    125 within 24
â—Ź
    174 within 36
Mailing lists
â—Ź
    4900 mails during 2012
â—Ź
    curl­library has 1300+ subscribers
Lines of code
Bug reports
â—Ź
    Not counting them sent per mail
â—Ź
    ~1200 submitted during 13 years
â—Ź
    one new report every 4th day
>130 companies use curl
bl a Adobe, AOL, Apple, Blizzard, CERN, 
Cisco, Electronic Arts, Facebook, 
Garmin, Google, IBM, LG, Linden Labs, 
McAfee, Motorola, Nortel, Oracle, Palm, 
Panasonic, Philips, Polaroid, RBS, 
Research in Motion, RSA Security, 
SanDisk, SAS Institute, SEB, Siemens, Sony, 
Spotify, Sun, Swisscom, Symantec, 
Toshiba, Vmware, Yahoo...
42 bindings
Ada95, Basic, C++, Ch, Cocoa, D, Dylan, 
Eiffel, Euphoria, Falcon, Ferite, Gambas, 
glib/GTK+, Guile, Haskell, ILE/RPG, Java, 
Lisp, Lua, Mono, .NET, Object­Pascal, 
Ocaml, Pascal, Perl, PHP, Postgres, 
Python, R, Rexx, Ruby, Scheme, S­Lang, 
Smalltalk, SP­Forth, SPL, Tcl, Visual Basic, 
Visual FoxPro, Q, wxWidgets, XBLite
131 releases
â—Ź
    bi­monthly release cycle
16 security problems
â—Ź
    Security is hard
â—Ź
    Problems are unavoidable
â—Ź
    Deal with them properly
It is personal
I've given this project some 10000 
spare time hours, I started it, I lead 
it, I've done the design and most of 
the development.
How can it not be personal?
How does it run?
â—Ź
    Volunteers
â—Ź
    Reviews by mail
â—Ź
    Mailing list driven
â—Ź
    Test suite and autobuilds
â—Ź
    Small core team
When is it done?
â—Ź
    How long is a rope?
â—Ź
    When is the last bug found?
â—Ź
    When do we stop adding 
    functionality?
New Technology
â—Ź
    Internet, protocols and file 
    transfers evolve
â—Ź
    Curl has to evolve along
â—Ź
    You can help!
Happy Eyeballs
â—Ź
    Dual­stack behaviors
â—Ź
    RFC6555
â—Ź
    Basically two connect attempts 
    at once
DANE
â—Ź
    DNS­Based Authentication of 
    Named Entities (DANE)
â—Ź
    RFC6698
â—Ź
    Because SSL's CA system is 
    broken
â—Ź
    Resolver dependency
â—Ź
    Should use a lib
SRV/URI records
â—Ź
    DNS based hints to find (web) 
    servers
â—Ź
    In use by non­HTTP protocols
â—Ź
    Latency penalties
â—Ź
    Tricky resolver dependencies
HTTP pipelining
â—Ź
    Present in HTTP 1.1, RFC2616
â—Ź
    Riddled with server problems
â—Ź
    Circumvents latency issues
â—Ź
    Coming soon!
HTTP2 (SPDY)
â—Ź
    Discussed in IETF's httpbis WG
â—Ź
    Based on SPDY/3
â—Ź
    SCTP and SSH like with multiple 
    streams within a physical TCP 
    connection
â—Ź
    Spindly vs spdylay
New HTTP auth
â—Ź
    Passwords must die
â—Ź
    Existing auth methods are full of 
    problems
â—Ź
    Digest relies on MD5
â—Ź
    But... browser basically don't do 
    HTTP auth
SSL to proxy
â—Ź
    SSL over proxy is usually done with 
    a HTTP CONNECT over plain HTTP
â—Ź
    Increase privacy within 
    organizations
â—Ź
    Supported by Chrome
â—Ź
    Tricky because of SSL backends
… and much much more!
â—Ź
    It never ends
â—Ź
    Transports are fundamental to 
    Internet
â—Ź
    curl transports the Internet
How?
â—Ź
    Companies fund features
â—Ź
    Individuals fix problems


â—Ź
    Join us and help out!
Thank you


Daniel Stenberg <daniel@haxx.se>

curl and new technologies