[j-nsp] proposed changes to "clear bgp neighbor"
Phil Shafer
phil at juniper.net
Thu Feb 27 08:48:25 EST 2014
Saku Ytti writes:
>But I'm generally against downward-compatibility, it hurts innovation and
>creates codebase complexity creep (i.e. bugs). I'm all for regularly exploding
>everything.
>In JunOS case, between major version, you could state that all bets are off
>with backward compatibility and fix crimes of those who became before us(tm).
>But I understand my opinion is not popular one and would not pass marketing.
Our original strategy was to help customers to move to the most
modern software release, mainly as a means of reducing support
costs [1]. So anything that would impact someone moving to modern
software is bad, including retooling and debugging applications and
automations that used to work perfectly [2]. We want to enable
customers to build these tools, with the assumption that automation
reduces customer OPEX and allows deployment of the high-touch
services where JUNOS can really shine.
This is also the motivation behind the XML APIs (e.g. NETCONF) which
allow you to move from regex-based screen scraping of CLI data to
being able to make elegant XPath experssions [3]. The goal is more
robust, stable, and supportable automations, both on box (with the
op/event/commit scripting facilities) and off box (with any NETCONF
client.
Sorry if I'm venturing toward shameless self promotion here, but
this really is an area we try to work at. That's part of the
movation for asking if this one specific case is sufficiently
irritating to break our own rules.
Thanks,
Phil
[1] It also enhances feature deployment; there's nothing worse that
bragging about a new feature like the "refresh" pipe or the "protect"
command to customers that don't have plans for near-term upgrades.
[2] Okay, debugging a script that *used* to work is definitely
worse. As is trying to look at a regex and sleuth out what the
original author was trying to extract. Or finding out the regex
broke because the new release added new information to the CLI
output. In fact, there's a lot of things worse.
[3] Obligatory simple example (in SLAX):
for $ifname ($config/protocols/ospf/interface/name) {
if (not($config/protocols/ldp/interface[name == $ifname])) {
call error($message = "missing LDP config for " _ $ifname);
}
}
More information about the juniper-nsp
mailing list