The goal of this project is to have an (open source) email client which support more types of communication with other people. Additional to mail (of course) it integrates e.g. to call a person directly out of Thunderbird inbox mask, see the presence state or is able to write an instant message. The preferred way to contact persons is depending on the presence status.
One application for all types of messages!
⇒ Thunderbird is able to serve: Email (period)
⇒ It would be nice to additionally be able to send / receive: SIP (Messages, Presence, Calls); ICQ, MSN, Yahoo!, SMS
1. SIP Messages
Datei | Neu | Send SIP Message ⇒ send SIP message to anyone
Right Click on email ⇒ context menu ⇒ send SIP message to this contact
Ideas for the future: ⇒ send SIP message to contact groups
⇒ out of office autoreply via SIP message
⇒ forward of mails with specific criteria to SIP message
2. SIP Presence
Right Click on email ⇒ context menu ⇒ see SIP presence of this user
⇒ default actions for double click depending on presence status of user
user is online ⇒ send message via SIP message
user is offline ⇒ send message via E-Mail
Finding the best way to communicate with user in his current situation.
Show presence of all users directly in listing of emails:
3. SIP Calls
Right Click on email ⇒ context menu ⇒ call user
4. Extension to include other systems (ICQ, SMS etc.)
Only sending / presence is planned at the moment. No need to copy functionality of all the instand messengers.
5. Administration:
* Store SIP ID of current user in the address book
* Settings
Communication Settings
Presence Settings
General Settings
* Crucial SIP functions (presence check, call, send message) are implemented directly into Thunderbird
* No need to copy all the functions of other clients (ICQ, Kvats) available
* Calling external Kvats VOIP messenger ⇒ better to use existing tools with good support than creating yet another tool with doubtful future
* Standard for addressbook is required (like apple does)
* Problems to get results of command line programs back to Thunderbird
* Lots of SIP stuff available without proper documentation and / or support.
* Sending messages is one issue, waiting for replies and receving them another
XUL, XML, XPCOM
Extensions for Mozilla (FireFox, Thunderbird) are developed in XUL, Mozilla's XML-based language. Basically XUL is the combination of XML AND CSS (for defining overlays and layouts) and JavaScript (the logic itself). Since JavaScript is not that feature rich, external programs and scripts can be used via XPCOM, a cross platform component object model, similar to Microsoft COM.
External programs
Implementing a whole SIP client into Thunderbird would be possible, but it is quite impossible to copy all functionality from an external VOIP client like Kvats into Thunderbird. Despite the fact that nobody would maintain these functions in the future. Therefore, external programs are used for that. Sending SIP messages and getting the SIP presence is carried out by calling sipsak, a command line tool which can be found here. Because there is no way to directly return values from called scripts back to Thunderbird, we use text files as an „interface“. To ensure the functionality both on Windows and Linux systems, different paths have to be handled. To be able to use the plugin sipsak needs to be installed on the system.
To start a sip call, blueSip creates a link in the form sip:SIP-URI to bring up an installed VoIP-client. We use Kvats in our development systems. Additionally, there is the possibility to directly call the executable file of a VOIP application, for example Kvats offers a -c switch to submit a SIP-URI to call.
Thunderbird is quite picky when it comes to the creation and usage of files; for example it is not possible to call a shell script which internally creates another file for returning the results. This output file has to be defined as a file by using nsILocalFile before.
External programs are called with wait=true, that means that Thunderbird is waiting until the program has ended. This maybe is creating a problem when calling a script which will never end, but ensures in our case that the file including the results is already there when we want to read it.
Data structures to handle presence information
Stefan > Singleton etc.
Graphical User Interface
It is rather easy to redefine and adapt existing layouts in XUL (Mozilla). For every screen to be redefined.
For example
overlay chrome:messenger/content/mailWindowOverlay.xul chrome:bluesip/content/bluesipToolbar.xul
defines that whenever Thunderbird opens the first xul layer (mailWindowOverlay.xul), the second xul file (bluesipToolbar.xul) is executed. The second file only contains additions to the layout contained in the first screen, this way additional buttons or menu etries can be defined very easily.
The function behind these buttons is defined in a JavaScript file which is referenced directly in the xul file above, each button or menu entry gets a JavaScript function assigned.
Mail is good for „long“ text. It costs time to set up client and specific settings like signature etc. The netiquette needs a proper formal language. There is no guarantee that the recipient really does read the mail e.g. within an hour or at least the next few days.
For fast communication, using an IM is preferred. Less formal requirements are needed, and the message is instantly on the recipients side.
Phone calls are suitable if one side is not at the computer (presence is offline), but online with his (mobile) phone. Or just can just send an SMS if the contact is not at the computer and already busy with another call - for example: „You missed a call from John. He wanted to know about the last stock values. An SMS is o.k., but you dont need to call him back.“
Conference call is preferred if there is the need to talk to several people at a time; even with video.
The goal is to reduce the daily needed software to one single surface - have everything in visual range. The mail client is always opened and the first programm you use in the morning.
Synchronize the contacts with other applications like Kvats to use advanced calling features; or use your IP desktop phone to do be called out of your thunderbird. The combination of presence and availibility will be the future of selecting the best and most effective way for setting up communication - depending on the information you want to transmit.
In combination with A1 over IP, the integration of mobile phone communication in the infrastructure of business or residential customers is finally possible.
In the future a centralized contact phone/address book and automated presence information directly from mobile users can be combined to assist the potential sender of an information or message.
No need to e.g. call somebody unneded, because he or she is already talking on the phone. No need to send a mail (and you only need a quick reply) when the recipient is away from computer. Send a SMS without the need to talk too much.
The blueSIP Thunderbird plugin aims to find the best possible way to deliver messages a user sends to another user.
User Gerald is on vacation. The sender of the message, lets call him Hermann, does not know that, nor the traditional email system itself.
Hermann now opens Thunderbird and wants to tell Gerald about this new A1 SIP challenge. Since he has recently got an email from Hermann, Gerald simply opens the email inbox and double clicks one from Hermann. blueSIP now checks the presence of Hermann, 1. his presence is offline so there is no way to call Hermann via VOIP and directly tell it to him in voice chat, and 2. even his mobile is turned off (function not implemented yet). We would call this state „vacation“, since Hermann is unlike to both shut down PC and mobile phone ;) Gerald has MSN and ICQ contact information of Hermann stored in the Thunderbird profile, but both presendes are offline. Vacation could last longer, so certain message types like voice box do not apply, since messages there would be deleted in a few days. blueSIP therefore selects „email“ as the best way to deliver this message, and sends it via email.