Showing posts with label haskell. Show all posts
Showing posts with label haskell. Show all posts

Tuesday, February 20, 2007

How Eldora will differ from a BNC

Bohemel asked the obvious question "What is the difference between this application and an ordinary bnc?". I will try to explain it in this post.

During the years I have tried many different IRC bouncers, but none has satisfied me. As I see it, the problem is how the client communicates with the BNC, the IRC protocol is not flexible enough. As an example, when you connect to a BNC, you receive log messages from the channels you are in, but they are time-stamped with the current time. You can not tell if a channel has new messages or not, since all received messages are "new" to the IRC client.

The two solutions to this problem which I have found is:
    1. Extend the IRC protocol with additional features.
    2. Create a new protocol.
I have chosen the second solution because it offers more flexibility.
    IRC Client < --IRC protocol--> BNC < --IRC Protocol--> IRC Server(s)

    Eldora Client < --Eldra protocol--> Eldora server < --IRC Protocol--> IRC Server(s)
The Eldora protocol is similar to the IRC protocol, but adds additional features, such as separation of new messages and previously read messages. So when a Eldora client connects to the server, it can request n lines of log for each open channel and private chat. The messages will be time-stamped at the correct time (which often is a problem with BNCs, since IRC messages are time-stamped by the receiving client). It will also support various window managing commands, so if one client closes a window, or rearranges a window, it will propagate to all connected clients.

Tuesday, February 13, 2007

Eldora: Reinventing IRC

Reinventing is perhaps not the right word to use, but if Apple were the creators of Eldora they would probably claim so. Eldora is the codename of a project I'm currently working on, it is sort of a continuation/restart of an old project of mine, rIRC, which was never finished.

Eldora is a Client/Server based IRC client. It is supposed to do what can be achieved using irssi in a screen on a remote shell. It will allow you to always be online in your irc channels, so you wont miss anything said during you turned your computer off. It will support multiple attached clients at the same time. Changes to the interface, such as open channels or private chats, will propagate to all connected clients. The server part will run on almost any platform, while the client application will (at least to start with) be mac only.

The client application will support support growl notifications, have URL highlighting, URL logging (actually a server feature). Since it is going to be an OS X application it must of-course be very attractive as well :)

So far I'm only working on the server implementation. I'm coding it in, do not be frighten now, Haskell. During the past months I have learnt a great deal of Haskell, and what seemed totally impossible to me 3 months ago, that I would actually like to code Haskell, is today true. It is a very powerful language, but it is also extremely hard to learn.

Comments, thoughts or feature requests are welcome :)