From: Jose <jm...@gm...> - 2007-06-04 07:13:26
|
Hi Dean, I've copied your doc here so that comments can be provided inline and the doc can be merged with the doc I sent a few minutes after you. I will comment on your doc in a separate message ====================================================================================== C++ Networking Library Goals and Scope Objectives ---------- o Develop a high quality, portable, easy to use C++ networking library o Enable users to easily extend the library o Lower the barrier to entry for cross-platform network-aware C++ applications Goals ----- * Implement a simple message implementation which can be used in network protocol-specific routines for inter-operability and to provide a generic interface to manipulating network-oriented messages. * Implement easy to use protocol client libraries such as (but not limited to): - HTTP 1.0/1.1 - (E)SMTP - SNMP - ICMP * Implement an efficient easy to use URI class/parser. * Implement a fully compliant cross-platform asynchronous DNS resolver either as a wrapper to external (C) libraries, or as hand-rolled implementation. * Implement a MIME handler which builds message objects from either data retrieved from the network or other sources and create text/binary representations from existing message objects intended for transport over the network. Scope ----- * The library will provide a generic message class which is intended to be the common message type used by the protocol libraries. * The library will only contain client implementations for the various supported protocols. * The library will use only STL and Boost C++ library components, utilities, and libraries throughout the implementation. * The library will strive to use C++ templates and template metaprogramming techniques in order to not require the building of external shared/static libraries. In other words, the library will be header-only and compliant with the C++ standard. On 6/4/07, Jose <jm...@gm...> wrote: > > > Hi, > > I would like to get a basic agreement on the goals and roadmap, so that we > can choose where to contribute and avoid duplicating effort. Pls send me > your comments so that > we can get a more concrete document > > General library goals > =============== > > - Performance (do not pay for what you don't use) > I think this is a goal for many C++ libraries and it is specially > important for a c++ network library > > - Reusability of protocol classes > Already discussed. Very important to the protocol designer > > - Protocol conformance > I think this is key for the success of the library. There are many > protocol implementations out there and what really hampers them is that they > provide a partial implementation, which looks like a proof of concept but > not a complete one. So, whatever protocols are choosen (client or/and server > side), they should be fully implemented otherwise users will fork their own > implementations (which is fine but contradicts the value of a library) > > Below is a basic list of protocols (which should be in order of priority). > It has already been stated in the mailing list that the library goal is to > provide reusable protocol development components and a few protocol > implementations. Applications like web server or email server could be > provided but it is not a goal to provide competitive application > implementations. > > Protocol Roadmap > ============== > > * HTTP 1.0 client > - URI parser > - request object > - reply parser > * SMTP client > - pls send the list of key features > * HTTP 1.1 client > - cookies > - gzip > - multipart mime > - easy interface to async DNS > * HTTPS > * ESMTP client > * HTTP 1.0 server > * HTTP 1.1 server > * ESMTP server > > Example Applications > ================ > > Web server, email server, ... > > > Pls send your comments > > regards > jose > |