Next: , Previous: , Up: mmc  


Why

Mattermost (MM) does not have any sane and convenient client. GUI, mobile versions and browser application requiring you to frequently update your Web-browser are not an option of course.

Matterhorn is the only known console/terminal client for me, but until there will be any official instructions how to bootstrap Haskell compiler, I can not even try it. matterircd was the only possibility to use that platform (that is forced to be used by my employer) that acts like an ordinary IRC-server bridged with MM.

But IRC-client (irssi in my case) can not send long and multiline messages, because of IRC protocol limitations. And because of frequent cyrillic alphabet usage, that takes twice as long bytes per character, messages are relatively short and are often split on single word boundary. Also it has neither vi-editing capabilities, nor simple way to use/emulate readline or use external editor. matterircd converted attached files to URLs that can be used with supplementary utility to download them from the server with proper authorization.

Fortunately MM is written on Go and has convenient simple library to deal with its API. So I tried to write my own console implementation from the scratch without those IRC-limitations. I thought about bridging to XMPP protocol, that won’t have any noticeable limitations, even containing file transfer possibility, but denied the idea as yet another level of complication. Moreover I was not sure that I was satisfied with any known XMPP-client (although in general I liked mcabber). Writing an ordinary TUI application with high level library similar to curses seemed to be pretty complicated task and reinventing of yet another bicycle. Initially I was not a fan at all of suckless way of chat clients building, where you have bunch of FIFOs per channel you deal with. But more I thought, that idea started to look nicer and nicer. Look what I came to!


Next: Architecture, Previous: mmc, Up: mmc