Skip to content

Support legacy URLs for libs transitioning from monolithic to modular docs #1760

Open
@joaquintides

Description

@joaquintides

In his post "Proposal: Abandoning monolithic Boost documentation", René Rivera (@grafikrobot) proposes that the project abandon so-called monolithic docs in favor of modular docs (already more prevalent overall) .

What are monolithic docs

A subset of Boost libraries (around 1/3 of them all) place their generated docs in a common doc/html folder outside their own directory, which allows for the construction of a global document encompassing them all called the BoostBook Subset:

https://www.boost.org/doc/libs/1_88_0/doc/html/libraries.html

Consider a library with monolithic docs, Boost.PolyCollection, and one with modular docs, Boost.MultiIndex: their doc homepages for Boost 1.88 are located at

respectively, and further sections within docs look like:

So, a monolithic doc for library X lives at

  • doc/libs/<version>/doc/html/<lib_x>.html (homepage)
  • doc/libs/<version>/doc/html/<lib_x>/

where <lib_x> is chosen by the library itself, typically being the library short name (e.g. variant) or that with boost_ preprended (e.g. boost_units). There are three monolithic-doc libraries that break this convention:

  • MultiArray: their non-homepage sections are placed directly under doc/html
  • STLInterfaces: homepage stl_interfaces.html, subdirectory boost_stlinterfaces
  • YAP: homepage yap.html, subdirectory boost_yap

Request: support legacy URLs for transitioned libraries

If René's proposal gets traction, monolithic-doc libs living at doc/libs/<version>/doc/html/ will move to doc/libs/<version>/libs/<lib_x>/doc/html/ (other transition schemes are possibles, but this is the most likely). I propose that we support legacy URLs (as plently of those will be archived throughout the Internet) by redirecting them to the new location.

For maximum flexibility, these redirects will probably need be done on a per-library basis, because, as we have seen, the structure of BoostBook is not exactly fixed. Considering again the case of Boost.PolyCollection, the required redirects would be:

  • doc/libs/<version>/doc/html/poly_collection.html --> doc/libs/<version>/libs/poly_collection/doc/html/index.html
  • doc/libs/<version>/doc/html/poly_collection/* --> doc/libs/<version>/libs/poly_collection/doc/html/*

Case study: Boost.PolyCollection

If we decide to proceed with this issue, I can modularize Boost.PolyCollection right away so that we have an initial set of redirects to work on. If René decides to post a set of PRs for modularization of all/some libraries, it would be perfect if he could also synchronize here.

Metadata

Metadata

Assignees

No one assigned

    Labels

    FeatureNew feature or request

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions