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 - April 26th, 2014 [April 26th, 2014]
- Softonic - Jitsi - Download - April 26th, 2014 [April 26th, 2014]
- Jitsi - Wikipedia, the free encyclopedia - April 26th, 2014 [April 26th, 2014]
- FLOSS Weekly 293: Jitsi Meet - Video - May 9th, 2014 [May 9th, 2014]
- Jitsi Overview: FLOSS Weekly 293 - Video - May 9th, 2014 [May 9th, 2014]
- NetSecDemo Secure FTP over Jitsi - Video - May 9th, 2014 [May 9th, 2014]
- Eliyah Moore, Barum Jiu Jitsi Vs Cahel Gonzalez, 5 Star Martial Arts - Video - May 16th, 2014 [May 16th, 2014]
- Jitsi (Mac) - Download - Softonic - August 31st, 2014 [August 31st, 2014]
- Using XMPP chat with Jitsi - Video - September 12th, 2014 [September 12th, 2014]
- Jitsi - SIP Softphone - Video - September 12th, 2014 [September 12th, 2014]
- The Luminosity of Free Software Episode 20 - Video - September 13th, 2014 [September 13th, 2014]
- FOSDEM 2014 - Jitsi Videobridge And Webrtc - Video - September 16th, 2014 [September 16th, 2014]
- Just Linux touch screen and Jitsi - Video - September 16th, 2014 [September 16th, 2014]
- Bitcoin and dark wallet could be used by terrorists. So what? - September 24th, 2014 [September 24th, 2014]
- Top messaging apps flat-out flunk EFF's security review - November 5th, 2014 [November 5th, 2014]
- When I say join me in a jitsi meet... - Video - November 7th, 2014 [November 7th, 2014]
- Jitsi Flasms Dogfooding: Using your own imperfect solutions helps improve them, - Video - November 10th, 2014 [November 10th, 2014]
- IETF91 chairs meeting Honolulu Jitsi Meet presentation - Video - November 17th, 2014 [November 17th, 2014]
- IETF91 chairs meeting Honolulu Jitsi Meet questions - Video - November 17th, 2014 [November 17th, 2014]
- jitsi videollamada - Video - December 26th, 2014 [December 26th, 2014]
- Your first OTR text chat with Jitsi - Video - December 31st, 2014 [December 31st, 2014]
- Skype Encrypted Alt. SIP Jitsi Combo - February 7th, 2015 [February 7th, 2015]
- Jitsi Wikipdia - February 7th, 2015 [February 7th, 2015]
- Jitsi for Mac | MacUpdate - Apple Mac OS X Software & Apps ... - February 11th, 2015 [February 11th, 2015]
- Nexi Unified Communication Jitsi Presentazione full - Video - February 19th, 2015 [February 19th, 2015]
- JITSI - Video - April 8th, 2015 [April 8th, 2015]
- Jitsi Configuration and Review - November 21st, 2015 [November 21st, 2015]
- Jitsi: A Multi-Protocol, Cross Platform Compatible Chat, Call ... - November 21st, 2015 [November 21st, 2015]
- Jitsi (Build 3132) - Business VoIP Phone Service | OnSIP - November 21st, 2015 [November 21st, 2015]
- Jitsi | Tiki Suite - March 26th, 2016 [March 26th, 2016]
- Jitsi - - January 28th, 2017 [January 28th, 2017]
- Jitsi for Mac - Download - jitsi.en.softonic.com - February 5th, 2017 [February 5th, 2017]
- Jitsi | Prometheism.net - February 8th, 2017 [February 8th, 2017]
- GitHub - jitsi/jitsi-meet: Jitsi Meet - Secure, Simple and ... - February 12th, 2017 [February 12th, 2017]
- Edward Snowden's New Job: Protecting Reporters From Spies - WIRED - February 14th, 2017 [February 14th, 2017]
- Snowden helping develop tools to protect journalists and whistleblowers - 'to make the game a little more fair' - Press Gazette - February 16th, 2017 [February 16th, 2017]
- Jitsi - Download - February 18th, 2017 [February 18th, 2017]
- Jitsi Meet - Android Apps on Google Play - March 11th, 2017 [March 11th, 2017]
- Jitsi for Mac OS X Secure instant messaging and VoIP - March 12th, 2017 [March 12th, 2017]
- How to Configure and Set-Up Jitsi - Liberty Under Attack - June 6th, 2017 [June 6th, 2017]
- Jitsi PediaView.com | Prometheism.net - June 17th, 2017 [June 17th, 2017]
- Provisioning | Jitsi | Prometheism.net - June 26th, 2017 [June 26th, 2017]
- Provisioning | Jitsi - June 26th, 2017 [June 26th, 2017]
- FAQ | Jitsi | Prometheism.net - June 26th, 2017 [June 26th, 2017]
- Tsirang vegetable vendors commit to selling local chillies - Kuensel, Buhutan's National Newspaper - June 27th, 2017 [June 27th, 2017]
- FAQ | Jitsi | Prometheism.net euvolution.com - July 3rd, 2017 [July 3rd, 2017]
- FAQ | Jitsi | Futurist Transhuman News Blog | Prometheism.net - July 4th, 2017 [July 4th, 2017]
- Jitsi Meet (advanced) Projects | Prometheism.net - July 6th, 2017 [July 6th, 2017]
- FAQ | Jitsi | Prometheism.net euvolution.com | Futurist - July 6th, 2017 [July 6th, 2017]
- Jitsi | Futurist Transhuman News Blog - prometheism.net - July 14th, 2017 [July 14th, 2017]
- Gladstone gold does club proud | Gladstone Observer - Gladstone Observer - July 18th, 2017 [July 18th, 2017]
- Jitsi softphone for Windows OnSIP Support - July 26th, 2017 [July 26th, 2017]
- Jitsi for Mac : Free Download : MacUpdate - August 1st, 2017 [August 1st, 2017]
- OpenFire Jitsi as Skype(desktop sharing) and Temviewer ... - February 9th, 2018 [February 9th, 2018]
- Jitsi Download - softpedia.com - March 29th, 2018 [March 29th, 2018]
- Jitsi Meet (advanced) Projects - June 14th, 2018 [June 14th, 2018]
- Jitsi (Build 3132) - OnSIP - November 9th, 2018 [November 9th, 2018]
- Download Jitsi 2.10.5550 - softpedia.com - November 9th, 2018 [November 9th, 2018]
- Jitsi Community Forum - November 9th, 2018 [November 9th, 2018]
- FAQ | Jitsi - November 23rd, 2018 [November 23rd, 2018]
- Jitsi for Windows - Secure Instant Messaging and VoIP - February 12th, 2019 [February 12th, 2019]
- How to Create Your Own Video Conference Server using Jitsi ... - March 6th, 2019 [March 6th, 2019]
- What is Jitsi? - open source video conferencing API's ... - April 9th, 2019 [April 9th, 2019]
- 8x8 Acquires Jitsi Video Communications Technology From ... - April 15th, 2019 [April 15th, 2019]
- Latest users topics - Jitsi Community Forum - developers & users - April 15th, 2019 [April 15th, 2019]
- Jitsi - Should I Remove It? - April 20th, 2019 [April 20th, 2019]
- Appear.in Vs. Jitsi: Subscription WebRTC Faces Off Against Open-Source VC - VC - VC Daily - November 18th, 2019 [November 18th, 2019]
- Philippines eyes fitting end to best SEA Games performance ever - Sports Interactive Network Philippines - December 12th, 2019 [December 12th, 2019]
- Fox Sports 1 Dials Up VCC for The Herd With Colin Cowherd - TV Technology - December 21st, 2019 [December 21st, 2019]
- Fox Sports 1 Utilized Video Call Center to Extend Reach of Shows Like The Herd with Colin Cowherd - Sports Video Group - December 21st, 2019 [December 21st, 2019]
- GoodFirms Discloses the Most Recommended Software of 2020 to Streamline the Business Work Processes - Yahoo Finance - February 23rd, 2020 [February 23rd, 2020]
- How The Coronavirus Is Forcing Italy To Become A Digital Country, At Last - Forbes - March 16th, 2020 [March 16th, 2020]
- Here's how Zoom is fixing all of those security issues - The Union Journal - April 12th, 2020 [April 12th, 2020]
- Five Zoom alternatives to combat social isolation with video chat - The Star Online - April 12th, 2020 [April 12th, 2020]
- Zoom Has Privacy Issues, Here Are Some Alternatives - CoinDesk - April 12th, 2020 [April 12th, 2020]
- This is Jitsi Meet, the open source video calling application that the Government uses to prepare for press conferences - Explica - April 12th, 2020 [April 12th, 2020]
- Zoom security: I've researched problems with video conferencing for years here's what you need to know - The Conversation UK - May 3rd, 2020 [May 3rd, 2020]
- Group video calls of up to 100 participants, with encryption and noise cancellation - Explica - May 3rd, 2020 [May 3rd, 2020]
- The best Skype alternatives for video calls on your smartphone - AndroidPIT - May 3rd, 2020 [May 3rd, 2020]
- Jesse Kline on COVID-19: Keeping government secure and saving taxpayer money with open source - National Post - May 3rd, 2020 [May 3rd, 2020]