One of the interesting side effects of building a business on GPL-licensed code is anyone can take your code and make a competing product with it, which has happened in spades with Asterisk. Asterisk is dual-licensed, both under the GPL and a commercial license. The commercial license allows you to modify and customize Asterisk, and distribute your modified version without having to also distribute your modified source code. The GPL requires that when you distribute a modified version of a GPL-licensed application, you also have to provide your modified sources, or as some say, "When you take, you must also give back."
This seems to have worked out well in a number of ways: There are a sizable number of open-source Asterisk offshoots, and a goodly number of Asterisk-based commercial iPBXs. Digium benefits financially from selling commercial licenses, and from the GPL by harnessing the energy and talent of a worldwide pool of software developers. And even better, we customers benefit from a wider breadth of competition.
CallWeaverIn the FOSS (Free/Open Source Software) world I haven't found many actual Asterisk forks (def). There are plenty of integrated servers that bundle other applications like FreePBX, HUD lite, SugarCRM, and such, but few forks. In fact I only know of one, and that is CallWeaver. CallWeaver used to call istself OpenPBX, but then had to change because the name was already taken. Why go to all the work and hassle of maintaining a fork? The CallWeaver FAQ tells whyprimarily for community control, to have the freedom to implement different features, and to use different libraries for core functions. One example is replacing Asterisk's core DSP (digital signal processor) with SpanDSP. SpanDSP is a complete software fax machine, and it provides superior digital signal processing. Another one is that CallWeaver uses SQLite for the internal database instead of Berkeley DB 1.0, which is so old it's moldy. (The newest release is 4.6.)
CallWeaver is based on Asterisk 1.2. Don't let the older Asterisk version number bother you; they've gone well beyond it and offer a range of features that Asterisk doesn't, such as STUN support for SIP NAT traversal, full T.38 fax support, and multi-platform support. Asterisk will run on any operating system that you can get it to compile on, but is supported only on Linux. CallWeaver supports Linux, FreeBSD, NetBSD, OpenBSD, MacOS X, and OpenSolaris.
CallWeaver supports conferencing without requiring the Zaptel kernel modules for timing, and in fact has removed all Zaptel dependencies; it has a universal jitter buffer, runs well under a virtual machine like Xen or VMWare, and the developers claim overall better performance and efficiency. They have invested a lot of energy into cleaning up and fixing core architectural defects. A nice feature is conversion scripts to help you update your configuration files when changes are made in syntax, variables, and applications. This is a chronic problem with Asterisk: They make frequent changes without giving us any tools to ease the transition.
Future improvements include:
- Separating the server daemon from the command-line interface
- Automatically checking the correctness and integrity of configuration data
- A numbering-plan database with one national numbering plan for each country, so we can use symbolic names such as "US.tollfree," instead of having to look up and track numbers
- Replacing the Manager API with a 3-tier server-agent-client architecture for better scalability, security, and more flexibility
- Embedded CallWeaver for PC Engines WRAP boards, Soekris boards, and other embedded single-board computers
Using CallWeaverA lot of admins report better performance and stability with CallWeaver. But keep in mind it is still a work in progress, so there are some rough edges. Installation is a bit hairy, and as far as I know it is not included in prefab "appliance" bundles. So come back next week to get a blow-by-blow installation howto, and then we'll put it through its paces.
Resources"Open Source Means You Have to Be Better."
Fixing the Asterisk Deal Breaker