Biboumi 6.0

New features

This release is not very big and does not include many important
changes. But here are a few useful new features that can improve your
experience when using the gateway.

Roster

You can now add some biboumi’s JIDs in your own roster to have some useful
information about the availability of the gateway.

You can add the gateway own’s JID (like biboumi.example.com). This JID will
become online whenever the gateway is started, and goes offline whenever it
is shut down.

You can also add any IRC-server JID (like
chat.freenode.net@biboumi.example.com). This JID will become online whenever
you (one of your presences) is connected to this IRC server. This helps you
keep track of what connection you are keeping alive.

Global persistent channels

By a popular demand, there’s now a per-user option to make all channels
persistent by default. This means that, if this option is set to true, all
channels will be persistent (biboumi will stay connected, even if you remove
all your resources from that channel), unless you explicitely set a specific
channel to be non-persistent.

With this, comes an admin option (persistent_by_default, found in the
configuration file) to make all channels persistent by default for all
users. This is useful if you maintain a service for a few users that won’t
be able to deal with the ad-hoc command to make them persistent by default.

History limit

The history limit requested by the client when joining a channel is now
supported.

The ad-hoc option to specify the maximum limit is still there, and will
still be enforced. But the client can now specify that it wants no history
at all, and just use MAM directly because it is a lot more flexible (and
should probably be the prefered way to get the history, for any modern XMPP
client).

LiteSQL dependency dropped

Biboumi should now be a lot easier to install and package, since we do not
require litesql at all. Only
libsqlite3 is needed if you want to have all the features provided by the
database (ad-hoc commands to configure many things, archives (using MAM),
etc).

I decided to write my own (and very very minimalist) ORM directly in C++,
inside biboumi, using libsqlite3 only because I was tired of maintaining my
fork of litesql, and that was an other dependency that was hard to get on
many distros (if we wanted to package biboumi on debian with the database
support, for example, we would need to package litesql as well…).

This is only an install/packaging improvement (the user experience stays the
same, the database does not need to be migrated or anything), but I think
it’s an important one, for the future of biboumi.

And more

Invitations are no longer limited to other users of the gateway, the code
has been simplified by dropping the support for botan 1.11.x (only 2.x is
supported now), an option to disable the archives for a specific channel has
been added.

For the future

I may add the support for postgresql, in addition of sqlite3. I’m not 100%
sure this is useful, but it has been asked by a few people, so… If you want
this feature, please raise your voice in the bug
report.

Other than that, I consider biboumi to be almost feature-complete. Nothing
dramatic or revolutionary will come, only a few useful little features or
fixes. You can see the list of features I intend to add in version 7.0
here. If you think a
feature is important for you, you can upvote it, or even add a comment, to
explain you think this should be a priority.