Every single flok client

Flok is what people use to connect together different live coding tools over the internet. It’s a kind of protocol that lets people jam with each other, even if they’re far apart.

Tools that do this over the flok protocol are called “flok clients”. There are quite a lot of them now. Here’s a list of all of them.

Flok

Don’t be tricked! “Flok, the protocol” is a different thing to “Flok, the client”.

“Flok, the client” is the first-party client, made by munshkr himself, and it’s available at flok.cc. It’s the main flok client so it’s the most normal and also the most well-known and most stable (see recording). It has lots of sensible features.

Vanilla

The “vanilla” client is another first-party client made by munshkr. It’s found within the flok repo, inside the example-vanilla-js folder.

It’s extremely lightweight and simple as it’s intended to be an example that shows you how to build your own flok client. It’s so simple that it doesn’t even make any sound and it doesn’t even show any collaborator cursors and you can’t even add or remove panes. But that’s okay: It serves as a good starting point for adding all those things yourself.

Even with its limitations, we’ve managed to do some jams inside the vanilla client. You just need to keep a different client open in another window so that you can hear and see and configure things.

Nudel

Nudel is a flok client made by pastagang, available at nudel.cc.

It was built on top of the vanilla client and was intended to be a flok client focused on pastagang-style jamming. ie: With many strangers over the internet (see recording).

It was also the first project to be developed in pastagang’s jamming style where every change gets accepted, no matter what it is or who does it. Because of this, nudel has ended up with some rather strange features like its weather system and lack of undo and pasting. I think nudel is best described as an esoteric alternative to the first-party flok client.

Nudel serves as experimentation ground for new features. It supports new live coding languages like Kabelsalat and CSS! It also adds new drumkits to strudel like mot4i’s garden, which is soon getting added for real.

Nudel also adds a ‘standard library’ of various functions like speechda, spagda and hubda, which let you load samples more easily in an environment where pasting is discouraged. To maintain compatibility with other flok clients, nudel sneakily injects its standard library into any client it connects to.

Dotcool

Before nudel existed, pastagang used a different flok client called “dotcool”. It was called “dotcool” because it was available at todepond dot cool and it was mainly just a wrapper for the first party flok client (see recording).

Its main purpose was to take you straight to the pastagang room to let you find other jammers. It also added a ticker tape of mantras to the top of the screen, initially as a way of visually distinguishing itself from the first party client. Over time, the mantras became a bigger part of pastagang lore, but back then it was just a practical thing.

Dotcool aimed to at least partially sandbox the wrapped flok client to protect you against people running harmful things on your computer, but it never really covered the main attack vectors and all flok clients remain highly dangerous places to visit to this day.

Dente

Dente, at dente.cc, is a newer flok client made by pastagang. It’s made even-more-from-scratch than nudel as it’s not even built on top of the vanilla client: It’s built from nothing.

So far, Dente has been built in a different way so that it can be deployed directly as a static website. It doesn’t need any package management or installation or anything like that. You can just download it and serve its files directly. This means it’s a bit simpler, maybe too simple.

Dente also doesn’t use anything like codemirror for its code editors. It’s all made with raw HTML text area elements and things like that. Browser features are used as much as possible, even for things like syntax error messages and that stuff. The result of all of this is that dente is very brutalist and minimal. The other result is that it’s really buggy.

But yes, the brutalism of Dente means that people tend to do a certain kind of visual live coding inside it where they use javascript and CSS to change the appearance of the editor itself (see recording). It kicked off the current wave of CSS live coding that is now happening within nudel. (CSS live coding support was recently added to nudel to make this easier.)

And yes, Dente is also very buggy. Because of this, it has been disconnected from the main pastagang room that nudel and dotcool use.

Twirl

Twirl is an even newer flok client made by pastagang, available at twirl.live.

It was originally a fork of nudel but is now very very very different to nudel. Its main gimmick is that it enforces one pane only. If you connect to any flok room with Twirl, it’ll force that room to contain one strudel pane. For that reason, Twirl uses its own room instead of the main pastagang room.

Twirl is really designed to be used by many many people on their phones, so the default text size is quite large. And yes, it’s really intended to be used as a kind of chaotic performance where everyone in an audience can join in and edit what’s written on the screen (see recording). It tries to be error tolerant so that sounds play even if the written code has errors in, but this doesn’t work that well. There’s also a bad bug where the sound stops every time someone joins.

Mafalda

Mafalda is a nudel-like fork of nudel, made by pastagang. It’s basically nudel but without the weird weather, and also everyone’s name gets forced to being “lwlsn”. It’s intended to be used by “lwlsn²” during sets. It isn’t hosted anywhere. You have to download it and run it locally.

Touch Designer

As time goes on, people are getting more creative with how they use flok. For example, Jame used Touch Designer as a flok client within one of their sets (see photos).

Similarly, people are gradually learning that a flok client doesn’t even need to be web-based. And it doesn’t need to be built around web-based live coding languages. And in actual fact, that’s a more recent step in flok history anyway! There’s no reason you can’t make a flok client that’s built entirely in Haskell or Go or whatever. Well, I mean, there might be more work to do. It’s just: No one’s done it yet.

Diversity of flok clients can only be a good thing. It means that there will be more ways to do live coding together and we’ll have more opportunities to include more people who haven’t tried that out before.

We’re only just scratching the surface of what’s possible when it comes to flok clients. In the pastagang community, there’s no shortage of things to make:

  • Let’s make a client that’s designed to be plugged into the projector at pastagang sets. We can make it run faster and better by sacrificing the ability to edit stuff.
  • Let’s make a client that’s completely optimised to be run on older and slower devices.
  • Let’s make a client that’s intended for beginners that you drag to your laptop during an algorave.
  • Let’s make a client that’s designed for visuals only.
  • Let’s make a client that’s designed for streaming and screen recording.
  • Let’s make a client that’s designed for sending camera feeds to each other.
  • Let’s make a client that’s native (ie: not browser based).
  • Let’s make a client!!!!!!!

Fortunately, flok creator munshkr has started more development work on flok as of this week, with a particular focus on flok clients (see announcement). So it’s never been a better time to get involved! Come and join us on mastodon under the #pastagang hashtag or go and support munshkr’s continued development of flok.

this blog post was written by pastagang. anyone can edit this blog post.