What is Chabber?
Chabber is an XMPP-based Instant Messaging, VoIP and video-conferencing application. It is a generic, portable application that follows the standard protocols for Instant Messaging - Jabber - and gives users a lot of advanced functionalities that are the basic ones mentioned before.
But the principal feature that Chabber provides is its genericity and adaptability to be extended via adding other plugins that could be developed openly following some plugin-adding specifications (which should be defined and must be the easier possible, following standard methodologies and technologies, such as XML and so on).
Chabber should provide a complete, generic kernel implementing:
Network specifications: that allow communications with external Jabber servers, regarding low level of communications (sockets, TCP-IP, ...).
XMPP - Jabber - standard protocol specifications: specifying the What and How the data is exchanged between the client and the server. This is just the implementation of the Jabber standard protocol, which is already defined and can be found at the following links (as RFCs):
And mainly, the Jabber Extensions (http://www.xmpp.org/extensions/) which define the extensibility of Chabber kernel.
For example, we can add the Jabber Extension « SOAP Over XMPP » (http://www.xmpp.org/extensions/xep-0072.html) as a Chabber plugin (or add-in) which can be the ideal transport protocol for many of the application fields of web services, since it can carry efficiently and reliably both types of messages, synchronous and asynchronous.
Chabber Platform Architecture
JABBER EXTENSION <==> CHABBER ADD-IN
What is the project perimeter?
Within the framework of this « exciting & ambitious » project, we will, after defining all basic requirements, start by specifying the product functionalities (Product Definition and specifications), before starting detailed specifications: this will be the 1st phase of the project.
The 2nd phase (part) of the project will be marked by the detailed design of the application, and its GUI (Graphical User Interface) using standard methods for modeling (UML) and MVC (Model-View-Controller) as the architectural pattern, in order to separate data (model) and user interface (view) concerns, so that changes to the user interface will not affect data handling, and that the data can be reorganized without changing the user interface.
After getting the whole design work done, the next step (3rd phase of the project) should be (if we have enough time) the development (coding). This step should be the easier and faster one, if all previous documents are delivered and done correctly and in time. We think that we will use portable APIs from the open-source community (since the project is itself open-source) and we will use the C++ as the main programming language and XML technology as the standard application files format.
The project is very interesting, requires a lot of documentation, technology knowledge and of course engineering process in software development (software engineering).
What is IM?
Instant messaging (IM) is a form of real-time communication between two or more people based on typed text. The text is conveyed via computers connected over a network such as the Internet.
Instant messaging requires an instant messaging client that connects to an instant messaging service. Instant messaging differs from e-mail in that conversations happen in real-time. A multiprotocol instant messaging application allows one client to connect to multiple IM networks.
Instant messaging services owe many ideas to an older and still popular online chat medium named Internet Relay Chat (IRC). In early instant messaging programs, each letter appeared when it was typed, and when letters were deleted to correct typos this was also seen in real time. This made it more like a telephone conversation than exchanging letters. In modern instant messaging programs, the other party in the conversation generally only sees each line of text right after a new line is started. Most instant messaging applications also include the ability to set a status message, roughly analogous to the message on a telephone answering machine.
What is Jabber (XMPP)?
Extensible Messaging and Presence Protocol (XMPP) is an open, XML-inspired protocol for near-real-time, extensible instant messaging (IM) and presence information. It is the core protocol of the Jabber Instant Messaging and Presence technology. The protocol is built to be extensible and other features such as Voice over IP (VoIP) and file transfer signaling have been added.
Unlike most instant messaging protocols, XMPP is based on open standards.
Like e-mail, it is an open system where anyone who has a domain name and a suitable Internet connection can run their own Jabber server and talk to users on other servers.
The Internet Engineering Task Force (IETF) formed an XMPP Working Group in 2002 to formalize the core protocols as an IETF Instant Messaging and presence technology. The four specifications produced by the XMPP WG were approved by the IESG as Proposed Standards in 2004. RFC 3920 and RFC 3921 are currently undergoing revisions in preparation for advancing them to Draft Standard within the Internet Standards Process. The XMPP Standards Foundation (formerly the Jabber Software Foundation) is active in developing open XMPP extensions. Unfortunately no Jabber technology correctly implements the RFCs in full.
XMPP-based software is deployed on thousands of servers across the Internet and by 2003 was used by over ten million people worldwide, according to the XMPP Standards Foundation. Popular commercial servers include the Gizmo Project. Popular client applications include the freeware clients offered by Google and the Gizmo Project, multi-protocol instant messengers such as iChat and Pidgin (formerly Gaim), and free dedicated clients such as Psi. Google Talk provides XMPP gateways to its service.
But all the available softwares (both free or commercials) don't implement a lot of the available Jabber extension, or don't provie a standard and easy way to add them in. Chabber is designed to be strong, easy-to-use and open.