]> Sergey Matveev's repositories - mmc.git/blob - doc/why.texi
internal package
[mmc.git] / doc / why.texi
1 @node Why
2 @unnumbered Why
3
4 Mattermost (MM) does not have any sane and convenient client. GUI,
5 mobile versions and browser application requiring you to frequently
6 update your Web-browser are not an option of course.
7
8 @url{https://github.com/matterhorn-chat/matterhorn, Matterhorn} is the
9 only known console/terminal client for me, but until there will be any
10 official instructions how to bootstrap Haskell compiler, I can not even
11 try it. @url{https://github.com/42wim/matterircd, matterircd} was the
12 only possibility to use that platform (that is forced to be used by my
13 employer) that acts like an ordinary IRC-server bridged with MM.
14
15 But IRC-client (@url{https://irssi.org/, irssi} in my case) can not send
16 long and multiline messages, because of IRC protocol limitations. And
17 because of frequent cyrillic alphabet usage, that takes twice as long
18 bytes per character, messages are relatively short and are often split
19 on single word boundary. Also it has neither vi-editing capabilities,
20 nor simple way to use/emulate @command{readline} or use external editor.
21 @command{matterircd} converted attached files to URLs that can be used
22 with supplementary utility to download them from the server with proper
23 authorization.
24
25 Fortunately MM is written on Go and has convenient simple library to
26 deal with its API. So I tried to write my own console implementation
27 from the scratch without those IRC-limitations. I thought about bridging
28 to XMPP protocol, that won't have any noticeable limitations, even
29 containing file transfer possibility, but denied the idea as yet another
30 level of complication. Moreover I was not sure that I was satisfied with
31 any known XMPP-client (although in general I liked
32 @url{https://mcabber.com/, mcabber}). Writing an ordinary TUI
33 application with high level library similar to @command{curses} seemed
34 to be pretty complicated task and reinventing of yet another bicycle.
35 Initially I was not a fan at all of
36 @url{https://tools.suckless.org/ii/usage/, suckless} way of chat clients
37 building, where you have bunch of FIFOs per channel you deal with. But
38 more I thought, that idea started to look nicer and nicer.
39 @ref{Architecture, Look} what I came to!