Boutique Tech Conference · 4. – 6. June in Rostock (Germany)
Picture of the talk

Asterisk 1.6 - What is new and should I use it already?

in English by Kevin Fleming of Digium, Inc. at Asterisk-Tag 2008

Abstract

As Asterisk 1.6.0 approaches an official release, many users are curious about what is new, what is changed, and more importantly, should they upgrade their production systems? This session will cover those issues in detail, including important concerns about backwards compatibility with Asterisk 1.4.

Fleming08-crop

Additional material

Here you can find all available material for this talk.

PDFs

Audio recordings

Video recordings

The slides

There are 31 different slides. Click on them to view an enlarged version.

  1. Slide-0
  2. Slide-1
  3. Slide-2
  4. Slide-3
  5. Slide-4
  6. Slide-5
  7. Slide-6
  8. Slide-7
  9. Slide-8
  10. Slide-9
  11. Slide-10
  12. Slide-11
  13. Slide-12
  14. Slide-13
  15. Slide-14
  16. Slide-15
  17. Slide-16
  18. Slide-17
  19. Slide-18
  20. Slide-19
  21. Slide-20
  22. Slide-21
  23. Slide-22
  24. Slide-23
  25. Slide-24
  26. Slide-25
  27. Slide-26
  28. Slide-27
  29. Slide-28
  30. Slide-29
  31. Slide-30

Transcript

Kevin Fleming: All right. So thank you everyone. I’ve just been notified by my wife, the legal person, that I don’t actually have the little indication on this slide that bubble logo belongs to Digium so I’m sure I’ll hear more about that later. So I had a number of ideas for what to do for our presentation for this event. The last two that I’ve done actually at different events I’ve done no slides. As it turns out this is the third one in a row that I’ve done where my time slot has been either at the end of the day or towards the end of the day, when everyone’s been looking at slides all day long and they don’t really want to continue looking at slides.
So the last two I did were slideless. They actually went fairly well. Then I got to the end and they would ask questions and then everything went great and then I went down off of the stage and someone would come up to me and say: “can you send me some slides about all that stuff that you talked about?” [laughs]

“Well, I didn’t actually make any.” So, OK. So, I had a number of ideas about this one. This idea came to me on the plane between Atlanta and Paris.

[laughter]

Kevin: And I’m running Windows. This is absolutely correct. The open source people don’t quite have video output on my laptop working perfectly although it’s really close now. So anyway this one came to me about half way, somewhere over the Atlantic Ocean. For all I know there could be alien mind control rays in that area or something. I don’t know. So if this turns out to be a very silly idea, then I’m sure you’ll let me know. So one of the things that we have been dealing in the Asterisk development community since Asterisk 1.4 was released was that there is unlike most open source software excepting probably Apache HTPD which experienced the same problem we’re experiencing. There’s a relatively slow adoption rate of a new major version of Asterisk. So for example for those of you who are using Asterisk heavily how many of you have at least half of your system still on Asterisk 1.2 something?

So about half of the crowd which is what I would have expected. For more business oriented groups, where the people are not necessarily Asterisk geeks, to use that term in a nice way, the percentage is even higher. One of the reasons for that is that it’s a phone system. If you put it in, that’s the way most people think about it. Oh, I just talked about we need to move it beyond it being a phone system but probably 95 percent or more of the Asterisk installations that are out there are either a phone system or something like a phone system.

Once you put it in and it works if it isn’t exposed to security vulnerability, then users don’t really want you to change that at all. Yet we have another group of users in the community who are constantly pushing for more and more new exciting stuff, Asterisk has become boring to them. It just does the same things all the time. It works great but, or maybe it doesn’t work great for them, whichever it might be but they’re constantly wanting new things.

So I came up with this idea for how to represent these two groups of users that the developers are trying to deal with and then I’m going to talk about something that we have changed to try to address the needs of both of those users. I’m sure I’ve lost or forgot more than a further group but …

Audience Member: The third group is the one that complain when you change anything.

Kevin: In the third group is the… OK.

Audience Member: The one who use Asterisk 0.9.

Kevin: The third group is the one actually they want… The third group is the ones who complain when we change anything at all. We’ve heard some of that recently on our mailing lists. All right so this was what I originally going to talk about here, although we only have 45 minutes and this could actually take a couple of days and decided nah, we’re not going to do that. Although some of this we are going to cover.

So how many of you have one of these at home? Not the couch, the animal on the couch. There’s got to be people in here that one of these at home, right? Well, that’s my dog. So I’m not going to raise my hand and she’s not around to raise her hand anyway. Many of you have dogs at home. So I’m trying to get a little interactivity here. who can tell me characteristics that they like about dogs?

Things that make dogs fun people, people. They are people. Animals to have around or companions to have in your house. Throw anything out, I don’t care.

Nothing? Nobody has dogs. All right. We’ll give you a few details about our dog. That last part is actually extremely true. She cowers in fear and will jump up on our bed and lay on our heads if there is a fly in the house, which is quite interesting. I’m not saying that there are people in Asterisk community that are that way, but the peer group that you just mentioned to me actually fall into that category.

So some interesting things that I thought about dogs that sort of start to apply to a particular group of people that we have in our community. Short attention span, yeah, we have people that are like that. People who will just download directly from our development repository without even trying to think about what might be in there. Put it on their production system and then get on the mailing list or call us on the phone screaming because their production system got broken.

Well, sounds like what a dog does, right? They go snuffling around on the floor and they go: huh, that might be food and they eat it. Turns out not to be food. Then you end up cleaning up the mess for two days after that.

Similar thing with lack of long term memory. They don’t really care what you did last month, six months ago, last year. They want what they want right now. If you don’t give them what they want right now, then they’re not happy and so, again, the same group.

Then the last one which I’m not sure is all that important, although we do get people who repeatedly tell us about the same issues over and over again in the software even though we acknowledge that those issues exist and possibly already have fixed them. So now we’re going to contrast that with some other animals that we have in our house. How many people have cats in their house?

Nobody had dogs so there’s got to be people who have cats in their house. I put my cats on the camera. Yes. Yes. No, these cats are some of the laziest cats that exist in the known universe. So a couple of interesting things there. Neither of our cats will play with toys. I’m sure that’s not really interesting to you. But the last one there is kind of the important thing.

There’s a group of users in the community who would prefer that Asterisk never be any different than it is except better. Cats are like that. They abhor change. They just hate it. they do not like you to change anything about their living environment whatsoever except to make it better.

But you’re only allowed to make it better if it doesn’t inconvenience them in any way and they don’t actually get to see the change occurring. They just want to wake up one day and go, “hey, that’s cool. That’s better now. Awesome. Great. Thank you.” That’s bad.

Much like this group of Asterisk users that we are talking about, they don’t really want to interact with you at all unless they need something. This is what we have with a large percentage of the Asterisk user community. They’ve been running Asterisk 1.2 since forever. Some of them have been running Asterisk 1.0 since forever. Some have been running 0.8 or 0.9. It would not shock me to find that there’s somebody out there who is still running the version of Asterisk that you had to compile the dial plan into and is perfectly happy still running that, although it’s probably a pretty small group of people.

So we have to deal with this in our community. We have these two groups of people who are pulling us in opposite directions all the time. We’re going to, for lack of a better way to say it, put the Asterisk 1.2 users in the “cat” category. They’re perfectly happy with the way Asterisk 1.2 works. We tell them there’s new stuff in Asterisk 1.4 and they say, “yeah, whatever.”

When I pick up my phone I get a dial tone, although it’s really interesting. I mean, I’m sure all of you know how SIP phones function. It’s quite funny to watch in a trade show booth somebody come walk up to a polycom phone, pick up the handset, hear a dial tone and say, “aha the phone system must be working.” No. [laughs]

It just means that the phone is turned on and has been told to give you dial tone. That’s all, it doesn’t really mean you can do anything. So they can pick up the phone. They can call the call phones, calls come in, and they can answer them. They can talk to people and they are perfectly happy about that.

Performance isn’t an issue for them because as we mentioned other people have mentioned how much does a dual core or quad core Xeon server cost nowadays, a couple thousand Dollars in the US 1500 Euro here, wherever it might be. So you can put 1,000 users off of that if you really had to. You could easily put 500 users off of it if they’re at 100 calls at a time.

So performance is no longer issue. They don’t really care. They don’t care that we made the software better. The only thing they do care about, of course, is even though they haven’t talked to you in a year, when they decided to use some part of the system they’d never used before and they find a bug in it, you have to fix it right now. I mean, like right now. They need it fixed in five minutes because their production system is down.

No, they can’t go back to the configuration that they had yesterday. No, no, they have to have it fixed right now. So that’s why they fall in this category.

Then we have the other people and we will call this everybody who is the early adaptors, the ones who are willing to do the scary stuff. What they’re most interested in is what’s new today? What can you give me that I didn’t have yesterday that I can go play with and have fun with.

They will try things that you don’t actually want them to try yet. You’re not ready for them to try yet. As an example of this, when we switch to using sub verging for our verging control system which is now approaching two years ago. We implemented the ability for developers in the community to have their own branch to just go off and play on some project that they want to play with. Something that might take more than a couple of days to work on.

That’s turned out to be one of the most productive and effective things that we could ever done in our community. However, within six well actually less than six… It was in three months of doing it. We started getting bug reports and our issue track against developer branches that we are not only not merging not released not even merge in a released candidate branch weren’t even finish by the developer yet and actually said so in the branch.

“This is not done. Don’t try to use this” and yet we have people out there that actually are trying to use it. So, that’s good. We don’t want to lose those people because those are the people who helped us find what needs to be better feature wise, bug wise and all of those things.

So, how do we keep the family happy? This is what we do on our house. We have a gate about this high. Third of the house belongs to the cats, two thirds of the house belongs to the dog. That’s it. Really simple with cats and dogs. Put a fence up, you’re done.

Unfortunately, we can’t really do that in the Asterisk community. We can’t say here this whole group over here, “you aren’t even allowed to see all the stuff that we’re working on because it is just going to scare you and everything else.” So, this is what we’ve been dealing with in the community. Up until very recently and actually we haven’t released Asterisk 1.6.0 yet although it’s very, very close.

Our entire philosophy has been to serve the users who wanted something as stable as possible. So, when Asterisk 1.0 was released it was feature frozen. No new features ever got put in the Asterisk 1.0 branch ever. We followed the same philosophy with 1.2. We also followed the same philosophy with 1.4. In both cases, that cost significant amounts of tension in the community for a number of reasons.

One of the primary ones is as a community gets larger and more people are paying attention to the development work that is going on, they wonder why when all they commit big improvement to channel driver or one of us fix some major problem on the S2 channel driver or whatever it is. Why they can’t actually put that on their system for a year or more because we won’t put in a branch that gets new features. We’re only putting it in branch that gets new feature which is the development version.

So, that’s one of the problem that it has caused. The other problem that caused is the people who are most interested in testing that work that you are doing can’t actually productively test it because the only way they can test it is to download the unreleased development version of Asterisk that has 1,000 changes in it all over the place. 90 percent of which they couldn’t care less about.

If any of those causes Asterisk to not work correctly for them then the part of the system that they would have been able to test, they are not able to test. So we get a shrinking testing community as compared to how many of you are involved with Asterisk prior to 1.2 is released? So, between 1.1 and 1.2. Relatively small number. So you probably all remember that probably something like minutes but we’ll say weeks. After 1.0 was released, nobody used 1.0. They still continue to run the development version up until the day it got released as 1.2.

When that was happening, we get lots of testing. You would go commit something and if it broke the system, you get 50 emails within an hour saying this is broken now. You broke this, now go fix it. We don’t get it anymore because the scenarios, the systems that would expose those problems aren’t running the development version of Asterisk anymore. So that caused some tension as well.

So, I have to say I have covered this here. We have continued to provide support from multiple released version of Asterisk up until 1.6 is released. We still actively support 1.2 and 1.4 all fixes and security fixes and lots of other things. So what that means is that the people who want the new exciting stuff don’t get often enough to do things. They don’t get to play with it. They don’t get to test it. We don’t get to test. We don’t get released a better product because we don’t have enough people to test it.

So, we have made a very significant change in the way we are going to handle new Asterisk releases to try to combat this problem and make those both groups of users happy. First of all Asterisk 1.4 is going to continue down the same road it has been. It’s feature frozen other than a couple very, very minor feature that we have added to help mitigate some security vulnerabilities that were found. But Asterisk 1.6 is not going to follow that path. Every individual point release of Asterisk 1.6 is going to be feature freeze point.

So when Asterisk 1.6.0 is released or actually it has been already branched, it is not going to get any features at all. But there’s going to be a 1.6.1 and it will actually have new features. I’ll go over what some of those are going to be in the later slides here.

What that’s going to do is, first of all, get those things in people’s hands sooner. However, one of the problems that you run into by doing that is that it’s very easy for feature that you add to destabilize some part of the system and cause some other part to not work correctly anymore. If you tell someone, “yeah, we added TLS and TCP support in 1.6.2 and unfortunately, it broke something that was already there and so the only way you are going to be able to fix that is to install 1.6.3, or .4, or .5.”

They’re going to say, “no, because that has more stuff in it that I don’t care about.” So what we are planning to do and we will of course see if it is enough is actually the three most recent releases of 1.6 once it’s out there is we get bug fix support. So, one 1.6.0 is released, there will be a fourth component .1, .2, .3, .4 whatever as we fixed bugs that are found in that version. Not introduced by features being added later.

So, that someone what has installed 1.6.9 let’s say a year from now on their system may not actually be forced to upgrade to a newer version for a year if they don’t need to. If all they need a bug fixes for the version that they have. This strategy is actually working quite well in some other major open source community that you may have heard of one being the Linux Kernel for example. They started this philosophy about a year ago where a group of people said “we don’t want to upgrade every time there is a version of 2.6 just to get three bugs fixed in the last version.”

So, they took it upon themselves to start this process. So, now what you see is that at any given time, there are four active release branches going on which means the people who wants to just get a bug fix can go get just the bug fixed and not have to take a whole bunch of other stuff. That then freeze the developer to start putting new features which they were able to do. So, let’s talk about what is already in Asterisk 1.6 that will be in 1.6.0.

The first, few slides here are specific major categories in the system. For example the manager interface which even though hasn’t been mentioned very much today is actually a very important part of all these application that are being built on top of Asterisk. People that build gooey’s that manage Asterisk. And the adhesion interface that manages Asterisk uses this very heavily. So there’s been a lot of work done on this area. We support secure connection in manager’s interface now for example.

There’s a lot of renaming word. The manager commands and events that had been added over time were not necessarily done with an eye towards very much consistency so you have four different actions or four different events that might come out. That would report the caller ID associated with the event and they have names different or they would form caller ID in different way.

Obviously as an application developer, that’s not a very good thing but a lot of those have been done. For people who are building AJAX applications, web browser client applications, it’s actually possible… Well, it’s been possible since 1.4 was released to make direct connections with Asterisk over HTTP and issue manager commands and get output back.

We’ve added the ability for that to be encapsulated in the most common form for JavaScript objects. So now it’s actually possible to make an application, I use that term very loosely, to, for example, display the list of channels that are open in an Asterisk server in about four lines of JavaScript by just connecting to the manager interface and issuing the command, and getting back an object that JavaScript already knows how to turn into HTML. So that’s a very useful thing.

Another thing that’s been in demand for a very, very long time is the ability in the manager to be able to take any two channels that already are up in the Asterisk server and just stick them together, disconnect them from whatever they were already connected to and let those go off on their merry way and do whatever they’re going to do. People have come up with extremely creative ways of doing this in the past that worked but were extremely difficult to program and not always the most reliable thing. Now it’s possible to just pull those two channels and put them together.

The last thing there is quite important as well. Olle noted that I needed to add the last little section of that. Previously when you connected to the manager interface, there wasn’t actually any way to know what version of Asterisk you were connecting to unless you checked one specific place that wasn’t really very reliable. It’s actually possible now to actually query what version of Asterisk you’re talking to and what version of the manager interface it knows how to speak.

So as we add more functionality, since it’s not possible to add functionality, that number will get incremented so that if you’re writing an application, you’ll be able to look at it and say, “Oh, well that’s manager interface 1.3 so it doesn’t have these things that I know how to use in 1.4. I’ll fall back to some other method and go on from there.”

In the dial plan, there’s been lots of interesting things that have occurred, some of them minor, some of them quite useful and major, the last one being the exact same application that was added to the manager interface. What’s actually possible in the dial plan now if via some logic that you’ve run, you’ve found a channel that you want to connect to, a channel that’s already up to just connect to the channel you are, to that one and disconnect it from whatever it’s connected to, and it now becomes the two ended call that you wanted it to be in the first place.

Did I add in there the ability to do incomplete? I don’t remember if I put that in. Oh, that’s in 1.6. Never mind.

There’s now the ability to do custom device states and extension states. I didn’t see this is in the change log which may actually mean that Russell hasn’t merged it yet. One of the comments… no another thing.

One of the things that Olle had on one of his slides about being able to share events between Asterisk servers, as he said, it was first implemented into our voicemail – and I’ve got that on another slide but I’ll talk about it now – so that you don’t have to have the SIP phone registered to the same server where the voice mailboxes live now. They can be anywhere in the cluster. It doesn’t really matter, and the message waiting events will just propagate to whatever devices care about those.

Well that has now been extended to also device states, which means it’s possible to define the presence of an extension or the availability of a device based on phones that live on multiple Asterisk servers. They do not all have to be tied to one Asterisk server anymore.

So there’s lots of other things there. We’ve gotten a lot of interest in the community lately from doing more complex ENUM lookups and DUNDi lookups. We actually have a couple of people in the professional services department at Asterisk that use DUNDi very heavily to make call routing decisions about availability of servers and really interesting things that I’m sure Mark never envisioned it would be used for.

I’m sure there’s many more things in the SIP channel driver. These were just some things that I pulled out of the change log, and one of them was the one that Olle mentioned having real time text support. TCP and TLS support is in there although it has some known bugs. It also has some known flaws, so we’re still working on those so it’s marked as experimental for the moment.

Another thing that’s been, I would say, in demand – that’s a fairly nice way of putting it – for a long time in the community is to have SIP session timer support so that if you’ve got a call up and an endpoint just disappears for whatever reason, it loses power, the network link breaks or whatever it might be, or in the case of some IP phones, the phone just decided to reboot, in the past Asterisk would not know that that call was gone, especially if the media wasn’t flowing through Asterisk, if it was going through some other path. That’s now been taken care of.

Asterisk can now act as a stun client so that when Asterisk is sitting behind a network address translation device, it can figure out automatically what its external IPs, and get port numbers and other interesting things.

I already covered the really big thing here, which is that the events can be distributed across multiple servers now. And I don’t know how much has SMDI ever been used in Europe. I know it’s been really popular in the US for a long time. So SMDI is an interface that allows a voicemail system and a voicemail feature server to connect to a legacy PBX, and when it receives calls forwarded to it because someone’s phone was busy or whatever, it gets information about that.

A large university in the United States actually paid a developer and then we helped quite a bit to build all of this support in Asterisk so that they can replace their voicemail system off of their Telco hosted PBX, which they’ve been paying for 20 some years for 27,000 users, with an Asterisk voicemail implementation. They’ve been able to do that now seamlessly. Well not seamlessly – obviously the presentation of the voicemail system is different. But there’s been no need to make any modifications to the Telco phone system at all for that to work.

Audience Member: The mailbox pulling is really important as well.

Kevin: Yeah. The other thing that happened because of that event system, because messages being placed into your mailbox or the last unread message in your mailbox being read are now events that are pushed out into the event network, there’s no reason for the channel drivers and everything else to be constantly pulling your mailbox anymore to see if you have messages that are new or if all your other messages are gone. That works quite well when Asterisk is managing the voicemail system all on its own. There are applications though where the voicemail storage area is actually manipulated by other applications. For example, in Asterisk 1.4 we had the ability to store voicemail directly in a mail server via IMAP, which is really, really nice for being able to do unified email and voicemail in the same inbox.

However, if you go into your mail client and you read three voicemails and mark them all read, Asterisk needs to know that those are all marked read so it also can turn the little red light off on your phone. So that still does require some pulling.

I don’t know how many of you use CDR stored directly in databases. One of the problems with the CDR system in the past was that you couldn’t add your own fields to it. So a community developer added the ability to add your own fields to it. But then getting those stored out on a database became the next problem. That has now been resolved, and it’s been resolved in an almost configuration free way.

So if your database contains a column name that matches the name of some variable you’ve added to your call detail record in the dial plan, it just automatically gets populated in the database. So you can add things on the fly, modify the dial plan and the database. You don’t have to restart Asterisk or anything. So that’s a very, very nice thing.

Some probably less widely used things but still interesting stuff, there’s been a console channel driver in Asterisk for quite some time. I don’t know how many people use it because it’s not really heavily used. It’s when you’ve actually got audio on your system that you’re running Asterisk on. For example, if I’m running Asterisk on my laptop and I want to be able to do development and just generate a call including audio, that’s been possible for awhile, but it used audio interfaces that were very Linux specific.

The same person that Olle mentioned before about getting stuck in airports and writing code, decided that he was going to change that because he does the bulk of his development on a PowerBook, which of course he’s not running Linux on. He’s running Mac OS X on and none of those would work. So we now have a channel driver that uses a portable audio library. It works on lots and lots of operating systems. Another group of community people have extended that channel driver to support video.

So it’s actually possible now to use Asterisk as a client to initiate an audio and video call from a laptop. Very recently, as in about two weeks ago, this work has not been merged yet. But about two weeks ago, they announced – and this is a group of students at the University of Pisa in Italy, by the way, that’s working on this. They have extended it to be able to make Asterisk run as a plugin inside Firefox, believe it or not. So it is actually possible now to use Asterisk as a fully featured audio and video softphone inside Firefox as a plugin.

When they first proposed it we all looked at that and went, “You’re out of your mind. Why would you want to do that?” Then they started demonstrating it. “Well wait a minute, look at all the things it already supports.” It supports every Voice over IP protocol and all kinds of other stuff, so it will be interesting to see where that leads as they continue to do that.

We now have native SS7 support in the Zaptel channel driver, soon to be renamed to be not Zaptel anymore for other reasons, but that’s why I didn’t put it in here. That is, both the US and non US versions of SS7 are supported. This for trunking applications. It does not support SS7 application queries and things like that at this point. But it certainly works quite well for trunking applications.

We’ve had a number of people have been using it in production and talking about it on the Asterisk SS7 mailing list for months now, even though it hasn’t been released yet, and have been quite happy with it.

Lots of other interesting little things. I don’t know how popular Nortel is over here, so having a channel burner for Nortel IP phones is probably not all that big a deal in Europe. It’s quite a big thing in the United States.

From the community aspect that’s been quite interesting, because the protocol those phones speak is totally undocumented. So that was done by a group of community developers in Canada who just reverse-engineered the protocol and wrote their own channel driver for it.

Audience Member: Were you involved with this?

Kevin: No, I wasn’t involved with this at all.

Audience Member: But many years ago, for example?

Kevin: No. So, initially Nortel wasn’t very happy about this. Because of course they don’t document that protocol for a reason. Then they said, “Wait a minute. If this means we get to sell more our brand new IP phones, OK, we’ll sell brand new IP phones.” They don’t get to sell a PBX to go with it but they actually are quite nice phones. So now… oh wait, whoops, I missed a whole slide. As I mentioned before, we now have the ability to support non-8 kilohertz sampling rates in Asterisk, with the first ones that are supported beyond that being 16, although there’s other stuff coming very soon, and interoperated between them. The audio conferencing engine has not yet been upgraded to be able to mix up the highest sampling rate possible. But that’s actually already being worked on.

We now have the ability to provision phones from within Asterisk, which seems like it doesn’t make a lot of sense when you first think about it. But there’s been a lot of work done that was initially started by Mark, and then others had taken it on, to actually be able to define users in Asterisk and the devices that they are represented by. So it’s possible now to actually feed provisioning information to an IP phone directly from a web server in Asterisk.

Another interesting thing, this was another community member who worked on this. As much as we all agree, I suppose at this point that the real-time interface in Asterisk is certainly not ideal. It does exist and lots of people know how to use it. It was originally only targeted at databases of some type. Actually it was originally targeted at databases that looked like SQL, although it’s now been extended to do other things.

One of those is LDAP, which personally I don’t find all that interesting, but other people do. So they’ve used it to hook it up to Microsoft Active Directory, for example. So that someone managing a Windows network can go create a new user, create their email and their phone extension all at the same time and it just works. Nobody has to reconfigure Asterisk at all.

The other really interesting thing is that we can now use live HTTP gets and posts and other things to get configuration information for Asterisk. So, it’s possible to have Asterisk not actually have any static configuration at all, and derive all the information it needs by doing HTTP inquiries off of some web service that you’ve built. And it can actually post data back to that as well when the information about those changes.

So, I talked about how we’re going to be adding new functionality between releases now. That list of things, while there’s lots of interesting things on there, isn’t really a justification on its own to release a new major version.

If we hadn’t decided to go down this new release policy, we probably wouldn’t even be close to doing Asterisk 1.6 yet. Because there’s just nothing groundbreaking there. There’s nothing like, “Oh wow, I just have to have that.” Lots of little interesting things or big interesting things, but nothing really huge.

But because of that, that would’ve meant that none of that stuff that you just saw, many of which might have piqued somebody’s interest in here, they wouldn’t actually get to use for some unknown period of time until we decided to release the first version of Asterisk 1.6.

Since we’ve decided to change that, this is already what’s in the tree for 1.6.1, and that has not been branched yet. Some of these things are actually, have been brought in from Switchvox. Mark mentioned earlier that we acquired a company called Switchvox last year that makes packaged PBXs, their PBXs are based on Asterisk 1.2 with a whole lot of patches on it.

There’s something like 75 or 80 patches. Some of them are really tiny, some of them are really big. Interestingly, some of them were a new way to implement something that was already possible, they just never figured out that it was possible the other way so they went off and wrote a patch to do it.

So we’ve now started integrating some of the things they had in Switchvox. And the first one has been very valuable to them. The open-source and very, very good Speaks audio processing library has RMAGing control and denoising functionality.

Sometimes when you’re using crappy analog circuits like we have in the United States, which we’ve now determined that nobody in Germany uses, that’s valuable. Because you just can’t get rid of the noise that’s on the analog circuit. It’s there, you can’t make it go away by returning the wiring or anything else, at least not the wiring that you’re in control of. So it’s now possible to filter that sort of thing out. And Asterisk can make the audio sound better.

Another interesting thing, which I don’t know that I’d ever heard anybody ask about this until the patch showed up, is the fourth one on the list there. It’s now possible to have somebody dial a number or come in over a PRI or SS7 or however it comes into your system, and match and target in the dial plan, go off and run some logic and say, “Well actually because they chose that menu option, I actually need some more input. So I’m just going to go right back to the dial plan and wait for some more digits again, and then see where we’re going to go from there.”

It has actually simplified some people’s dial plans. Because in the past, they would actually have to run an application to collect those digits and then figure out what to do with them and go to some other place in their logic. You now have the dial plan’s built-in ability to branch to different places at your disposal. So that’s another interesting thing.

Someone earlier today asked about stereo support, which Olle mentioned is something that we know we’re going to need to support. This is another way that we’re going to be driven to do that.

Again, Russell, playing around with Asterisk on his PowerBook, decided that he wanted to be able to use some of the really cool plug-ins that are available for the JACK audio processing library, which is an open-source audio processing system to, we’ll say, do creative things with phone calls. [laughs] Mixing audio in very strange ways, applying very strange audio effects and things like that.

But what that means, for example, is it’s now, because there are extremely high-quality audio interfaces available on PCs and there’s really interesting plug-ins available for JACK, it’s actually possible to do, when we have the appropriate wideband support, very high-quality audio streaming through Asterisk that’s sourced from say, a mixing board in radio station or something along those lines which was not really easily possible before. You had to have some kind of gateway to turn it into something Asterisk could understand.

Then the last one that’s there, actually I skipped another slide, though, is another feature from Switchvox. We started out with the ability to spy on other channels in Asterisk. Then somebody said, “Hey, it would be really great if I could just talk to one of the two people in there. Because maybe it’s a call center, and I need to be able to coach the agent that’s taking the call a little bit. So I want to be able to whisper over the top of what they’re saying.” Which a lot of PBXs have.

Then somebody came along and said, “Well actually, sometimes I just need the person who’s spying to be able to just barge in,” and it turns into a temporary three-way conference … well, actually not a conference call, because they can’t speak directly back.

So that functionality has been available in the spy application for a while. The Switchvox people said, "Well, if we’re going to make this all available to people, they should be able to just switch on the fly. So now that’s available. When you’re spying on a call, you can actually push DTMF on your phone and switch between modes.

Another thing that many of our service provider partners will be happy to hear about once it gets out in the field more, is that it’s now possible to register to a SIP service provider from inside Asterisk using a DNS host name and have that update when the provider decides to change where-