A Slack clone in 5 lines of bash

This page summarizes the projects mentioned and recommended in the original post on news.ycombinator.com

Our great sponsors
  • WorkOS - The modern identity platform for B2B SaaS
  • InfluxDB - Power Real-Time Data Analytics at Scale
  • SaaSHub - Software Alternatives and Reviews
  • Mattermost

    Mattermost is an open source platform for secure collaboration across the entire software development lifecycle..

  • FWIW, most of the TypeScript lines of code are in the E2E tests[0] and the webapp dir [1], which, as the name suggests, contains "the client code for the Mattermost web app". So we should really only be counting lines of Go code.

    [0] https://github.com/mattermost/mattermost/tree/master/e2e-tes...

    [1] https://github.com/mattermost/mattermost/tree/master/webapp

  • john-carmack-plan-archive

    Collection of John Carmack’s .plan files

  • there are a bunch of features in slack beyond the core chat stuff, like:

    1. being connected to multiple communities and switching between them instantly

    this can be of course simply replaced by connecting to different servers in a tabbed terminal and use the terminal's built-in cmd-1/2/... shortcut, which happens to be the same as in slack.

    2. meta data about others, like their timezone or how to pronounce their name is quite important for distributed team work

    this can be approximated by a world readable file on the chat server in every user's home, like .plan or motd files (https://github.com/ESWAT/john-carmack-plan-archive)

    3. automatic idleness detection

    im actually not sure how reliable is this even in slack, but in general, it can be useful, but im not sure how to solve it elegantly, when the chat runs remotely...

    maybe we should just spawn a loop at the background, which gathers idleness status from the OS and uploads it when it changes, into world readable files and the remote clients can just check those file whenever they want.

    4. extra status indication with automatic expiry, eg when someone is away from the keyboard, coz they are having lunch

    we do use this feature often and it's a really helpful regarding when can we expect a response from someone.

    again, quite simple to model this as a plain text file and we can even use emojis, to have a very similar effect to setting " lunch" on slack. ppl would need to know what's the emoji selector shortcut though... like cmd-ctrl-space on macos.

    5. text search across all channels/rooms

    assuming the chat is being logged into files, then a recursive (rip)grep could work to some extent, but then from the search results one might want to get back to the context of the result too.

    6. threads

    this complicates implementation a lot more, but we found it an obvious improvement over the single threaded IRC model of communication

    7. having threads open on the side, so ppl can track 2 streams of comms at once at least

    it would require starting the chat app multiple times and do some window management to see them side-by-side

    now obviously all this can be done a lot simpler, but those implementations typically always lack somehow. not sure why is that...

    see https://cancel.fm/ripcord/ or http://www.altme.com/what.html

    the REBOL 3 programming language even had a quite full featured, text-mode chat built in:

  • WorkOS

    The modern identity platform for B2B SaaS. The APIs are flexible and easy-to-use, supporting authentication, user identity, and complex enterprise features like SSO and SCIM provisioning.

    WorkOS logo
  • openai-kiss

    Simple shell scripts to access OpenAI API

  • While we are at bloated things reimplemented in a few lines of shell: https://github.com/mlang/openai-kiss is my CLI client for ChatGPT. No Python, just curl and jq.

  • suc

  • I use a C wrapper that calls the shell script. Ugly, and I need to harden the script a bit more, but it works :)

    https://gitlab.com/edouardklein/suc/-/blob/master/suc_wrappe...

  • jj

    An evolution of the suckless ii(1) file-based IRC client (by aaronNGi)

  • InfluxDB

    Power Real-Time Data Analytics at Scale. Get real-time insights from all types of time series data with InfluxDB. Ingest, query, and analyze billions of data points in real-time with unbounded cardinality.

    InfluxDB logo
NOTE: The number of mentions on this list indicates mentions on common posts plus user suggested alternatives. Hence, a higher number means a more popular project.

Suggest a related project

Related posts