diff --git a/xsd/package_format1.xsd b/xsd/package_format1.xsd
index b07616aab..ae90e881e 100644
--- a/xsd/package_format1.xsd
+++ b/xsd/package_format1.xsd
@@ -30,17 +30,26 @@
+ The package name must start with a letter and contain only
+ lowercase alphabetic, numeric, or underscore characters.
The package name should be unique within the ROS community.
It may differ from the folder name into which it is checked out,
but that is not recommended.
- It must start with a lower-case letter and consist of only
- lower-case letters, numbers and underscores.
- It must not have two consecutive underscores.
+
+ The following recommended exemptions apply, which are optional
+ for implementations:
+ - Dashes may be permitted in package names. This is to support
+ maintaining a consistent dependency name when transitioning back
+ and forth between a system dependency and in-workspace package,
+ since many rosdep keys contain dashes (inherited from the
+ Debian/Ubuntu name).
+ - In support of some legacy packages, capital letters may also be
+ accepted in the package name, with a validation warning.
-
+
diff --git a/xsd/package_format2.xsd b/xsd/package_format2.xsd
index 73cd9c1f0..2e77bb928 100644
--- a/xsd/package_format2.xsd
+++ b/xsd/package_format2.xsd
@@ -30,17 +30,26 @@
+ The package name must start with a letter and contain only
+ lowercase alphabetic, numeric, or underscore characters.
The package name should be unique within the ROS community.
It may differ from the folder name into which it is checked out,
but that is not recommended.
- It must start with a lower-case letter and consist of only
- lower-case letters, numbers and underscores.
- It must not have two consecutive underscores.
+
+ The following recommended exemptions apply, which are optional
+ for implementations:
+ - Dashes may be permitted in package names. This is to support
+ maintaining a consistent dependency name when transitioning back
+ and forth between a system dependency and in-workspace package,
+ since many rosdep keys contain dashes (inherited from the
+ Debian/Ubuntu name).
+ - In support of some legacy packages, capital letters may also be
+ accepted in the package name, with a validation warning.
-
+
diff --git a/xsd/package_format3.xsd b/xsd/package_format3.xsd
index c09cd8eb9..35f922525 100644
--- a/xsd/package_format3.xsd
+++ b/xsd/package_format3.xsd
@@ -67,17 +67,26 @@
+ The package name must start with a letter and contain only
+ lowercase alphabetic, numeric, or underscore characters.
The package name should be unique within the ROS community.
It may differ from the folder name into which it is checked out,
but that is not recommended.
- It must start with a lower-case letter and consist of only
- lower-case letters, numbers and underscores.
- It must not have two consecutive underscores.
+
+ The following recommended exemptions apply, which are optional
+ for implementations:
+ - Dashes may be permitted in package names. This is to support
+ maintaining a consistent dependency name when transitioning back
+ and forth between a system dependency and in-workspace package,
+ since many rosdep keys contain dashes (inherited from the
+ Debian/Ubuntu name).
+ - In support of some legacy packages, capital letters may also be
+ accepted in the package name, with a validation warning.
-
+