Jitsi is an application that allows people to make video and voice calls, share their desktops, and exchange files and messages. More importantly it allows people to do this over a number of different protocols, ranging from the standardized XMPP (Extensible Messaging and Presence Protocol) and SIP (Session Initiation Protocol) to proprietary ones like Yahoo! and Windows Live Messenger (MSN). It runs on Microsoft Windows, Apple Mac OS X, Linux, and FreeBSD. It is written mostly in Java but it also contains parts written in native code. In this chapter, we'll look at Jitsi's OSGi-based architecture, see how it implements and manages protocols, and look back on what we've learned from building it.
The three most important constraints that we had to keep in mind when designing Jitsi (at the time called SIP Communicator) were multi-protocol support, cross-platform operation, and developer-friendliness.
From a developer's perspective, being multi-protocol comes down to having a common interface for all protocols. In other words, when a user sends a message, our graphical user interface needs to always call the same sendMessage method regardless of whether the currently selected protocol actually uses a method called sendXmppMessage or sendSipMsg.
The fact that most of our code is written in Java satisfies, to a large degree, our second constraint: cross-platform operation. Still, there are things that the Java Runtime Environment (JRE) does not support or does not do the way we'd like it to, such as capturing video from your webcam. Therefore, we need to use DirectShow on Windows, QTKit on Mac OS X, and Video for Linux 2 on Linux. Just as with protocols, the parts of the code that control video calls cannot be bothered with these details (they are complicated enough as it is).
Finally, being developer-friendly means that it should be easy for people to add new features. There are millions of people using VoIP today in thousands of different ways; various service providers and server vendors come up with different use cases and ideas about new features. We have to make sure that it is easy for them to use Jitsi the way they want. Someone who needs to add something new should have to read and understand only those parts of the project they are modifying or extending. Similarly, one person's changes should have as little impact as possible on everyone else's work.
To sum up, we needed an environment where different parts of the code are relatively independent from each other. It had to be possible to easily replace some parts depending on the operating system; have others, like protocols, run in parallel and yet act the same; and it had to be possible to completely rewrite any one of those parts and have the rest of the code work without any changes. Finally, we wanted the ability to easily switch parts on and off, as well as the ability to download plugins over the Internet to our list.
We briefly considered writing our own framework, but soon dropped the idea. We were itching to start writing VoIP and IM code as soon as possible, and spending a couple of months on a plugin framework didn't seem that exciting. Someone suggested OSGi, and it seemed to be the perfect fit.
People have written entire books about OSGi, so we're not going to go over everything the framework stands for. Instead we will only explain what it gives us and the way we use it in Jitsi.
Above everything else, OSGi is about modules. Features in OSGi applications are separated into bundles. An OSGi bundle is little more than a regular JAR file like the ones used to distribute Java libraries and applications. Jitsi is a collection of such bundles. There is one responsible for connecting to Windows Live Messenger, another one that does XMPP, yet another one that handles the GUI, and so on. All these bundles run together in an environment provided, in our case, by Apache Felix, an open source OSGi implementation.
All these modules need to work together. The GUI bundle needs to send messages via the protocol bundles, which in turn need to store them via the bundles handling message history. This is what OSGi services are for: they represent the part of a bundle that is visible to everyone else. An OSGi service is most often a group of Java interfaces that allow use of a specific functionality like logging, sending messages over the network, or retrieving the list of recent calls. The classes that actually implement the functionality are known as a service implementation. Most of them carry the name of the service interface they implement, with an "Impl" suffix at the end (e.g., ConfigurationServiceImpl). The OSGi framework allows developers to hide service implementations and make sure that they are never visible outside the bundle they are in. This way, other bundles can only use them through the service interfaces.
Follow this link:
The Architecture of Open Source Applications: Jitsi
- Jitsi - Business VoIP Phone Service | OnSIP [Last Updated On: April 26th, 2014] [Originally Added On: April 26th, 2014]
- Softonic - Jitsi - Download [Last Updated On: April 26th, 2014] [Originally Added On: April 26th, 2014]
- Jitsi - Wikipedia, the free encyclopedia [Last Updated On: April 26th, 2014] [Originally Added On: April 26th, 2014]
- Jitsi - Official Site [Last Updated On: April 26th, 2014] [Originally Added On: April 26th, 2014]
- FLOSS Weekly 293: Jitsi Meet - Video [Last Updated On: May 9th, 2014] [Originally Added On: May 9th, 2014]
- Jitsi Overview: FLOSS Weekly 293 - Video [Last Updated On: May 9th, 2014] [Originally Added On: May 9th, 2014]
- NetSecDemo Secure FTP over Jitsi - Video [Last Updated On: May 9th, 2014] [Originally Added On: May 9th, 2014]
- Jitsi VoIP softphone Hands On Tutorial - Video [Last Updated On: May 11th, 2014] [Originally Added On: May 11th, 2014]
- Eliyah Moore, Barum Jiu Jitsi Vs Cahel Gonzalez, 5 Star Martial Arts - Video [Last Updated On: May 16th, 2014] [Originally Added On: May 16th, 2014]
- How to download and install Jitsi - Video [Last Updated On: May 17th, 2014] [Originally Added On: May 17th, 2014]
- Jitsi (Mac) - Download - Softonic [Last Updated On: September 1st, 2014] [Originally Added On: September 1st, 2014]
- Using XMPP chat with Jitsi - Video [Last Updated On: September 12th, 2014] [Originally Added On: September 12th, 2014]
- Jitsi - SIP Softphone - Video [Last Updated On: September 12th, 2014] [Originally Added On: September 12th, 2014]
- The Luminosity of Free Software Episode 20 - Video [Last Updated On: September 13th, 2014] [Originally Added On: September 13th, 2014]
- FOSDEM 2014 - Jitsi Videobridge And Webrtc - Video [Last Updated On: September 16th, 2014] [Originally Added On: September 16th, 2014]
- Just Linux touch screen and Jitsi - Video [Last Updated On: September 16th, 2014] [Originally Added On: September 16th, 2014]
- jitsi.org | Jitsi [Last Updated On: September 17th, 2014] [Originally Added On: September 17th, 2014]
- Bitcoin and dark wallet could be used by terrorists. So what? [Last Updated On: September 24th, 2014] [Originally Added On: September 24th, 2014]
- Top messaging apps flat-out flunk EFF's security review [Last Updated On: November 5th, 2014] [Originally Added On: November 5th, 2014]
- When I say join me in a jitsi meet... - Video [Last Updated On: November 7th, 2014] [Originally Added On: November 7th, 2014]
- Jitsi Flasms Dogfooding: Using your own imperfect solutions helps improve them, - Video [Last Updated On: November 10th, 2014] [Originally Added On: November 10th, 2014]
- IETF91 chairs meeting Honolulu Jitsi Meet presentation - Video [Last Updated On: November 17th, 2014] [Originally Added On: November 17th, 2014]
- IETF91 chairs meeting Honolulu Jitsi Meet questions - Video [Last Updated On: November 18th, 2014] [Originally Added On: November 18th, 2014]
- jitsi videollamada - Video [Last Updated On: December 26th, 2014] [Originally Added On: December 26th, 2014]
- Skype Encrypted Alt. SIP Jitsi Combo [Last Updated On: February 7th, 2015] [Originally Added On: February 7th, 2015]
- Jitsi Wikipdia [Last Updated On: February 7th, 2015] [Originally Added On: February 7th, 2015]
- Jitsi for Mac | MacUpdate - Apple Mac OS X Software & Apps ... [Last Updated On: February 13th, 2015] [Originally Added On: February 13th, 2015]
- Nexi Unified Communication Jitsi Presentazione full - Video [Last Updated On: February 19th, 2015] [Originally Added On: February 19th, 2015]
- Jitsi - secure IM & VoIP | security in-a-box [Last Updated On: March 21st, 2015] [Originally Added On: March 21st, 2015]
- JITSI - Video [Last Updated On: April 8th, 2015] [Originally Added On: April 8th, 2015]
- Jitsi: A Multi-Protocol, Cross Platform Compatible Chat ... [Last Updated On: July 24th, 2015] [Originally Added On: July 24th, 2015]
- jitsi/jitsi-meet GitHub [Last Updated On: July 24th, 2015] [Originally Added On: July 24th, 2015]
- Jitsi Tutorial 1 - Installation - Top Windows Tutorials [Last Updated On: August 8th, 2015] [Originally Added On: August 8th, 2015]
- Jitsi, ostel.co and ISP censorship | The Guardian Project [Last Updated On: August 30th, 2015] [Originally Added On: August 30th, 2015]
- Jitsi | Tiki Suite [Last Updated On: August 30th, 2015] [Originally Added On: August 30th, 2015]
- Jitsi SIP Softphone Review - About.com Tech [Last Updated On: August 30th, 2015] [Originally Added On: August 30th, 2015]
- Jitsi Configuration and Review - Callcentric [Last Updated On: August 30th, 2015] [Originally Added On: August 30th, 2015]
- A Skype alternative worth its salt: Jitsi | usability ... [Last Updated On: September 6th, 2015] [Originally Added On: September 6th, 2015]
- Jitsi (Build 3132) [Last Updated On: September 24th, 2015] [Originally Added On: September 24th, 2015]
- [jitsi-users] SIP - Lync Connect deosnt work [Last Updated On: December 19th, 2015] [Originally Added On: December 19th, 2015]
- Jitsi - Wikipedia, la enciclopedia libre [Last Updated On: December 22nd, 2015] [Originally Added On: December 22nd, 2015]
- Why did Atlassian Acquire Jitsi? (Hint: WebRTC Multiparty ... [Last Updated On: March 6th, 2016] [Originally Added On: March 6th, 2016]
- Jitsi Download - Softpedia [Last Updated On: March 16th, 2016] [Originally Added On: March 16th, 2016]
- OpenFire Jitsi as Skype(desktop sharing) and Temviewer ... [Last Updated On: March 20th, 2016] [Originally Added On: March 20th, 2016]
- Jitsi - WOW.com [Last Updated On: April 11th, 2016] [Originally Added On: April 11th, 2016]
- Review: Jitsi the ultimate SIP voice and video client ... [Last Updated On: April 22nd, 2016] [Originally Added On: April 22nd, 2016]
- Jitsi WOW.com | Prometheism.net [Last Updated On: May 1st, 2016] [Originally Added On: May 1st, 2016]
- Jitsi - OSTN - Guardian Project Open Dev [Last Updated On: May 21st, 2016] [Originally Added On: May 21st, 2016]
- Jitsi - FreeBSD Wiki [Last Updated On: May 22nd, 2016] [Originally Added On: May 22nd, 2016]
- Jitsi - [Last Updated On: May 24th, 2016] [Originally Added On: May 24th, 2016]
- Chocolatey Gallery | Jitsi 2.8.5426 [Last Updated On: May 28th, 2016] [Originally Added On: May 28th, 2016]
- Jitsi - Quora [Last Updated On: May 31st, 2016] [Originally Added On: May 31st, 2016]
- Jitsi - Mensajera instantnea segura de texto, audio y ... [Last Updated On: August 10th, 2016] [Originally Added On: August 10th, 2016]
- Jitsi - Wikipedia [Last Updated On: October 27th, 2016] [Originally Added On: October 27th, 2016]
- Trying to install jitsi meet with apache2 - Stack Overflow [Last Updated On: October 29th, 2016] [Originally Added On: October 29th, 2016]
- Jitsi softphone for Windows OnSIP Support [Last Updated On: November 23rd, 2016] [Originally Added On: November 23rd, 2016]
- Jitsi for Mac - Download - jitsi.en.softonic.com [Last Updated On: February 6th, 2017] [Originally Added On: February 6th, 2017]
- Jitsi for Windows - Secure Instant Messaging and VoIP [Last Updated On: February 11th, 2017] [Originally Added On: February 11th, 2017]
- Edward Snowden's New Job: Protecting Reporters From Spies - WIRED [Last Updated On: February 14th, 2017] [Originally Added On: February 14th, 2017]
- Snowden helping develop tools to protect journalists and whistleblowers - 'to make the game a little more fair' - Press Gazette [Last Updated On: February 15th, 2017] [Originally Added On: February 15th, 2017]
- Jitsi Meet - Android Apps on Google Play [Last Updated On: March 9th, 2017] [Originally Added On: March 9th, 2017]
- 5 Apps You Didn't Know You Needed - Syracuse University News [Last Updated On: April 3rd, 2017] [Originally Added On: April 3rd, 2017]
- Encrypted Chat Took Over. Let's Encrypt Calls, Too - Huffington Post [Last Updated On: April 25th, 2017] [Originally Added On: April 25th, 2017]
- Your Essential List of 7 Productivity Hacks and Time Management Tips - Business 2 Community [Last Updated On: May 11th, 2017] [Originally Added On: May 11th, 2017]
- Online privacy guide for journalists - Radioinfo (subscription) [Last Updated On: May 18th, 2017] [Originally Added On: May 18th, 2017]
- Diaspora* and Other Free Software Are Available in the Occitan Language, Thanks to Volunteer Translators - Global Voices Online [Last Updated On: May 23rd, 2017] [Originally Added On: May 23rd, 2017]
- Jitsi Meet (advanced) Projects [Last Updated On: May 23rd, 2017] [Originally Added On: May 23rd, 2017]
- How to Configure and Set-Up Jitsi - Liberty Under Attack [Last Updated On: June 6th, 2017] [Originally Added On: June 6th, 2017]
- Jitsi - PediaView.com [Last Updated On: June 14th, 2017] [Originally Added On: June 14th, 2017]
- FAQ | Jitsi [Last Updated On: June 25th, 2017] [Originally Added On: June 25th, 2017]
- FAQ | Jitsi | Prometheism.net - euvolution.com [Last Updated On: June 26th, 2017] [Originally Added On: June 26th, 2017]
- Tsirang vegetable vendors commit to selling local chillies - Kuensel, Buhutan's National Newspaper [Last Updated On: June 27th, 2017] [Originally Added On: June 27th, 2017]
- FAQ | Jitsi | Futurist Transhuman News Blog [Last Updated On: June 29th, 2017] [Originally Added On: June 29th, 2017]
- FAQ | Jitsi | Prometheism.net euvolution.com | Futurist ... [Last Updated On: July 5th, 2017] [Originally Added On: July 5th, 2017]
- Jitsi | Futurist Transhuman News Blog - euvolution.com [Last Updated On: July 10th, 2017] [Originally Added On: July 10th, 2017]
- Gladstone gold does club proud - Gladstone Observer [Last Updated On: July 19th, 2017] [Originally Added On: July 19th, 2017]
- Fox Sports 1 Dials Up VCC for The Herd With Colin Cowherd - TV Technology [Last Updated On: December 22nd, 2019] [Originally Added On: December 22nd, 2019]
- Fox Sports 1 Utilized Video Call Center to Extend Reach of Shows Like The Herd with Colin Cowherd - Sports Video Group [Last Updated On: December 22nd, 2019] [Originally Added On: December 22nd, 2019]
- Home schooling tips: The things I wish I'd known before the schools went into lockdown - Telegraph.co.uk [Last Updated On: March 26th, 2020] [Originally Added On: March 26th, 2020]
- What Is the Most Secure Video Conferencing Software? - VICE [Last Updated On: March 26th, 2020] [Originally Added On: March 26th, 2020]