From 4e819b71988b133a2d90ba62eb1c9a063e51e864 Mon Sep 17 00:00:00 2001 From: Sergey Matveev Date: Sun, 12 Mar 2023 19:37:00 +0300 Subject: [PATCH] Short feature list --- doc/arch.texi | 11 ++++++----- doc/index.texi | 52 ++++++++++++++++---------------------------------- doc/usage.texi | 4 +--- doc/why.texi | 39 +++++++++++++++++++++++++++++++++++++ 4 files changed, 62 insertions(+), 44 deletions(-) create mode 100644 doc/why.texi diff --git a/doc/arch.texi b/doc/arch.texi index 6ae56be..efc624b 100644 --- a/doc/arch.texi +++ b/doc/arch.texi @@ -89,11 +89,12 @@ So how all that decisions are composed together? @itemize -@item @command{cmd/start} creates @file{debug} FIFO, prepares -configuration file for @command{tmux} (actually there is just single -path to the command replaced with the real one) and runs it with single -window split on two halves: one just shows debug messages (all raw MM -messages for debugging), another one runs @command{cmd/mmc} itself. +@item @command{cmd/start} creates @file{debug} and @file{users/status} +FIFOs, prepares configuration file for @command{tmux} (actually there is +just single path to the command replaced with the real one) and runs it +with single window split on two three parts: one just shows debug +messages (all raw MM messages), other shows colourized list of +non-offline users, another one runs @command{cmd/mmc} itself. @item @command{cmd/mmc} logs in to the server, fetches a list of all known users and channels I am subscribed to. Then it creates necessary diff --git a/doc/index.texi b/doc/index.texi index b29347d..38e7a66 100644 --- a/doc/index.texi +++ b/doc/index.texi @@ -14,45 +14,25 @@ Copyright @copyright{} 2023 @email{stargrave@@stargrave.org, Sergey Matveev} I wrote it solely for my personal needs, but you may find its simplicity and flexibility useful. -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. - -@url{https://github.com/matterhorn-chat/matterhorn, 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. @url{https://github.com/42wim/matterircd, 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 (@url{https://irssi.org/, 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 @command{readline} or use external editor. -@command{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 -@url{https://mcabber.com/, mcabber}). Writing an ordinary TUI -application with high level library similar to @command{curses} seemed -to be pretty complicated task and reinventing of yet another bicycle. -Initially I was not a fan at all of -@url{https://tools.suckless.org/ii/usage/, 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. -@ref{Architecture, Look} what I came to! +@itemize +@item @url{https://tools.suckless.org/ii/, Suckless} minimalist FIFO and +filesystem-based backend. @url{https://github.com/tmux/tmux/wiki, tmux} +based frontend with colourized output. +@item Ability to store channel's whole message history, keeping +threading meta information in both human and machine friendly format. +@item Ability to send and retrieve files. Multiline messages support. +@item All channels refreshing after the login. +@end itemize + +@command{mmc} is +@url{https://www.gnu.org/philosophy/pragmatic.html, copylefted} +@url{https://www.gnu.org/philosophy/free-sw.html, free software} +licenced under @url{https://www.gnu.org/licenses/agpl-3.0.html, GNU +Affero GPLv3}. @insertcopying +@include why.texi @include arch.texi @include usage.texi @include faq.texi diff --git a/doc/usage.texi b/doc/usage.texi index db261d6..9b26e01 100644 --- a/doc/usage.texi +++ b/doc/usage.texi @@ -7,9 +7,7 @@ compile Go programs in @file{cmd} subdirectory. @example -for c (cmd/rd cmd/mmc cmd/sb cmd/ch-leave) @{ - pushd $c ; go build -ldflags=-s ; popd -@} +for c (cmd/rd cmd/mmc cmd/sb cmd/ch-leave) @{ pushd $c ; go build ; popd @} @end example @item Create and change to the directory where the state will be kept. diff --git a/doc/why.texi b/doc/why.texi new file mode 100644 index 0000000..009edb4 --- /dev/null +++ b/doc/why.texi @@ -0,0 +1,39 @@ +@node Why +@unnumbered 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. + +@url{https://github.com/matterhorn-chat/matterhorn, 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. @url{https://github.com/42wim/matterircd, 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 (@url{https://irssi.org/, 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 @command{readline} or use external editor. +@command{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 +@url{https://mcabber.com/, mcabber}). Writing an ordinary TUI +application with high level library similar to @command{curses} seemed +to be pretty complicated task and reinventing of yet another bicycle. +Initially I was not a fan at all of +@url{https://tools.suckless.org/ii/usage/, 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. +@ref{Architecture, Look} what I came to! -- 2.44.0