Original author(s) | Anthony Minessale |
---|---|
Developer(s) | Many contributors |
Stable release | 1.6.14 (January 6, 2017 | )
Development status | Active |
Written in | C |
Operating system | Unix-like, Windows, Solaris, OS X |
Platform | Cross-platform |
Available in | multi-lingual |
Type | VoIP software, Softswitch |
License | Mozilla Public License (MPL) |
Website | freeswitch |
FreeSWITCH is a free and open source communications software for the creation of voice and messaging products. It is licensed under the Mozilla Public License (MPL), a free software license. Its core library, libfreeswitch, is capable of being embedded into other projects, as well as being used as a stand-alone application.
The FreeSWITCH project was first announced in January 2006 at O'Reilly Media's ETEL Conference. In June 2007, FreeSWITCH was selected by Truphone for use, and in August 2007, Gaboogie announced that it selected FreeSWITCH as its conferencing platform.
FreeSWITCH's first official 1.0.0 release (Phoenix) was on May 26, 2008. A minor 1.0.1 patch release came out on July 24, 2008. At ClueCon 2012 Anthony Minessale announced the release of FreeSWITCH version 1.2.0 and that the FreeSWITCH development team had adopted separate stable (version 1.2) and development (version 1.3) branches.
FreeSWITCH 1.4, released at early 2014, is the first version support SIP over Websocket and WebRTC.
Also in 2014, Tuenti announced that it selected FreeSWITCH as a main component for its platform.
FreeSWITCH 1.6 is the first version that supports video transcoding and video conferencing.
According to the lead designer, Anthony Minessale, FreeSWITCH is intended to be a softswitch that is built on top of a solid core, driven by a state machine. The stated goals of the project include stability, scalability, and abstraction.
To reduce complexity, FreeSWITCH uses freely available software libraries that perform needed functions. Some dependencies are:
Not all of these software dependencies are required to build the core freeswitch application, but are dependencies of various external modules, such as codecs. FreeSWITCH is a modular application, in which modules can extend the functionality but the abstraction layer prevents inter-module dependency. The goal is to ensure that one module is not required to load another.