Skip to end of metadata
Go to start of metadata

FreePBX Development


FreePBX is a true Open Source development effort. Providing GNU GPL v2+ licensing (or equivalent) is all that is required to make a project Open Source. However, obtaining true community involvement is what makes a good project become great. This means transparent access to the project's activities and a development community with access to the project that is not limited to a sponsoring organization. These values are what fuel a really successful project.

The FreePBX Project uses the Atlassian JIRA application in order to tightly integrate the GIT Activity, Ticket system and Development Wiki. We have integrated this system with the main site so that you are signed on to both sites when you create an account and login to the system. Without an account, you will not be able to submit tickets but will have access to view everything.

To participate in the FreePBX project you must agree and submit a filled out copy of our code submission agreement: (For more information on this Please see our FAQ)

Getting Started

The easiest way to get started is to simply take a look at our bug tracker. We have over 808 issues currently open for FreePBX alone.

Accessing The source

Please take a look at our development documentation for setting up a development environment here: Setting Up a Development Environment

Browsing The Source

You can take a quick look at the source here:

Here is a list of the last 5 commits made to the FreePBX Project

FreePBX_devtools (master): add ability to ignore folders for linting
Andrew Nagy committed ef30b76 on branch master in FreePBX_devtools
add ability to ignore folders for linting

· /package.php (-1, +7) | History | Source | Diff
FreePBX_core (master): [Module Tag script: core 13.0.115]
Andrew Nagy committed 5aac7f2 on branch master, release/13.0 in FreePBX_core
[Module Tag script: core 13.0.115]

· /module.xml (-1, +2) | History | Source | Diff
FreePBX_core (master): new priority placement for dial-one and dial
Andrew Nagy committed b55067b on branch master, release/13.0 in FreePBX_core
new priority placement for dial-one and dial

· / (-1, +3) | History | Source | Diff
· / (-2, +2) | History | Source | Diff
FreePBX_timeconditions (bugfix/FREEPBX-13416): FREEPBX-13416 Fix javascript errors....
The James committed b0e0c0d on branch bugfix/FREEPBX-13416 in FreePBX_timeconditio...
FREEPBX-13416 Fix javascript errors.

Change: Moved timegroup.js to a subfolder

Change: Moved timeconditions.js to a subfolder

Update: added timezonedata to moment-timezone


Previous behavior:

Go in to time conditions form. Errors show in the js console and form wouldn't submit

Current behavior:

No errors in the console and the form works for timeconditions

· /assets/js/timeconditions.js (-118, +0) | History | Source | Diff
· /assets/js/timeconditions/timeconditions.js (-0, +118) | History | Source
· /assets/js/timegroups.js (-80, +0) | History | Source | Diff
· /assets/js/timegroups/timegroups.js (-0, +80) | History | Source
· /assets/js/zmoment-timezone.js (-1, +2) | History | Source | Diff
FreePBX_ucp (feature/ucp-ui-modification): Small Widgets Completed
Carlos Orozco <> committed eacd005 on branch feature/ucp-ui-modification in FreePBX_ucp
Small Widgets Completed

· /htdocs/assets/js/ucp.js (-4, +110) | History | Source | Diff
· /htdocs/assets/less/ucp/page.less (-5, +30) | History | Source | Diff
· /htdocs/includes/Dashboards.class.php (-0, +30) | History | Source | Diff
· /htdocs/index.php (-0, +7) | History | Source | Diff
· /htdocs/modules/Widgets/Widgets.class.php (-2, +2) | History | Source | Diff
· /htdocs/modules/Widgets/assets/js/global.js (-1, +42) | History | Source | Diff
· /htdocs/modules/Widgets/assets/less/bootstrap.less (-35, +23) | History | Source | Diff
· /htdocs/views/dashboard-footer.php (-28, +22) | History | Source | Diff
· /htdocs/views/dashboard-header.php (-27, +24) | History | Source | Diff

Community Design and Development

In addition to taking input and feedback from the community at large, FreePBX tries to keep its design and road map plans transparent and accessible. This means ideas are discussed in the Forum, in the Wiki and in the #freepbx-dev IRC channel. Live interaction can also be extremely beneficial, so many phone conversations do take place (after all we are all about phones...). We try hard to document the content of these conversations into the Wiki to further benefit from community review and input.

Getting Involved

The Development Wiki lists many ways to get involved. If you want to develop a good way to start is to contact one of the active developers. You can PM them, or you can get onto the Development IRC channel #freepbx-dev on Freenode and make contact. 

We have recently transitioned to GIT which makes getting involved much easier.  To assist in bug fixes and improvements you may fork one of the submodules on Github at or Once you have your code tested and working you can submit a pull request or submit a patch after you have fully completed our CSA on file. All bug fixes and feature requests should relate to a ticket at  If you have written a module you would like included in our contributed repo ( simply create a repo for your module on Github then open a ticket in the bug tracker to make us aware of it and we can mirror your repo.  Remember all code submissions through the bug tracker or through git require a CSA on file.  If you are new to GIT please see our wiki for a general overview.

Beyond code development there are many ways that you can help. Translations are important and you do not need to be a developer to help in this area. For information on translating go here.

We are aware that there are parts of the code with some limitations today that you might run into. We will work with you on those. 

Bug marshals and testing: As bugs get reported, it can be extremely helpful to have some testers who are able to review the bugs, confirm the issues, request additional information from the reporters and in general help us filter the bug reports and prioritize them. Get in touch with the core team if this is something you can help with.

We have also created a tag in our issue tracker called "patches welcome" for things that seem like solid ideas but we do not have official resources for. A good place to get your feet wet may be in working on one of these issues.

Key Summary T Created Updated Due Assignee Reporter P Status Resolution
FREEPBX-13119 Suggest to allow outbound routes to use VMAuthenticate along with PIN Sets Improvement Sep 09, 2016 Sep 12, 2016 Unassigned Jeff Melaragno Minor Open Unresolved
FREEPBX-12931 Conferences Pro - Recordings not in CDR if 'User join/leave' enabled Bugs Aug 12, 2016 Sep 14, 2016 Andrew Nagy joshpatten Minor Closed Won't Fix
FREEPBX-12877 Add support Improvement Aug 04, 2016 Aug 29, 2016 Unassigned Rapper_skull Minor Open Unresolved
FREEPBX-12820 Aditional field for observation in outbound route Improvement Jul 25, 2016 Oct 05, 2016 Unassigned jasb Minor Open Unresolved
FREEPBX-12709 Annual Help System Suggestions Improvement Jul 10, 2016 Jul 23, 2016 Unassigned JessicaRabbit Minor Open Unresolved
FREEPBX-12705 Don't display user's login name under UCP/XMPP chat Improvement Jul 09, 2016 Jul 11, 2016 Unassigned Johann Zurner Minor Open Unresolved
FREEPBX-12666 Option to disable statistics collections or modify interval to reduce SQL inserts and disk writes on flash based embedded systems like Raspberry PI Improvement Jul 04, 2016 Oct 09, 2016 Andrew Nagy Gregory Schwartzkopf Minor Edge Unresolved
FREEPBX-12622 XMPP loaded modules Feature Requests Jun 26, 2016 Jun 27, 2016 Unassigned Simon Minor Open Unresolved
FREEPBX-12597 Only allow addition of extensions not already in the directory Improvement Jun 21, 2016 Jun 27, 2016 Unassigned Addison Burnside Minor Open Unresolved
FREEPBX-12568 Add descripton for Time(s) under Time Groups Feature Requests Jun 17, 2016 Oct 04, 2016 Unassigned necits2015 Minor On Deck Unresolved
FREEPBX-12433 Reverse IP with PTR domain record Feature Requests May 28, 2016 Sep 12, 2016 Unassigned sr377 Minor Open Unresolved
FREEPBX-12315 Extension Display Name on Peers Page Feature Requests May 14, 2016 May 16, 2016 Unassigned Addison Burnside Minor Open Unresolved
FREEPBX-12289 add more line options to the framework Feature Requests May 11, 2016 Jul 05, 2016 Andrew Nagy danielf Minor Closed Fixed
FREEPBX-12166 LDAP Integration Feature Requests Apr 27, 2016 May 02, 2016 Unassigned Diego Espitia Minor Open Unresolved
FREEPBX-12154 "Desktop View" of Google Chrome on Mobile Devices doesnt work Bugs Apr 26, 2016 May 03, 2016 Unassigned Ronny K. Minor Reopened Won't Fix
FREEPBX-12075 Unable to delete custom system recordings via GUI Bugs Apr 15, 2016 Apr 18, 2016 Unassigned ProVu Minor Open Unresolved
FREEPBX-11946 Expand/improve extensions screen Feature Requests Mar 31, 2016 Apr 04, 2016 Unassigned jlutes Minor Open Unresolved
FREEPBX-11933 custom folders and dis-allow deletion of voicemails in ucp Feature Requests Mar 30, 2016 Apr 05, 2016 Unassigned Ronny K. Minor Open Unresolved
FREEPBX-11910 Originate does not work in user and device mode Bugs Mar 26, 2016 May 26, 2016 Andrew Nagy Douglas Hammond Minor Closed Fixed
FREEPBX-11802 Unable to selectcustom context in the device in Device and user mode Bugs Mar 10, 2016 Mar 17, 2016 Unassigned philippebolduc Minor Open Unresolved
Showing 20 out of 154 issues Refresh

Documentation, Documentation, Documentation

The more quality documentation that exists in a project, the more useful and valuable it becomes. This includes creating original content whether it be How-To Guides, Module Documentation or other forms. It also includes editing existing documentation for correctness and completeness and helping to get the site into a more standardized and organized form. If you have expertise in this area and would like to help drive it, please contact us.

Development Documentation is critical as well. If you are a developer, you probably know that this can be a weak point for many. There is a lot of information on the Development Wiki but it is also a priority of ours to put some effort into cleaning and updating the documentation, organizing it and augmenting it to make it easier for new developers to get involved.

A Note about Third Party Module Development

New module submissions are a regularly occurring event and you will find many modules that have been submitted as tarballs in the Ticket system that are not available in the online system. Why is that?

The FreePBX project is designed as a Framework that can easily accommodate new modules and for that reason, new modules get written and submitted. This does not mean that we put every module that comes along into the project. As the project has matured and stabilized, we are putting a lot more thought into the architecting of the FreePBX as it continues to evolve and mature into a world class product. In order to do that, we need to carefully evaluate what officially enters the system since adopting a module has many implications. We try very hard once something becomes part of the project to take on the commitment of maintaining and supporting it and making sure that future upgrades of the project will continue to work with the Modules that are part of it. If you are thinking about writing a module that you would like to be part of the core project, you should talk with one of the active developers in advance.

This does not mean that the other modules are less valuable or inferior in any way, if we don't adopt them. If you have written a module you would like included in our contributed repo simply create a repo for your module on github. Open a ticket in the bug tracker to make us aware of it and we can mirror your repo.  Remember all code submissions through the bug tracker or through git require a CSA on file.  If you are new to git please see our wiki for a general overview



  • No labels