Hello from the FreePBX v3 coders!
I haven't posted a blog entry on here previously, so let's start with an introduction. My name is Darren Schreiber and I'm the creator of the FreePBX v3 software. I wanted to take a chance to update everyone on the state of affairs regarding v3, as there have been some developments, questions and posts that make it clear it's time for a v3-specific update.
v3 is alive and well and is still actively being developed. We are just a couple weeks out from what we are titling the "FreePBX v3 General Preview". Consider this more mature than a beta but not quite a production release - we're really just looking for bugs at this point - but we believe much of the core functionality needed to run a small or medium sized PBX is now there. This includes device setup, multi-user conferencing, voicemail, number management, general call routing, ring groups and basic trunk setup. FreePBX v2 has a history of having extremely reliable upgrades, so we don't want to tarnish that reputation by releasing too early. Therefore, we're not *quite* ready to call this production-ready, although it is getting close. We also believe the foundations are there to build features that are missing and to push out updates to folks when a new feature comes along.
Now, let's take a closer look at what's new.
Look & Feel
Some of you have not seen the FreePBX v3 interface since we revealed it last year and it's changed a tremendous amount. Just to show you how much we value your feedback, we've completely redesigned the core skin, the colors and the navigational approach. This has resulted in a cleaner look and has made it easier to get around. The most complained about issue was the scrolling navigation bar at the top - so now, it's gone! It's been replaced with a rich, category-based menu bar that groups similar items together.
Take a look at some of the screen shots of the new interface:
[img_assist|nid=10258|title=FreePBX v3 - Device Manager|desc=The device editor - note the new navigation bar at the top!|link=none|align=center|width=640|height=403]
[img_assist|nid=10259|title=FreePBX v3 Screenshot - Auto Attendants|desc=Auto Attendant Editor|link=none|align=center|width=640|height=470]
[img_assist|nid=10260|title=FreePBX v3 Screenshot - Ring Groups|desc=Ring Groups|link=none|align=center|width=640|height=388]
[img_assist|nid=10261|title=FreePBX v3 Screenshot - XML Editor|desc=FreeSWITCH XML Editor|link=none|align=center|width=640|height=295]
[img_assist|nid=10262|title=FreePBX v3 Screenshot - Help Popups|desc=Help Popups|link=none|align=center|width=640|height=320]
[img_assist|nid=10263|title=FreePBX v3 Screenshot - Destinations|desc=v3 - Destination Popups|link=none|align=center|width=640|height=192]
[img_assist|nid=10266|title=FreePBX v3 Screenshot - Destinations Picker|desc=Pick a destination and routing options|link=none|align=center|width=640|height=227]
Under the hood, there is some really neat stuff in the new v3 for both Asterisk and FreeSWITCH!
We should first note that the Asterisk driver is now fully built and should be functional. We are really in need of a few testers here, as there are likely many bugs to be found. All general features we currently expose (listed earlier in this article) are now available for Asterisk. Please help us play with it!
For Asterisk, we've heavily utilized the AMI interface in Asterisk 1.6 (and higher) which allows for writing of configuration files remotely. While we haven't yet exposed a way to configure the Asterisk host IP, you can do it within the PHP files for now. (HINT: modules/asterisk/config/asterisk.php) This feature lets you keep your web server, database and FreePBX interface on one machine (in the cloud, if you wish) and your actual Asterisk box on a completely separate machine. Each time you make a change in the FreePBX v3 interface, the FreePBX software connects via TCP to the Asterisk box's AMI interface, requests the change be written to disk, and records it in the local FreePBX database for consistency. In this manner you could use an ALIX or other small board running Asterisk at a client site while keeping your FreePBX GUI interface in the cloud. With some reasonably minor tweaks, this opens the door to all sorts of neat enhancements - like having a change in your config automatically propagate to multiple boxes, or splitting configuration options between clients. You could also make "throw-away" style Asterisk boxes - when you need a new one, you just install Asterisk on it and point an existing FreePBX node to the box, and the config could be re-generated fully. The possibilities are somewhat limitless. You could alternatively rip out just the AMI library from FreePBX v3 for use in your own program - it's completely independent.
The AMI-based driver also follows the same design pattern as the FreeSWITCH driver. It changes only things it actively "understands" and is intending to modify. If you've added dialplan sections or configuration options in other files, we don't touch those, we just work around them. This adds some overhead and can be turned off if necessary.
For FreeSWITCH, we've spent a lot of time working on the SIP Interface module. We admit it's still a bit too confusing, but once you learn it, you'll understand that it empowers you to operate multiple clients on the same box, giving each client their own IP/port combo to operate on and allowing for the separation of call routing between clients. This is an important foundational piece of multi-tenancy and we'll likely do a full tutorial on how to use this feature soon.
There are a host of other enhancements and under-the-hood goodies so I'll try and post them periodically on this site going forward.
Bugs, Chatter, Moving Forward...
We have a laundry list of bugs still in the hopper over at http://www.freepbx.org/v3/report/3. We're hoping to finish those up this week and next. We'll then re-build and re-post an ISO for easy installation and setup, including some demo data pre-loaded. This should let everyone easily test out (and even deploy, if you're a bleeding-edge type of person) an install of FreePBX v3.
I've seen some chatter in the community related to why v3 has "taken so long" to get a first production-ready release out. We just want to remind folks of the ambitious goals with this project - not just "getting it working". We've put a tremendous amount of time and energy into mapping out how we want things to grow going forward to ensure they don't become spaghetti code. FreePBX v2 was previously much more organic, but even it took over five years to get where it is today. So v3 will likely still need some time under it's belt before it's as mature. In addition, we're building our own ISO, making things skinnable, supporting multiple switching engines and providing other such features that were never a part of v2. So there's a tremendous amount of lower-level programming happening that still has yet to be exposed. That said, we are close to a release, so just a little more patience and we'll get you on your way.
Last but not least, we wanted to let everyone know that we've changed the licensing on FreePBX v3. FreePBX v3 is now licensed MPL. This license is slightly more open then our previous selection of the CPAL license, but it removes any attribution requirements on the interface/GUI pages. The main drive for doing this was to ensure our license is inline with others out there and is easily recognizable and understood. MPL is a much more popular license, although we may also dual-license FreePBX v3 down the road if we get enough requests for alternative licenses.
We think we're off to a great start - but we're looking for more help. If you think you can participate in any of the following areas:
- Programming PHP (any skill level)
- Testing Asterisk / FreeSWITCH installs
- Building an ISO
- Setting up automated builds
- Building CSS-based skins (and general graphics work)
- Verifying language translations
- Writing documentation
or would like to just generally join in with our work on v3, please visit us at:
#freepbx-dev (on irc.freenode.net)
or drop me a line at
The two other largest contributors to the project, by far, are Michael Phillips and Karl Anderson. I want to take the opportunity to thank these two individuals for their fantastic work and contribution to making v3 a reality.
A special mention also goes to our quiet code reviewer Dale Hege (fdhege). While he idly sits in the channel, if we ever check anything in that's broken, he politely reminds us that he's watching by submitting a patch almost instantly.
I look forward to getting the next generation of FreePBX out there to the world as quickly as possible - and we're closer to our first release then ever before!