********** Namespaces ********** Project namespaces in OpenDaylight are used to ensure projects do not have name collisions in code and packages. OpenDaylight enforces namespaces in Nexus using the following patterns: - ^/org\.opendaylight\.PROJECT/.* - ^/org/opendaylight/PROJECT/.* Where PROJECT is the name of an OpenDaylight project. In cases where a project has a sub-project we recommend adding an additional level to the path for example `org.opendaylight.integration.test` however no strong enforcement is currently enforced and some projects do this already internally. This restriction applies to all site repositories in Nexus as well in the event that a project wishes to push a static web site into their allocated site path. Maven / Java ============ Maven has a built in namespace routing using field in pom files. For example: .. code-block:: xml org.opendaylight.odlparent odlparent-lite 1.8.0-SNAPSHOT Python ====== Python projects typically publish to artifacts to PyPi and use their shortname for modules rather than a full path like Java projects do. setup.py: .. code-block:: python :emphasize-lines: 2 setup( name='spectrometer', ) The structure of a Python project typically determines it's package routing. So a project package spectrometer.reporttool might have a layout like this inside their project root. .. code-block:: bash ./ # This is the root of the repository ./setup.py ./spectrometer ./spectrometer/__init__.py ./spectrometer/reporttool ./spectrometer/reporttool/__init__.py