Hello from the FreePBX v3 coders!

Hi folks,
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]

Development Progress
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. [i](HINT: modules/asterisk/config/asterisk.php)[/i] 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.

Join Us!
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 [email protected]

Special Thanks
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.

In Closing…
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!

Darren Schreiber

Darren, thanks for this update on the v3 progress. I can’t wait till the new iso is available and we can start trying out all the FreePBX goodness on top of a rock-solid FreeSWITCH core.

You should provide a mailing address to send beer to…

Hey Darren,

great post so far. I installed the general preview a few days before to check out the current status.

You wrote in this post, that V3 is quite near release candidate and i am missing number modifications for other countries then us (for instance in trunk editing section).

It seems to be that the US is the only country V3 is focused on.
What can i expect in the final version?

Best regards

Excellent question, Sebastian! Thanks for checking out the software.

It is true that the majority of our focus has been on a US-centric dialplan. Thanks to one of our early adopters (Chilling Silence), we realized we had neglected international dialing a bit too much. We’ve actually already fixed this but haven’t exposed it in the interface.

Check out this file:

In this file, you can configure any dialplan you want. The instructions in the file should be pretty easy to understand. Modifying the names in the file from US names (like “10-digit US dialing” to “New Zealand Calling Area”) is completely reasonable and encouraged, and will change the user interface as well.

Changing this file gives you the ability to route anywhere you want - not just the US - with whatever dialplan you want, and it should work properly in both FreeSWITCH and Asterisk. Your mileage may vary so let us know.

You can get real-time help on this in #freepbx-dev on the IRC chat channel.

Thanks much,
Darren Schreiber

I checked out the mentioned config file, assumed, that i can just add a new block like

// testpattern
$config[‘route_disaply’][‘test’] = ‘Testdial DLF local (NX.)’;
$config[‘outbound_patterns’][‘test’] = ‘(NX.)’;

but this option is not available while adding a new trunk.
But the problem is bigger, looking at CALLER ID format (only +1 / 10 digits).

In the meantime, i looked over open tickets for RC1 and found Ticket #182.

And this is it::

  1. …currently it the fixed set of patterns dont exactly represent the various logical organization of some locales…

  2. …modify these on the GUI? If so these rules will probably need to be moved to a db model…

In my opinion, this is blocking point for many users to move to V3 (if the this situation will persist).

Best wishes

Yes, you’re right. There is only the ability to add three types of routes at this point. The module controlling this called “simpleroute” for a reason :slight_smile:

There will, at some point, be a “complicatedroute” module that lets you do custom outbound routing at-will. The focus now has been to make a simple way to get FreeSWITCH configured for a basic PBX with trunks.

If it truly prevents ANY type of international routing, that’s a problem, but for now, you should be able to get away with three routes.

As for ticket #182 and fixed dialing expressions, I’m not 100% sure I understand the issue there - can you give me some sample alternate international dialplans that you require so I can work off those?

Hi Darren,

first of all, thank you very much for your quick responses.
I need to test in more detail, will give you my feedback via eMail.

Best regards