Pyretic's Q&A had an interesting question: Is there anything you can do in OpenFlow that you can't do in Pyretic?
This question digs deeply into Pyretic's capabilities, but we don't have a formal framework to compare the capabilities of different SDN programming models, so any negative answer ("No, they are equally powerful") is hard to justify.
Are we (as a community) missing the opportunity to formally define control plane and data plane functionality, perhaps creating a hierarchy of capabilities and examining the trade-offs in implementing those capabilities? Or are we just excited to have a more powerful leg to stand on (OpenFlow) and using that to create cool systems (e.g., NSDI 2013's first session)?
There is some work questioning the OpenFlow abstraction and providing alternate SDN abstractions (e.g., DevoFlow), but I don't know of any formalism to compare functionality. Am I new to the area and missing something important?