Julian Gonggrijp wrote:
PROPOSAL
The following (evolutionary) global changes to Boost should be planned and given priority over any other proposals [e.g. 5], in the following order:
1. Reduction of dependencies between Boost libraries. 2. Simple but effective automation of dependency handling.
We all agree on these goals in principle, but what do you actually propose we need to do? We need to start somewhere. Specifics are needed. What I can contribute at the moment is - a suggestion that we publish a Boost dependency report in HTML format somewhere on boost.org that tells us, and anyone interested, what depends on what and why; - a program that generates such a report (in plain text) as a starting point (attached). As an example, I've pasted inline the output of "boostdep smart_ptr". This only gives the primary dependencies; it would be nice for the finished product to include the secondary module dependencies as well (without going into specifics what included what, just what module brought up the secondary dependency). Dependencies for smart_ptr: align: <boost/align/align.hpp> from <boost/smart_ptr/detail/array_allocator.hpp> assert: <boost/assert.hpp> from <boost/smart_ptr/detail/atomic_count_pt.hpp> from <boost/smart_ptr/detail/lwm_pthreads.hpp> from <boost/smart_ptr/detail/sp_counted_base_pt.hpp> from <boost/smart_ptr/detail/spinlock_nt.hpp> from <boost/smart_ptr/enable_shared_from_raw.hpp> from <boost/smart_ptr/enable_shared_from_this.hpp> from <boost/smart_ptr/intrusive_ptr.hpp> from <boost/smart_ptr/scoped_array.hpp> from <boost/smart_ptr/scoped_ptr.hpp> from <boost/smart_ptr/shared_array.hpp> from <boost/smart_ptr/shared_ptr.hpp> <boost/current_function.hpp> from <boost/detail/sp_typeinfo.hpp> config: <boost/config.hpp> from <boost/detail/lightweight_thread.hpp> from <boost/detail/sp_typeinfo.hpp> from <boost/get_pointer.hpp> from <boost/smart_ptr.hpp> from <boost/smart_ptr/detail/array_utility.hpp> from <boost/smart_ptr/detail/atomic_count.hpp> from <boost/smart_ptr/detail/lightweight_mutex.hpp> from <boost/smart_ptr/detail/quick_allocator.hpp> from <boost/smart_ptr/detail/shared_count.hpp> from <boost/smart_ptr/detail/sp_convertible.hpp> from <boost/smart_ptr/detail/sp_counted_base.hpp> from <boost/smart_ptr/detail/sp_counted_impl.hpp> from <boost/smart_ptr/detail/sp_forward.hpp> from <boost/smart_ptr/detail/sp_interlocked.hpp> from <boost/smart_ptr/detail/sp_nullptr_t.hpp> from <boost/smart_ptr/detail/spinlock.hpp> from <boost/smart_ptr/detail/spinlock_pool.hpp> from <boost/smart_ptr/detail/yield_k.hpp> from <boost/smart_ptr/enable_shared_from_raw.hpp> from <boost/smart_ptr/enable_shared_from_this.hpp> from <boost/smart_ptr/intrusive_ptr.hpp> from <boost/smart_ptr/intrusive_ref_counter.hpp> from <boost/smart_ptr/make_shared_object.hpp> from <boost/smart_ptr/make_unique_object.hpp> from <boost/smart_ptr/scoped_array.hpp> from <boost/smart_ptr/scoped_ptr.hpp> from <boost/smart_ptr/shared_array.hpp> from <boost/smart_ptr/shared_ptr.hpp> <boost/config/no_tr1/functional.hpp> from <boost/smart_ptr/intrusive_ptr.hpp> <boost/config/no_tr1/memory.hpp> from <boost/get_pointer.hpp> from <boost/smart_ptr/detail/shared_count.hpp> from <boost/smart_ptr/shared_ptr.hpp> <boost/detail/workaround.hpp> from <boost/smart_ptr/detail/shared_count.hpp> from <boost/smart_ptr/detail/sp_counted_base_w32.hpp> from <boost/smart_ptr/enable_shared_from_raw.hpp> from <boost/smart_ptr/intrusive_ptr.hpp> from <boost/smart_ptr/scoped_array.hpp> from <boost/smart_ptr/scoped_ptr.hpp> from <boost/smart_ptr/shared_array.hpp> from <boost/smart_ptr/shared_ptr.hpp> exception: <boost/throw_exception.hpp> from <boost/smart_ptr/detail/shared_count.hpp> from <boost/smart_ptr/shared_ptr.hpp> type_traits: <boost/type_traits/add_rvalue_reference.hpp> from <boost/smart_ptr/make_unique_object.hpp> <boost/type_traits/alignment_of.hpp> from <boost/smart_ptr/detail/array_allocator.hpp> from <boost/smart_ptr/detail/quick_allocator.hpp> from <boost/smart_ptr/make_shared_object.hpp> <boost/type_traits/has_trivial_constructor.hpp> from <boost/smart_ptr/detail/array_utility.hpp> <boost/type_traits/has_trivial_destructor.hpp> from <boost/smart_ptr/detail/array_utility.hpp> <boost/type_traits/remove_cv.hpp> from <boost/smart_ptr/detail/array_traits.hpp> <boost/type_traits/type_with_alignment.hpp> from <boost/smart_ptr/detail/quick_allocator.hpp> from <boost/smart_ptr/make_shared_object.hpp> utility: <boost/checked_delete.hpp> from <boost/smart_ptr/detail/shared_count.hpp> from <boost/smart_ptr/detail/sp_counted_impl.hpp> from <boost/smart_ptr/scoped_array.hpp> from <boost/smart_ptr/scoped_ptr.hpp> from <boost/smart_ptr/shared_array.hpp> from <boost/smart_ptr/shared_ptr.hpp> <boost/utility/addressof.hpp> from <boost/smart_ptr/detail/shared_count.hpp>