Skip to end of metadata
Go to start of metadata

FreePBX Development


FreePBX is a true Open Source development effort. Providing GNU GPL 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.

Getting Started

The easiest way to get started is to simply take a look at our bug tracker. We have over 822 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_queues (release/2.11): [Module Tag script: queues]
Jason Parker committed ea6e0c2 on branch release/2.11 in FreePBX_queues
[Module Tag script: queues]

· /LICENSE (-0, +339) | History | Source | Diff
FreePBX_queues (release/2.11): Fix conflicts
Jason Parker committed e60dfe0 on branch release/2.11 in FreePBX_queues
Fix conflicts

· /module.xml (-2, +3) | History | Source | Diff
FreePBX_queues (release/2.11): Bump version
Jason Parker committed b13127e on branch release/2.11 in FreePBX_queues
Bump version

· /module.xml (-1, +2) | History | Source | Diff
FreePBX_queues (release/2.11): Revert changes to existing macros, allowing other users to dial queue feature codes.
Jason Parker committed f4c73a6 on branch release/2.11 in FreePBX_queues
Revert changes to existing macros, allowing other users to dial queue feature codes.

· / (-23, +20) | History | Source | Diff
FreePBX_Framework (FREEPBX-5632): FREEPBX-5632 - break out upgrade and security notification emails.
Bryan Walters committed 49dd1d0 on branch FREEPBX-5632 in FreePBX_Framework
FREEPBX-5632 - break out upgrade and security notification emails.

· /amp_conf/bin/freepbx-cron-scheduler.php (-0, +11) | 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 and make contact. SVN access is provided to developers similar to other Open Source projects. When a new member gets involved, they provide patches and work with existing developers. After their work is evaluated over a period of time and is found to be of good quality and judgment they are offered access.

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. 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. We are looking for a Developer who would like to take the lead on the translation subsystem and help us tie up any loose ends that may be needed.

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.

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. In the past we have not had any mechanism to facilitate and house these modules, other than a tar ball stuck in a module submission ticket somewhere. We will be working on addressing this shortly, so that we can have an SVN repository location for such third party modules to provide easier access. We are also investigating the use of the command line module_admin program (you probably didn't know that existed did you?) to provide an online ability to install such third party modules. Some day we will get this into the GUI but there are other changes that need to happen in the GUI to accommodate this change.




  • No labels