Imported Upstream version 7.48.0
[platform/upstream/curl.git] / docs / ROADMAP.md
1 curl the next few years - perhaps
2 =================================
3
4 Roadmap of things Daniel Stenberg and Steve Holme want to work on next. It is
5 intended to serve as a guideline for others for information, feedback and
6 possible participation.
7
8 HTTP/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 - provide option for HTTP/2 "prior knowledge" over clear text
22
23    As it would avoid the roundtrip-heavy Upgrade: procedures when you _know_
24    it speaks HTTP/2.
25
26 HTTP cookies
27 ------------
28
29 Two cookie drafts have been adopted by the httpwg in IETF and we should
30 support them as the popular browsers will as well:
31
32 [Deprecate modification of 'secure' cookies from non-secure
33 origins](https://tools.ietf.org/html/draft-ietf-httpbis-cookie-alone-00)
34
35 [Cookie Prefixes](https://tools.ietf.org/html/draft-ietf-httpbis-cookie-prefixes-00)
36
37 [Firefox bug report about secure cookies](https://bugzilla.mozilla.org/show_bug.cgi?id=976073)
38
39 SRV records
40 -----------
41
42 How to find services for specific domains/hosts.
43
44 HTTPS to proxy
45 --------------
46
47 To avoid network traffic to/from the proxy getting snooped on. There's a git
48 branch in the public git repository for this that we need to make sure works
49 for all TLS backends and then merge!
50
51 curl_formadd()
52 --------------
53
54 make sure there's an easy handle passed in to `curl_formadd()`,
55 `curl_formget()` and `curl_formfree()` by adding replacement functions and
56 deprecating the old ones to allow custom mallocs and more
57
58 third-party SASL
59 ----------------
60
61 add support for third-party SASL libraries such as Cyrus SASL - may need to
62 move existing native and SSPI based authentication into vsasl folder after
63 reworking HTTP and SASL code
64
65 SASL authentication in LDAP
66 ---------------------------
67
68 ...
69
70 Simplify the SMTP email
71 -----------------------
72
73 Simplify the SMTP email interface so that programmers don't have to
74 construct the body of an email that contains all the headers, alternative
75 content, images and attachments - maintain raw interface so that
76 programmers that want to do this can
77
78 email capabilities
79 ------------------
80
81 Allow the email protocols to return the capabilities before
82 authenticating. This will allow an application to decide on the best
83 authentication mechanism
84
85 Win32 pthreads
86 --------------
87
88 Allow Windows threading model to be replaced by Win32 pthreads port
89
90 dynamic buffer size
91 -------------------
92
93 Implement a dynamic buffer size to allow SFTP to use much larger buffers and
94 possibly allow the size to be customizable by applications. Use less memory
95 when handles are not in use?
96
97 New stuff - curl
98 ----------------
99
100 1. Embed a language interpreter (lua?). For that middle ground where curl
101    isn’t enough and a libcurl binding feels “too much”. Build-time conditional
102    of course.
103
104 2. Simplify the SMTP command line so that the headers and multi-part content
105    don't have to be constructed before calling curl
106
107 Improve
108 -------
109
110 1. build for windows (considered hard by many users)
111
112 2. curl -h output (considered overwhelming to users)
113
114 3. we have > 170 command line options, is there a way to redo things to
115    simplify or improve the situation as we are likely to keep adding
116    features/options in the future too
117
118 4. docs (considered "bad" by users but how do we make it better?)
119
120   - split up curl.1
121
122 5. authentication framework (consider merging HTTP and SASL authentication to
123    give one API for protocols to call)
124
125 6. Perform some of the clean up from the TODO document, removing old
126    definitions and such like that are currently earmarked to be removed years
127    ago
128
129 Remove
130 ------
131
132 1. makefile.vc files as there is no point in maintaining two sets of Windows
133    makefiles. Note: These are currently being used by the Windows autobuilds