How FreePBX is Revolutionizing PBXs - Let Freedom Ring!

ITEXPO Blog
| The ITEXPO blog is where you can view the latest news and happenings at TMC's leading VoIP conference.

How FreePBX is Revolutionizing PBXs - Let Freedom Ring!

freepbx-let-freedom-ring.pngAsterisk fans know that Asterisk, as its name implies, was designed to do everything in telecom since the name Mark Spencer gave it comes from the Linux wildcard symbol (*), which can match or do just about anything. It's a fantastic name chosen by Asterisk's founder.

Similarly, FreePBX also sports a great name, espousing a truly powerful and "free" PBX with no strings attached. Is it not ironic that America american-flag, the nation whose most precious Amendment of the Constitution, the 1st Amendment which established "free speech" as a fundamental right and a nation which invented the most important communications technology - the telephone, also helped establish one of the most closed, proprietary, and expensive pieces of "speech" technology? - namely the PBX.

Free speech you say? Companies that deployed PBXs in the 70s, 80s, 90s, and even 00s had to contend with big, bulky, proprietary, and expensive PBXs not-so-affectionately called "Big Iron". Anyone remember the Nortel vs. open source Asterisk-based vendor I wrote about 6 years ago? Where's Nortel now and where is the open source Asterisk & FreePBX community?

Back in the day, there was a limited number of companies selling PBXs and they locked you into their proprietary solutions and proprietary phones. That meant great margins for the PBX manufacturers but alas high prices for customers. Add in limited number of carriers and you paid expensive per-rate calling domestically and if anyone remembers paying for international calls you know it was downright painful. Who knew that America, which established "free speech" principles first as a part of its founding charter would also invent a way to charge an arm-and-a-leg to speak via the telephone?

CLECs, standards such as SIP for low-cost SIP trunks, along with open source telephony like Asterisk have helped open the door to lower-cost 3rd party SIP IP phones, lower cost PBXs, and freedom of choice for customers. FreePBX is becoming one of the core players in bringing back old school "free speech" principles to the PBX platform with a price tag that is, well free of course! smiley-laughing

FreePBX and Asterisk go together like Batman & Robin, Bert & Ernie, or peanut butter and chocolate (See Reese's). Between Asterisk's "wildcard" super powers and FreePBX's nitro-powered PBX enhancements, these two have become a force to be reckoned with in the PBX industry.

The one thing I'd like to see one or both of them address is stronger unified communications functionality - specifically a feature-rich UC client that does IM, video conferencing, screen sharing, call queue dashboarding, call control (transfer, conference), and supervisor functions like whisper, barge, and record. That said FreePBX does support XMPP as an add-on for chat, so shouldn't be too hard to add video and the other UC functions you get with Microsoft Lync, or Cisco's Jabber client.

Well, I just had the most fascinating and insightful interview I've had on FreePBX and Asterisk in years! I interviewed Schmooze Communications CEO Tony Lewis, which is the company behind FreePBX as well as Philippe Lindheimer, the Project Leader and primary Developer of FreePBX. If you recall, back in 2008 I wrote about how Bandwidth.com made an investment in FreePBX. Well, this year in February, Schmooze purchased the FreePBX name and trademark from Bandwidth.com.

To get the inside scoop with what was happening at FreePBX, FreePBX's history, the present and the future roadmap I spoke with Tony and Philippe. We also discussed FreePBX World, which is taking place at TMC's ITEXPO. I hope you enjoy the interview as much as I did!

Tony: FreePBX has been open source and GPL for the past 8+ years. FreePBX takes the Asterisk engine and turns it into the beautiful telephony engine that it's capable of doing with all the features. Asterisk by itself needs something to tell it what do do and that's where FreePBX comes in. Why it's not part of Asterisk? Because it's outside of Asterisk. The Digium and Asterisk team are really good at what they do, which is building Asterisk and the underlying code of Asterisk, stabilizing Asterisk, adding features and modules, gutting things like chan_sip that need to be gutted and re-written. Their focus isn't PBX-side of things, meaning not building the PBX itself. That's where FreePBX comes in.

A lot of people call it just "GUI.Asterisk". It's a lot more than just a GUI. It puts most of the logic in for a lot of the features. A simple feature like follow me that's not using app FollowMe in Asterisk, we re-wrote our own logic to do our own follow-mes. A big chunk of the features in FreePBX are logic rewrites, whether it's dialplans or macros, or AGI scripts - whatever it might be of interacting with Asterisk, it's just using the Asterisk engine to build features on top of it.

freepbx-module-admin.png
FreePBX Module Admin

Philippe:
We came out with a follow me module prior to even Asterisk having that. Fundamentally, what we found in writing FreePBX is that Asterisk is a great telephony engine. It does a really good job of connecting channels, switching voice packets around, and doing signalling.

Tom:
The low-level stuff...

Philippe:
Right. It's basically a voice compiler or interpreter. It's like having Apache, or PHP, or MySQL on a server, but you need an application to do something useful. Not to say Asterisk isn't useful, just like to say Apache isn't useful, but to write an application you have to choose a programming language and then develop an application on top of it. That's effectively what FreePBX has done. It's chosen Asterisk as its compiler if you will, versus using FreeSwitch or some combination of SIP router with media handling or something else.

Philippe then gave an example of how the core Asterisk was extended to make it even more powerful.

Philippe:
There's no question there are some extremely rich features within Asterisk. If you look at Asterisk and FreePBX, probably 80% of the functionality of queues comes from the core underlying Asterisk queue application. Maybe 20% of additional things we do to make it a richer environment, come from the way we do the dial plan implementations. Then the other thing we often do is patch code, add functionality to the Asterisk code so it can get into an Asterisk release. It's not uncommon for us to determine certain things belong inside Asterisk. It's too hard to do it outside of Asterisk, so we'll write Asterisk code and we've got an excellent relationship with the Asterisk engineers. Then it's just a matter of which release that feature or bug fix can get into.

The discussion then moved onto the relatively new FreePBX distro.

Tony:
There's been a lot of interest over the years - thousands of people asking us why we don't do a distro. There's this other distro and they're not doing it right, so it's breaking this feature. So we decided after years of people complaining that we'd do a distro. Part of the reason was certain features of FreePBX are outside of Asterisk.

There's some things that require other applications to be there and be running to do some feature. There's things like patches to Asterisk. We carry a handful of patches in Asterisk whether they're bug fixes or they're feature enhancements in FreePBX. We like to call them a bug in Asterisk. They implemented A, B, and C, but forgot the scenario where D would come in. So we decided to patch D to make it a usable feature.

The problem is getting it to all the distros. Nobody was patching their Asterisk or including the packages. So we decided to just come out with our own distro. By doing that we can control things in Asterisk that we want to do for FreePBX that take a year or two to get through the Asterisk hierarchy of submitting feature requests and getting it out to a stable release in Asterisk. All the enhancements we do to Asterisk, bug fixes, gets submitted back to Digium. It's not like these are our proprietary code we're holding onto to have some leverage over other FreePBX / Asterisk distros. Anyone can take these patches and use them with their Asterisk / FreePBX distro.

Philippe:
It's not uncommon that we work on these patches with the Digium engineers. We have an excellent working relationship.

freepbx-status.jpg
FreePBX Status Dashboard

Tony:
At the corporate level, at the Schmooze Communications level, we speak monthly with the Digium folks. Whether it's Matt Jordan, the lead project manager for Asterisk, or it's David Hardy or Malcolm - whoever it is, there is it seems almost weekly discussions between the FreePBX side and the Digium side.

Tom:
(jokingly) So, it's like you guys are unpaid developers for Digium's Asterisk...

Tony:
(Laughs) I wouldn't say that, because they do a lot for us. Lots of Asterisk's success is because of FreePBX's popularity, but FreePBX's popularity is because of Asterisk's success - they do go hand-in-hand.

Tom:
I assume Asterisk voicemail is 90% Asterisk and you guys add some other enhancements?

Tony:
Yes, there's two things we do with voicemail. One of the neat things is VMX Locator, which lets you have a mini-IVR in your voicemail menu. hi, you've reached Tony. To reach me on my cell press 1, try front desk, press 2, if it's support related press 3. The other thing we've done is something people have asked for over the years - namely the ability to program a BLF button on my phone to monitor another voicemail box, such as a general voicemail box. Asterisk has no built-in native function to say let this button register for a message waiting indicator on this user. So we patched Asterisk with the help of the Digium developers and wrote a module in Asterisk that does that. So now a BLF button can subscribe to someone else's voicemail box and you'll be notified with the red light, blue light, green, whatever color light it is when there's new messages.

That's a prime example of a patch to Asterisk that helped improve the FreePBX functionality people asked for that Asterisk just didn't have.

Philippe:
One of the huge motivators to do a distro was that there were rampant security issues floating around amongst some of the distros and they were two-fold. They were using default passwords and never changing them and so one of the things we did as a distro is make sure there's no default passwords that are exposed. They get dynamically generated. The other issue that is a rampant cause of security problems in the distro space was that people would put a "sudo" file with various capabilities. Let's say they want to change network settings. They would sudo the various network commands so that from the apache user that user could access those settings. The two prime example that trixbox did and Elastix did... in the distro space you often get right people who know their way around Linux, but they don't really have an engineering or security background so they sudo batch as root. So basically the apache user can create a batch shell script, which means you may as well run apache as root, right? The apache user can essentially create a batch script and run any command as root.

So what we did in doing the distro is created a completely uncoupled way of doing things. There is no sudo rights for anything. There's an uncoupled way we do things that gives limited access to the modules that need to do things like change network settings or do other updates to the system in such a way you can't be hacked and then changed to that user through that mechanism.

I won't say we're invulnerable to security issues because I don't think there is any software that is, but we're not leaving these gaping holes. It was really those passwords and the security issues that made us say we really need to take some control of this cause this is rampant and giving both FreePBX and Asterisk a really bad name.

Tom:
Talk about your own development of a operator or user dashboard or third-party dashboards as well as commercial modules for FreePBX.

Tony:
The FOP2 guys have a panel, the iSymphony guys have a panel version 2... their version 3 is incredible. There are just so many good operator panels out there that we really focus on the features of the phone system.

Philippe:
What we do is work very closely with all of those people to make sure they can interface properly with FreePBX to make sure they have the functionality, hooks, etc.

Tony:
It's part of this FreePBX ecosystem which leads us to FreePBX World What is the FreePBX ecosystem? The ecosystem is everything. It's our relationship with Digium and working on features or bug fixes with Digium. It's the third-party integrators we work with like the iSymphony's and the FOP2's; the phone manufacturers. It's the products that Schmooze provides into the ecosystem, whether that's paid support contracts or commercial add-on modules for FreePBX or SIPStation phone service.

There's numerous things that all build that ecosystem. Our training and certification programs, our reseller program, the FreePBX forums, the new Wiki that was launched this year. Also the new video site that's got about 35 different videos on using FreePBX.

Tom:
Talk about how Schmooze Communications fits into all this, including your own PBXs like PBXact.

Tony:
At a PBX-level Schmooze sells an OEM-hosted platform that is through OEM partners only and then we have our PBXact product line, which is basically a commercial version of FreePBX. It takes FreePBX and adds a whole bunch of functionality to it and is sold through our reseller channel. And then we sell FreePBX appliances as a PBX for people who just want something turnkey.

Over the years we were primarily focused on our PBXact and hosted product called PBXtended and PBXact basically took FreePBX and added about 30 additional modules and features on top of FreePBX. About two years ago we started extracting all of these add-on features that we've done that weren't open source related and extracted them as standalone modules that can be bolted onto any FreePBX as a commercial add-on. So over the years, all the features that we've built in PBXact we've now abstracted them out and sell them à la carte to anyone that wants them on top of FreePBX.

Philippe:
Either sell them à la carte or in some cases, some of them have been released as free modules into FreePBX. They're still commercial because they have intellectual property in the actual code that for various reasons isn't OK, or we don't want to release those parts as open source, but they're free and all you have to do is get a free license and go and run it on your system.

Tom:
I know from within the FreePBX admin panel you can view the available modules and pick and choose which ones you want to install.

Tony:
That's correct. Currently, you go to our online portal, you buy what you want, it's tied to your unique server ID already. You just go and update your license file from the FreePBX GUI and the modules start working instantly. What's changing later this year is you'll be able to buy those modules from within inside of FreePBX. You won't have to go to a store page first. You'll be able to buy those right from inside FreePBX.

Tony:
Schmooze as a company is the corporate sponsor behind FreePBX. We own the trademark and the domain name. All of the core active developers for FreePBX that spend multiple hours per week all work for Schmooze. There's community developers that contribute bug fixes, features and help out. Usually when they come along and they're decent, we try and scoop them up as employees. {chuckles}

The community for years has said, you guys have PBXact, it's a great product, we actually sell it to some of our customers when we need certain features, but it's an expensive phone system. It's not the the most expensive in the world, but it's Fonality's PBXtra or Switchvox pricing and for a lot of people it's too costly. Why can't you extract out the features and let me buy them à la carte? So we went back to the drawing board and said 'Do we want to do this? Do we really want to go this route of taking all of this and selling it à la carte for just the features people want? We decides yes, that's what the community asked for, that's what they really want.

So we put all the work of building a store and a whole licensing mechanism for it and extracted everything into standalone à la carte modules for people.

As mentioned, some of them are free, but some of them have proprietary code that another commercial modules uses and that's a paid module so we can't go an open source it because we lose our rights on the commercial module side. So there's still a commercial module, but they're free.

Tom:
So you guys are trying to become the Apple App Store of telephony / PBXs.

Tony:
Similar. We want a store where people can buy what they need. You know, this year we acquired SIPStation from Bandwidth.com, which is a small, medium and even enterprise customers on it now, SIP trunking service. It's maintained by us and integrated right into FreePBX. You buy your service, you paste your keycode and it auto-configures your trunks and your inbound routes and your DIDs and everything for you.

Tom:
The open source community likes things for free. How secure is your licensing module to prevent modules from being shared or the licensing hacked?

Tony:
It uses license files and hardware locks and everything is obfuscated and compiled on it. They understand that for FreePBX to survive and grow there has to be revenue somewhere. So there's always a balancing act of is this something that should be a commercial module or should it become open source. We spend a lot of time internally digesting and a lot of the commercial modules - I won't say all of them, but a lot of them are very unique, special, lateral market things. Things like our queue reporting packages or some of our speech recognition stuff or IVRs or the company directory or some advanced queues that we do. These are very specialized products that the average small or medium business doesn't need.

Philippe:
If you look at some of the pricing for our commercial modules, they are extremely attainable and some of them are just plain cheap.

Tony:
A good example of that is End Point Manager. [Launched Jan 2013] It breaks the mold - it's something that everyone needs to have - an easy way to configure (phone) endpoints.

Tom:
I'm familiar with it. It's $25 right?

Tony:
Yeah, it's $25 and the reason why we have to charge for it is we have to support 200 devices. We have one full-time engineer whose whole job is only End Point Manager. That's all he does. It's an ever changing product - meaning we can't keep up with these phone manufacturers. The fact that they come up with new products, end of life products, change the configuration files, add new features, introduce bugs. We're constantly working with them to help fix bugs that they're constantly introducing because no one configures phones the way we do it; the extreme that we do it. I mean we literally take 200 different devices, we'll autoconfigure it - not just register the phones, we'll let you control all the buttons on the phones, we'll let you control everything on that phone.

Tom:
So a developer that wants to add a module to the store and sell it, how do they go about that? To they come to you and figure out a price?

Tony:
We tried to build the system to make it simple. We don't want end users to go all over the place to buy stuff. So the concept is the developer can provide the module to us, they can obfuscate it and use the license mechanism that we tell them to use. We can add it to our store, add it to the FreePBX repos and then figure out if it's a revenue share, we get a small cut of it. How ever we work out that side of it is always up to each individual person, but we have no qualms about bringing in other people's products that are commercial modules, cause it's all about building the ecosystem.  No different than we take contributions on FreePBX modules and improvements - open source ones all the time - and whatever helps improve the community and grows the community is what we try and do.

Tom: Tell me about the popular commercial Paging Pro add-on.