Cim-5
From CenterIM
This will be the release where protocol libraries will be substituted by libpurple. We want this because it will mean the protocol libraries in libpurple are kept up-to-date.
This is currently being developed by Setupji and was originally programmed by Unknown.
Use following command to get the latest source code (using Git):
git clone -b mob git+ssh://mob@repo.or.cz/srv/git/centerim5.git
Development dependecies for Debian, possibly incomplete:
libtool libpurple-dev libncursesw5-dev libglib2.0-dev libsigc++-2.0-dev autoconf libgconf2-dev autopoint g++ ncurses-dev gettext
Please use ./configure switch --enable-debug when building.
There is a page that describes the Architecture.
Contents |
Help needed
Currently Cim5 is being developed by one person. It is not a small job. Therefore volunteers are needed to speed up the development.
There are a lot of tasks waiting to be done. There is a TODO list on this page, a TODO list in the source distribution, and there are also a lot of TODO items spread all over the code as comments. There are enough things left to do, even for beginning programmers.
If you'd like to help, don't hesitate! Join the discussion on #centerim@freenode.net and the mailing lists.
Notes
Here are some useful notes:
- Widgets cannot be displayed on screen by themselves. The *only* widgets which can be drawn on screen are Windows and derived classes. The idea behind this lies in the details of the curses implementation (see man newpad).
- Cim5 works internally with UTF-8 exclusively. Input is converted from the current locale to UTF-8. This stems from the fact that glib (used by libpurple) expects UTF-8 encoded strings.
- If you need to debug some curses related problems see http://frank.harvard.edu/~coldwell/ncurses/hackguide.html.
I want to help
Please contact us in the IRC channel or via the mailing list.
There is a mob branch available where you can contribute your patches.
Read http://pidgin.im/~elb/blog/architecture.html.
Here is a list of tasks that need doing (see source code for more):
- TODO: The code is riddled with todo's (100 on last count). Find one, fix one. This will help you learn how Cim5 works.
- BuddyList: Implement options/settings to make it look and work like the Cim4 buddylist. This involves the files BuddyList.* and BuddyListNode.*.
- Widgets: We are most likely going to need the following standard widgets: checkbox, radiogroup, etc.
- Log: Add settings to select which log levels are visible. This involves the files Log.* and Conf.*.
- CoreManager: Implement window stacks. E.g. one stack for omnipresent windows, one for normal, one for background windows. Possibly also one for menu/status windows (bars at the top/bottom of the screen).
- Requests: Make an interface for the requests API in libpurple. For this we need dynamic configuration windows.

