Kiax ver.2

Kiax 2

Kiax started in early 2004 as a small program mainly aimed to provide a simple user interface for making VoIP calls with Asterisk PBX (an open source VoIP PBX). Its first versions showed the existing need for a user-friendly, free and open softphone. Currently Kiax has been downloaded by more than 60 000 users (stats from SourceForge.net) and is available for direct installation from the repositories of the major Linux distros (Ubuntu, SuSE). While it is functionally rich and considerably stable its development has reached a state where modification and customization became difficult. With the help of Forschung-Direkt and MIXvoip Kiax development has been restarted. Kiax ver.2 is a complete re-write of the softphone which aims to clean up the design issues and to provide a more flexible architecture for extention and customization. Kiax has been verified and awarded by leading software content networks:

Softpedia AwardDownload Kiax from www.rosoftdownload.com


The entire source code of Kiax ver.2 is published under an open source license. The code consists of three main parts, each of them having an appropriate license for both conformity and flexibility. The GUI part of the project (uses Trolltech QT ver 4.4) is licensed under the General Public License Version 3 (GPL v3). The core library (kiax2voipcore) is licensed under the Lesser General Public License Version 2 (LGPL v2). The rest of the code - 3rd party libraries such as SQLite, json-c, libiaxclient and libspeex are licensed under different (but yet open source licenses). Please refer to their corresponding project pages for more information.

Latest binary builds for Linux, Windows and MacOS can be found on Kiax2 SourceForge download page. Latest version is Kiax 2.1 which is available for Windows, Linux and Mac OS X (x86). Latest source code is available through the SourceForge Subversion repository. Please refer to the guide on how to access it and use it. Older builds (ver. 0.8.5x) are also available through sourceforge for windows and linux.

The architecture has been designed with extensibility and customization in mind. Figure 1 illustrates the involved layers.

Kiax2 Architecture

Figure 1. Kiax ver.2 - Design and Architectural Layers

A key advantage of this organization is the ability to extend the core-functionality. The API binder binds the interfaces for all aspects of the softphone - Contact Management, CDR Management, Account Management, Signaling, and Configuration. The actual implementation resides in modules, which can be located and loaded at softphone startup. The Naming Service provides the necessary methods for locating the module implementations. The Storage API and the associated implementation of a storage module serves as an universal access-point for storage and retrieval of objects. The default storage module implements a SQLite-based repository used for objects persistence for types Contact, Account, Configuration Parameter, CDR. The GUI (top layer) implements an intuitive user interface based on QT 4.4 - a widely used, mature open source widget toolkit. The bridging of signaling events is achieved through a QT event adapter which takes care of casting, wrapping and pumping events between the separate threads (GUI-thread and signaling thread).

The project has reached a state where it is suitable to be viewed and tested by a larger user base. Not all goals are completed but the core functionality is there and during our tests it behaves well. This section will be updated in a timely fashion while the project advances and more goals are being accomplished. Table 1 reveals the plan for development feature-wise. Of course, changes will be needed and will be done on the level of code structure.
Kiax ver.2.1 Beta 1 (current state), Release 02-01-2009
Module Feature State Tested
Core Static module loading Done Tested
Core Dynamic module loading In progress ---
Core Naming Service Done Tested
SQLite Storage Module Store Done Tested
SQLite Storage Module Retrieve Done Tested
SQLite Storage Module Search Done Tested
IAX2 Signaling QT Integration Done Tested
Local Contacts Module Store Done Tested
Local Contacts Module Retrieve Done Tested
Local Contacts Module Search Done Tested
Accounts Module Store Done Tested
Accounts Module Retrieve Done Tested
Accounts Module Search Done Tested
Configuration Module Store Done Tested
Configuration Module Retrieve Done Tested
Configuration Module Search Done Tested
GUI Single Service Provider Done Tested
GUI WebKit - Sign-up Done Tested
GUI WebKit - Password change Done Tested
GUI Balance Status Done Tested
GUI Contact List Done Tested
GUI CDR List Done Tested
GUI Live search Done Tested
GUI Settings Done Tested
GUI Simultaneous calls Done Tested
GUI Branding Configuration Done Tested
GUI Alternative Layout Done Testing
HTTP API Initial Account Setup Done Tested
HTTP API Password change Done Tested
HTTP API Calling Done Testing
HTTP API Hangup Done Testing
.tel Support NAPTR and TXT Resolving Done Testing
Kiax ver.2.2, Release TBD
Module Feature State Tested
Remote (JSON) Contacts Module Store Not started ---
Remote (JSON) Contacts Module Retrieve Not started ---
Remote (JSON) Contacts Module Search Not started ---
QT GUI Multiple Service Providers Not started ---
i18n German Not started ---
i18n French Not started ---
i18n Spanish Not started ---

The project is currently being hosted by SourceForge.net. Kiax2 project page provides forums in which you can give feedback. We will be glad if you have any questions, suggestions or comments which may help us make Kiax2 even better. Contribution of any kind is highly appreciated.

Kiax Ver. 2 The new series of Kiax (ver 2) has been mainly driven and developed with the help of two companies - Forschung-Direkt and MIXvoip. We will be happy to get more support from both commercial, non-commercial organizations and private persons, so please feel free to contact us if you want to help. Kiax 0.8.x We thank everyone who showed interest and contributed to the Kiax project (with development, testing, ideas or translation). Here are some of the people that helped with the 0.8.x versions of Kiax: