<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. 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. <br><br><div style="font-family: times new roman,new york,times,serif; font-size: 12pt;">----- Original Message ----<br>From: Nick Mathewson <nickm@freehaven.net><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>> +1 for the features not belonging in the library. I'd recommend<br>> moving those features out into supporting libraries<br>> (libevent-http/libevent-dns?) or even just using them as samples.<br>> Most users would probably end up tweaking the http code anyways, in<br>> 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> Niels wrote:<br> > BTW, do you have an opinion about putting the more heavy-weight<br> > libevent stuff into a separate library?<br><br> Personally, I don't feel very strongly about this, but I'd vote for<br> two libraries built from a single source package, or for two<br> libraries.<br><br> My reasoning against having only
one library is this: I'd like to<br> see the core of libevent get used by more projects, but the larger<br> it becomes, the more work is required to maintain it, and port it to<br> new platforms. I'd like to see the libevent core usable as a<br> back-end by other general-purpose network utility libraries, like<br> apr and glib and Twisted. These libraries already have their own<br> implementations for things like http and rpc, though, and really<br> don't need the ones in libevent.<br> [...]<br><br> My reason for preferring a single source package is that I'd like<br> the I'd like the extended stuff to be available by default<br> everywhere libevent is available, which is easiest if you have<br> package maintainers start shipping two libraries from one package.<br> (If you create a new
source package, that will take more time to see<br> any adoption.)<br><br> [...]<br> Of course, if you'd rather keep it as one package, I don't think my<br> reasons above are really compelling. Factoring libraries is kind of<br> a bike-shed problem; it's easy to form an opinion, and hard to show<br> that any opinion is significantly better than any other.<br><br>So, I don't really agree with the original patch either. 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." 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. 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. 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>