Tags: xmpp-en xmpp poezio
Originally the next version on the roadmap was 1.0, but I don’t feel
like giving a 1.0 tag to the current state of things; so, without
I am pleased to announce that poezio 0.10 has just been released!
Poezio is a terminal-based XMPP client which aims to replicate the
feeling of terminal-based IRC clients such as irssi or weechat; to
this end, poezio originally only supported multi-user chats.
Link Mauve spent a sizeable chunk of time to make poezio faster, which
makes it nicer and lighter to use in low-powered environments with many
contacts and many rooms with many people in it.
A lot of time was spent profiling and cursing python, then writing
micro(or not-so-micro)-optimizations. His final goal is to make everything
cythonizable, to get even better performance. Thanks a lot to him!
Stream Management (XEP-0198)
Together with fixing the slixmpp plugin for XEP-0198, it was implemented in
poezio. It is not enabled by default because it adds overhead and isn’t
useful in most poezio use cases (i.e. long-running sessions in a tmux window
somewhere on a server), but it can be easily enabled through a config option.
Stream Management (which requires server support) allows a client to restore
a session after a disconnection, as long as the server has a sufficiently
high timeout value configured. It also allows for more reliability inside
a stream, by having acks and sequence numbers interlaced with the stream
of normal activity. If sequence numbers don’t match, the entity which sent
the missing messages will send it again.
It was an oversight, but a big one; carbon copies (XEP-0280) are now enabled
by default in poezio 0.10. Carbons allow for a more seamless transition in a
multi-device environment by replicating messages sent and received to each
Poezio log files adopted a log format close to the mcabber one a long
time ago. However, reading logs within poezio is sub-par at best; and while
there are plans to remedy to this, it’s still good to be able to read logs
without having the custom format cruft around.
So the poezio_logs tool takes a log file path as a parameter and outputs the
cleaned-up result to stdout, with some coloration. It can take parameters to
remove color, timestamps, or info messages as well.
HTTP Verification (XEP-0070)
The surprise of this release is the arrival of an HTTP Verification tab, which
implements XEP-0070 to authenticate HTTP requests using only your JID.
A mediawiki plugin is in the writings, and a wordpress plugin already exists.
Because components such as this one talk HTTP, there is no need to add
any kind of XMPP support in the application that needs an identity validation;
just enter your JID, accept the request on your client, and voilà.
New warning prompt
The previous way of handling a certificate change was really inconvenient, so
with HTTP verification implemented, it was easy to just re-use the same tab
with a different color scheme in order to have an more user-friendly way
to interact (especially since we moved from SHA-1 to SHA-512, which
increased the size of the hash by a lot).
Fun with message corrections
It’s more abuse of the protocol than anything else, but since we like writing
funny plugins, here are two new ones:
- marquee, to replicate the behavior of the <marquee/> tag by moving text from
left to right in a loop, all in the same message using corrections
- dice, to roll a number of unicode dice for a time interval, once again using
Client State Indication
CSI (XEP-0352) is a mobile-oriented extension that requires both client and
server support, and lets the client tell the server that it’s "off" (for
example, a mobile client while the screen is off and the phone is in the pocket).
It surprisingly applies well to poezio, thanks to the screen_detach plugin, which
is either in attached or detached state.
Toggling this active or inactive state leaves the server free to enable a number
of filters to reduce data transfer between the client and server. For example,
it could filter all presences received while the client was off.
A "csi" plugin was also added with explicit commands to set or unset that status.
VCard-Temp (XEP-0054) support is still a desirable thing, and this version
adds a plugin to view vcard information from remote entities. It’s still a
little rough because it only implements a subset of the elements in a vcard,
and re-uses a poezio tab that wasn’t designed for readonly data, but it’s
Of course, once vcard-temp is really done, vcard4 (XEP-0292) support is next.
Bits of Binary
While we still have no real file transfer abilities, we now have a Bits of
Binary (XEP-0231) plugin, which allows for small in-band file transfers
between clients. Considering stream bandwidth is often limited to a few
kilobytes per second for good reasons, it should be used sparingly, but
it’s perfect for sending small files.
And many more
Of course, there are many more commits for new features or bug fixes, with
a big refactor that removed an ugly python path manipulation hack, minor
UI fixes that save some screen space and provide better consistency with
themes, no instant reconnect loops on specific error conditions, etc…
You can check the CHANGELOG or the git history for more reasons to upgrade.
Beside myself (mathieui), louiz’, and Link Mauve, I want to thanks the other contributors,
eijebong, Lasse Aagren, Frédéric Meynadier, Nicolas Braud-Santoni, Lancelot SIX, Luke Marlin,
for their contributed features and fixes.
I also want to thank all users/testers that report bug and suggestions for improvements,
either through constructive remarks on the chatroom or bug reports.