solidarity-interviews/cblgh2.md

84 KiB

Table Of Contents

I: ANARCHISM, THE CORPOVERSE, ECOSYSTEM SPECIES SUCCESSION, SOFTWARE GOVERNANCE II: LIEU, CERCA, FORUMS & SEARCH III: COMPOSABLE SOLIDARITY INFRASTRUCTURE IV: FIVE MINUTES ABOUT THE INTERNET V: CABAL & P2P DELETE VI: CLOSING, LOCAL TRANSCRIPTION

================================

I: ANARCHISM, THE CORPOVERSE, ECOSYSTEM SPECIES SUCCESSION, SOFTWARE GOVERNANCE

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, so that's what that 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 kind of written basically all of the foundational structure, decided to go 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, which is good that it became very clear, because people were becoming confused on some 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 thing did not really go in the way of the community, but rather the way of the devs.

So it kind of was rebranded from that 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; so there's a 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 what you are evaluating it along. 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 and stuff. 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, like "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, for someone who wants to develop their skills and make a 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 achieve such large-scale influence and even if the original people setting up servers and stuff were kind of more at this like experimental scale - and so I feel like maybe that is 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, 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 like 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 like 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 the 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 like, it's just not the way the protocol works. So it's like you can't really do that.

cblgh: Yeah, I can imagine that. And then in some ways, you know, from like an ecosystem perspective, this is just something I've been learning like the last year of, you know, you have these, and I'm not sure what they're called, I think like 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 start 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, are the ones who will first embrace something new. And they kind of work it out, you know, and they figure out what works, what doesn't work, and they start making it cool. But when it kind of becomes more popular more commercialized, you know, 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 like just observing dynamics. Just from how the technology works, I would think that you can still have you know, like a very alternative subset of the Fediverse that just like 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 people wouldn't get, you know, very radical or interesting minded people probably wouldn't even give it a chance if it was like as commonly accepted as Facebook or whatever. I don't know. I think it's interesting dynamic with these like groups that come in to a new space and experiment and then are eventually just like you know in some senses by the dynamics kind of crowded out.

max: Yeah, I like your comparison with the ecosystem waves of succession. You know like intuitively I feel still 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 or small things that don't matter or big things that make a difference. and 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 kings, 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 for like, 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, like 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 like 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 like spend a lifetime learning like legal codes.

cblgh: Yeah, and once you get like 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." And 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.

================================

II: LIEU, CERCA, FORUMS & SEARCH

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, like solidarity infrastructure? So like, Lieu and Cerca are definitely like two very clear projects in that respect. Like how I kind of 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, just like journey or whatever, like learning that kind of stuff through a project I made with two friends called Piraltorodio, which is Swedish for pirate radio, which is kind of like a tongue-in-cheek kind of name. And basically that kind of revolved around making these collaborative playlists. So the idea was like, 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 we could listen to it together. So that's what Keraltraudio was. It was basically just like 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 things that put things on the page. So when we render the list of all these different links, we would kind of 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. Because from there, I found different kinds of--yeah, other projects, basically.

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

cblgh: - Yeah, so one thing that was, I mean, very many things, it's like 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, we didn't download anything. And started looking for like, how could we 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 that and I made a thing called Datradio, which was very inspired by this. Which was kind of doing the same thing, but using dat archives. So someone could work in the Beaker Browser, this now defunct, but very cool project where you could create websites directly in the browser. It was using its API.

So we just say like, here's the app itself, and then you would 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 just listen to that.

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 like 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, are we gonna get wrecked for this? Like, I'm not a lawyer, like, 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, like, that was like a specific approach/strategy of anti pirating legal stuff was to like, come down really hard on a few individuals who were kind of like, not really doing anything other than whatever downloaded a bunch of stuff.

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

max: That's cool, especially hearing this. Everyone's got an interesting Scuttlebutt origin story. And then, yeah, do you want to talk more about Cerca and Lieu, which I'm not pronouncing correctly.

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

max: Yeah, I guess starting with what they are just because that will help for the transcript and people listening and then maybe talking about what inspired it, what you learned, if there was anything that was weird.

cblgh: Yeah, for sure.

Yes, I can start with Lieu because that was the first thing I made of those two. And it's kind of described as a web ring search engine or 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 I'm part of a webring called the Merveilles webring. And we have like 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, like 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 it kind of, I was noticing this like, I'm not sure, but like fatigue setting in or whatever, where I'm like, I'll click in on a random site. Then this didn't really, I couldn't find anything interesting. Then I'll click another one. Maybe I'll just do that two or three times and then I'm kind of like running into boredom or whatever. So I wanted to surface all of the really cool stuff that people in this webring were doing. And yeah, that's kind of where Lieu came from. So 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 and that kind of stuff.

max: I Remember you writing something like, or I don't know if you just said this or wrote this, but that like 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, like, 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. And for like the Lieu instance I've deployed with the Merveilles Webring, I kind of know that it's kind of design-y focus and kind of a lot of weird niche topics. So a lot of the things that are linked in there will kind of 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, there I'll get basically very random things, probably ad-fueled search results.

max: - It also makes me think something cool about this is it's like a retrospective organizing, where instead of like some people would say, "Oh, 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 like let's find all the time someone mentioned music.

cblgh: - Yeah, yeah. Yeah, it's taking a different kind of approach to that, for sure. Yeah, so that's Lieu. And it started out as just being for the Merveilles webring. But then later I kind of made it basically easily deployable for anyone. So if you have, and it's written in Go and you can download a binary. And basically if you have kind of 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 can just spin it up and start searching using it.

So that could work whether 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 like, oh, here are some cool sites that I want to be able to search as kind of a group. You could do that as well.

max: I wonder if we could try setting it up for the websites of the folks in the SFPC class. That could be interesting.

  • Little project. That might be one I might try to like, what's the word, not delegate, but like if someone's looking for a project to do.

cblgh: - Yeah, yeah.

max: - This could be something fun to do.

cblgh: - Yeah, just let me know if someone's running into any problems. Like I think it may need to make a new build for people to use. And then Cerca is the other project you mentioned.

And that's kind of come from how I grew up on the internet in a way, like 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 like real time social media or IRC and more kind of 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 really didn't see, I was kind of waiting for a good time to make a forum, like to make this kind of forum software. Because there are existing software but there aren't that many kind of modern ones—I've been keeping track. The only one that I've seen is Discourse.

And I think it's great that it's kind of brought the forum sensibilities into the modern web, so to speak. But deploying Discourse for a community is super rough, I think. 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, 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, I mean, great that exists, but I really didn't want to launch it myself. Yeah, so I was like, before making it, I was just like having fun and figuring out, you know, like 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. People started getting excited about forums. And I was like, well, if I make one, would people want to join it? And people were pretty excited. And 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, no. 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, like I was creating it and then people were joining it and were excited about it and creating like adding new things that I didn't even think of or I didn't have time to do. And that was really, it's really energizing in a way to just like be creating software in this kind of community context, like instead of just creating something and hoping that'll 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 like it 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 just like literally in the beginning making it for the Merveilles kind of use case, which has kind of 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 anything. Which meant going back to like, okay, how do you actually make a web form? And how do you handle that stuff?

max: Some more traditional programming craft.

cblgh: Yeah, 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 kind of 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. Like, 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, which has struck some people, I think, in a way that it's not, I mean, that's not part of it. And 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 in some sense, like a burnout counter.

max: Totally.

cblgh: Where if you feel like you have like 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 just like 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, you know, like the burdens of a community or something, which is wrong. Like if a community is letting something, you know, like burn down to the ground, then sometimes that's what needs to happen, you know? Like 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? Yeah, 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. So 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, you know, like start debugging mailgun or something. And in that sense, it's been like a resounding success. Like it's just been running and people have been using it off and on.

It has its kind of high tides and low tides. Like I've seen it start to be used, like people kind of rediscovering the forum during things like what's it called like Inktober where there was a thread where people were like three or four or five people were posting every day and just like sharing 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: - Okay, I'm curious how that happens, or 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. And it's just like 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. And, but it happens at like absolute snail pace. And it's cool too.

cblgh: - Yeah, it's fun to be on the receiving end of the, I mean, like you get to literally live that experience. So like 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. Yeah, yeah, yeah. They have no idea. It's like a weird collapsing of time.

cblgh: Yeah. And it's like, that would never happen, you know, like, something like a Twitter or a Mastodon, right? Because it's very much fire and forget. Like, 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.

But yeah, with its maintenance, like, I've been taking a kind of very slow approach and working on it when I kind of felt like it or when something critical came up. And one kind of thing I think is really difficult is with well-intentioned kind of drive-by contributions. Or it's like 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. Yeah yeah and that's a really really difficult thing I think with with maintenance is like actually saying no to certain contributions.

And I think I've been good at it in some cases and in some, in other cases I've kind of, I think 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 while not in the chat too. (laughing) But it's like, 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 here in India. It's been interesting. Most of them I've actually just like to 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 like food that I don't really want to eat versus yeah, like I remember like someone offered me some clothes or something that I did not take because I was like, I don't have space in my pack for this. And I have a limit, a boundary where I will be like, I'm not, 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: - Yeah, yeah, no, it's interesting. Like this idea of like a gift that is an encumbrance versus a gift that's kind of more relation building in a way.

max: - Yeah.

cblgh: - Purely. So like 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 you know, like a painting or something. It won't just go away when you'll have it, right? You kind of become encumbered by it. Same thing with like 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: Hmm. Well, this seems good about Cerca, I almost started to feel bad for interviewing you about Cerca as we were talking about it because I was like based on what you said you're doing this for fun so it seems almost like counter to its aim to become the like focus of such attention

cblgh: No, no, no, it's I I mean, 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 thread and I didn't have to do anything.

max: Nice. Yes, I guess I did. Well, in that light, then I'm happy to talk about it. I just was thinking how some some software, the default, 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. So that's actually an intention, right? It's kind of a way to approach a particular thing. So it's not very thoughtless in that sense.

Like every decision I've made with Cerca has been very informed, even if it seems like, oh, it's just--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 actual, like the default elements.

max: Ah, okay, yeah, yeah, yeah, yeah, yeah, yeah.

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.

max: - Sure.

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 kind of, you know, password "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 like 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 concept of having this, you know, like plausibility, 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, yeah, yeah, it's 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 it called like 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: So basically you don't send a code, but they do have, 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 even you can even go further and you can just say, well, you don't even have to log in with password if you don't want to, you could just use your Authenticator app.

max:- Nice.

cblgh: - Yeah, 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, which is, yeah, I don't know. It's just like a small side note that I think is kind of interesting. Like 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's like, it takes you off the standard app.

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

============================

III: COMPOSABLE SOLIDARITY INFRASTRUCTURE

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 a very, in some sense, 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 we can visit it like over like 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 and stuff. So that was super cool.

So yeah, that's kind of like 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 an open, 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, whereas some of it would go for server costs, but also just for stuff like, you know, like 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 we'd just be basically, you know, the underlying DHT. So yeah, it's 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 yeah, it's for sure basically just like, 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 like something smaller than most of the protocols are like the protocols are usually including more than just that they like include that plus other stuff yeah

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.

=========================

II: LIEU, CERCA, FORUMS & SEARCH

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, like solidarity infrastructure? So like, Lieu and Cerca are definitely like two very clear projects in that respect. Like how I kind of 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, just like journey or whatever, like learning that kind of stuff through a project I made with two friends called Piraltorodio, which is Swedish for pirate radio, which is kind of like a tongue-in-cheek kind of name. And basically that kind of revolved around making these collaborative playlists. So the idea was like, 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 we could listen to it together. So that's what Keraltraudio was. It was basically just like 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 things that put things on the page. So when we render the list of all these different links, we would kind of 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. Because from there, I found different kinds of--yeah, other projects, basically.

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

cblgh: - Yeah, so one thing that was, I mean, very many things, it's like 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, we didn't download anything. And started looking for like, how could we 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 that and I made a thing called Datradio, which was very inspired by this. Which was kind of doing the same thing, but using dat archives. So someone could work in the Beaker Browser, this now defunct, but very cool project where you could create websites directly in the browser. It was using its API.

So we just say like, here's the app itself, and then you would 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 just listen to that.

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 like 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, are we gonna get wrecked for this? Like, I'm not a lawyer, like, 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, like, that was like a specific approach/strategy of anti pirating legal stuff was to like, come down really hard on a few individuals who were kind of like, not really doing anything other than whatever downloaded a bunch of stuff.

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

max: That's cool, especially hearing this. Everyone's got an interesting Scuttlebutt origin story. And then, yeah, do you want to talk more about Cerca and Lieu, which I'm not pronouncing correctly.

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

max: Yeah, I guess starting with what they are just because that will help for the transcript and people listening and then maybe talking about what inspired it, what you learned, if there was anything that was weird.

cblgh: Yeah, for sure.

Yes, I can start with Lieu because that was the first thing I made of those two. And it's kind of described as a web ring search engine or 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 I'm part of a webring called the Merveilles webring. And we have like 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, like 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 it kind of, I was noticing this like, I'm not sure, but like fatigue setting in or whatever, where I'm like, I'll click in on a random site. Then this didn't really, I couldn't find anything interesting. Then I'll click another one. Maybe I'll just do that two or three times and then I'm kind of like running into boredom or whatever. So I wanted to surface all of the really cool stuff that people in this webring were doing. And yeah, that's kind of where Lieu came from. So 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 and that kind of stuff.

max: I Remember you writing something like, or I don't know if you just said this or wrote this, but that like 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, like, 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. And for like the Lieu instance I've deployed with the Merveilles Webring, I kind of know that it's kind of design-y focus and kind of a lot of weird niche topics. So a lot of the things that are linked in there will kind of 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, there I'll get basically very random things, probably ad-fueled search results.

max: - It also makes me think something cool about this is it's like a retrospective organizing, where instead of like some people would say, "Oh, 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 like let's find all the time someone mentioned music.

cblgh: - Yeah, yeah. Yeah, it's taking a different kind of approach to that, for sure. Yeah, so that's Lieu. And it started out as just being for the Merveilles webring. But then later I kind of made it basically easily deployable for anyone. So if you have, and it's written in Go and you can download a binary. And basically if you have kind of 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 can just spin it up and start searching using it.

So that could work whether 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 like, oh, here are some cool sites that I want to be able to search as kind of a group. You could do that as well.

max: I wonder if we could try setting it up for the websites of the folks in the SFPC class. That could be interesting.

  • Little project. That might be one I might try to like, what's the word, not delegate, but like if someone's looking for a project to do.

cblgh: - Yeah, yeah.

max: - This could be something fun to do.

cblgh: - Yeah, just let me know if someone's running into any problems. Like I think it may need to make a new build for people to use. And then Cerca is the other project you mentioned.

And that's kind of come from how I grew up on the internet in a way, like 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 like real time social media or IRC and more kind of 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 really didn't see, I was kind of waiting for a good time to make a forum, like to make this kind of forum software. Because there are existing software but there aren't that many kind of modern ones—I've been keeping track. The only one that I've seen is Discourse.

And I think it's great that it's kind of brought the forum sensibilities into the modern web, so to speak. But deploying Discourse for a community is super rough, I think. 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, 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, I mean, great that exists, but I really didn't want to launch it myself. Yeah, so I was like, before making it, I was just like having fun and figuring out, you know, like 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. People started getting excited about forums. And I was like, well, if I make one, would people want to join it? And people were pretty excited. And 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, no. 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, like I was creating it and then people were joining it and were excited about it and creating like adding new things that I didn't even think of or I didn't have time to do. And that was really, it's really energizing in a way to just like be creating software in this kind of community context, like instead of just creating something and hoping that'll 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 like it 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 just like literally in the beginning making it for the Merveilles kind of use case, which has kind of 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 anything. Which meant going back to like, okay, how do you actually make a web form? And how do you handle that stuff?

max: Some more traditional programming craft.

cblgh: Yeah, 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 kind of 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. Like, 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, which has struck some people, I think, in a way that it's not, I mean, that's not part of it. And 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 in some sense, like a burnout counter.

max: Totally.

cblgh: Where if you feel like you have like 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 just like 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, you know, like the burdens of a community or something, which is wrong. Like if a community is letting something, you know, like burn down to the ground, then sometimes that's what needs to happen, you know? Like 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? Yeah, 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. So 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, you know, like start debugging mailgun or something. And in that sense, it's been like a resounding success. Like it's just been running and people have been using it off and on.

It has its kind of high tides and low tides. Like I've seen it start to be used, like people kind of rediscovering the forum during things like what's it called like Inktober where there was a thread where people were like three or four or five people were posting every day and just like sharing 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: - Okay, I'm curious how that happens, or 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. And it's just like 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. And, but it happens at like absolute snail pace. And it's cool too.

cblgh: - Yeah, it's fun to be on the receiving end of the, I mean, like you get to literally live that experience. So like 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. Yeah, yeah, yeah. They have no idea. It's like a weird collapsing of time.

cblgh: Yeah. And it's like, that would never happen, you know, like, something like a Twitter or a Mastodon, right? Because it's very much fire and forget. Like, 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.

But yeah, with its maintenance, like, I've been taking a kind of very slow approach and working on it when I kind of felt like it or when something critical came up. And one kind of thing I think is really difficult is with well-intentioned kind of drive-by contributions. Or it's like 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. Yeah yeah and that's a really really difficult thing I think with with maintenance is like actually saying no to certain contributions.

And I think I've been good at it in some cases and in some, in other cases I've kind of, I think 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 while not in the chat too. (laughing) But it's like, 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 here in India. It's been interesting. Most of them I've actually just like to 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 like food that I don't really want to eat versus yeah, like I remember like someone offered me some clothes or something that I did not take because I was like, I don't have space in my pack for this. And I have a limit, a boundary where I will be like, I'm not, 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: - Yeah, yeah, no, it's interesting. Like this idea of like a gift that is an encumbrance versus a gift that's kind of more relation building in a way.

max: - Yeah.

cblgh: - Purely. So like 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 you know, like a painting or something. It won't just go away when you'll have it, right? You kind of become encumbered by it. Same thing with like 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: Hmm. Well, this seems good about Cerca, I almost started to feel bad for interviewing you about Cerca as we were talking about it because I was like based on what you said you're doing this for fun so it seems almost like counter to its aim to become the like focus of such attention

cblgh: No, no, no, it's I I mean, 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 thread and I didn't have to do anything.

max: Nice. Yes, I guess I did. Well, in that light, then I'm happy to talk about it. I just was thinking how some some software, the default, 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. So that's actually an intention, right? It's kind of a way to approach a particular thing. So it's not very thoughtless in that sense.

Like every decision I've made with Cerca has been very informed, even if it seems like, oh, it's just--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 actual, like the default elements.

max: Ah, okay, yeah, yeah, yeah, yeah, yeah, yeah.

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.

max: - Sure.

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 kind of, you know, password "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 like 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 concept of having this, you know, like plausibility, 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, yeah, yeah, it's 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 it called like 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: So basically you don't send a code, but they do have, 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 even you can even go further and you can just say, well, you don't even have to log in with password if you don't want to, you could just use your Authenticator app.

max:- Nice.

cblgh: - Yeah, 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, which is, yeah, I don't know. It's just like a small side note that I think is kind of interesting. Like 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's like, it takes you off the standard app.

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

===========================

IV: FIVE MINUTES ABOUT THE INTERNET

max: Okay. How about this? Can we talk about the internet for five minutes? Because I'm just curious. Okay, so I've heard some people say the internet is decentralized. And then I was like, you know, people talk about how there can be many like 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 like heard about it, but I 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 like 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. Like the definition of tier one is peers with all other tier ones and knows every route. And that was just 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... Um, and before I was like, oh, is that a misnomer? And then after learning about this, I was like, well, if you mean the tier one internet, then like maybe that is correct. It's singular.

cblgh: - Yeah, no, it's interesting. Like, I don't know so much about like, like the actual details there, but... (bird squawks) Yeah, 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, like they have, 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 actually that's controlled by like 11 people or something scattered around the world who can like change the root domain name things. Yeah yeah that's that's it's kind of wild 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. like 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, like they can't do really 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, you know, any of like 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 each... 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 Yeah, exactly. 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.

=========================

V: CABAL & P2P DELETE

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 and 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 kind of lucky enough to stumble into a third one. The first one I wrote didn't actually pan out. Like 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 in a sense, I mean like 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 just like 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 kind of like like an independent budget to kind of 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 kind of 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 like 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 as long as each person that kind of comes online in a cabal is adding more resources and kind of connectivity to it. So some people might have a really hard time connecting to others because of just how the way routers work today with NATs like stuff like that.

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 like 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 kind of append-only log that they write messages to. And then we kind of, we find other peers, other people, through using this hyperswarm network, the hyperswarm DHT. And we create a chat, like, you know, 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 kind of 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. Like, and we've seen a lot of issues where, not issues, but I mean, it's been existing for five years. We have a lot of experience of like, what works and what kind of doesn't work as we would kind of want it to work.

And one of those is just the question of delete. Like, 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 how 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 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 hypers, 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 Kabal 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 like 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, yeah. Somehow I was thinking about that essay again and I was just feeling like, you know what What it was is because of the popularity of the Fediverse and the fact that I'm teaching this class, 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: And yeah, it'll be very interesting to see. And 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: Yeah, yeah, yeah, 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, But 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 kind of vibes going on in the space in general to kind of continue the speculative stuff. So we'll see what happens.

============================

VI: CLOSING / LOCAL TRANSCRIPTION

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 my voice and shit, you know.

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. Sure. Bye-bye. (birds chirping) [whistle] [BEEP] (beeping) [BEEP] [whistle] [BLANK_AUDIO]