Nerd Vittles then explains why this is a bad idea.
The problem this poses is that applications and dialplans written for previous versions of Asterisk no longer function even though the code is barely a year old. In the corporate and government sectors, this would mean major, costly (annual) rewrites of code just to keep a functioning phone system. And, as we noted, these organizations buy phone systems to last a decade so such a development strategy would all but rule out use of Asterisk in the Fortune 500, medical, and government sectors.
Nerd goes on to sound the alarm regarding the future of Asterisk.
Today we want to share the Digium response and address some of the new issues that have been raised. For those of you that haven't met him, Jared Smith, who co-authored the terrific Asterisk: The Future of Telephony books, now serves as Digium's Community Relations Manager. Jared sent us a thought-provoking response which you can read in its entirety here. For ease of understanding, we're going to quote a number of sections of Jared's response and address them below so that you get the full picture of how dangerous the Digium development approach is to the future of the Asterisk project.
Go read Nerd Vittles entire post.
The main premise of Nerd Vittles post is that it would seem that Asterisk, the "Incredible Hulk of Open Source Telephony" is "breaking" the cardinal rule when it comes to programming - namely don't break your existing applications and be backwards compatible.
But apparently, the programmers at Digium have been breaking existing applications. I contacted Digium creators of the "Incredible Hulk of Open Source Telephony" for comment... Their spokesperson The Hulk was nice enough to comment.
Me: Hulk, I'd just like to say that I love open source Asterisk, which was created in the good ole' USA!
Hulk: Hulk like USA except when USA Army tanks and helicopters shoot Hulk. Hulk like open spaces so Hulk jump high. Hulk like open source too.
Me: What are your thoughts on Nerd Vittles claiming Digium is breaking existing Asterisk applications in the new Asterisk 1.6?
Hulk: Me hate puny Nerds. Nerds weak.
Me: Yes, but what about his claim you are breaking Asterisk applications?
Hulk: Me Hulk. Me like break things.
Me: Yes, but if you break Asterisk, you will no longer be the "Incredible Hulk of Open Source Telephony"
Hulk: You threaten Hulk. You make Hulk very angry.
Me: Whoah. Calm down there big guy. I'm just sayin'
Hulk: You no say! You not make Hulk angry.
Me: Digium's Jared Smith said the following, "APIs change when major versions of the software are released. (APIs are Application Programming Interfaces -- think of them as building blocks inside of the Asterisk code that both Asterisk and third-party programs can use to do various things.) The problem is, when we make Asterisk better, we often have to change those APIs to do so. What are your thoughts?
Hulk: I like building blocks. Hulk like smash blocks of buildings!
Me: So you like breaking the building blocks of programming? That's not a good idea. Do you know that proprietary PBXs often "locked you in" forcing you to use their solutions?
Hulk: Hulk no like being locked in. Thunderbolt Ross try capture Hulk. Make Hulk very angry.
Me: Nerd gave an example of how the new version of Asterisk (1.6) breaks existing dialplans and why that's a bad thing. He writes: We defy anyone to explain why "making Asterisk better" required breaking every dialplan on the planet because some developer thought Set(TIMEOUT(digit)=timeout) was a code improvement over DigitTimeout(timeout).
Hulk: You confuse Hulk. Me no understand.
Me: Exactly. Nor do the programmers that wrote code & APIs one way and now have to rewrite their code.
Hulk: That not good?
Me: No it isn't. Nerd Vittles succinctly explains:
Asterisk developers can't and won't be responsible for making sure they don't break existing applications and dialplan code, and Digium won't do anything to migrate existing code to new platforms. I'm not sure I understand how development of a piece of migration application code requires a knowledge of every third-party application in the universe. Presumably, the Asterisk development team does know when it changes the syntax of some command in the existing API. Why then would it be so difficult to provide another application that translated the "old code" into the "new syntax?" That doesn't require that any third-party apps be reviewed. And it doesn't stymie future development. Just provide the tool to fix stuff that you broke!
Any comments to this Hulk?
Hulk: Digium broke stuff? Only Hulk break stuff. Hulk mad!
Me: You should be. Only the Hulk should be breaking things. In fact, I know you only want to "break" the competition. You want to smash Cisco, Avaya, Nortel, don't you, Hulk?
Hulk: Yes! Hulk crush Cisco, Avaya, Nortel! HULK SMASH!
Nerd Vittles has some valid points about Asterisk 1.6.0 breaking existing APIs and I myself as a programmer am at a bit of a loss as to why Digium would do that. But to be fair to Digium, you should read Jared Smith's entire response posted on Nerd Vittles' article, which presents Digium's point of view on why they did what they did. What are your thoughts on Digium changing APIs - often a simple syntax change - that breaks existing applications?