Archive › March, 2011

Welcome to the new site

The blogspot blog the served as the home for Monal will continue to exist for historical reasons and also because the article I wrote about the security weaknesses of Facebook chats XMPP implementation still draws a lot of traffic.

Monal has grown significantly since it’s release. I think this site will better serve the needs of the everyone using it.  In particular, I think the help section will answer the most common questions.

 

Comments ( 0 )

Monal 2.0.3 Submitted

Monal 2.0.3 is a major update that fixes bugs and adds important updates.

Changelog:

This is a major update that improves the application significantly.

1. Proper multi tasking. It will run in the background until you logout or close the app. No more 10 minute limit.|
2. Manually set XMPP priority
3. Shows offline contacts
4. Added gtalk extensions for google apps
5. fixed an issue with Digest-Md5 servers and connectivity
6. Fixed a bug with some non english messages not arriving
7. improved auto recovery in the event of a network error
8. when swiping to close an active chat it says “close” instead of delete. When clearing a chat log it says “clear” and not delete
9. improved UI for adding new contact
10. shows a badge with a count of messages received on app icon
11. status is not overwritten when setting away
12. fixed misc crashing bugs with the UI
13. new buddy details screen
14  optimized and switched from GCC to LLVM+Clang compiler
15. Added Multi user chat (MUC) menus.
16. Removed browser tab from iPad UI

 

Comments ( 0 )

Group chat (MUC)

Monal supports XMPP MUC (Multi user chat)

Using Group Chat

If  a group chat room is entered, Monal will join it  and it will show up in both the  active chats list and as an online “user” in the contacts list.  Talking in a group chat is the exact same as talking in a normal one. When entering a room, Monal requests the server send the last 5 messages  of the conversation if it is available.

Invitations

If invited to a room, Monal will ask to accept the invitation and join the room if accepted.

 

Joining a Room

A room is joined by going to In the More-> Group chat.

If the server supports it, Monal will discover at login what the address of the group chat service is.    The server field on this page  will be  filled with the correct information if it is discovered.

After entering the room name  and a password if necessary, tap join to enter the chat. Monal will either connect or return an error.

Leaving a Room

To leave a room, swipe the item in active chats and  press the close button.

Setting Nickname

Not available in the current build but will be available in the future.

Searching Rooms

Not available in the current build but will be available in the future.

Searching  Users

Not available in the current build but will be available in the future.

Comments ( 30 )

XMPP Feature list

This page contains the XMPP features of Monal ( currently 2.0.7).

Connection:

  • Direct connection
  • Connection over VPN
  • Connection with new style SSL (using start TLS ).  This works on any port.
  • Connection with old style SSL.  Force this by setting port to 5223. A future release will have old style allowed on any port.
  • Connection without SSL
  • SSL with self signed certificates (this is automatic)
  • DNS SRV record  discovery

Authentication Mechanisms:

  • SASL Plain
  • SASL Digest-MD5
  • Legacy  Authentication (XEP-0078)
Presence:
  • Download contact’s icon
  • Download contact’s full name
  • Retrieve  messages sent while user was offline
  • Update contact’s status
  • Set own status message
  • Invisible mode
  • Set away
  • Update status message with currently playing iPod song
Contact list:
  • View currently online contacts
  • View offline contacts
  • Add a new contact
  • Remove a contact
  • Authorize others adding you to their contact list
  • Search for users on server and add to contact list (XEP-0055)

Conversation:
  • landscape and all orientations  for all windows
  • Full log of past conversations
  • Sound,vibrate on new message. Sound cannot be changed in this version
  • Emoticons
  • Links are detected and open in safari when clicked
  • Join multiple user chat (MUC)
  • 2 pane iPad view

Multi tasking:

  • Multi tasking until app is closed or user logs out (3GS and up normally, 3G and up when jailbroken)
  • Notification of new message when phone is locked ( all iOS devices)
  • Notification of new messages when running in the background in iOS4
Jingle:
  • Jingle VOIP requires real IP. Does not have STUN and NAT traversal yet.
Misc:
  • iTunes file transfer

 

Comments ( 30 )

About Monal

Monal is developed and maintained by Anurodh Pokharel  in Boston. He can be reached at info@monal.im. Monal is written completely from scratch in Cocoa and does not use any libraries for the XMPP or TOC protocol implementations.  Amul Pokharel helps perform QA tests. The wonderful Monal icon was created  by Ayush Pokharel. He was also very helpful in the development of this site.

The Adium Stockholm theme used for chat windows was developed by Matthew Bice and is used with his permission.

Certain UI elements are based on free work by MediaLoot. In addition icons are  from Joseph Wain‘s excellent Glyphish Pro set. Free icons  are used under the creative commons attribution license

The Jingle VOIP functions use JRTPlib by Jori Liesenborgs for RTP. VOIP wouldn’t have been possible without it.

Special thanks also goes to members of  the WebEx Developer Program at Cisco, who were incredibly helpful setting up accounts to test compatibility. The WebEx support would not have been possible without them.

Adium was the inspiration for this program and it’s debug output  log was used very heavily when initially studying XMPP.

Icons in  older versions of Monal are based on Everaldo’s Crystal Project licenced under the LGPL.

 

Monal is more secure

Monal is more secure than other iOS instant messaging programs.  Since it is a direct client, it connects directly to the server you have entered without going through a middle man. The lack of a middle man is important for the following reasons.

Protect your password

We all know that you should never give your work or personal IM username and password to any website that asks for it. This is even more important when you use the same username and password for email or corporate login systems. Similarly, this information  should never given  any random app that asks for it.

Many iOS apps that support push messaging make a copy of login information and store it in a database on their own server.  These apps are never directly connected to the IM service but to a middle man.  The middle man keeps the  username and password of all users. If and when you stop using the IM client, the middle man will still have all of this information.

This is an incredibly dangerous practice. The safety of a user’s personal information is entirely dependent on the security and trustworthiness of individuals who have access to these databases on a daily basis.

Protect your conversations

The middle man services also often have copies of all instant messages sent using the service. They send push notifications by logging into your account from their servers, reading IMs and forwarding them to you.  For anything out of the most casual conversation this is unacceptable.

Protect your privacy

As the developer of Monal I have decided to keep it free and not include ads and tracking software.  How many people use Monal? A lot. Thousands and thousands of people all over the world  (Hello, Antarctica!). However, all I know is what the Apple download/upgrade  counter shows and what people tell me in emails.  Much the same way I have objections to ads in my software, I do not like the “metrics” software and libraries. Unlike many other iOS apps, Monal does not contain and will never contain user tracking software.