Boost logo

Boost :

From: Michael Dickey (mike_at_[hidden])
Date: 2007-12-09 20:29:50


I've been working over the past 7+ months on a little library that
uses Boost and ASIO to implement HTTP functionality. Originally I
called this "libpion," then renamed it to the "Pion Network Library."
I'm using it as piece of a larger open source project for complex
event processing, which has taken on the overall "Pion" brand (hence
the change).

The library includes pretty comprehensive support for HTTP versions
1.0 and 1.1, including persistent connections, pipelining, chunked
encodings, etc. It supports client-side operations as well as an
extensive server-side implementation, and can use either blocking or
asynchronous sockets (through use of the Boost.ASIO library).

The original purpose was to create a Boost/C++ library for building
lightweight HTTP interfaces for applications. Although it can
certainly be used to serve files, It is not meant to replace or
compete with any full-featured web server (like Apache or lighttpd).
One of its main features/uses is to bind HTTP resources to code. The
library is now fairly stable and feature-complete, and I have a few
other developers helping out with it. I've been thinking more lately
about preparing this to submit for formal review as a Boost library.
However, there are a few obstacles that I know of:

1) This is my first Boost library, and I made the mistake of using
CamelCase and other non-Boost styles starting it out. So, some re-
naming and cleanup work would obviously be required. I don't imagine
this would take too much time, though.

2) Some of the functionality overlaps with other libraries that have
not yet been included or accepted into Boost (most notably, I think
Boost.Extension would overlap with Pion's handling of web services:
dynamic plug-ins bound to resources). I'd be happy (and actually
prefer) to swap out this code with Boost.Extension, but I do not
believe it has been reviewed or accepted yet either. I could also
prepare a version with the plug-in functionality removed, but since
it's being used in other projects, this would create a fork requiring
extra maintenance energy, etc.

3) I know that Dean Michael Berris has formed a group of developers
working on a more comprehensive network protocol library for Boost
called cpp-netlib. HTTP is one of the protocols they are working on.
I've offered and would still be quite happy to combine efforts
somehow, but that project still seems to have a long way to go, and a
few people have mentioned that it may be preferable to have an
independent library focused on HTTP.

So.. I decided to throw all this out there and see what people think.
Should Boost have its own HTTP library, or should it be part of an
more comprehensive network protocol library? Would it be better have
something available sooner in Boost that works and is reliable, and
try to resolve the overlap over time as cpp-netlib matures? Or, would
it be better to wait and try to merge my library (or at least it's
functionality) into cpp-netlib?


Boost list run by bdawes at, gregod at, cpdaniel at, john at