← home

An Interview With @cblgh

cblgh is an independent researcher and programmer based in Sweden. website: cblgh.org, mastodon: @cblgh@merveilles.town.

Table Of Contents




max: I hear a fair amount of people talk about software governance, but I somehow feel like I haven't had first-hand experience to see when it goes wrong.

Have you ever had an experience where you were using something or contributing to something, and then it went in a direction that you didn't want or was like counter to the aims of some group of users or contributors?

cblgh: Yeah I've had some — I wouldn't put it so harshly, but in some senses I was making a lot of Dat stuff, using this kind of foundational thing called hypercore and append-only logs; that's what Dat was all built around.

So there was a very vibrant community of people — artists, software engineers, interested onlookers — all making stuff using Hypercore and Dat and Beaker Browser. And that project kind of took a turn away from the community in some senses, where the lead developer—who's written basically all of the foundational structure—decided to take a different path, away from making it community managed to instead being more managed by, or making more explicit, this foundational structure. Hypercore is managed by the devs, and it is good that it became very clear because people were becoming confused on decisions and stuff like that.

But you know, Beaker browser is no longer working, right? And all of the things that people built using Beaker Browser are also in a sense inaccessible. And that's one example of where that kind of governance process did not really go in the way of the community, but rather the way of the devs.

So the project was rebranded from Dat to Hypercore Protocol. And then more recently, its been rebranded to the holepunch platform. Which has become VC funded in a way, but really it's more like a cryptocurrency funded thing; there's big Bitcoin backing in the company. It's very much taken a different path than I think a lot of people would have wanted.

max: Thanks for that story. That brought up a bunch of questions for me. One is what is success or failure for governance or sustainability of an open source project?

I have a first impulse, which is like, if it doesn't last forever, it's a failure. But what are the really lasting open source projects we can look to? Are there even any? is it Linux or something else?

And then I had a second impulse, which was like, that's a little silly — it's not really like things need to last forever to be worthwhile. There's certainly projects which were experimental and valuable.

Maybe Beaker Browser might be one of those where it inspired a lot of people and maybe influenced the discourse and future projects that are going to be made.

And sure, it's a bummer that some of the things people made on Beaker are going to be unmaintained or abandoned, but it would also seem extreme to say this project was a failure.

cblgh: for sure, it all depends on how you are evaluating it. One thing Beaker Browser could have done instead of labeling the project defunct is, at an earlier stage, they could have maybe tried to find someone in the community that was excited to receive the stewardship and take it in a different direction.

max: There could have been a more active engagement with that instead of just saying "this is over".

cblgh: But it's also very difficult and intertwined with burning out. I'm not sure Paul burnt out on it, but I certainly think he worked very, very hard for very long. And now it's defunct. It's very hard to do a handoff when you're already struggling to keep your head above water in a way, you know?

max: Yeah, that might not be the most energizing part of the project.

cblgh: so in some senses, if it's a success, then when you realize it's a success, you have to start preparing "the will" for the project while you have the energy to do that.

max: especially with a project that big, I would imagine there's someone who would be interested, even if it was just like a college student, or someone who wants to develop their skills or resume or something, maybe being able to take on the responsibility for such a big project is kind of an appealing concept in some ways.

cblgh: Yeah, and one of the benefits of this software is there's not this big expensive cloud infrastructure you need to keep running.

max: That's true. So it's not like it turns off one day. It just needs someone in their room with an internet connection still working on it.

cblgh: You could basically have had Beaker Browser as it was and just keep it on long-term support where people were just using the things that were already there, and maybe wishing for better tools. But if it could have just been kept alive, then I think that would have been a vibrant small corner instead of having to pursue the path of existing alongside Mozilla or Chromium.

max: The other project I've been thinking about on this topic is the Fediverse because there's now this interest from Medium and even Meta to use ActivityPub. And we'll see what happens in the next years. But to me, it seems like one possible outcome is that it actually gets a lot of adoption. And I've even heard the term "the corpoverse" thrown around.

And I was thinking, what would that mean? This is all a bit speculative, because it could also not happen. But I was like, wow, that would be interesting if this kind of slow burning project of anarchists and volunteers eventually achieves such large-scale influence, even if the original people setting up servers were kind of more at this experimental scale. Maybe that's how things sometimes happen - that an experiment ends up having a big influence not because the people doing the experiment try to make it have a big influence but because it eventually influences large-scale actors to do something different.

cblgh: Yeah, that's one of the rare occasions where scrappy people can kind of choose the fork in the future. It also brings to mind other examples — I mean this has been going on for as long as there have been Bohemians and artists right? This is like gentrification by another name, "Oh this was successful, this was a cool place to be. I guess we gotta exist there to be cool and extract the value."

max: Yea its an interesting analogy. I guess the other question though is because some people are critical of the corpoverse, asking is it gonna even have any of the good parts of the old fediverse, and my optimistic vision of it is that it does maintain the good parts. maybe it's not as pure as the original, the non-corpo fediverse, but it wouldn't be just like gentrification because with gentrification it sometimes feels like here's a place where some creative interesting things were happening and then once it reaches the commercialized stage it actually doesn't really have anything particularly in common with what it used to be like and many of the people who used to live there are forced to leave, it's just an extractive process that happens on top of something else. And also going back to how we started this conversation, "the internet" just popped into my head as a successful open source project. I think this might be what's actually getting me to research this more, because I feel like the internet is weirdly one that worked. Obviously there's lots of shit things that have been done on top of the internet or with the internet, but the core protocols themselves seem like they were somehow a fairly positive example of how open source can go.

cblgh: Yeah, I think so. Like sometimes you have these like runoff successes that the rest of the commercial world just has to cope with. Like, I'm sure big companies would have rather had, you know, like what if we had Facebook-internet, where I just pay a monthly subscription to access the zucknet right?

max: Totally yeah. If a corporation had done that from beginning it could have been like that. There could be an advertisement embedded into every packet.

cblgh: Yeah. You're doing like packet inspection and suddenly it's just like, "have you heard about this new movie?"

max: Literally, it could be like that but it's not. Wow, that just made me excited to have that clarity. So yeah, I would be hopeful that with mastodon or whatever protocols, even if they were to eventually get success, could have that same capacity as the current internet where it would be like, of course, these corporations would love to have their advertisements embedded in every little stream but it's just not the way the protocol works. You just can't really do that.

cblgh: Yeah, I can imagine that. And then in some ways, you know, from an ecosystem perspective (and this is just something I've been learning in the last year) you have these, and I'm not sure what they're called, I think forerunner frontier species that enter a degraded ecosystem, and they're the ones that are hardy enough to grow there. And when they grow, they kind of create the circumstances for other less hardy things to grow, which will eventually actually supplant these frontier species because it grows longer and stronger and starts shading them out. And I think that really happens a lot with technologies that kind of tangent this social realm as well where you have these hardy, and I don't really like the term frontier because it has a lot of baggage, but yeah, like these hardy initiative takers or whatever that are willing to come into a new space and experiment.

And typically it's a lot of marginalized communities that are the ones who will first embrace something new. And they kind of work it out, you know, figuring out what works, what doesn't work, and they start making it cool. But when it becomes more popular and more commercialized, they might not feel comfortable there anymore. So it's an interesting dynamic and I'm not necessarily being very doomerism about Fediverse. I'm more observing dynamics. Just from how the technology works I would think that you can still have a very alternative subset of the Fediverse that de-federates from everything except their friends.

max: Yeah, I would optimistically believe so as well.

cblgh: But I think we would still have a different vibe and very radical or interesting minded people probably wouldn't even give it a chance if it was as commonly accepted as Facebook or whatever. I don't know. I think it's an interesting dynamic with these groups that come in to a new space and experiment and then are eventually in some senses crowded out.

max: Yeah, I like your comparison with the ecosystem waves of succession. Intuitively I feel like I don't really know how all this stuff works. I feel almost like my stomach dropping sometimes when I think about it, just feeling like its a mystery, but it's at least a nice possible model. I'm definitely not going to say that's not how it works. And it's a nice alternative that goes beyond, oh, you just do small things that don't matter or big things that make a difference — it provides a different possible paradigm.

Because yeah, I guess when I felt that way when I was reading about the internet too, that it was kind of exhausting to feel like at this point with the tier one ISPs, they're so big that if you really wanted to do anything involving that, you would have to be so knee-deep in industrial workings that I'm just like, I don't...

cblgh: Yeah, it's impossible, right? I'm never going to do that. I don't have the wherewithal to become a T1 provider. That's just like in stories of revenge, you know, you aim to become the king, so you can bring down the empire from within. Like nobody does that in real life.

max: Yeah, I don't have the energy for that.

cblgh: But I mean, in that case, you know, that realization opens up, "well I don't have the energy for that. Obviously. What can we do instead?" Like maybe we just do some weird radio shit, you know, where we buy a bunch of radios and we start sending packets over radios or something. It's a much smaller scale.

max: Yeah, I think this is why a lot of anarchist logics and small scale projects appealed to me was because they were stuff you could do and you could start doing now and not necessarily have to spend a lifetime learning legal codes.

cblgh: Yeah, and once you get the kind of immediacy from the feedback loop, it's really self-feeding as well like, "Oh, I got this thing working and I can show it to someone and *they* can become excited and then we can do it together." Instead of, you know, having to study something for like two years before you can actually see something on the screen or whatever.

max: That's true. Getting some real feedback. Also one of the joys and addictions of programming.



max: So the projects I was thinking about talking about were cerca and lieu But was there anything else that you thought would be relevant to these topics?

cblgh: Is this the term that you want to use, solidarity infrastructure? Lieu and Cerca are definitely two very clear projects in that respect. How I got started into this way of doing things might be interesting, I'm not sure.

max: Yeah, that sounds great.

cblgh: It all goes back to 10, 12 years ago. Basically, I started my HTML, JavaScript, I mean, journey or whatever, like learning that kind of stuff through a project I made with two friends called Piratradio, which is Swedish for pirate radio, which is kind of like a tongue-in-cheek kind of name. And basically it revolved around making these collaborative playlists. So the idea was, I listened to music on YouTube and I listened to music on Soundcloud and on Bandcamp. And I thought it was kind of silly or annoying that I couldn't just make a playlist with music from all of these things and then send to someone, or that we could listen to it together.

So that's what Piratradio was. It was basically a database that had lists of links and then a front-end that kind of put these links together. And we had some special kind of resolving and embedding going on that put things on the page. So when we render the list of all these different links, we would get the song title. And when you click on a thing, we'd actually start playing on the page. So that's kind of how I got into all of this stuff. From there I found different kinds of other projects.

max: What type of things did you discover, if you remember from working on that?

cblgh: Very many things - one thing was collaborating with other people and how to do that in a way that works best for the group, and for me. One thing that I reflected on, is that I really like this way of collaborating with people where you don't step on each other's toes too much. So like I have one area that I'm focusing on and then another person has another area. And our collaboration kind of consists of us working on these two different things and then gluing those things together, right?

max: Totally.

cblgh: So that's one thing. But the other thing was we kind of thought it was a bit scary to have this database of links, even if it was only links and we didn't download anything. We started looking for how we could do this in a decentralized way-which is how I started looking into IPFS that then eventually found Scuttlebutt. Yeah, so then I started making stuff using Dat and I made a thing called Datradio, which was very inspired by Piratradio. It was kind of doing the same thing, but using dat archives. So someone could work in the Beaker Browser using its API.

So in Beaker you could view the app itself and then you fork it. And now you have the entire app in your browser. And then you can add stuff into that app and share links so that other people can listen to that playlsit.

max: And through that, remove yourself from this liability of hosting these links. if everyone was just forking their own and having them on their machine. It's really amazing how much creativity and innovation copyright law has fueled out of teenage angst towards the annoyance that these people don't want you to download stuff for free.

cblgh: Yeah, because it's scary — like people just want to make something fun, but then when they've they've made something fun, they're kind of getting anxious like, fuck, are we gonna get wrecked for this? Like, I'm not a lawyer, I don't know literally everything about what's legal or not.

max: I feel you. And they did wreck some people back in the day — that was a specific approach/strategy of anti pirating legal stuff was to come down really hard on a few individuals who were not really doing anything other than downloading a bunch of stuff.

cblgh: Yeah, and actually with that Piratradio thing, we actually did go to a lawyer and pay him a small amount to review if were we doing anything bad and his take was no, we're not doing anything bad, but we should add like a small terms of service basically where people just agree "this is my responsibility" or something. The app's defunct now for other reasons.

max: That's cool to hear — everyone's got an interesting Scuttlebutt origin story. Do you want to talk more about Cerca and Lieu, which I'm not pronouncing correctly.

cblgh: Yeah, sure. I can do maybe a brief description.

I can start with Lieu because that was the first thing I made of those two. It's described as a webring search engine, or a communal search engine. So what it does is basically instead of searching and crawling *the entire internet*, which most search engines do today, it instead searches only a pre-specified list of domains, which was natural for the context that I was coming from, which was a webring called the Merveilles webring that I'm a part of. We have 200-odd sites in there.

There are many cool sites, but it's kind of daunting. You know, when you have this list of like 200 sites — which one do I start with? I'm not really sure what's in here. And like, even if I start with one, I'll just click in and then maybe it's not really obvious where to go from clicking in.

So I was noticing this kind of fatigue setting in, or whatever, where I'll click a random site, and I couldn't find anything interesting. Then I'll click another one. Maybe I'll do that two or three times and then I'm kind of running into boredom. So I wanted to surface all of the really cool stuff that people in this webring were doing — so that's where Lieu came from. It crawls all of those sites and indexes different kinds of search terms that it's found either in titles or in the body of the text, that kind of stuff.

max: I remember you writing something, or I don't know if you just said this or wrote this, but that the limitation of Lieu was actually better for certain types of searching. The example with music was really nice. You were like, "If I Google search 'music', this is not going to give me good music." There's actually certain things that Lieu is better at searching for because of its limitations or its focus.

cblgh: Yeah, exactly because I know that this is a particular kind of scene and I kind of have an intuition for what's there. For the Lieu instance I've deployed with the Merveilles Webring, I kind of know that it's kind of design-y focus with a lot of weird niche topics. So a lot of the things that are linked in there will suit the sensibilities that I understand that this collective has. So in that case, I can actually just type in »music» and I'll get lists of different kinds of things — maybe someone listing their favorite songs — and it won't be just like, if I search the same thing in DuckDuckGo or Google, where I'll get basically very random ad-fueled search results.

max: It also makes me think something cool about this is its sort of a form of retrospective organizing, where instead of someone saying, "we have a community, we're gonna make a music channel," which I guess leads to your next project, Cerca, but instead, this is like, everyone just do your own thing, and then let's find all the times someone mentioned music.

cblgh: Yeah, It's taking a different kind of approach to that, for sure. So that's Lieu. And it started out as just being for the Merveilles webring. But then later I made it easily deployable for anyone. It's written in Go and you can download a binary. Basically, if you have a small list of websites you want to make searchable, you could download Lieu. You write those small lists, I mean the list of websites in the file, and then you start crawling with Lieu. And you just spin it up and start using it for search.

So that could work if you have a group of friends and you want to make your collective output searchable. That could be one thing. But you could also just collect some cool sites that you want to be able to search as a kind of a group. You could do that as well.

And then Cerca is the other project you mentioned.

That's kind of come from how I grew up on the internet in a way — I grew up in internet forums of many different kinds. And I was really missing that kind of, you know, mode of communication that's slower than real time social media or IRC and more persistent as well. I wasn't really running into that in a lot of places. So it was on my mind for a long time, but I was waiting for a good time to make a forum. There are existing software but there aren't that many modern ones—I've been keeping track. The only one that I've really seen is Discourse.

And I think it's great that Discourse has kind of brought the forum sensibilities into the modern web, so to speak. But deploying it for a community is super rough. You have to have a pretty beefy machine to make it work. And honestly, I never really liked the aesthetics of Discourse. And I wanted to make something that was a bit more like, I don't know, home-y or customizable or just like, less clinically sterile, you know?

max: Yeah, very sterile, very gamified, quantitative vibe from discourse forums.

cblgh: Yeah, it's like "I have to level up like: oh, make five posts." I don't know. It kind of struck me as, great that it exists, but I really didn't want to launch it myself.

So before making Cerca I was just having fun and designing a forum software interface that I would want. And the thing I designed didn't end up in Cerca at all, but it kind of influenced the things I wanted in Cerca. And how I ended up making it was, basically, in Merveilles we have a mastodon instance: merveilles.town. On the instance people started getting excited about forums. And I asked "well, if I make one, would people want to join it?" And people were pretty excited. I had some time, so I kind of banged it out in a couple of weeks.

max: I remember thinking another thing I thought was cool about Cerca was the way that you kind of made it in public and immediately had contributors as soon as you started making it.

And just the dynamic of making a piece of software for a community with the community, maybe you want to speak more about that for better or for worse?

cblgh: Yeah, it's really nice to be part of a community like that, because it wasn't just me creating something for me and then hoping someone would adopt it. It was like, as you say, I was creating it and then people were joining in and were excited about it and adding new things that I didn't even think of or I didn't have time to do. And that was really energizing in a way, to be creating software in this kind of community context, as opposed to creating something and hoping that it will be used. Because that kind of leads to a lot of overgeneralization, which ultimately actually hinders usage because it's too general, it's not specific enough. It just becomes this really big unyielding beast because you don't know what to anticipate or not. So you have to anticipate everything.

max: Do everything.

cblgh: Yeah. Whereas for cerca, I was literally in the beginning making it for the Merveilles use case, which has very specific software sensibilities in some sense, which was fun to experiment with. Like a lot of people there don't like client-side JavaScript. So I was trying to make everything in a way where there would be no requirements for client-side JavaScript. And it still doesn't have any. Which meant going back to, how do you actually make a web form? How do you handle that stuff?

max: Some more traditional programming craft.

cblgh: Yeah, and in some sense, that's just really working with the grain of what you get in the web platform, because forms are one of the OG elements of the HTML standard. And they're really easy to work with once you know what you're doing.

max: Yeah, I guess that also makes me feel like something about that project then is the code itself It's part of what's interesting about it. It feels like it's a very three-dimensional thing. Like, there's the way you use it. There's the way it was made. And there's the choice of technologies used to make it. And they're kind of like all a part of what makes it creative and interesting. And it seems like you found some joy in all the different parts was my impression.

cblgh: Yeah, and I mean, that's kind of one of my personal strategies in general — basically, my entire mode of operation is having fun while working on projects. And the reason behind that is it's kind of a burnout mitigation strategy. Because if you're having fun and you're being energized by projects, then that's actively decreasing a burnout counter.

max: Totally.

cblgh: Whereas if you feel like you have the entire burden of the world on you and just doing this to be a hero or something, that's a very depleting thing. You can only do it for so long. Whereas having fun, like on Cerca or whatever, making Lieu, that's giving more energy to work on that or to work on other things.

max: Yeah, it's amazing how many people I know get burned out by whatever work they're doing. It's almost prolific.

cblgh: Yeah, I don't know what it's about. People feel like they alone have to shoulder the burdens of a community or something, which is wrong. Like if a community is letting something burn down to the ground, then sometimes that's what needs to happen, you know? It's not your single responsibility to take care of that, because there's an entire community. And if nobody's taking care of it, then yeah, that's just a natural result. We can rebuild something new afterwards.

max: Speaking of taking care, you wanna talk about maintenance a little bit? How is it going with Cerca and who is taking care and what's it like with people using it?

cblgh: Yeah, sure. So one of the strategies of it was really making something that was low maintenance. I wanted to minimize external dependencies and external infrastructure. So that once you've deployed it, it just keeps on running and you don't have to start debugging mailgun or something. And in that sense, it's been a resounding success. It's just been running and people have been using it off and on.

It has its kind of high tides and low tides. I've seen it start to be used, people rediscovering the forum during things like Inktober where there was a thread where three or four or five people were posting every day and just cheering each other on, and then after that it was kind of quiet for a while and now it's kind of resurging a little bit again.

max: I'm curious what will happen over time too, 'cause I also have this dream of a slower form, communication place, and somehow forums do end up doing that sometimes. Like there was this thread I started on the Activity Pub forum discourse two years ago, and it basically gets consistent replies every few months for two years. It's a really interesting timescale. It's like, if you were to read it all in a row, you'd be like, wow, this is a really interesting conversation with like 20 people. But it happens at an absolute snail pace.

cblgh: Yeah, it's fun to be on the receiving end — you get to literally re-live that experience. It's taking so long in this conversation, which is nice, but an observer just thinks like, wow, this really came together quickly.

max: Yeah, they look at it all at once. They have no idea. It's like a weird collapsing of time.

cblgh: Yeah and that would never happen with something like a Twitter or a Mastodon, right? Because it's very much fire and forget. I'll have missed if you posted like yesterday because I wasn't online much yesterday. And then that will probably never be resurfaced again for me, which is totally the opposite of forums.

With its maintenance I've been taking a kind of very slow approach and working on it when I felt like it or when something critical came up. One thing I think is really difficult is well-intentioned drive-by contributions. There's this kind of balance you have to straddle between what you want to encourage people to do and make contributions, but at the same time a specific contribution might actually be the wrong direction for the piece of software, if you're the one who has to maintain it in perpetuity. That's a really really difficult thing I think with with maintenance, actually saying no to certain contributions.

And I think I've been good at it in some cases and in other cases, I have some lingering PRs where I'm just like, this is not the right thing, but I also feel bad saying no to someone. So it kind of is just, I don't know, kind of ghosting PRs. (laughing) I don't want to say, "I don't want this." But I also don't want to press merge.

max: Ghosting PRs, what a social dilemma of our times.

cblgh: I know, right?

max: I feel you. I've in the past months received a lot of gifts that I didn't want while I've been in India. It's been interesting. Most of them I've actually just say yes to at this point because I appreciate the intention and I feel like there's some mutually nourishing thing that happens when someone gives me some food, even if it's something that I don't actually want to eat. But for me, it's different eating some food that I don't really want to eat versus yeah, like I remember someone offered me some clothes that I didn't take because I was like, I don't have space in my pack for this. I have a limit where I'll be like although I like accepting and receiving, I'm not willing to accept, I'm not willing to carry around this thing for the next six months, just to like, be agreeable.

cblgh: Its interesting, this idea of a gift that is an encumbrance versus a gift that's kind of more relation building in a way.

max: Yeah.

cblgh: So if someone gave you food, then you can either toss it away or you can eat it, and that's just like, that's a very transient thing, but clothes or like a painting or something. It won't just go away. You kind of become encumbered by it. Same thing with someone adding a PR and you have to merge it because you feel bad. Then it's there and you have to actually actively work to either throw that piece of code out or throw the painting out.

max: I almost started to feel bad for interviewing you about Cerca as we were talking about it because based on what you said you're doing this for fun it seems almost like counter to its aim to become the focus of such attention

cblgh: No, no, I'm really happy with it and I think about it a lot and I'm very happy every time I see someone make a post, you know, it's like, "oh, wow, this is great. Someone created a thread and I didn't have to do anything."

max: Nice. Well, in that light, then I'm happy to talk about it. I just was thinking how with some software, the default mode is like, everything has to have a reason and it needs to be optimized and the best. And it's interesting that if you're making something more provisional for fun, maybe that's not true, maybe there are decisions one makes that are like, not ideal or something, but like, it's fine because it's not the purpose of it.

cblgh: Well, I think it can be very intentional even with fun stuff. I am actually quite intentional with, for example, cerca and other things I do for fun. Like, if I do decide I'm doing this and I don't really care about the outcome, that's actually an intention, right? It's kind of a way to approach a particular thing.

Every decision I've made with Cerca has been very informed, even if it seems like, oh--it's not using classes because I guess I didn't really care about that. It's like, oh, no, I'm actually doing that because it makes everything so much more composable.

max: Not using CSS classes.

cblgh: Yeah, exactly. I tried to minimize that.

max: Like just doing stuff more inline?

cblgh: Yeah, sometimes inline, but also just like styling the default elements.

max: Is there anything else you feel that you wanted to say about cerca and lieu? or Should we move on to the other stuff?

cblgh: Well, I maybe have a few last thoughts on cerca.

cblgh: Like one thing I really wanted with it was to avoid external infrastructure that I mentioned, like which in my case was email and email registrations and email for "I forgot my password"-functionality, which seems important. So I went with this kind of weird thing that was informed by doing way too much peer-to-peer stuff using public keys and shit.

And I think I might be kind of, I haven't unpacked it yet, but I think it's an interesting thing where I didn't want the email infrastructure, but I *did* want people to be able to reset their passwords. So I kind of invented this thing of "here's a public key and you can use it to kind of reset your password", which was in effect kind of cumbersome for people. I mean, you have to download a separate tool and then you have to remember the second thing, but it kind of gave me permission to not do the default thing. And I think it's an interesting, not really sure what to call it, even like a technique or whatever, like: "okay, people can plausibly restore their passwords. So therefore, I'm freed of this kind of default constraint of having to service this by email."

max: I feel you on the email thing, actually that just reminded me one of my tasks for today is to fix the email sending for the self-hosted outline.

cblgh: Yeah its just like such a thing.

max: an annoying task

cblgh: But where I think I want to go with it actually, and next time I'm gonna have a batch of work working on it, is I'm going to try to use what's called timed one-time passwords, which are basically these codes that you find if you use like a Google Authenticator; that's a standardized technique. And you can actually implement that in something like Cerca. It's decentralized as hell basically.

max: How do you send someone the code if there's no email?

cblgh: I haven't actually implemented yet, so my details on this are very scant. But basically, when they register, they get this code that they put into their Authenticator app. And they probably have an Authenticator app for logging into all kinds of things today. So if they want to reset their password, they could do it using this kind of second proof from the Authenticator app.

max: I got you. So to prove that you're you-- You supply a password from the Authenticator app that is somehow connected to this account, but that only you can produce.

cblgh: Yeah, and you can even go further and you can just say, well, you don't even have to log in with a password if you don't want to, you could just use your Authenticator app.

max: Nice.

cblgh: So that's something I wanna explore. And being able to explore that was only made possible by doing this really cumbersome strange thing that I started with. It's just like a small side note that I think is kind of interesting — if you do tread off the beaten path it opens up other things.

max: It's a small but big choice to not include email as dependency. It takes you off the standard app.

cblgh: But yeah, I think that closes the chapter on cerca for now.



max: do you want to speak about some visions you're having?

cblgh: Do you want to narrow it down? I've got a lot of thoughts.

max: No, I don't feel like narrowing it down. It's whatever is most alive for you.

cblgh: Okay, interesting.

Yeah, so, one thing that's been on my mind for a year at least and that I've been starting to approach people about, is this idea of reusable and composable infrastructural components, in particular for peer-to-peer systems.

So it's like, we have these different projects, right? And this is not necessarily a take that a lot of people agree with, but personally I don't really like interoperability that much because we are underfunded as hell, you know? It's like, so if someone's going to tell me, well, now you need to support SSB in cabal as well, that just doesn't make sense for a lot of reasons because the contexts are different, right? Cabal is very much IRC style, whereas SSB clients today are more forum style. So the general viewing contexts are different.

So where can we collaborate instead of just like, you know, having literally the same protocol? And where I think it makes sense is on the infrastructure level where like, "okay, we have this protocol, you have that protocol, this third group has another protocol, but we all need to reach each other, right? We have this notion of we want to find peers. Like, can we somehow collaborate on that level of things?" Because that's in some sense a permissionless level of collaborating. We don't need to change our protocol just because we're using the same infrastructure.

And it kind of makes it less competitive in some sense, it becomes way more collaborative. So that's kind of what I've been thinking about, like: "okay, how, what parts of the stack, like what exists today that we could use in multiple projects?" And that's kind of an ongoing research project right now for me.

Like I'm exploring this a little bit with the p2panda team, where we're doing small experiments on this kind of old technology called I2P, which is like Tor, but it's way more kind of peer-to-peer oriented, whereas Tor is kind of more client-server in its architecture. We're doing small experiments there to kind of get a feel for it. Like, can we create a website and visit it like over very unconfigured devices? And yes, we could. That was really cool. A person in UK on a mobile network could visit my website thats being hosted on i2p on a computer that was completely unconfigured with regards to firewalls. So that was super cool.

That's kind of exploring that general area of what infrastructure do we have today? What infrastructure could we kind of collectively manage you know, and could collectively use and what could that collaboration, what kind of shapes can that take for example? We could have maybe, if we do find a very good component that's usable in many projects, we could have an open collective for example, to fund all of the engagement for that, where some of it would go for server costs, but also just for stuff like, you know, an hourly wage for everything that's relating to the infrastructure bits.

max: I like this idea, but what are some of the possible functionality for components that come to mind that could be shared between projects? So you said like peer discovery or something?

cblgh: Yeah, so you know, the underlying DHT and peer discovery. It's like, so we have a peer-to-peer system, which means these peers need to find each other somehow and they need to find each other in some way that's resilient across, you know, regular, unconfigured computers. So: are there components that exist that work in multiple programming languages? Which is a big barrier. For example, Hyperswarm today is very much Node.js only. It's been trying to be ported to Rust for a long time, which means it's very difficult to port to different languages. So it's about how can these peers find each other? And then once they've found each other, you just do your application-level concerns.

max: Are there any other composable pieces that come to mind?

cblgh: I mean, for me, it's mainly that because it's the biggest thing.

max: it breaks away from the current paradigm because it's something smaller than most of the current protocols. most of the protocols are usually including more than just that

cblgh: each protocol kind of makes their own decision on that and it would be great if we could find something that works for everyone or for many actors rather than just one.



max: Okay. How about this? Can we talk about the internet for five minutes? Because I'm just curious — so I've heard some people say the internet is decentralized. People talk about how there can be many networks on Scuttlebutt, like an archipelago, many networks, internets and stuff. And it doesn't have to have this global connectivity. But then when I researched it more, I had heard about it but I had never really thought about how there's these like different tiers of Internet Service Providers. And basically, as I understand it, the definition of a Tier 1 Internet Service Provider is that they peer with all other Tier 1 Internet Service Providers for free and that they know the routes to any possible IP address. And so another way of saying that is that tier one ISP by its definition is centralized. There can only be one tier one, if the definition of tier one is "peers with all other tier ones and knows every route".

That was interesting to me. I mean it's not centralized in that there's not one player because there's multiple, but it's central or it's universal maybe. Which also made more sense with like the common way people talk about the internet which is like, are "Are you connected to The internet?" Like using the word "the" instead of "a". Before I was like, is that a misnomer? But then after learning about this, I was like, well, if you mean the tier one internet, then maybe that is correct. It's singular.

cblgh: - Yeah, its interesting. I don't know so much about the actual details there (bird squawks) but there's a lot that goes on outside of like, "Oh yeah, here's my domain. I registered it with, I don't know, GoDaddy" or whatever. Because as you say, we have these like tiers where, DNS is decentralized in that you have different regions that decide over their TLDs. And then you can register like in this kind of semi, basically hierarchical, but decentralized way. But at the end of everything you still have like root certificates that are controlled by like 11 people or something scattered around the world who can like change the root domain name things. Yeah like anyone could start an isp but I don't really know how you become a t1 kind of provider.

max: Yeah that's what I was getting at. that's the way to say it. anyone could start a tier 3 provider, that part you can definitely get going, but if you want to become a tier 1 provider you kind of have to be like a really big organization with a ton of money. But then on the positive side I get the feeling that maybe because of the way it's designed it's still like decentralizing of power because it doesn't really feel like the tier 1 providers have much power — like they can't really do preferred traffic. They're not able to like insert advertisements into the stuff. So it's somehow there's something about it that's working even though it's kind of centralized. This is all pretty half-baked.

cblgh: Who are some of the organizations that are tier one providers?

max: There's a bunch of them but like AT&T, level three, there's one in India called Tata Communication. So yeah, it doesn't feel like a a cabal to use your word. It just feels like a weird conglomerate of these giant companies that somehow make some money from doing it, but it also seems competitive enough that it's not like one monopoly where they're super hiking the price to profit off of everyone using the internet.

cblgh: It's mostly like they need to cooperate because otherwise I would have to sign up with AT&T internet and I wouldn't be able to access like I don't know whatever this Swedish T1 provider would be right. So for them it's like well, we'll provide the best service if we just peer with each other for free and then we can together make money off of the internet users

max: that seems like a good five minutes. Let's switch to talking about cabal.



max: let's talk about Cabal. What's the state of cabal and what are your plans for it right now?

cblgh: The state of Cabal, yeah. So Cabal's a peer-to-peer group chat I kind of took the initiative on in 2018 April. So it's soon to be five years. Basically just started working on it with friends that I got to know through cabal. So we've been working on it since then. So: it's a community project, no company behind it, similar in concepts to like Discord, but what if you weren't owned by VCs and you didn't have to run a server, that kind of stuff. Peer to peer and it works offline.

What's been going on recently is last year I was kind of spending a lot of my time writing grants for it, like I wrote two grants and have been lucky enough to stumble into a third one. The first one I wrote didn't actually pan out. I submitted but we didn't get anything from it and then the second one actually went through. Which is kind of what I'm going to make a living off of this year. So it's me and Kira from the project who are working on it this year for this grant. And I can go into what that is.

And the third one was, I was lucky enough to get in touch with a friend who's working a lot in the design space. And through her, it turned out she had, this friend is Eileen, and it turned out she had an independent budget to help projects with. And that evolved into designing a new kind of web presence for cabal, which is wrapping up this week. And then we'll make a new website based on the designs we've gotten. So a lot of things that were kind of seeded last year are coming to fruition this year, which is really exciting.

max: that's cool. Speaking of the sustainability of open source and different pathways for projects, It's been cool for me getting to see the slow burn and multiple phases of Cabal over the years. That's cool that it's getting a new wave.

cblgh: Yeah, for sure. And one of the things that has kept it alive is really this perspective of this is a no burnout zone, which is one of our explicitly stated values and just only working on it when it's fun and doing things for fun.

max: And also the fact it's no servers, I think was a beautiful point about Beaker, but also cabal, like you don't have operating costs as far as I know. So that's pretty cool. You don't really operate by startup logic.

cblgh: Exactly, exactly. Like each person that comes online in a cabal is adding more resources and connectivity to it.

cblgh: so what we're doing for Cabal this year is we're actually rebuilding it from the ground up. So Cabal today, as it works when we're chatting on any cabal is building on top of this hypercore dat stack where we have the hypercore append-only log and we have the hyperswarm DHT. So each person in the cabal has this append-only log that they write messages to. And then we find other peers, other people, using this hyperswarm network, the hyperswarm DHT. And we create a chat, like—I'm saying something, you're saying something, the third person is saying something—that view, by taking all of these logs, and then mixing them together and interlacing their different entries based on when they were written. The problem is we don't really control that tech stack at all. We have a lot of experience of what works and what kind of doesn't work as we would want it to work.

And one of those is the question of delete. Hypercore is an append only log. And in the name you hear it's something you can only add to, you can't remove from it. And it's nice for some reasons, it makes synchronization across the network a lot easier because if you know that you have this list of things that is only ever added to, then you can have an efficient sync by saying, "oh, hey, Max, I know that you have, from where I'm sitting, your latest message was number 59. Give me anything that's newer than 59." That's a very easy synchronization protocol. But in something that's append-only you can't delete. So if you accidentally post your credit card number because you think you're in a web form or accidentally leak something there, you can't retract it. And that's a really, really, really heavy concern for something like a group chat, especially where someone might come in and just like post something horrible and now you're stuck with that.

max: Are you trying to add delete in some patchwork fashion or just accepting that as a limitation of the software?

cblgh: Yeah, so we're actually saying, "Well, how about we make something custom from the ground up?" And we're doing that with what we're calling cable, a wire protocol, which has kind of been collaboratively specced out among us Cabal devs and community. And what the grant is about is kind of officializing that and really implementing it in a way where we have a spec that's very clear for anyone who's outside of the dev team to be able to read and then implement an independent version. So that means that Cabal, instead of just living in nodejs land, will be able to be implemented in Rust or Ruby or Python or Go.

Because what we're doing is we're specing the individual bytes that each message is composed of. And instead of having this idea of an append-only log, we're kind of going this alternate route of saying, Well, we have this identity idea of public keys and private keys, where if I write a message, then I can sign that message with my private key. And as long as you get that message from anywhere, you don't even have to get directly from me, and if you know what my public key is, then you can verify the authenticity of that message by just checking the signature. So it kind of prevents fraudulent messages in a way where someone could not say, send a message that seems like it comes from me without that being able to be checked.And we're using that concept, but without having to put it into this linear, increase-only fashion.

Instead we have this idea of kind of a grab bag of messages. So since we don't have this strict append only concept anymore, we just have a bag of messages that makes delete very easy. Because if you want to delete something, you can just like basically, in one sense, remove it from your local database. And you can also publish your delete message. So when other people request like "what messages have you written", among those that you send as a response is "actually this thing that I wrote in the past, I've deleted that. Please delete that as well and save this delete message in case someone else requests new messages from you."

max: That's great. What does that mean that you are, so it's not depending on hypercore and hyperswarm, you're like, you've made a new foundational protocol.

cblgh: yeah, it's a new protocol for sure.

max: Cable is the name of the new protocol or cable is the whole thing, including the way that Cabal uses it?

cblgh: Yeah, so currently Cable is just the name of, what we're calling the wire protocol, like the specification of the bytes. And then we'll see where we go from there. But that's what we're doing as part of the grants. So Kira is right now finishing up the first draft of the specification. And then we're gonna have an RFC process where we invite people to come and give their feedback and read through the spec and say "well, this thing you should maybe do differently. This thing was very nicely written." and stuff like that. And in parallel to that, I'm basically implementing both the low level stuff as well as the kind of application level interfaces.

max: That's awesome. I'm really glad we got a chance to talk about this. I thought you were doing something totally different.

cblgh: What did you think?

max: I don't know. I think I thought you were continuing with Cabal as it was, but making mobile clients and some other stuff. I just somehow missed the update that there was this new protocol.

cblgh: Yeah, for sure. I can maybe link to the--I wrote a text update when we announced the grant and stuff from our open-collective Yeah, I'll link that for sure. https://opencollective.com/cabal-club/updates/cabal-2022-in-review-two-grants-and-a-new-wire-protocol-later

max: That's really exciting to me.

I was having a somewhat funny feeling just thinking, you know, it's a famous essay, the one that's like critical of P2P because it's bad on privacy written by the person from the New Design Congress whose name I'm forgetting.

cblgh: Yeah, Cade Diehm.

max: Yeah, yeah. Somehow I was thinking about that essay again. You know what it was is because of the growing popularity of the Fediverse, it almost was feeling like an even more real possibility that there will be this infrastructural switch in the next 5, 10 years where way more stuff is not in the corporate cloud and is in these more localized clouds and home servers. And I was just feeling like, okay, there's going to be some good parts about that, but the shitty part about that is how much more identifiable everyone is. There was this obscurity in the cloud, and it would be a bit sad if that's lost. And so just hearing about your implementing delete makes me happy because then that's at least one major vector of vulnerability that is removed. Because if you can really delete stuff, then that makes you a lot less vulnerable to accidentally posting some shit that is going to cause problems for you later.

cblgh: Yeah, it'll be very interesting to see. It feels like we're part of this wave of like, "you know, okay, we've been using these peer-to-peer systems, what can we do differently now?" Like, we started specing this out in 2021, when we (max and cblgh) actually met in Svendborg. We (some cabal devs) were actually cohacking on the spec there.

max: Mmm I remember that.

cblgh: and we're not the only ones. Like there's a lot of kind of questioning going on, both in SSB, you know, where Andre Staltz has said, he was very close to burnout and his kind of answer to that was he needs to kind of take it easy with the main Manyverse development. I think he's gonna have some other devs continue doing patches, and he will instead research what could be a new version of SSB that keeps the good parts but kind of removes the bad parts that has been burning people out. So it's definitely kind of new wave vibes going on in the space in general. So we'll see what happens.



max: Thanks, and I'll message you once I get a chance to transcribe. I'm kind of hoping I can use some transcription software because this is really long. I have to look into that.

cblgh: As long as you don't send my stuff to OpenAI I am fine.

max: Is that an actual boundary? I haven't looked into how transcription will work.

cblgh: Well, I wouldn't want them to have free reign of my voice

max: I'll look for some local transcription. I think I did see at least see someone share one for Mac. So I just need to find a Linux one.

cblgh: Nice.

OK, talk to you later.
(birds chirping)