ta-sa.org - Bummskraut

(best viewed in any resolution with any HTML enabled browser)


Main:
Index
Contact
Links

Studies:
Informatics
Scripts
Material

Projects:
Git repository

Programs:
cdplay
ECMS
lip.C
baseclc.c
nfa-util.C
tm.C
termreplace
psi_pw_decode
bummskraut

Perl:
AnyEvent::XMPP
Net::XMPP2
AnyEvent::IRC
Object::Event
AnyEvent::HTTPD
AnyEvent::EditText
MIDI::Sequencer

Music:
Ta-Sa Music
Languages:
LR Grammar Collection

Deliantra:
Deliantra

GNU Smalltalk:
Links

Other:
Laughing man logo
ta-sa.org

Java must DIE


Bummskraut - last change: renamed Net::XMPP2 => AnyEvent::XMPP, Fri Aug 15 16:35:14 2008 +0200

Bummskraut - A chat client framework

This is the place where the bummskraut releases will be done. Bummskraut is a frontend<->backend seperated chat framework with support for IRC and XMPP. It is completly written in Perl.

Architecture

Bummskraut is a chat client which has a strong seperation between the backend, which connects to IRC and XMPP, and the frontend, which displays all the chat messages and lets you configure and manage things.

A frontend basically only display one buffer. A buffer is tied to an ID. An ID is a chat contact, that might be either your friend with a specific nick in IRC, or an IRC channel, or even an XMPP contact.

The frontend is a simple curses application actually which does not support multiple in-terminal-windows. Here the advantage kicks in that we can connect multiple frontends to the backend. So if you need another window, just start another terminal and start the frontend!

You may scream out loud: "For heavens sake! Why do I have to open another terminal??? Irssi doesn't need this!!!!111". The reason is: Windows should be managed by something that is specialized for managing windows. Namely: Your X window manager! Or even screen can be used to manage the frontends. Bummskraut gives you this complete freedom.

Also note that all configuration is shared between frontends that are connected to the same backend. And the configuration changes will also be pushed in time to the other frontend if you change something. For example if you add an alias command, it will become available in the other frontends!

Does it work?

Yes, it already works. There are of course still a lot of edges for the causual user, and there exists not much documentation yet as it is still in development and not yet readied up for a release. But I have been using it already for months and even added XMPP support recently.

Screenshots

Here is a screenshot of 3 rxvt-unicode terminals that were placed by my window manager config (I use fvwm2):

../data/imgs//tb_bummskraut_alpha.png

You may notice that it supports Unicode and that there is a red bar on the top of each window. That bar signals that someone in a 1-to-1 chat told me something I haven't responded to yet.

Future

I don't have much time to spen on all my projects, but this is definitively one of my main projects. I'll definitively come back to this and implement new features and fix bugs. However, if you found this interesting you can always get a development snapshot and try to help me.

One of the big features that are standing out is the Gtk interface for bummskraut. I want to move all configuration tasks to a Gtk interface which will also help managing the XMPP rosters and other things. Currently there is a experimental example GUI implemented for looking into the XMPP messages that have been received and sent, which will be useful to debug XMPP related problems in future.

Once that GUI interface has been written (using Net-GUI, see below in the source code section) bummskraut will be ready for first releases.

Source code

Bummskraut is in active development and not yet that near to a release, but if you find it interesting and like it you may want to try the code, you will only need the two Perl modules stated below and AnyEvent::XMPP

To stay up to date you will need the 'BS' Perl module. Here is the repository:

Git repository for BS:
  • Browse at: http://git.ta-sa.org/BS.git
  • Get the code via:
    git clone http://git.ta-sa.org/BS.git/
    cd BS
    
  • And then stay up to date via:
    git pull
    

Questions? Suggestions? Bugs?

Please feel free to contact me via mail on email or look at contact how to contact me.
All logos and trademarks on this site are property of their respective owner. Site admin is: elmex@ta-sa.org