1curl the next few years - perhaps
2=================================
3
4Roadmap of things Daniel Stenberg and Steve Holme want to work on next. It is
5intended to serve as a guideline for others for information, feedback and
6possible participation.
7
8HTTP/2
9------
10
11- test suite
12
13   Base this on existing nghttp2 server to start with to make functional
14   tests. Later on we can adopt that code or work with nghttp2 to provide ways
15   to have the http2 server respond with broken responses to make sure we deal
16   with that nicely as well.
17
18   To decide: if we need to bundle parts of the nghttp2 stuff that probably
19   won't be shipped by many distros.
20
21- stream properties API
22
23   Provide options for setting priorities and dependencies among the streams
24   (easy handles). They are mostly information set for the stream and sent to
25   the server so we don't have to add much logic for this.
26
27- server push
28
29   Not exactly clear exactly how to support this API-wise, but by adding
30   handles without asking for a resource it could be a way to be prepared to
31   receive pushes in case such are sent. We probably need it to still specify
32   a URL with host name, port etc but we probably need a special option to
33   tell libcurl it is for server push purposes.
34
35- provide option for HTTP/2 "prior knowledge" over clear text
36
37   As it would avoid the roundtrip-heavy Upgrade: procedures when you _know_
38   it speaks HTTP/2.
39
40- provide option to allow curl to default to HTTP/2 only when using HTTPS
41
42   We could switch on HTTP/2 by-default for HTTPS quite easily and it
43   shouldn't hurt anyone, while HTTP/2 for HTTP by default could introduce
44   lots of Upgrade: roundtrips that users won't like. So a separated option
45   alternative makes sense.
46
47SRV records
48-----------
49
50How to find services for specific domains/hosts.
51
52HTTPS to proxy
53--------------
54
55To avoid network traffic to/from the proxy getting snooped on.
56
57curl_formadd()
58--------------
59
60make sure there's an easy handle passed in to `curl_formadd()`,
61`curl_formget()` and `curl_formfree()` by adding replacement functions and
62deprecating the old ones to allow custom mallocs and more
63
64third-party SASL
65----------------
66
67add support for third-party SASL libraries such as Cyrus SASL - may need to
68move existing native and SSPI based authentication into vsasl folder after
69reworking HTTP and SASL code
70
71SASL authentication in LDAP
72---------------------------
73
74...
75
76Simplify the SMTP email
77-----------------------
78
79Simplify the SMTP email interface so that programmers don't have to
80construct the body of an email that contains all the headers, alternative
81content, images and attachments - maintain raw interface so that
82programmers that want to do this can
83
84email capabilities
85------------------
86
87Allow the email protocols to return the capabilities before
88authenticating. This will allow an application to decide on the best
89authentication mechanism
90
91Win32 pthreads
92--------------
93
94Allow Windows threading model to be replaced by Win32 pthreads port
95
96dynamic buffer size
97-------------------
98
99Implement a dynamic buffer size to allow SFTP to use much larger buffers and
100possibly allow the size to be customizable by applications. Use less memory
101when handles are not in use?
102
103New stuff - curl
104----------------
105
1061. Embed a language interpreter (lua?). For that middle ground where curl
107   isn’t enough and a libcurl binding feels “too much”. Build-time conditional
108   of course.
109
1102. Simplify the SMTP command line so that the headers and multi-part content
111   don't have to be constructed before calling curl
112
113Improve
114-------
115
1161. build for windows (considered hard by many users)
117
1182. curl -h output (considered overwhelming to users)
119
1203. we have > 160 command line options, is there a way to redo things to
121   simplify or improve the situation as we are likely to keep adding
122   features/options in the future too
123
1244. docs (considered "bad" by users but how do we make it better?)
125
126  - split up curl.1
127
1285. authentication framework (consider merging HTTP and SASL authentication to
129   give one API for protocols to call)
130
1316. Perform some of the clean up from the TODO document, removing old
132   definitions and such like that are currently earmarked to be removed years
133   ago
134
135Remove
136------
137
1381. makefile.vc files as there is no point in maintaining two sets of Windows
139   makefiles. Note: These are currently being used by the Windows autobuilds
140