Yate (software)

Yate (Yet Another Telephony Engine) is free and open source communications software with support for video, voice and instant messaging. It is an extensible IP PBX under the GPLv2 with linking exception license. It is written in C++ with a modular design, allowing the use of scripting languages like Perl, Python and PHP to create external functionality.

History
In 2004, NullTeam, the company behind Yate, launched the official website. In 2005 Sangoma announced their support for Yate development on the Microsoft Windows platform. On May 4, 2011, sipgate announced that it had chosen the Yate project for its core infrastructure. Yate version 5.0 was released in January 2014.

Architecture
Yate's architecture is based on a message passing system. The architecture can be divided into four main parts:
 * Core, where encapsulations for sockets, threads and other primitives can be found.
 * Message Engine, message-related classes, used to exchange data between modules.
 * Telephony Engine, telephony-related classes.
 * Yate Modules, modules extending the functionality of Yate, not necessarily telephony-related.

A 2006 O'Reilly Emerging Telephony review shows that Yate offers flexibility via the external text protocol. This protocol allows the majority of features to be exposed. Because of this, it is fairly easy to mix telephony-related functions with text-based protocols like HTTP, SMTP or an interface with a database via SQL. Therefore, the protocol is easy to write in any programming language.

Currently YAYPM is the most advanced connector library and uses Python with the Twisted framework for rapid development.