IvrWorx strives to provide the framework for easy creation of event-driven applications by reducing an overhead of asynchronous programming. Though just an example, but still full blown lightweight SIP IVR application is provided to demonstrate "pluggabilty" of different asynchronous IMS protocols under synchronous API, into application which is written in lua scripting language. currently SIP/RTSP/MRCP are supported.
IvrWorx was inspired by green thread based approach which can be seen in its strongest form in Erlang programming language. Ivrworx tries to utilize the approach within C++ programming language, which is de-facto industry standard for soft real time development on Windows(R) platform.
Telephony application are essentially highly parallel applications. Writing parallel applications using OS threads is inherently difficult. Asynchronous programming multiplies it by factor of million. Using fibers provides user with synchronous interface without opening too many threads. Additionally user has control over rescheduling mechanism which makes infrastructure more robust and scalable .
The initial goals for IvrWorx are:
Donate the existing codebase and import it.
- Get people involved in advancing the code base in different directions, integrating it with other projects at Apache.
The current codebase is developed and tested. RC build is issued and provides POC of the idea behind the project. The project is hosted Google Code(R) code under altalena name. It has a discussion group hosted by Google Groups(R).
Currently IvrWorx is being developed by single developer. We certainly hope to extend the team to more developers.
Source and Intellectual Property Submission Plan
The current codebase is owned by mailto:email@example.com under GPL-V3 license, and will be donated together with its documentation.
There are quite a few open source libraries already used. The libraries, their sources and licenses are listed here:
Strong core dependency on:-
- Kent C++ CSP
Weak dependency on :-
- lua (may be replaced by any other embeddable scripting language)
- json spirit (used to read configuration)
Pluggable (may be replaced with any other protocol implementation) dependency on:-
- Boris Ouretskey