<html><head><style type="text/css"><!-- DIV {margin:0px;} --></style></head><body><div style="font-family:times new roman, new york, times, serif;font-size:12pt"><div style="font-family: times new roman,new york,times,serif; font-size: 12pt;">The approach I've seen most often is to mark functions as deprecated and wait for a major release with expected API breakages to actually remove them.&nbsp; I doubt the inclusion of http and dns will be a deal-breaker for anyone, but if this is a sign of more and more code built on top of libevent to be included in the core library, it may discourage porting and usage.&nbsp; <br><br><div style="font-family: times new roman,new york,times,serif; font-size: 12pt;">----- Original Message ----<br>From: Nick Mathewson &lt;nickm@freehaven.net&gt;<br>To: libevent-users@monkey.org<br>Sent: Monday, October 1, 2007 7:20:04 PM<br>Subject: Re: [Libevent-users] [PATCH] Add autoconf/make functionality for --disable-dns,
 --disable-http, and --disable-bevents<br><br><div>On Mon, Oct 01, 2007 at 03:46:42PM -0700, Larry Lewis wrote:<br>&gt; +1 for the features not belonging in the library.&nbsp;&nbsp;I'd recommend<br>&gt; moving those features out into supporting libraries<br>&gt; (libevent-http/libevent-dns?) or even just using them as samples.<br>&gt; Most users would probably end up tweaking the http code anyways, in<br>&gt; my opinion.<br><br>Here's an updated excerpt from the mail I sent Niels back in February,<br>the last time people were talking about this:<br><br>&nbsp;&nbsp;Niels wrote:<br>&nbsp;&nbsp;&gt; BTW, do you have an opinion about putting the more heavy-weight<br>&nbsp;&nbsp;&gt; libevent stuff into a separate library?<br><br>&nbsp;&nbsp;Personally, I don't feel very strongly about this, but I'd vote for<br>&nbsp;&nbsp;two libraries built from a single source package, or for two<br>&nbsp;&nbsp;libraries.<br><br>&nbsp;&nbsp;My reasoning against having only
 one library is this: I'd like to<br>&nbsp;&nbsp;see the core of libevent get used by more projects, but the larger<br>&nbsp;&nbsp;it becomes, the more work is required to maintain it, and port it to<br>&nbsp;&nbsp;new platforms.&nbsp;&nbsp;I'd like to see the libevent core usable as a<br>&nbsp;&nbsp;back-end by other general-purpose network utility libraries, like<br>&nbsp;&nbsp;apr and glib and Twisted.&nbsp;&nbsp;These libraries already have their own<br>&nbsp;&nbsp;implementations for things like http and rpc, though, and really<br>&nbsp;&nbsp;don't need the ones in libevent.<br>&nbsp;&nbsp; [...]<br><br>&nbsp;&nbsp;My reason for preferring a single source package is that I'd like<br>&nbsp;&nbsp;the I'd like the extended stuff to be available by default<br>&nbsp;&nbsp;everywhere libevent is available, which is easiest if you have<br>&nbsp;&nbsp;package maintainers start shipping two libraries from one package.<br>&nbsp;&nbsp;(If you create a new
 source package, that will take more time to see<br>&nbsp;&nbsp;any adoption.)<br><br>&nbsp;&nbsp; [...]<br>&nbsp;&nbsp;Of course, if you'd rather keep it as one package, I don't think my<br>&nbsp;&nbsp;reasons above are really compelling.&nbsp;&nbsp;Factoring libraries is kind of<br>&nbsp;&nbsp;a bike-shed problem; it's easy to form an opinion, and hard to show<br>&nbsp;&nbsp;that any opinion is significantly better than any other.<br><br>So, I don't really agree with the original patch either.&nbsp;&nbsp;As a<br>maintainer for an application that uses libevent, it's enough of a<br>pain as it is to tell users "you need to have libevent version X<br>installed on OS Foo; you need libevent version Y on OS Bar, but<br>version Z would be better for performance reasons."&nbsp;&nbsp;It would be<br>inconvenient if we also had to tell users "If your version of libevent<br>was built with certain compilation options, we can't use it.&nbsp;&nbsp;Sorry."<br><br>So,
 deleting the functionality: not an option IMO.<br><br>Moving functionality out of a library is always ugly business: every<br>project that previously depended on the functionality being in the<br>original library will now break, and you'll get a reputation as the<br>kind of project that breaks backward compatibility all the time.<br><br>Thus, if we're going to try to refactor libevent, we should make very<br>very sure to avoid breaking older programs that are built to use<br>existing libraries.&nbsp;&nbsp;I will not apply any patch for this that breaks<br>backward compatibility.<br><br>I'm no expert on cross-platform dynamic linkers, but is it feasible<br>(with libtool or otherwise) to arrange things so that we can split<br>libevent into separate libraries (libevent-core, libevent-http, etc),<br>while at the same time ensuring that we don't break old code that<br>searches for a "libevent" library with all the current libevent APIs?<br><br>yrs,<br>--
 <br>Nick Mathewson<br></div></div><br></div></div></body></html>