I was listening to the Packet Pushers show #203 – an interesting high-level discussion of policies (if you happen to be interested in those things) – and unavoidably someone had to mention how the networking is all broken because different devices implement the same functionality in different ways and use different CLI/API syntax.
Guess what: the rest of IT is no different (nor are some other technology areas).
The only difference between network-focused yammering and the rest of the IT is that everyone else learned to live with the reality instead of claiming that their domain is so broken that they’d have to reinvent all wheels ever invented (although on a second though I’m positive you can find apocalyptic claims in every IT domain).
The examples I usually use are the databases. Ignoring for the moment the existence of a whole universe of noSQL databases, even the relational databases use different variants of supposedly-standardized SQL language, making it impossible to migrate your application from database A to database B without some heavy forethought or major rewrite effort.
The database drivers (equivalent to APIs everyone loves to talk about) aren’t exactly standardized either (apart from ODBC, which allows you to send text commands to the database – I fail to see how that differs from they way we configure network devices), resulting in (for example) MySQL functions for PHP, Oracle functions for PHP, PostgreSQL functions for PHP – you get the idea.
By this point you should start wondering how anything at all gets done in IT. The magic word is abstractions: PHP Data Objects or PERL Database Interface. These modules are usually a unifying layer on top of proprietary APIs, but don’t deal with the differences in product-specific SQL syntax. Smart applications (example: MediaWiki) implement their own abstraction layer on top of that to cater to those differences.
There must be a fundamental difference between database world and networking world – after all, they both use product-specific text-based human-readable command syntax and proprietary APIs. It might be that in one of those worlds people decided to solve the problem, and in the other one they listen to startups selling them snake oil instead of solving the problem.
Finally, no one in his right mind would propose to scrap all database products because they’re so badly broken, and replace them with a central database controller using distributed file system read/write calls (a rough equivalent of OpenFlow forwarding rules). Networking must really be a very special planet.