fmII
Thu, Jan 08th home | browse | articles | contact | chat | submit | faq | newsletter | about | stats | scoop 02:27 UTC
in
Section
login «
register «
recover password «
[Article] add comment [Article]

 ICQ Development with the ickle Library
 by Konstantin Klyagin, in Tutorials - Sat, Dec 29th 2001 00:00 UTC

In recent years, the popularity of instant messaging solutions has grown dramatically. It's now difficult to say who was the first to invent something more rapid than email, but there is no doubt that among the wide variety of existing IM solutions, ICQ is the most popular one.


Copyright notice: All reader-contributed material on freshmeat.net is the property and responsibility of its author; for reprint rights, please contact the author directly.

In the GNU world, as usual, there is choice, for there are a lot of ICQ client applications to choose from. They are graphical, console-based, GTK+-based, Qt-based, ncurses-based, commandline-based, skinnable, Web-based, etc. I am the author of one of them, called centericq, which is intended to perfectly suit textmode freaks like me. Recently, it became not only a client for ICQ, but for other IM systems as well.

Mirabilis ICQ was created back in 1996 by several Israeli guys, was free-of-charge software, and gained great popularity because it was easy to use, fast, and nice. Initially, there was a client program for Windows, then they wrote ones for MacOS and PalmOS, and some kind of a Java client which was supposed to work under all the OSes, but which now seems to be outdated. There had been no movements towards creating an official client for Linux (and other Unices) so far. Also, there had been no protocol specification, as they shipped only a Windows DLL which could be used in third party programs. The Free Software community reacted to it slowly, and the first successful attempt to make a GPL-licensed client was made by Matthew Smith several years ago. Dennis V. Dmitrienko then used its code to make a universal library for ICQ applications development, named icqlib. Though some authors of popular Open Source ICQ applications such as Licq used their own code, icqlib was widely used in various client programs. Unfortunately, after some time of silence, the project seemed to be dead, but I kept using icqlib in centericq, making my own minor corrections to its code.

Protocol Problems

Everything went well -- I implemented White pages search and some other features icqlib was missing -- until Mirabilis decided to get all of their users to use their new software (and new protocol) several months ago. I can only guess this is what happened, because first, offline messages sent by the server on every login were not automatically wiped out, and then, after some time, messages sent through the ICQ server disappeared in quite a random way. Also, find queries returned nothing, etc. The same thing happened to their own old icq99 client for Windows. Well, there was nothing wrong about it, since the protocol was their property and they had the right to do anything with it, so they're not the ones to blame.

Obviously, this had a bad effect on Linux (and *BSD and other Unices) users. They suddenly weren't able to use any of the available clients, which all used the outdated protocol. As an author of such a client, I was quite upset, mainly because I was using it for my everyday communications. centericq users started complaining about all the problems they had, and, every time, I had to respond that there were server problems.

I didn't want my work to be in vain, for I already had a useful interface of menus, windows, and dialogs in my software. On the other hand, I had no passion to learn the new ICQ protocol myself; it would require a lot of time to get a clue about their formats, time I didn't have. I had just moved to another country, and had to arrange everything here and start my new job. I decided to take a look at other GPLed IM libraries and incorporate them into centericq gradually, to enable me and users of my software to at least use something. I had some time to restructure centericq's internals, to make it easier to add new protocols, etc. It was quite amusing, and resulted in support for the MSN and Yahoo! protocols. I managed to make something like gaim or Everybuddy, but for my favorite console environment.

Though I was quite happy with Yahoo! (finally, I understood why our superia at Websci prefers it to ICQ <grin>), I was actively looking for something to use to repair the ICQ protocol in my program. I found it in a small project named ickle, lead by Barnaby Gray. The description spoke of v8 protocol support. When I downloaded the source, I expected the protocol code to be roughly knocked into the client program code. Unfortunately, this is what usually happens, because the authors don't pay enough attention to the code design. But I was amazed; the protocol handling code and the client were completely separate, had a nice C++ design, and were split into classes in a very nice way. Barnaby also appeared to be a nice guy, for when I dropped him an email with some questions concerning his code, I got an answer in about 5 minutes. It was courteous and contained an exhaustive explanation for everything I asked.

Now, after 6 days of using his library, I can consider myself an expert at its interface and usage. What I want to say is that even now, it's quite ready for use in your applications, whatever you write. If you're reading this and you're an author of an ICQ client program, it's time for you to migrate to ickle library to make your users happy. Also, if you need to write something which uses the ICQ protocol (to send alert messages automatically or to fetch user information, for example), it's just ideal.

An Introduction to ickle

This part of the article is intended to be a small (really small, in fact) attempt to document the ickle library, and to give you some starting points. Again, I was just amazed with Barnaby's C++ design skills. From the first glance, I thought that if I'd ever teach someone C++ and object oriented design, the source of ickle would be used as one of the best examples.

The main client class is named ICQ2000::Client, and it resides in the Client.h file. It controls all the communications, and it's what you want to use first. The entire library is callback-driven. Callbacks are implemented using libsigc++, a C++ signalling library. First, some callbacks need to be set. libsigc++ requires that the callbacks' owner class be derived from SigC::Object. This piece of code contains the definition of our program's main class, and the constructor code:


#include <set>
#include "Client.h"
#include "events.h"

using namespace ICQ2000;
using namespace std;

class SimpleClient: public SigC::Object {
    private:
        Client cli;
        set<int> rfds, wfds, efds;
        bool acked;
        MessageEvent *msg;
        Contact destContact;

        void connected_cb(ConnectedEvent *c);
        void disconnected_cb(DisconnectedEvent *c);
        void logger_cb(LogEvent *c);
        void socket_cb(SocketEvent *ev);
        void messageack_cb(MessageEvent *ev);

    public:
        SimpleClient(unsigned int ourUIN, const string pass,
            unsigned int destUIN);

        void exec();
};

SimpleClient::SimpleClient(unsigned int ourUIN, const string pass,
unsigned int destUIN): cli(ourUIN, pass), destContact(destUIN) {
    cli.connected.connect(slot(this, &SimpleClient::connected_cb));
    cli.disconnected.connect(slot(this, &SimpleClient::disconnected_cb));
    cli.logger.connect(slot(this, &SimpleClient::logger_cb));
    cli.socket.connect(slot(this, &SimpleClient::socket_cb));
    cli.messageack.connect(slot(this, &SimpleClient::messageack_cb));

    acked = false;
    msg = 0;
}

The "connect" and "disconnect" callbacks are executed on appropriate events, "logger" is be used to print log messages, and "messageack" reports messages' delivery status. The "socket" callback needs special attention. It's executed every time the set of socket descriptors controlled by the library is changed. This example maintains the sets in the rfds, wfds, and efds member variables that represent read, write, and exception watched sockets respectively. Here's the callbacks code:


void SimpleClient::socket_cb(SocketEvent *ev) {
    int fd;

    if(dynamic_cast<AddSocketHandleEvent *>(ev) != NULL) {
        AddSocketHandleEvent *cev = dynamic_cast<AddSocketHandleEvent *>(ev);

        fd = cev->getSocketHandle();
        cout << "connecting socket " << fd << endl;

        if(cev->isRead()) rfds.insert(fd);
        if(cev->isWrite()) wfds.insert(fd);
        if(cev->isException()) efds.insert(fd);

    } else if(dynamic_cast<RemoveSocketHandleEvent *>(ev) != NULL) {
        RemoveSocketHandleEvent *cev = dynamic_cast<RemoveSocketHandleEvent *>(ev);

        fd = cev->getSocketHandle();
        cout << "disconnecting socket " << fd << endl;

        rfds.erase(fd);
        wfds.erase(fd);
        efds.erase(fd);

    }
}

void SimpleClient::connected_cb(ConnectedEvent *c) {
    cout << "Connected" << endl;

    msg = new NormalMessageEvent(&destContact, "Hello");

    cli.addContact(destContact);
    cli.SendEvent(msg);
}

void SimpleClient::disconnected_cb(DisconnectedEvent *c) {
    if(c->getReason() == DisconnectedEvent::REQUESTED) {
        cout << "Disconnected as requested" << endl;
    } else {
        cout << "Problem connecting: ";

        switch(c->getReason()) {
            case DisconnectedEvent::FAILED_LOWLEVEL:
                cout << "Socket problems";
                break;
            case DisconnectedEvent::FAILED_BADUSERNAME:
                cout << "Bad Username";
                break;
            case DisconnectedEvent::FAILED_TURBOING:
                cout << "Turboing";
                break;
            case DisconnectedEvent::FAILED_BADPASSWORD:
                cout << "Bad Password";
                break;
            case DisconnectedEvent::FAILED_MISMATCH_PASSWD:
                cout << "Username and Password did not match";
                break;
            case DisconnectedEvent::FAILED_UNKNOWN:
                cout << "Unknown";
                break;
        }

        cout << endl;
    }
}

void SimpleClient::logger_cb(LogEvent *c) {
    switch(c->getType()) {
        case LogEvent::INFO:
            cout << "\033[34m";
            break;
        case LogEvent::WARN:
            cout << "\033[31m";
            break;
        case LogEvent::PACKET:
        case LogEvent::DIRECTPACKET:
            cout << "\033[32m";
            break;
    }

    cout << c->getMessage() << endl;
    cout << "\033[39m";
}

void SimpleClient::messageack_cb(MessageEvent *ev) {
    Contact *ic;

    if(ev == msg)
    if(ev->isFinished() && ev->isDelivered()) {
        cout << "Message has been delivered well. Terminating" << endl;
        acked = true;
    }
}

As you can see, every callback receives a pointer to an event class as a parameter. Interfaces of the event classes can be found in the events.h header file, and are quite self-descriptive. Since our example is only intended to connect to the ICQ network, send a message, and disconnect, the callbacks behave as shown above. As soon as a connection is established, a message is created and sent. Please note that the SendEvent() method receives a pointer as a parameter. This is necessary to make message acknowledgements work. The pointer lives until it's passed to the messageack callback, then is destroyed. Also, please note that in order to receive messages from someone, you should have their UIN on your ickle contact list, so you'll need to call the addContact() method of the Client class.

Finally, here are the SimpleClient::exec() method and the main() function:


void SimpleClient::exec() {
    int max_fd;
    set<int>::iterator i;

    cli.setStatus(STATUS_ONLINE);

    while(!acked) {
        fd_set rf, wf, ef;
        struct timeval tv;
        max_fd = -1;

        FD_ZERO(&rf);
        for(i = rfds.begin(); i != rfds.end(); i++) {
            FD_SET(*i, &rf);
            max_fd = max(*i, max_fd);
        }

        FD_ZERO(&wf);
        for(i = wfds.begin(); i != wfds.end(); i++) {
            FD_SET(*i, &wf);
            max_fd = max(*i, max_fd);
        }

        FD_ZERO(&ef);
        for(i = efds.begin(); i != efds.end(); i++) {
            FD_SET(*i, &ef);
            max_fd = max(*i, max_fd);
        }

        tv.tv_sec = 60;
        tv.tv_usec = 0;

        if(select(max_fd+1, &rf, &wf, &ef, &tv)) {
            for(i = rfds.begin(); i != rfds.end(); i++) {
                if(FD_ISSET(*i, &rf)) {
                    cli.socket_cb(*i, SocketEvent::READ);
                }
            }

            for(i = wfds.begin(); i != wfds.end(); i++) {
                if(FD_ISSET(*i, &wf)) {
                    cli.socket_cb(*i, SocketEvent::WRITE);
                }
            }

            for(i = efds.begin(); i != efds.end(); i++) {
                if(FD_ISSET(*i, &ef)) {
                    cli.socket_cb(*i, SocketEvent::EXCEPTION);
                }
            }
        } else {
            cli.PingServer();
        }
    }

    cli.setStatus(STATUS_OFFLINE);
}

int main() {
    SimpleClient s(123, "xxx", 456);
    s.exec();
    return 0;
}

Sure, the socket descriptors processing could be done in a nicer way, but it's this dumb here for the sake of clarity. Note that the SimpleClient's constructor takes login parameters and the UIN to which the message is to be sent.

For another good example, look in the ickle package, where you'll find example/shell.cpp source which implements an auto-respond mechanism for ICQ.

Conclusion

I conclude that even though the ickle library misses some major features such as finding users and extended details lookup, it's already more than just usable. It's possible to send messages, URLs, SMSes, authorization requests, and acknowledgements, to register new UINs, to read away messages, etc. The major part of the work is done. At this moment, 9th December 2001, 22:30:07 EET, it is probably the best ICQ protocol implementation which also has all the benefits of a GNU project.


Author's bio:

Konstantin Klyagin can be found at http://konst.org.ua/.


T-Shirts and Fame!

We're eager to find people interested in writing articles on software-related topics. We're flexible on length, style, and topic, so long as you know what you're talking about and back up your opinions with facts. Anyone who writes an article gets a t-shirt from ThinkGeek in addition to 15 minutes of fame. If you think you'd like to try your hand at it, let jeff.covey@freshmeat.net know what you'd like to write about.

[Comments are disabled]

 Referenced categories

Topic :: Communications :: Chat :: ICQ

 Referenced projects

centericq - An ncurses-based client for ICQ, Yahoo!, AIM, IRC, Jabber, MSN, and LiveJournal.
climm - A portable, small, yet powerful console-based ICQ and XMPP client.
ickle - An ICQ2000 client using the GTK-- graphical toolkit.
icqlib - The ICQ library.
Libsigc++ - A callback framework for C++.
Licq - An advanced graphical ICQ clone.
Pidgin - A GTK2-based instant messaging client.

 Comments

[»] Unable to use Client.h and events.h
by kojie - Dec 15th 2003 18:21:05

i already installed all the libraries with the dependencies
but im unable to compile
I get these errors:
* /home/diablo/dev/icq_send/src/icq_send.cpp:9:20: Client.h: No such file or directory
* /home/diablo/dev/icq_send/src/icq_send.cpp:10:20: events.h: No such file or directory
<other lines trucated- most are jst related to the missing files>

although they are already in the: /usr/local/include/libicq2000/libicq2000/Client.h
/usr/local/include/libicq2000/libicq2000/events.h

any ideas ??? help asap

[reply] [top]


[»] Having an Open Protocol Wouldn't Matter
by Roger Clark - Feb 22nd 2002 18:55:17

No offense, but there are over a hundred million users of ICQ, and probably just as many AIM users, and a growing MSN user base.

If I were to develop anything, it would be an implementation of the ICQ protocol. Every single person I know who uses a computer uses ICQ; and they have no clue what Linux, GPL, or even what a "protocol" is. It wouldn't be easy to get those people to switch to an open system, and without the huge userbase, the open system wouldn't do much good.

No amount of advertising will get anyone close to the number of users that ICQ's brand name has gotten it, and AOL/MSN's members have brought their IM services.

It is only logical, unless you wish to talk only to geeks, to develop open implementations of these closed protocols. We already have IRC -- look how long IT'S been around, and how many normal people use it.

[reply] [top]


[»] Instant Messaging is 'old'
by weissel - Jan 14th 2002 06:29:50

> It's now difficult to say who was the first to
> invent something more rapid than email[...]

It seems that this idea was present at _or before_ november 1981:

RFC 0788 (Simple Mail Transport Protocol, superceeded by RFC 0821 in August 1982, both by Jonathan B. Postel, RIP) includes( next to the MAIL FROM) the SEND FROM, SAML FROM (Send And MaiL) and SOML FROM (Send Or MaiL) commands.

Send here "requires that the mail data be delivered to the user's terminal if the user is active (and accepting terminal messages) on the host." (RFC 0788, "3.4. SENDING AND MAILING").

Of course this may not be the earliest mention, but it should provide a data point.

[reply] [top]


[»] LICQ supporting v8 protocol
by Warren E. Downs - Jan 8th 2002 17:30:37

The LICQ in CVS is working on supporting the v8 protocol. It worked "out of the box" for me at least as well as GAIM did. Though chat requests still use the older protocol, GAIM (and I presume ickle) don't even support it at all.

So, thanks for the informative article, however, for a library like this to be fully useful, it needs to support all the protocol features (such as direct chat). I'm hoping that will happen, as I would enjoy writing my own ICQ client, but only if it could have chat, file transfer, etc., as well as instant messages.

Regarding other's calls to switch to a non-proprietary protocol, I'm all for that if:

1. The protocol has all the functionality of the proprietary ones. So far, I haven't seen a jabber client that could do chat, file transfer, etc. Maybe it's not the protocol's fault, but I don't have time to mess with it.

2. Servers need to be widely available and able to handle the load of a large number of users.

3. Transitioning tools for the other clients need to be available for many platforms, including ICQ on Windows.

[reply] [top]


[»] ICKLE and alternatives
by James Skarzinskas - Dec 30th 2001 18:02:50

As many hear have mentioned, ICQ is overused and proprietary. For an open solution, it seems ironic that so much effort has to be put in to reverse engineer it and use it for our open clients. I'd be happy to see an *unlikely* solution. I'd like to see a large open business (such as VA, who have massive servers) develop and implement an 'open' instant messaging system. The only difficulty would be in getting users to switch; so it couldn't use some half-baked GUI like, unfortunately, most X11 programs seem to have. I may be dreaming, but I'd like to wake up in a world just that much more open.

[reply] [top]


    [»] Re: ICKLE and alternatives
    by Robert "Jedi" Ramiega - Jan 2nd 2002 05:03:08


    > As many hear have mentioned, ICQ is
    > overused and proprietary. For an open
    > solution, it seems ironic that so much
    > effort has to be put in to reverse
    > engineer it and use it for our open
    > clients. I'd be happy to see an
    > *unlikely* solution. I'd like to see a
    > large open business (such as VA, who
    > have massive servers) develop and
    > implement an 'open' instant messaging
    > system.
    I think that solution You are writing of is already up'n'running. Have a look at www.jabber.org or www.jabberclient.org. I've been using it for some months and it works perfectly ok. Just a have a look at it
    Happy New Year!

    --
    -- Just a friendly Jedi Knight

    [reply] [top]


      [»] Re: ICKLE and alternatives
      by James Skarzinskas - Jan 3rd 2002 00:16:53


      >
      > % As many hear have mentioned, ICQ
      > is
      > % overused and proprietary. For an
      > open
      > % solution, it seems ironic that so
      > much
      > % effort has to be put in to reverse
      > % engineer it and use it for our
      > open
      > % clients. I'd be happy to see an
      > % *unlikely* solution. I'd like to see
      > a
      > % large open business (such as VA,
      > who
      > % have massive servers) develop and
      > % implement an 'open' instant
      > messaging
      > % system.
      >
      > I think that solution You are writing
      > of is already up'n'running. Have a look
      > at www.jabber.org or
      > www.jabberclient.org. I've been using it
      > for some months and it works perfectly
      > ok. Just a have a look at it
      > Happy New Year!
      >
      >

      Wow! Thanks for the lead :) I'm pleased with what I see on the Jabber effort!

      [reply] [top]


[»] ICQ/AIM/Yahoo! and other closed protocols
by Julian Missig - Dec 29th 2001 15:19:24

As mond sort of pointed out already...

Could someone please explain to me why open source developers are so accepting of these closed protocols? Yeah, I know I'm biased working on an open one, but I just want to know. It's not like these protocols are even really good protocols or anything - are they just accepted "because so many people use them"? You could make the exact same argument for any other piece of closed source software. There has to be a better reason than that - what is it?

[reply] [top]


    [»] Re: ICQ/AIM/Yahoo! and other closed protocols
    by Capo Cannonieri - Feb 25th 2002 21:34:51


    > As mond sort of pointed out already...
    >
    > Could someone please explain to me why
    > open source developers are so accepting
    > of these closed protocols? Yeah, I know
    > I'm biased working on an open one, but I
    > just want to know. It's not like these
    > protocols are even really good protocols
    > or anything - are they just accepted
    > "because so many people use
    > them"? You could make the exact
    > same argument for any other piece of
    > closed source software. There has to be
    > a better reason than that - what is it?

    popularity, that is key

    --
    Capo Cannonieri

    [reply] [top]


      [»] Re: ICQ/AIM/Yahoo! and other closed protocols
      by Julian Missig - Feb 25th 2002 21:37:10


      >
      > % As mond sort of pointed out
      > already...
      > %
      > % Could someone please explain to me
      > why
      > % open source developers are so
      > accepting
      > % of these closed protocols? Yeah, I
      > know
      > % I'm biased working on an open one,
      > but I
      > % just want to know. It's not like
      > these
      > % protocols are even really good
      > protocols
      > % or anything - are they just
      > accepted
      > % "because so many people use
      > % them"? You could make the
      > exact
      > % same argument for any other piece
      > of
      > % closed source software. There has to
      > be
      > % a better reason than that - what is
      > it?
      >
      >
      > popularity, that is key
      >

      Windows is more popular than Linux. Word is more popular than all of the open source word processors combined. Yet Open Source fans use Linux even when it would be easier to use windows.

      [reply] [top]


        [»] Re: ICQ/AIM/Yahoo! and other closed protocols
        by arne - Aug 3rd 2002 13:53:17


        >
        > %
        > % % As mond sort of pointed out
        > % already...
        > % %
        > % % Could someone please explain to me
        > % why
        > % % open source developers are so
        > % accepting
        > % % of these closed protocols? Yeah, I
        > % know
        > % % I'm biased working on an open one,
        > % but I
        > % % just want to know. It's not like
        > % these
        > % % protocols are even really good
        > % protocols
        > % % or anything - are they just
        > % accepted
        > % % "because so many people use
        > % % them"? You could make the
        > % exact
        > % % same argument for any other piece
        > % of
        > % % closed source software. There has
        > to
        > % be
        > % % a better reason than that - what is
        > % it?
        > %
        > %
        > % popularity, that is key
        > %
        >
        >
        > Windows is more popular than Linux. Word
        > is more popular than all of the open
        > source word processors combined. Yet
        > Open Source fans use Linux even when it
        > would be easier to use windows.
        >

        see it like this: word can be replaced by openoffice/abiword/kword/emacs/whatever (offcourse there is some tradeoff of features since you're running free), Photoshop can be replaced by gimp - a huge tradeoff, but certainly enough for me not doing proffessional art work, the list can go on, I even select my hardware and play 'outdated' games just to stay in wonderful linux - which I don't run for ideological reasons.

        however trying to get all my friends (and new friends I meet) to use some akward IM protocol just because it's free (jabber devs, no offence, I haven't tried it) really makes no sense to me - when the only reply I get will be "But ICQ is also free..."

        [reply] [top]


[»] What about GnomeICU?
by Jeremy Wise - Dec 29th 2001 14:57:16

GnomeICU was one of the first linux ICQ clients on the scene, right after Matt Smith's mICQ and about the same time as LICQ showed up. GnomeICU (gnomeicu.sourceforge.net) supports most of the functionality of ickle, but we've been rewriting it in C as opposed to C++. I must complement the ickle authors, though, on a great job of laying out the protocol. I remember the days of packet sniffing late into the night with Matt Smith as we did it ourselves.. it's not fun ;) As for popularity, AIM and MSN are popular, but they don't come close user-wise to the numbers ICQ has. Have a great day all!

[reply] [top]


[»] Related project: KXicq2
by Herwin Jan Steehouwer - Dec 29th 2001 14:18:00

Hi,

Check www.kxicq.org ! KXicq support most ICQ features and
supports ICQ protocol version 7, wich is much stables then
the old one.

In CVS is fully SMS support ( send, receive and status ),
groups support in contact list, update Home and Work
infomation and MUCH more !

check it out ;-)

BTW is uses kxEngine as the main engine, it has no GUI
features, so it can be used lose from KXicq...

[reply] [top]


[»] nice article, good work, BUT better avoid ICQ
by mond - Dec 29th 2001 12:16:43

while it is good that some one did the work to reverse engineer the ICQ
protocol and make it GPL software there is still one danger: the owners (or
however buys it next - maybe micro$oft or anyone else) could change the
protocol again. and they could change it in a way that would not be easy to
reverse engineer..

then all linux users are suddenly without IM. so i would suggest: if you
(as a user) can manage to avoid ICQ then you should. bring your friends that
you want to communicate with to IRC or jabber or something like this..

i think it is dangerous that commercial institutions have too much
influence on the software we can use... the GPL alone does not help here as
long as the server and the protocol is in their hands..

so use ICQ with caution. better migrate your friends away to IRC or jabber
while the protocol still works.. so you do not have an unpleasant wakeup
once some large international corporation wants to fuck you...

mond.

[reply] [top]


    [»] Re: Curse of the changing protocols
    by Eric Crahen - Dec 29th 2001 15:11:36


    > ... they could change
    > it in a way that would not be easy to
    > reverse engineer..

    Tell me about it :) I started a project almost 2 years ago to play with ICQ and make my own client, before here were as many as there were now. They changed the protocol twice while I was
    doing it in my spare time and that was not great fun.
    <P>
    I looked at some of the packets I had for the newer TCP protocol just for kicks a while ago - how'd they figure that one out? The earlier version were pretty simple, but from glancing at the newer protocol it looked even more goofy as far the strange "encryption" they did goes. I really didn't spend much time on it because I'm too busy now - but does anyone have anything they want to relate about how they went about dechipering that? I'm just curios if there was a faster way than trial and error.
    <P>
    Oh yeah, long story short I never did finish my messenger because of the changing protocols :)
    I think it was also, in part, due to my lack of time
    and working an other stuff. But you learn alot more than you'd think you were going to learn when you play around with this sort of thing so I suppose it was worth it

    --
    http://www.code-foo.com/

    [reply] [top]


    [»] Re: nice article, good work, BUT better avoid ICQ
    by Noviota - Dec 29th 2001 16:17:20


    >
    > then all linux users are suddenly
    > without IM. so i would suggest: if you
    > (as a user) can manage to avoid ICQ
    > then you should. bring your friends
    > that
    > you want to communicate with to IRC or
    > jabber or something like this..

    How do you get a basic computer user, one who had msn preinstalled on their computer or has used icq for a while to download and use jabber. They don't understand or care about the advantage of GPL. Why should they care about using it. I have had no luck in trying to get people to use jabber and have given up. I have gone to running ccmsn and gnomeicu because of the instability of the jabber transports. Give jabber SMS, more web interfaces and maybe I can get them interested from the lack of advertising. But other than that there is no advantage for them. -- Or am I missing something.

    [reply] [top]


      [»] Re: nice article, good work, BUT better avoid ICQ
      by dazk - Jan 2nd 2002 16:12:11


      >
      > %
      > % then all linux users are
      > suddenly
      > % without IM. so i would suggest: if
      > you
      > % (as a user) can manage to avoid
      > ICQ
      > % then you should. bring your
      > friends
      > % that
      > % you want to communicate with to IRC
      > or
      > % jabber or something like this..
      >
      >
      > How do you get a basic computer user,
      > one who had msn preinstalled on their
      > computer or has used icq for a while to
      > download and use jabber. They don't
      > understand or care about the advantage
      > of GPL. Why should they care about using
      > it. I have had no luck in trying to get
      > people to use jabber and have given up.
      > I have gone to running ccmsn and
      > gnomeicu because of the instability of
      > the jabber transports. Give jabber SMS,
      > more web interfaces and maybe I can get
      > them interested from the lack of
      > advertising. But other than that there
      > is no advantage for them. -- Or am I
      > missing something.

      Well the biggest prob with jabber is that the transports to the bigger services like AIM and ICQ are not stable. I tried various servers but as long as you seldom see all your contacts becaus one or even more than one transport is down it's not even usable for me. If you have a larger contact list you won't get people to switch hard not being able to see those contacts that stick to the old protocol. Also often there are communities that developed over time. I'm a long term ICQ user and I know only 2 or 3 people that use something else. My contact list consists of around 50 entries with about 10-20 being online often. If I only manage to get half of them move to jabber what about the other 20. I still want to be able to contact them via messenger. That will be the same with the others that changed. They won't see large part of ther old contact list if ICQ transport is down. That will make them and me move back to a native client.

      Jabber is really cool. I love the roaming contact list and I really like the opennes and technical stuff but without reliable transports it just doesn't work.

      Imagine most users used a closed email protocol and that there'd be some Linux/Unix tools that could send and receive mail. Would you switch to an open alternative if you could only somites send mail to all the people you'd like to send mail to but most of the time it'd only be a fraction of the people you used to communicate with?

      Don't think so!

      Hopfully jabber becomes reliable enough soon. I'd switch right away. Finally unified messaging with an open protocol and roaming profiles.

      Cheers,

      Richard

      [reply] [top]


[»] ICQ the most popular?
by mr. shin hiko fugu momorin - Dec 29th 2001 12:16:34

I would think AIM is more popular ... any numbers to support either side out there? I originally got ICQ to talk to a couple people but since then (this is going back a few years) almost anyone who gives me an Email address and IM name uses AIM.

[reply] [top]


    [»] Re: ICQ the most popular?
    by deuterium - Dec 29th 2001 13:28:09

    Depends on where you live.. here in holland and belgium.. MSN is *very* popular.. personally i think it sucks.. but ok:) Nobody uses aim here.. Some people use icq. Around 99% of the n00bs is msn addict.(:()

    [reply] [top]


      [»] Re: ICQ the most popular?
      by PhantomData - Dec 29th 2001 14:15:25


      > Depends on where you live.. here in
      > holland and belgium..
      > MSN is *very* popular.. personally i
      > think it sucks.. but ok:)
      > Nobody uses aim here.. Some people use
      > icq.
      > Around 99% of the n00bs is msn
      > addict.(:()
      >
      >
      I totally agree. My real-life friends all use MSN. I /hate/ it, but that's what they use - and there's no changing them.

      [reply] [top]


      [»] Re: ICQ the most popular?
      by Arkadiusz Miskiewicz - Jan 5th 2002 04:45:11


      > Depends on where you live.. here in
      > holland and belgium..
      > MSN is *very* popular.. personally i
      > think it sucks.. but ok:)

      While here in Poland most popular are ICQ and Gadu-Gadu (polish IM system; protocol specification is closed but 95% of it is already known ;). Almost no one uses MSN or AIM here.

      --
      PLD/Linux, Join IPv6 community.

      [reply] [top]


    [»] Re: ICQ the most popular?
    by DiskDoc - Mar 26th 2002 05:27:08

    Here in Finland pretty much everyone uses ICQ. I don't know of anyone to use anything else. Intetersting to hear of MSNs popularity in Holland!

    [reply] [top]


[»] Nice article
by Sebastian Olsson - Dec 29th 2001 07:52:38

Nice article.

[reply] [top]




© Copyright 2008 SourceForge, Inc., All Rights Reserved.
About freshmeat.net •  Privacy Statement •  Terms of Use •  Trademark Guidelines •  Advertise •  Contact Us • 
ThinkGeek •  Slashdot  •  Linux.com •  SourceForge.net  •  Jobs