In order to realize this new paradigm of communication and interaction, tightly coupled,
bidirectional programmatic interfaces are needed. These interfaces also need to
be readily and rapidly implemented in software so as to encourage their use and ubiquitous
deployment. These interfaces have been commonly referred to as application
friendly. These interfaces also need to be developed by communities of developers in
order to make them robust, secure, and widely used. This will lead to de facto standardization
and ultimately proper standardization. Interfaces need to provide selfdescribing
capabilities so that applications can easily and dynamically learn and understand
the capabilities of a network element without having to be recompiled. The
net effect then will be interfaces that one can safely code to and that are portable across
different controller platforms.