On 2019-05-06 7:47 p.m., Rene Rivera via Boost wrote:
What would it take to reach that modular goal? Why do I keep saying we've been working on this for ages and ages? Briefly here's what it would take to get there (not in any particular order):
* Abandon the single header include tree. * Abandon the monolithic build infrastructure. * Ban relative use of inter-library dependencies. * Explicit declaration of inter-library dependencies. * Strict normalized library layout. * Remove, and ban, dependency cycles at the inter-library user consumable granularity.
There's probably more items that I've forgotten above. But this should be enough to converse about.
Indeed. For example documentation and other metadata (issue trackers, release notes, etc., etc.) that we may want to syndicate via the main boost.org portal, but which should likewise not be generated in a monolithic way. The best part about modularization is that we don't have to switch from black to white in a single atomic transaction. Rather, we can take one library at a time and apply the above rules. In fact, I imagine it to be possible to draw a graph that shows inbound (prerequisites) and outbound (dependencies) connections, so we can rank libraries such that we work our way from the outside inwards. The ones that no other boost libraries depend on, and which have the fewest boost prerequisites, can be converted first. This work can in fact spread over multiple release cycles, so we don't have to complete all of this within four months. Stefan -- ...ich hab' noch einen Koffer in Berlin...