Closed SeanCurtis-TRI closed 2 years ago
Thank you for explanation. It took me a while to understand. It is indeed tricky to maintain the balance of users and developers.
As a warmup, I searched for @anchor
tags that are defined within a namespace internal
block. Here are the results:
point_contact_data_accessors
internal_forward_dynamics
So, the broken-link problems are covered by #14107. Next is to try to discover the full set of drake:
extensions to SDF/URDF and their documentation.
Here are all of the potential element/attribute names found, within multibody/parsing.
drake:acceleration
drake:accepting_renderer
drake:linear_bushing_rpy
drake:capsule
drake:ellipsoid
drake:half_space
drake:collision_filter_group
drake:declare_convex
drake:diffuse_map
drake:gear_ratio
drake:rotor_inertia
drake:joint
sdf, urdf element
assorted attributes and subelements
not documented?
drake:proximity_properties
sdf, urdf element
assorted sub-parts
within collision
documented here
drake:elastic_modulus
deprecated in favor of drake:hydroelastic_modulus
drake:soft_hydroelastic
deprecated in favor of drake:compliant_hydroelastic
Summary: nothing is documented in any renderable place, much is undocumented. Several language definition questions need resolving.
Boxes are checked. Of course it's not all perfect, but I think good enough to declare victory here. Closing.
Problem
There are, ultimately, design issues in the API that affect end users decisions. Many of these have been documented in the code. In some case, they've been included in the documentation for private or internal APIs. As such, the information is not discoverable through doxygen. This is part of a larger trend.
Examples:
Solution
We need to scrub through the geometry code and distill the documentation into a better user guide. Through the use of tags and anchors, documentation for internal APIs can call back to that documentation so that it doesn't get duplicated.
Complexity
There are several issues that makes this harder than one might think at first. Taking parsing as an example:
internal
so none of that good documentation gets put in rendered doxygen.So, the goal would be to document behavior once such that it serves both developer and user without introducing entropy (needlessly).