
On Sun, 08 Feb 2004 15:12:46 -0500, David Abrahams wrote
ACE is also a dependency nightmare. If you want any of those components, you have to link the whole enormous ACE library into your application.
Yes I agree, which is in contrast to Boost. I think because Boost started as a collection of reasonably independent libraries from independent authors boost libraries are both intentionally and naturally better decoupled than ACE which was initially developed by a single author. BTW, there was a project to split ACE up into more consumable parts, but I don't think it really ever finished. However, it is an interesting study given the depth of experience embodied in the ACE project. There are details here: http://www.cs.wustl.edu/~doc/RandD/ACE/Docs/subsets.html If you look carefully at the table in the URL you will note that the "For TAO" (CORBA Orb implementation) subset is ~80%. What that means is that you can build a full CORBA Orb, which is obviously a pretty intense set of networking code, and ditch 1/5 of the library right off the top. Then you'll note the Utils is another ~18% of the library. In Boost the stuff in Utils like program options parsing, time stuff, etc would clearly be split up into several smaller libraries which may or may not be used by a particular app. So there is alot that can go. Taken another way, the core parts of ACE needed to write serious networked apps are: OS (this is basically boost::config for network and other stuff) Utils (command line parsing, date-time, etc) Logging (no boost equivalent yet) Threads (boost::threads) Demux (no boost equivalent yet) Connection (no boost equivalent yet) Sockets (no boost equivalent yet) If you add it up that's only about 50% of the library. And that's an over estimate because there is some precentage of the Utils that probably isn't needed ever... Jeff