Jami (software)

Jami (formerly GNU Ring, SFLphone) is a SIP-compatible distributed peer-to-peer softphone and SIP-based instant messenger for Linux, Microsoft Windows, OS X, iOS, and Android.
Jami was developed and maintained by the Canadian company Savoir-faire Linux, and with the help of a global community of users and contributors, Jami positions itself as a potential free Skype replacement.
Jami is free and open-source software released under the GNU GPL-3.0-or-later. In November 2016, it became part of the GNU Project.
Two account types are currently available, and many of each type can be configured concurrently. Both types offer similar features including messaging, video and audio. The account types are SIP and Ring. A SIP account enables the Jami softphone to connect to a standard SIP server and a Ring account can register (or use an account set up) on the decentralised Jami network which requires no central server. By default, Jami uses a OpenDHT node maintained by Savoir-faire Linux to join the network when the user connects for the first time. However, the application gives users the choice to run this through their own bootstrap server in the advanced settings.
By adopting distributed hash table technology (as used, for instance, within the BitTorrent network), Jami creates its own network over which it can distribute directory functions, authentication and encryption across all systems connected to it.
Packages are available for all major Linux distributions including Debian, Fedora, and Ubuntu. Separate GNOME and KDE versions are available. Documentation is available on Ring's Tuleap wiki.
History.
Jami was initially known as SFLphone, and was one of the few softphones under Linux to support PulseAudio out of the box. The Ubuntu documentation recommended it for enterprise use because of features like conferencing and attended call transfer. In 2009, CIO magazine listed SFLphone among the top five open-source VoIP softphones to watch.
Design.
Jami is based on a MVC model, with a daemon (the model) and client (the view) communicating. The daemon handles all the processing including communication layer (SIP/IAX), audio capture and playback, and so on. The client is a graphical user interface. D-Bus can act as the controller enabling communication between the client and the daemon.