{"id":1829,"date":"2010-07-22T23:52:22","date_gmt":"2010-07-22T21:52:22","guid":{"rendered":"http:\/\/daniel.haxx.se\/blog\/?p=1829"},"modified":"2010-07-24T23:32:43","modified_gmt":"2010-07-24T21:32:43","slug":"c-ares-now-and-ahead","status":"publish","type":"post","link":"https:\/\/daniel.haxx.se\/blog\/2010\/07\/22\/c-ares-now-and-ahead\/","title":{"rendered":"C-ares, now and ahead!"},"content":{"rendered":"<p>The project <a href=\"http:\/\/c-ares.haxx.se\/\">c-ares<\/a> started many years ago (March 2004) when I decided to fork the existing ares project to get the changes done that I deemed necessary &#8211; and the original project owner didn&#8217;t want them.<\/p>\n<p>I did my original work on c-ares back then primarily to get a good asynchronous name resolver for <a href=\"http:\/\/curl.haxx.se\/libcurl\/\">libcurl<\/a> so that we would get around the limitation of having to do the name resolves totally synchronously as the libc interfaces mandate. Of course, c-ares was and is more than just name resolving and not too surprisingly, there have popped up other projects that are now using c-ares.<\/p>\n<p>I&#8217;m maintaining a bunch of open source projects, and c-ares was never one that I felt a lot of love for, it was mostly a project that I needed to get done and when things worked the way I wanted them I found myself having ended up as maintainer for yet another project. I&#8217;ve repeatedly mentioned on the <a href=\"http:\/\/c-ares.haxx.se\/mail.cgi\">c-ares mailing list<\/a> that I don&#8217;t really have time to maintain it and that I&#8217;d rather step down and let someone else &#8220;take over&#8221;.<\/p>\n<p>After having said this for over 4 years, I&#8217;ve come to accept that even though c-ares has many users out there, and even seems to be appreciated by companies and open source projects, there just isn&#8217;t any particular big desire to help out in our project. I find it very hard to just &#8220;give up&#8221; a functional project, so I linger and do my best to give it the efforts and love it needs. <em>I very much need and want help to maintain and develop c-ares<\/em>. I&#8217;m not doing a very good job with it right now.<\/p>\n<p><strong>Threaded name resolves competes<\/strong><\/p>\n<p>I once thought we would be able to make c-ares capable of becoming a true drop-in replacement for the native system name resolver functions, but over the years with c-ares I&#8217;ve learned that the dusty corners of name resolving in unix and Linux have so many features and fancy stuff that c-ares is still a long way from that. It has also made me turn around somewhat and I&#8217;ve reconsidered that perhaps using a threaded native resolver is the better way for libcurl to do asynchronous name resolves. That way we don&#8217;t need any half-baked implementations of the resolver. Of course it comes at the price of a new thread for each name resolve, which turns really nasty of you grow the number of connections just a tad bit, but still most libcurl-using applications today hardly use more than just a few (say less than a hundred) simultaneous transfers.<\/p>\n<p><strong>Future!<\/strong><\/p>\n<p>I don&#8217;t think the future has any radical changes or drastically new stuff in the pipe for c-ares. I think we should keep polishing off bugs and add the small functions and features that we&#8217;re missing. I believe we&#8217;re not yet parsing all records we could do, to a convenient format.<\/p>\n<p>As usual, a project is not about how much we can add but about how much we can avoid adding and how much we can remain true to our core objectives. I wish the growing popularity will make more people join the project and then not only to through a single patch at us, but to also hand around a while and help us somewhat more.<\/p>\n<p>Hopefully we will one day be able to use c-ares instead of a typical libc-based name resolver and yet resolve the same names.<\/p>\n<p>Join us and help us give c-ares a better future!<\/p>\n<p style=\"text-align: center;\"><a href=\"http:\/\/c-ares.haxx.se\/\"><img loading=\"lazy\" decoding=\"async\" class=\"size-medium wp-image-1412  aligncenter\" title=\"c-ares\" src=\"http:\/\/daniel.haxx.se\/blog\/wp-content\/uploads\/2009\/11\/cares-300x104.png\" alt=\"c-ares\" width=\"300\" height=\"104\" srcset=\"https:\/\/daniel.haxx.se\/blog\/wp-content\/uploads\/2009\/11\/cares-300x104.png 300w, https:\/\/daniel.haxx.se\/blog\/wp-content\/uploads\/2009\/11\/cares-150x52.png 150w, https:\/\/daniel.haxx.se\/blog\/wp-content\/uploads\/2009\/11\/cares.png 460w\" sizes=\"auto, (max-width: 300px) 100vw, 300px\" \/><\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<p>The project c-ares started many years ago (March 2004) when I decided to fork the existing ares project to get the changes done that I deemed necessary &#8211; and the original project owner didn&#8217;t want them. I did my original work on c-ares back then primarily to get a good asynchronous name resolver for libcurl &hellip; <a href=\"https:\/\/daniel.haxx.se\/blog\/2010\/07\/22\/c-ares-now-and-ahead\/\" class=\"more-link\">Continue reading <span class=\"screen-reader-text\">C-ares, now and ahead!<\/span> <span class=\"meta-nav\">&rarr;<\/span><\/a><\/p>\n","protected":false},"author":5,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[239,7,13],"tags":[213,33,286,19],"class_list":["post-1829","post","type-post","status-publish","format-standard","hentry","category-c-ares-floss","category-curl","category-net","tag-c-ares","tag-curl-and-libcurl","tag-dns","tag-open-source"],"_links":{"self":[{"href":"https:\/\/daniel.haxx.se\/blog\/wp-json\/wp\/v2\/posts\/1829","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=1829"}],"version-history":[{"count":20,"href":"https:\/\/daniel.haxx.se\/blog\/wp-json\/wp\/v2\/posts\/1829\/revisions"}],"predecessor-version":[{"id":1882,"href":"https:\/\/daniel.haxx.se\/blog\/wp-json\/wp\/v2\/posts\/1829\/revisions\/1882"}],"wp:attachment":[{"href":"https:\/\/daniel.haxx.se\/blog\/wp-json\/wp\/v2\/media?parent=1829"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/daniel.haxx.se\/blog\/wp-json\/wp\/v2\/categories?post=1829"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/daniel.haxx.se\/blog\/wp-json\/wp\/v2\/tags?post=1829"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}