GOIM 2 - What has changed ?GOIM2 / Changes
When you first start GOIM 2 (or look at the screenshots) you will notice that the look remained basically unchanged. But underneath the looks nothing stayed the same. No code of the old GOIM was reused while developing GOIM 2.
The main motivation behind starting from scratch was, to have multi protocol support built right into GOIMs core, not just a half-baked solution. This resulted in a much more flexible and extensible code base.
Although jabber design criteria is to keep the clients as simple as possible, and therefore provide support of multiple protocols on the server side I decided that GOIM 2 should have multi protocol support. This as basically three reasons:
- Gateways will (imo) never be as feature rich as real clients. There is no way of file transfer or VOIP (everything has go through the server !)
- It is not feasible to run IM clients for all jabber users on a server. If every jabber user has 2 or 3 gateways the server load more or less triples without any advantages - and makes it an easy target for legacy IM networks to block those users (simply block every IP where more than 500 users are connected from - i'm wondering why there is no such limitation anyway) - i basically think it won't scale all that well
- It is way easier to write client side protocol extensions than writing a jabber gateway - To provide xfire support for GOIM 1, I wrote an XFire Gateway - it would probably have saved me time back then when i could simply write a java based protocol extension to GOIM, instead of a C++ based serverside xfire gateway.