Open, standards-compliant and interoperable chat sounds like a boon. However, proprietary and closed systems (WhatsApp, Facebook chat, Google Hangouts, …) are often easier to deploy, as they are nicely integrated in existing ecosystems. The freshly-released JSXC 3.0 shows that this is not necessary.
Concept
The idea is simple: XMPP (eXtensible Messaging and Presence Protocol) is an open Internet standard which allows anyone to operate their own Instant Messaging server. Similar to Email, all these servers can interoperate and send messages to each other. This is called a federated approach, great to interconnect companies, universities, and organizations.
It also keeps you independent of a single company and their business practices. You are free to chose your server implementation (or delegate that task to a company you trust) and connect with any XMPP-compatible client.
However, integration into your business processes is hard with these clients, and it requires your users to install and learn additional software. The advantage of JSXC (JavaScript XMPP Client) is that it can be integrated into existing web applications and configured to interoperate. Because it is no seperate application, your users do not need to learn anything special (or even remember its name).
Features
JSXC was built from the beginning with ease of use, integration, privacy, and security in mind.
For users
- Instant Messaging with any other XMPP client or server.
- Encrypted chats for added security (giving you privacy similar to private person-to-person conversation).
- Chat rooms for group communication.
- Encrypted audio/video chat directly from your browser (no plugin required).
- Encrypted file transfer directly between the browsers.
- No need to learn additional addresses: Often, the XMPP address (“JID”) is the same mnemonic address as for email.
- It is up to you to decide who can see your online status.
- New messages can show up in your computer’s notification area if the chat window is not currently active.
For developers
JSXC can interoperate with the main web application:
- Buttons in the application can add a user to a group chat or add a user to the roster.
- Presence information may be displayed next to Email or XMPP addresses.
- Seamless navigation between JSXC enabled pages.
- All tabs open to your site show the same chat state.
Availability
JSXC is available for the following platforms:
- As an ownCloud app: This is the prefered way to start your JSXC experience, as it comes with a built-in XMPP server, ready to test it between your users. My favorite use case is to have the chat active in the ownCloud Documents on-line editing app; a great tool for online text collaboration!
- As an add-on for the SOGo Webmail and Groupware application: Adds presence status for senders and recipients of email messages and allows direct chat from the presence status.
- As a plugin for the Ilias teaching and learning platform: Improve the learning experience by adding group chats to your lessons.
- As an open-source platform to add it to your own application: JSXC core is ready to be included in your web application with two lines of code. Ready to start in a few minutes, the amount of integration possible is only limited by your imagination!
Documentation
A lot of documentation can be found from the JSXC project’s web site (user documentation) or GitHub (developer documentation).
High-level documentation can be found in our publications:
- Klaus Herberth, Daniel Scharon, Matthias Fratz, Marcel Waldvogel:
JSXC: Adding Encrypted Chat with 3 Lines of Code (English).
Proceedings of NetSys 2015, 09–12 March 2015. (Article and Poster) - Marcel Waldvogel, Klaus Herberth, Daniel Scharon:
Chat in Forschung und Lehre? Sicher! (German, “Secure chat for academia”).
DFN-Mitteilungen 86, pp. 48-51, May 2014. (PDF excerpt, related articles) - Klaus Herberth, Daniel Kaiser, Daniel Scharon, Marcel Waldvogel:
Interaktive Webseiten für effiziente Kooperation auf Basis offener Standards. (German, “Interactive web sites for efficient cooperation based on open standards”).
University of Konstanz technical report KN-2014-DiSy-002, January 2014. (PDF, library entry)