Skip to content

Fix broken links reported in linkcheck#6176

Open
Shivam-Bhardwaj wants to merge 1 commit intoros2:rollingfrom
Shivam-Bhardwaj:fix/issue-4209-broken-links
Open

Fix broken links reported in linkcheck#6176
Shivam-Bhardwaj wants to merge 1 commit intoros2:rollingfrom
Shivam-Bhardwaj:fix/issue-4209-broken-links

Conversation

@Shivam-Bhardwaj
Copy link
Contributor

Summary

This PR addresses issue #4209 by fixing broken links found by make linkcheck.

Changes

  1. conf.py: Added linkcheck_ignore and linkcheck_anchors_ignore patterns for:

    • Sites that block automated requests (403 errors): Zazzle, Raspberry Pi, Intel, Science.org, linux.die.net
    • Matrix.to links (non-standard anchor format)
    • SSL-problematic sites (pyyaml.docsforge.com, www2.cs.sfu.ca)
    • GitHub line number anchors (which change frequently)
  2. Release notes (8 files): Fixed internal relative links:

    • Changed ../../{distro}/Installation.html to absolute https://docs.ros.org/en/{distro}/Installation.html
  3. Tutorial/Guide fixes:

    • Fixed broken cyberbotics.com anchor links
    • Fixed IBM Cloud documentation links with invalid anchors
    • Fixed rmw_fastrtps README anchor
    • Fixed ament_lint_auto anchor
    • Fixed rosdistro CONTRIBUTING.md anchor
    • Updated Ubuntu 20.04 download URL (focal/daily-live/pending → releases.ubuntu.com)
    • Replaced broken SFU unix guide with Ubuntu command line tutorial

Testing

  • make html builds successfully
  • sphinx-lint source passes
  • doc8 source passes
  • make spellcheck passes

Notes

This is a partial fix for #4209. The full list of broken links is extensive (100+), and many are in historical release notes pointing to GitHub commits/PRs that have been deleted or moved. This PR focuses on the most impactful fixes for tutorials, how-to guides, and configuration.

Closes #4209

- Add linkcheck_ignore patterns for sites returning 403 errors
- Add linkcheck_anchors_ignore for GitHub line number anchors
- Fix internal relative links to use absolute docs.ros.org URLs
- Fix broken anchor links in various documentation files
- Update deprecated/moved external URLs

This is a partial fix for issue ros2#4209. Addresses the most impactful
broken links in tutorials, how-to guides, and release notes.

For instructions on maintaining a source checkout of the **latest development version** of ROS 2, refer to
`Maintaining a source checkout of ROS 2 Rolling <../../rolling/Installation/Maintaining-a-Source-Checkout.html>`__
`Maintaining a source checkout of ROS 2 Rolling <https://docs.ros.org/en/rolling/Installation/Maintaining-a-Source-Checkout.html>`__
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thanks for the PR!

Unfortunately, I don't think we should hardcode https://docs.ros.org/en here and everywhere else. This is a weird link that the link checker complains about because we link to a different version of the docs, but someone else may want to build the docs and host them somewhere else (not https://docs.ros.org/en/), which means they'd have to change all of these.

I'd propose we reuse the value from the configuration file:

html_baseurl = 'https://docs.ros.org/en'

We could possibly do this with a new macro, like these ones: https://docs.ros.org/en/rolling/The-ROS2-Project/Contributing/Contributing-To-ROS-2-Documentation.html#macros. This could be done in a separate PR to keeps PRs simple.

""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
``ros2 topic pub`` now allows to set a ``builtin_interfaces.msg.Time`` message to the current time via the ``now`` keyword.
Similarly, a ``std_msg.msg.Header`` message will be automatically generated when passed the keyword ``auto``.
This behavior matches that of ROS 1's ``rostopic`` (http://wiki.ros.org/ROS/YAMLCommandLine#Headers.2Ftimestamps)
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Changing to https is great, but I would prefer to keep #Headers.2Ftimestamps to directly link to the relevant section. Same for the removal of other anchor links.

As mentioned in #4209, anchor link checking is broken/unreliable. It would be preferable to simply disable anchor link checking instead of removing them, since a potentially-invalid anchor link is still more useful than a simple link to a page/not to a specific section. An invalid anchor link will simply go to the top of the page, so it's not that bad.

``rmw_fastrtps_cpp`` uses `Shared Memory Transport <https://fast-dds.docs.eprosima.com/en/latest/fastdds/transport/shared_memory/shared_memory.html>`_ by default to improve the performance in the transport layer when the endpoints are in the same host system.
Security enclaves are still applied, and data will be encrypted.
However, you cannot capture live network traffic since the data will not be on the network interface.
If you are using ``rmw_fastrtps_cpp``, you need to either go through this tutorial and use a different host system between the publisher and subscriber, or disable shared memory transport with `Enabling UDP Transport <https://fast-dds.docs.eprosima.com/en/latest/fastdds/transport/udp/udp.html#enabling-udp-transport>`_ and `How to set Fast-DDS XML configuration <https://github.com/ros2/rmw_fastrtps#full-qos-configuration>`_.
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Here, I would keep #full-qos-configuration, but change it to explicitly link to the current distro using the {DISTRO} macro, e.g., https://github.com/ros2/rmw_fastrtps/blob/{DISTRO}/README.md.

This way, if #full-qos-configuration isn't valid for a future distro, we can just change it for that distro.

* :doc:`turtlesim installation <../../Beginner-CLI-Tools/Introducing-Turtlesim/Introducing-Turtlesim>`
* Have :doc:`rosdep installed <../../Intermediate/Rosdep>`
* Understanding of basic terminal commands (`here's a guide for Linux <https://www2.cs.sfu.ca/~ggbaker/reference/unix/>`__)
* Understanding of basic terminal commands (`here's a guide for Linux <https://ubuntu.com/tutorials/command-line-for-beginners>`__)
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

* `Support stream logging macros <https://github.com/ros2/rclcpp/pull/926>`__
* `Per-node logging <https://github.com/ros2/ros2/issues/789>`__ - All stdout/stderr output from nodes are logged in ~/.ros
* `ros2doctor <https://index.ros.org/doc/ros2/Tutorials/Getting-Started-With-Ros2doctor/>`__
* `ros2doctor <https://docs.ros.org/en/rolling/Tutorials/Beginner-Client-Libraries/Getting-Started-With-Ros2doctor.html>`__
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I think I would leave this link as-is.

Eloquent is an old/end-of-life distribution, and we don't really maintain the documentation for EOL distros. However, since each version of the docs has all "release" pages, it means we carry them forward in the docs of all distros. Keeping these pages up-to-date/valid over time would create too much work for us.

I would probably ignore link checking for Releases/Release-$DISTRO.rst pages that are not the same as the current distro/version of the docs. Can we do this?

@christophebedard
Copy link
Member

Since this is a partial fix for #4209, then please change "Closes #4209" to "Relates #4209" in the PR description so that merging this PR doesn't close that issue!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

make linkcheck finds many broken links

2 participants