The original discussion conflates two distinct issues.
But first, a reminder that at its heart, ROS is an SDK that enables distributed computing, providing APIs in various languages and leveraging an underlying middleware for communication.
The core ROS packages (~360) primarily provide these APIs, along with tools for visualization and testing, enabling users to build distributed robotics applications. Building on this foundation, community members have developed and open-sourced many powerful out-of-the-box capabilities for tasks such as SLAM, navigation, motion planning, and control. These capabilities are not part of the ROS “core” and are therefore not typically included in the official core ROS documentation.
Issue 1: Picking up ROS for Beginners.
As many have pointed out, defining the “Beginner” persona is non-trivial, which complicates the creation and maintenance of targeted learning guides. For instance, is a ‘beginner’ someone new to programming entirely, or someone experienced with distributed applications but new specifically to ROS?
The former group needs to learn foundational concepts, including compilers, linkers, build tools, build systems, dependency management, binaries, networking fundamentals, inter-process communication, version control, code editors, software design patterns, operating system basics, terminal commands, debugging techniques etc. I started my ROS journey as a mechanical engineering student with limited experience writing Arduino code. There was a lot I had to learn (and am continuing to learn) and jumping into a Turtlebot tutorial was extremely overwhelming. Learning basic concepts and getting familiar with introspection tools can enable one to learn most ROS-based systems.
The issue may be reduced to defining a concrete set of “Prerequisites” before one can embark on their ROS journey and agreeing on which of these prerequisites come from our documentation vs leaving it as “an exercise for the reader”. → Is this something we can collective define as a community?
Even the Unity tutorials which are the best I’ve seen for any project, can be frustrating for someone new to programming.
Once prerequisites are met, I argue that beginners should start with the Concepts page before moving to the Beginner Tutorials. There is significant room for improvement on the Concepts page, potentially aided by LLM tools suggested by others.
Regarding guidance on building complex applications, rather than extensive core tutorials, it might be more effective to direct users to established projects like Navigation2, MoveIt 2, Open-RMF, and ros2_control. These serve as excellent examples of how to develop performant applications and libraries using ROS.
As for tutorials on best practices, production deployment, and scaling, much valuable information already exists within various ROSCon talks presented over the years. Most of these talks are recorded and available on Vimeo. Automagically (with “AI”) generating blog-style content or summaries for the documentation pages from these videos and slides could be highly beneficial.
We could certainly to do a better job of consolidating & organizing information for different user personas and help from the community is much needed. It’s got to be a continuous effort.
Issue 2: Helping ROS 1 users migrate to ROS 2
I argue that most ROS 1 users are already familiar with core ROS concepts. For them, migration primarily involves understanding the API changes required to adapt their code for ROS 2 interfaces, nodes, topics, services, actions, parameters, and launch files.
Are there specific gaps in our current migration guide or client library tutorials that hinder maintainers during API migration? I don’t see any callouts to these resources in the Google document linked above.
If the challenges involve migrating large, complex systems (e.g., migrating your entire ROS 1 navigation stack to nav2), I believe this falls outside the scope of core ROS documentation and relates more to specific application-level packages and their respective communities.