{"id":5964,"date":"2014-06-19T14:19:04","date_gmt":"2014-06-19T12:19:04","guid":{"rendered":"http:\/\/daniel.haxx.se\/blog\/?p=5964"},"modified":"2014-06-19T14:19:04","modified_gmt":"2014-06-19T12:19:04","slug":"curl-the-next-few-years","status":"publish","type":"post","link":"https:\/\/daniel.haxx.se\/blog\/2014\/06\/19\/curl-the-next-few-years\/","title":{"rendered":"curl the next few years"},"content":{"rendered":"<p><em>Roadmap of things Daniel Stenberg and Steve Holme want to work on next. It is intended to serve as a guideline for others for information, feedback and possible participation.<\/em><\/p>\n<p>If you agree, disagree or would like to add stuff you want to work on, please join us on the <a href=\"http:\/\/cool.haxx.se\/cgi-bin\/mailman\/listinfo\/curl-library\">curl-library list<\/a>! This &#8220;roadmap&#8221; is likely to change over time. We&#8217;ll keep the updated <a href=\"https:\/\/github.com\/bagder\/curl\/blob\/master\/docs\/ROADMAP.md\">ROADMAP<\/a> in git.<\/p>\n<h2>New stuff &#8211; libcurl<\/h2>\n<ol style=\"margin-top:0pt;margin-bottom:0pt;\">\n<li style=\"list-style-type:decimal;font-size:15px;font-family:Arial;color:#000000;background-color:transparent;font-weight:normal;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;\" dir=\"ltr\">\n<p style=\"line-height:1.15;margin-top:0pt;margin-bottom:0pt;\" dir=\"ltr\">http2 test suite<\/p>\n<\/li>\n<li style=\"list-style-type:decimal;font-size:15px;font-family:Arial;color:#000000;background-color:transparent;font-weight:normal;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;\" dir=\"ltr\">\n<p style=\"line-height:1.15;margin-top:0pt;margin-bottom:0pt;\" dir=\"ltr\">http2 multiplexing\/pipelining<\/p>\n<\/li>\n<li style=\"list-style-type:decimal;font-size:15px;font-family:Arial;color:#000000;background-color:transparent;font-weight:normal;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;\" dir=\"ltr\">\n<p style=\"line-height:1.15;margin-top:0pt;margin-bottom:0pt;\" dir=\"ltr\">SPDY<\/p>\n<\/li>\n<li style=\"list-style-type:decimal;font-size:15px;font-family:Arial;color:#000000;background-color:transparent;font-weight:normal;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;\" dir=\"ltr\">\n<p style=\"line-height:1.15;margin-top:0pt;margin-bottom:0pt;\" dir=\"ltr\">SRV records<\/p>\n<\/li>\n<li style=\"list-style-type:decimal;font-size:15px;font-family:Arial;color:#000000;background-color:transparent;font-weight:normal;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;\" dir=\"ltr\">\n<p style=\"line-height:1.15;margin-top:0pt;margin-bottom:0pt;\" dir=\"ltr\">HTTPS to proxy<\/p>\n<\/li>\n<li style=\"list-style-type:decimal;font-size:15px;font-family:Arial;color:#000000;background-color:transparent;font-weight:normal;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;\" dir=\"ltr\">\n<p style=\"line-height:1.15;margin-top:0pt;margin-bottom:0pt;\" dir=\"ltr\">make sure there&#8217;s an easy handle passed in to curl_formadd(), curl_formget() and curl_formfree() by adding replacement functions and deprecating the old ones to allow custom mallocs and more<\/p>\n<\/li>\n<li style=\"list-style-type:decimal;font-size:15px;font-family:Arial;color:#000000;background-color:transparent;font-weight:normal;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;\" dir=\"ltr\">\n<p style=\"line-height:1.15;margin-top:0pt;margin-bottom:0pt;\" dir=\"ltr\">HTTP Digest authentication via Windows SSPI<\/p>\n<\/li>\n<li style=\"list-style-type:decimal;font-size:15px;font-family:Arial;color:#000000;background-color:transparent;font-weight:normal;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;\" dir=\"ltr\">\n<p style=\"line-height:1.15;margin-top:0pt;margin-bottom:0pt;\" dir=\"ltr\">GSSAPI authentication in the email protocols<\/p>\n<\/li>\n<li style=\"list-style-type:decimal;font-size:15px;font-family:Arial;color:#000000;background-color:transparent;font-weight:normal;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;\" dir=\"ltr\">\n<p style=\"line-height:1.15;margin-top:0pt;margin-bottom:0pt;\" dir=\"ltr\">add support for third-party SASL libraries such as Cyrus SASL &#8211; may need to move existing native and SSPI based authentication into vsasl folder after reworking HTTP and SASL code<\/p>\n<\/li>\n<li style=\"list-style-type:decimal;font-size:15px;font-family:Arial;color:#000000;background-color:transparent;font-weight:normal;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;\" dir=\"ltr\">\n<p style=\"line-height:1.15;margin-top:0pt;margin-bottom:0pt;\" dir=\"ltr\">SASL authentication in LDAP<\/p>\n<\/li>\n<li style=\"list-style-type:decimal;font-size:15px;font-family:Arial;color:#000000;background-color:transparent;font-weight:normal;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;\" dir=\"ltr\">\n<p style=\"line-height:1.15;margin-top:0pt;margin-bottom:0pt;\" dir=\"ltr\">Simplify the SMTP email interface so that programmers don&#8217;t have to construct the body of an email that contains all the headers, alternative content, images and attachments &#8211; maintain raw interface so that programmers that want to do this can<\/p>\n<\/li>\n<li style=\"list-style-type:decimal;font-size:15px;font-family:Arial;color:#000000;background-color:transparent;font-weight:normal;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;\" dir=\"ltr\">\n<p style=\"line-height:1.15;margin-top:0pt;margin-bottom:0pt;\" dir=\"ltr\">Allow the email protocols to return the capabilities before authenticating. This will allow an application to decide on the best authentication mechanism<\/p>\n<\/li>\n<li style=\"list-style-type:decimal;font-size:15px;font-family:Arial;color:#000000;background-color:transparent;font-weight:normal;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;\" dir=\"ltr\">\n<p style=\"line-height:1.15;margin-top:0pt;margin-bottom:0pt;\" dir=\"ltr\">Allow Windows threading model to be replaced by Win32 pthreads port<\/p>\n<\/li>\n<li style=\"list-style-type:decimal;font-size:15px;font-family:Arial;color:#000000;background-color:transparent;font-weight:normal;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;\" dir=\"ltr\">\n<p style=\"line-height:1.15;margin-top:0pt;margin-bottom:0pt;\" dir=\"ltr\">Implement a dynamic buffer size to allow SFTP to use much larger buffers and possibly allow the size to be customizable by applications. Use less memory when handles are not in use?<\/p>\n<\/li>\n<\/ol>\n<h2 style=\"line-height:1.15;margin-top:10pt;margin-bottom:0pt;\" dir=\"ltr\">New stuff &#8211; curl<\/h2>\n<ol style=\"margin-top:0pt;margin-bottom:0pt;\">\n<li style=\"list-style-type:decimal;font-size:15px;font-family:Arial;color:#000000;background-color:transparent;font-weight:normal;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;\" dir=\"ltr\">\n<p style=\"line-height:1.15;margin-top:0pt;margin-bottom:0pt;\" dir=\"ltr\">Embed a language interpreter (lua?). For that middle ground where curl isn\u00e2\u20ac\u2122t enough and a libcurl binding feels \u00e2\u20ac\u0153too much\u00e2\u20ac\u009d. Build-time conditional of course.<\/p>\n<\/li>\n<li style=\"list-style-type:decimal;font-size:15px;font-family:Arial;color:#000000;background-color:transparent;font-weight:normal;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;\" dir=\"ltr\">\n<p style=\"line-height:1.15;margin-top:0pt;margin-bottom:0pt;\" dir=\"ltr\">Simplify the SMTP command line so that the headers and multi-part content don&#8217;t have to be constructed before calling curl<\/p>\n<\/li>\n<\/ol>\n<h2 style=\"line-height:1.15;margin-top:10pt;margin-bottom:0pt;\" dir=\"ltr\">Improve<\/h2>\n<ol style=\"margin-top:0pt;margin-bottom:0pt;\">\n<li style=\"list-style-type:decimal;font-size:15px;font-family:Arial;color:#000000;background-color:transparent;font-weight:normal;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;\" dir=\"ltr\">\n<p style=\"line-height:1.15;margin-top:0pt;margin-bottom:0pt;\" dir=\"ltr\">build for windows (considered hard by many users)<\/p>\n<\/li>\n<li style=\"list-style-type:decimal;font-size:15px;font-family:Arial;color:#000000;background-color:transparent;font-weight:normal;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;\" dir=\"ltr\">\n<p style=\"line-height:1.15;margin-top:0pt;margin-bottom:0pt;\" dir=\"ltr\">curl -h output (considered overwhelming to users)<\/p>\n<\/li>\n<li style=\"list-style-type:decimal;font-size:15px;font-family:Arial;color:#000000;background-color:transparent;font-weight:normal;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;\" dir=\"ltr\">\n<p style=\"line-height:1.15;margin-top:0pt;margin-bottom:0pt;\" dir=\"ltr\">we have \u00c2\u00a0&gt; 160 command line options, is there a way to redo things to simplify or improve the situation as we are likely to keep adding features\/options in the future too<\/p>\n<\/li>\n<li style=\"list-style-type:decimal;font-size:15px;font-family:Arial;color:#000000;background-color:transparent;font-weight:normal;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;\" dir=\"ltr\">\n<p style=\"line-height:1.15;margin-top:0pt;margin-bottom:0pt;\" dir=\"ltr\">docs (considered &#8220;bad&#8221; by users but how do we make it better?)<\/p>\n<\/li>\n<li style=\"list-style-type:decimal;font-size:15px;font-family:Arial;color:#000000;background-color:transparent;font-weight:normal;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;\" dir=\"ltr\">\n<p style=\"line-height:1.15;margin-top:0pt;margin-bottom:0pt;\" dir=\"ltr\">authentication framework (consider merging HTTP and SASL authentication to give one API for protocols to call)<\/p>\n<\/li>\n<li style=\"list-style-type:decimal;font-size:15px;font-family:Arial;color:#000000;background-color:transparent;font-weight:normal;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;\" dir=\"ltr\">\n<p style=\"line-height:1.15;margin-top:0pt;margin-bottom:0pt;\" dir=\"ltr\">Perform some of the clean up from the TODO document, removing old definitions and such like that are currently earmarked to be removed years ago<\/p>\n<\/li>\n<\/ol>\n<h2 style=\"line-height:1.15;margin-top:10pt;margin-bottom:0pt;\" dir=\"ltr\">Remove<\/h2>\n<ol style=\"margin-top:0pt;margin-bottom:0pt;\">\n<li style=\"list-style-type:decimal;font-size:15px;font-family:Arial;color:#000000;background-color:transparent;font-weight:normal;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;\" dir=\"ltr\">\n<p style=\"line-height:1.15;margin-top:0pt;margin-bottom:0pt;\" dir=\"ltr\">cmake support (nobody maintains it)<\/p>\n<\/li>\n<li style=\"list-style-type:decimal;font-size:15px;font-family:Arial;color:#000000;background-color:transparent;font-weight:normal;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;\" dir=\"ltr\">\n<p style=\"line-height:1.15;margin-top:0pt;margin-bottom:0pt;\" dir=\"ltr\">makefile.vc files as there is no point in maintaining two sets of Windows makefiles. Note: These are currently being used by the Windows autobuilds<\/p>\n<\/li>\n<\/ol>\n","protected":false},"excerpt":{"rendered":"<p>Roadmap of things Daniel Stenberg and Steve Holme want to work on next. It is intended to serve as a guideline for others for information, feedback and possible participation. If you agree, disagree or would like to add stuff you want to work on, please join us on the curl-library list! This &#8220;roadmap&#8221; is likely &hellip; <a href=\"https:\/\/daniel.haxx.se\/blog\/2014\/06\/19\/curl-the-next-few-years\/\" class=\"more-link\">Continue reading <span class=\"screen-reader-text\">curl the next few years<\/span> <span class=\"meta-nav\">&rarr;<\/span><\/a><\/p>\n","protected":false},"author":5,"featured_media":0,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[7,6],"tags":[33],"class_list":["post-5964","post","type-post","status-publish","format-standard","hentry","category-curl","category-floss","tag-curl-and-libcurl"],"_links":{"self":[{"href":"https:\/\/daniel.haxx.se\/blog\/wp-json\/wp\/v2\/posts\/5964","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/daniel.haxx.se\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/daniel.haxx.se\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/daniel.haxx.se\/blog\/wp-json\/wp\/v2\/users\/5"}],"replies":[{"embeddable":true,"href":"https:\/\/daniel.haxx.se\/blog\/wp-json\/wp\/v2\/comments?post=5964"}],"version-history":[{"count":9,"href":"https:\/\/daniel.haxx.se\/blog\/wp-json\/wp\/v2\/posts\/5964\/revisions"}],"predecessor-version":[{"id":6018,"href":"https:\/\/daniel.haxx.se\/blog\/wp-json\/wp\/v2\/posts\/5964\/revisions\/6018"}],"wp:attachment":[{"href":"https:\/\/daniel.haxx.se\/blog\/wp-json\/wp\/v2\/media?parent=5964"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/daniel.haxx.se\/blog\/wp-json\/wp\/v2\/categories?post=5964"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/daniel.haxx.se\/blog\/wp-json\/wp\/v2\/tags?post=5964"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}