This section provides a high-level view of ONOS, and its general design approach.

ONOS in a Sentence

Aside from being an SDN OS, ONOS is a multi-module project whose modules are managed as OSGi bundles. 

Run-Time Extensibility

ONOS is written to leverage Apache Karaf as its OSGi framework. In addition to dependency resolution at startup and dynamic module loading at runtime, Karaf provides the following:

This is predicated on having a project comprised of a set of sub-projects, each with their own source tree that can be built independently.

Code Organization and Modularity

The ONOS source is organized in a hierarchical fashion that takes advantage of Maven's notion of a hierarchical POM file organization. Each sub-project has its own pom.xml file, and intermediate directories have parent aggregate pom.xml files. The latter contains shared dependencies and configurations for those sub-projects, enabling them to be built independent of unrelated sub-projects. The ONOS root contains the top-level pom file used to build the full project and all of its modules. Refer to [Appendix C] of the Developer's Guide for details on the exact organization.