WEBVTT 00:00.000 --> 00:08.480 Welcome now the next speaker, the duo. 00:08.480 --> 00:16.000 We have Andreas and Tobias and they're going to talk about, was a local first Linux desktop 00:16.000 --> 00:19.000 with Modal Reflection and peer-to-pondal. 00:20.000 --> 00:21.000 Welcome! 00:27.000 --> 00:33.000 Hi everyone, I'm Tobias and this Andreas and we're from Modal. 00:33.000 --> 00:36.000 Shout out to all the other Modal people here in the room. 00:36.000 --> 00:38.000 Really cool that everyone's here. 00:38.000 --> 00:40.000 Great energy. 00:40.000 --> 00:49.000 Today we're here to talk about local first on the desktop and also the broader Linux mobile 00:49.000 --> 00:51.000 desktop complex. 00:51.000 --> 00:57.000 Yeah, I'm going to start that on kind of a broader context. 00:57.000 --> 01:02.000 I think this picture is maybe good for setting the stage. 01:02.000 --> 01:08.000 Because I think for many of us we've been in this movement for a long time and I think over the last year 01:08.000 --> 01:15.000 people outside of our specific circles have really realized all of our infrastructure fully dependent 01:15.000 --> 01:18.000 on the US, what the fuck are we going to do? 01:18.000 --> 01:22.000 And I think from a meta perspective this could have been like, wow, this is the moment 01:22.000 --> 01:25.000 or everyone realizes what needs to happen. 01:25.000 --> 01:28.000 We're just going to switch over, everyone's going to use three software now. 01:28.000 --> 01:34.000 Except most of the things that people actually need, we don't actually have. 01:34.000 --> 01:37.000 We don't have a daily travel phone operating system. 01:37.000 --> 01:42.000 We don't really have the level of security like on the Linux desktop that like iOS or Graphene have. 01:42.000 --> 01:46.000 A lot of the collaborative tools that people need in the real world like relax and so on. 01:46.000 --> 01:48.000 We don't have like a good alternative. 01:48.000 --> 01:52.000 Anything that's like the bi-sync is like a question mark. 01:52.000 --> 01:57.000 And it's all a bunch of stuff like this where we are like 80% of the solution that works as long as you're really technical. 01:57.000 --> 01:59.000 And for anyone else it's like, 02:00.000 --> 02:07.000 and our takeaway sort of as a collective and like I guess some of the people around are in our circles 02:07.000 --> 02:10.000 is that we really need to be much more focused on strategic. 02:10.000 --> 02:17.000 We need to like actually think about how we can solve these problems in a way that scales to people who don't come the fossil. 02:17.000 --> 02:23.000 And also I think we need to sort of take an account the fact that the world is not where it was five years ago or 10 years ago 02:23.000 --> 02:27.000 when most of the tech that we have now was built and planned. 02:27.000 --> 02:32.000 I was like, yeah, these platforms are just kind of sort of neutral and like it would be nice if we had free software. 02:32.000 --> 02:35.000 But like, you know, whatever. 02:35.000 --> 02:37.000 It's also fine if only some of us can use it. 02:37.000 --> 02:43.000 That's not where we're going and we need to be much more realistic about the kind of risks that we're facing. 02:43.000 --> 02:48.000 And that is sort of the background where model comes from. 02:48.000 --> 02:55.000 It's a new collective from I guess mostly the Berlin community around Gnom and post market and Peter Pandan some other things. 02:55.000 --> 02:59.000 It comes sort of like out of our local events there. 02:59.000 --> 03:03.000 And it sort of the idea is that we're organizing differently. 03:03.000 --> 03:06.000 We're organizing around goals rather than like these specific technologies. 03:06.000 --> 03:12.000 But we're also doing it in this focused way to like actually achieve them on a semi useful timescale. 03:12.000 --> 03:16.000 And for us that starts maybe like by taking another step back. 03:16.000 --> 03:20.000 I like sort of looking at like what we're actually trying to do. 03:20.000 --> 03:23.000 Because software freedom is useful and good and we still need it. 03:23.000 --> 03:28.000 It's sort of one of the one of the driving principles of everything always. 03:28.000 --> 03:29.000 But it's not the only thing. 03:29.000 --> 03:34.000 And I think in the Gnom community people have long realized this that's why like the design first is always like a big thing there. 03:34.000 --> 03:40.000 And I think that always needs to be part of it because otherwise people who are not at fuzz them don't want to use stuff. 03:40.000 --> 03:43.000 But also I think we need to be much more aggressive about security. 03:43.000 --> 03:49.000 We need to like actually think about the kind of threats that not only like are real now but are going to be really in the future. 03:50.000 --> 03:55.000 We need to think about post internet. We need to think about all of the like. 03:55.000 --> 04:00.000 Current and future risks that that sort of exist nowadays that people didn't think about before. 04:00.000 --> 04:05.000 And for us this friends say it's into a few semi concrete medium term goals. 04:05.000 --> 04:10.000 One of them is the security saying like actually getting the Linux desktop to be as secure as graphene. 04:10.000 --> 04:14.000 That's like a big topic 100 different small things need to be done there. 04:14.000 --> 04:16.000 But that's like sort of a driving force for us. 04:16.000 --> 04:21.000 We need a daily drive mobile phone that you can actually use to deploy in the field instead of Android. 04:21.000 --> 04:24.000 We need to look for sync. I don't think I need to say more for this room. 04:24.000 --> 04:29.000 We need robust like foundations for like the system itself. 04:29.000 --> 04:32.000 Like you don't want people in the field to like do the NF upgrade and then everything breaks. 04:32.000 --> 04:35.000 You need image space. Like there's no question there. 04:35.000 --> 04:39.000 You'd hardware to like be sort of I don't know. 04:39.000 --> 04:45.000 Usable as long as the hardware itself is usable because we don't know like what those supply chains are going to be doing in the future. 04:45.000 --> 04:54.000 And you know that in irrespective of the other good things right like you can just keep stuff for longer and like fewer emissions and so on. 04:54.000 --> 04:56.000 You really need to keep that hardware. 04:56.000 --> 05:02.000 And then we need an Apple ecosystem of apps that actually work with all of this stuff that are local first and so on. 05:02.000 --> 05:07.000 And in order to get there we do all kinds of things. We do developments design organizing. 05:07.000 --> 05:09.000 We write grants to all of the above. 05:09.000 --> 05:14.000 But also policy stuff I think is really important because for example bootloader unlocking does not really like a good technical solution. 05:14.000 --> 05:16.000 There you need the policy solution. 05:16.000 --> 05:22.000 And sort of our provocative goal in the long term as we would like a free software iPhone so to speak. 05:22.000 --> 05:26.000 Like an actual computing platform that is nice to use for everyone. 05:26.000 --> 05:34.000 And that gives everyone the rights that currently like only free software people or yeah technical people like enjoy. 05:34.000 --> 05:37.000 And for that we have a specific stock. 05:38.000 --> 05:42.000 I guess like there is sort of the standard Linux desktop stock. 05:42.000 --> 05:45.000 Linux system D for all the security stuff. 05:45.000 --> 05:47.000 Free desktop, wallet, and pipe wire. 05:47.000 --> 05:48.000 You know, desktop stock. 05:48.000 --> 05:52.000 GTK and a wide app because that's the stuff that sort of works best of mobile. 05:52.000 --> 05:55.000 Peter Panda for Logan networking. 05:55.000 --> 05:56.000 A photographer's networking. 05:56.000 --> 05:59.000 And then flatback for app delivery. 05:59.000 --> 06:06.000 And basically what we do is we just work upstream on these various projects to push forward our evil agenda of everything being good and cool. 06:07.000 --> 06:17.000 But I think one specific goal obviously for this room is that we meet networking to be way more resilient because that's like one of the sort of if we're talking about various risks. 06:17.000 --> 06:18.000 That's one of the most immediate risks. 06:18.000 --> 06:21.000 The network sort of can go away at any moment. 06:21.000 --> 06:24.000 And so that is I think like one important goal for us. 06:24.000 --> 06:29.000 And that's why looking for a sync is sort of at the core of of this broader vision. 06:29.000 --> 06:33.000 And for that, I'll let Andreas talk about Peter Panda. 06:33.000 --> 06:34.000 Hi. 06:34.000 --> 06:37.000 Yeah, my name is Andreas. I'm part of the Peter Panda gang. 06:37.000 --> 06:39.000 We are free people right now. 06:39.000 --> 06:42.000 This is like Sam, Cliff and me. 06:42.000 --> 06:45.000 We are based in Berlin in London. 06:45.000 --> 06:49.000 And funded for open source grants since the last six years. 06:49.000 --> 06:52.000 Sometimes we do also consultancy contracts. 06:52.000 --> 06:53.000 Yeah. 06:53.000 --> 06:59.000 And that Peter Panda is basically like a collection of what we call building blocks. 06:59.000 --> 07:03.000 And of course, the goal is to make like app development very easy. 07:03.000 --> 07:05.000 So people should focus on building the application. 07:05.000 --> 07:07.000 I think we all want that. 07:07.000 --> 07:11.000 For us, it's quite important that these building blocks are very modular. 07:11.000 --> 07:15.000 And agnostic to your data types, agnostic to the transports underneath. 07:15.000 --> 07:18.000 Basically to avoid something like the framework lock in. 07:18.000 --> 07:20.000 So we want this to be hackable. 07:20.000 --> 07:22.000 People should plug in the things together. 07:22.000 --> 07:23.000 How they want. 07:23.000 --> 07:27.000 And they should view their locked in into like certain technologies here. 07:28.000 --> 07:34.000 Some highlights, maybe of some things we've been working on is like confidential discovery and sync. 07:34.000 --> 07:36.000 This is also inspired by the Willow project. 07:36.000 --> 07:39.000 I think there's similar things going on there. 07:39.000 --> 07:44.000 We have a key agreement scheme for groups, which is full offline first. 07:44.000 --> 07:47.000 And it even supports double-ratcheting. 07:47.000 --> 07:50.000 Maybe it's the first implementation out there in Rust. 07:50.000 --> 07:55.000 We have CRDTs to organize groups, which is interesting for multi-device. 07:55.000 --> 08:00.000 We have forms of garbage collection, different forms of coordination strategies to prune your data. 08:00.000 --> 08:03.000 Because you don't want to keep it around forever. 08:03.000 --> 08:05.000 And we focus also. 08:05.000 --> 08:07.000 This is like one of a high-level goal and introspection. 08:07.000 --> 08:09.000 So like every system should be observable. 08:09.000 --> 08:11.000 You should really understand what's going on. 08:11.000 --> 08:13.000 This helps for debugging a lot. 08:13.000 --> 08:17.000 And as I mentioned before, all of this is independent of peer-to-pandler. 08:17.000 --> 08:20.000 Basically, these are fully generic implementations. 08:20.000 --> 08:24.000 You can combine them with any stacks, any peer-to-peer protocol whatsoever. 08:24.000 --> 08:28.000 So this is all of these are very concrete modules. 08:28.000 --> 08:30.000 You can just pull into your project. 08:30.000 --> 08:37.000 Another thing which is interesting about Pietopanda is that we don't really distinct between federation and decentralization. 08:37.000 --> 08:42.000 Like Pietopanda and its cores, like pure peer-to-peer decentralized. 08:42.000 --> 08:48.000 But it's also sometimes okay to have a note running somewhere in multiple clients, talk to it. 08:48.000 --> 08:52.000 That can be a note running on a server and then you have lightweight clients in the browser. 08:52.000 --> 08:55.000 You know, basically using the note as a proxy. 08:55.000 --> 09:00.000 Or having the note on system level and the multiple applications talking to it on the same machine. 09:00.000 --> 09:03.000 And then there's hybrids of these. 09:03.000 --> 09:08.000 And we think it's kind of up to the users or the communities, like based on the trade-offs of these two worlds. 09:08.000 --> 09:11.000 And to decide which one is best for them. 09:11.000 --> 09:16.000 Here, Tupanda is basically, we call that post-internet. 09:16.000 --> 09:20.000 So we also not only think about offline first, what happens if the internet is gone. 09:20.000 --> 09:28.000 We also think about what happens if there is no internet at all for political reasons for catastrophic reasons. 09:28.000 --> 09:36.000 So all our data types and designs are also prepared for basically like a broadcast only world. 09:36.000 --> 09:41.000 That means packet radio, Laura, Bluetooth, low energy. 09:41.000 --> 09:45.000 I mean, it's still established connections with Bluetooth for energy. 09:45.000 --> 09:52.000 But you get the idea we're basically like prepared for these scenarios. 09:52.000 --> 09:58.000 On our underlying principle, which inspires this reference model, we call the walkaway stack. 09:58.000 --> 10:05.000 And by that, we basically mean the events delivery part, like how your events arrive to your stack. 10:05.000 --> 10:06.000 We don't really care. 10:06.000 --> 10:08.000 We have some solutions here. 10:08.000 --> 10:09.000 We have things. 10:09.000 --> 10:14.000 But we want you to be able to swap that out in application should continue to run. 10:14.000 --> 10:17.000 It shouldn't be bothered about how these events arrive. 10:17.000 --> 10:22.000 Laura, packet radio, over the internet, over tour. 10:22.000 --> 10:29.000 And for this advice, it's very important because we don't know if the infrastructure is going to have in the future will be will stay. 10:29.000 --> 10:32.000 And we also don't know what power dynamics will play there. 10:32.000 --> 10:40.000 So walkaway basically means choose your own power and balances by choosing your own infrastructure. 10:41.000 --> 10:44.000 And you can see that being reflected in the creator-panda stack. 10:44.000 --> 10:47.000 So we have really a whole bunch of modules. 10:47.000 --> 10:51.000 Like down here, we have our event delivery layer, let's say. 10:51.000 --> 10:56.000 And very different sorts of connectivity substrates. 10:56.000 --> 11:02.000 You can plug in, also I mentioned, like, Laura and based. 11:02.000 --> 11:07.000 And up here, we've entered the event processing world. 11:07.000 --> 11:09.000 It's basically what the application wants to do. 11:09.000 --> 11:12.000 And there we have different modules, which might be interesting for you. 11:12.000 --> 11:15.000 Key agreements to agree on a symmetric key. 11:15.000 --> 11:18.000 Maybe then you start to encrypt that towards relay. 11:18.000 --> 11:24.000 That relay has then zero metadata because we agreed on the key beforehand for this key agreement scheme. 11:24.000 --> 11:26.000 Things like that. 11:26.000 --> 11:28.000 And then, at the very end, you have your database. 11:28.000 --> 11:30.000 And all the things you want to do. 11:30.000 --> 11:33.000 And we don't really have an opinion on how you want to do that. 11:33.000 --> 11:40.000 I think already, like, just the talks I heard before, all technologies, which could probably put there on top. 11:40.000 --> 11:42.000 And of course, it's a little bit cumbersome. 11:42.000 --> 11:46.000 You kind of need to be a peer-to-peer expert to know what you're really doing. 11:46.000 --> 11:49.000 With all of these modules, so currently, this is our work right now. 11:49.000 --> 11:53.000 We're working towards what we call peer-to-panda node and peer-to-panda client. 11:53.000 --> 11:59.000 These are more opinionated, high-level APIs, where you get very easy interfaces. 11:59.000 --> 12:03.000 Publish, subscribe, pattern, to deal with the whole stack. 12:03.000 --> 12:07.000 This is kind of, like, there we're leaving the modules on. 12:07.000 --> 12:10.000 There you get your whole all-in-one solution. 12:10.000 --> 12:15.000 And then, next to all of the development work, we also do research. 12:15.000 --> 12:20.000 You can follow that research on our blog, where we publish all our findings. 12:20.000 --> 12:24.000 And we also part of different events. 12:24.000 --> 12:30.000 We organized, like, last year, I was one of the organizers of the DWAP seminar in San Francisco and the Internet archive. 12:30.000 --> 12:33.000 And I also organized, like, a little lecture series. 12:33.000 --> 12:34.000 I'm going to talk about it. 12:34.000 --> 12:36.000 Free your clock. 12:36.000 --> 12:41.000 About this walk-away stack, I just mentioned, and some more philosophical thoughts about it. 12:41.000 --> 12:44.000 And then, yeah, we do collaborations with other teams. 12:44.000 --> 12:47.000 This is really great for us, because they're building the applications. 12:47.000 --> 12:49.000 They're giving us feedback on our APIs. 12:49.000 --> 12:51.000 They find the bugs. 12:52.000 --> 12:55.000 Yeah, this collaboration, now specifically, we're going to talk about it. 12:55.000 --> 13:00.000 It's the one with the GNOME community, and, yeah, this is them. 13:00.000 --> 13:04.000 Very concrete leading to the reflection project we will talk about. 13:04.000 --> 13:05.000 All right. 13:05.000 --> 13:06.000 Yeah. 13:06.000 --> 13:14.000 So, reflection is sort of the end product of, I guess, a two-year, like, collaboration between the GNOME community, 13:14.000 --> 13:17.000 P2Panda and, like, the various other people around model. 13:17.000 --> 13:23.000 And, sort of, the basic insight was that, like, we need an app that people can actually use day-to-day. 13:23.000 --> 13:25.000 And that's why we started, like, a text editor. 13:25.000 --> 13:28.000 That's the one thing we do all day is, like, take notes. 13:28.000 --> 13:32.000 So, like, sort of collaborative note-taking seems like a good, concrete case. 13:32.000 --> 13:37.000 And also, it seems like a good thing to, like, actually test all of the UI patterns. 13:37.000 --> 13:41.000 And, sort of, things that we're going to need across any local first app, 13:41.000 --> 13:46.000 because it's, like, a pretty, pretty generic thing that you can use for all kinds of stuff. 13:46.000 --> 13:51.000 And it started as, like, just sort of, a hack fest, where we, like, experimented a bit. 13:51.000 --> 13:55.000 And then, eventually, like, as part of an anomaly grant, Julian, who's there in the back, 13:55.000 --> 13:59.000 expanded it to a slightly more real app. 13:59.000 --> 14:03.000 And then, over the past six months, we've worked on this as part of a prototype fund grant 14:03.000 --> 14:06.000 to, like, get to a first release. 14:06.000 --> 14:09.000 And, yeah, that's sort of where we're now. 14:09.000 --> 14:13.000 Current state is, it is a fully native GTK app. 14:13.000 --> 14:17.000 You can install on your Linux machine, or hopefully soon in my class. 14:17.000 --> 14:20.000 We have some builds, but nothing published yet. 14:20.000 --> 14:24.000 And it works for all of the basics. 14:24.000 --> 14:27.000 It's a pretty simple, like, app, right? 14:27.000 --> 14:30.000 Like, it's a text view that sings. 14:30.000 --> 14:35.000 But behind that, of course, is a gigantic amount of technology that needs to all work together 14:35.000 --> 14:36.000 in just the right way. 14:36.000 --> 14:39.000 And we're really happy that, like, we got those, those basics to work, 14:39.000 --> 14:41.000 and that we can now build on it. 14:41.000 --> 14:44.000 And we still have a few more months of funding under prototype fund. 14:44.000 --> 14:47.000 And as part of that, we're going to focus on both stabilizing that, 14:47.000 --> 14:50.000 and, like, doing some user testing, and, like, sort of seeing where this project 14:50.000 --> 14:53.000 needs to go in the medium term. 14:53.000 --> 14:56.000 But also, we're really interested in ecosystem side. 14:56.000 --> 14:59.000 So, like, one of the next things is G object binding. 14:59.000 --> 15:02.000 So, like, the app is written in Rust, because P-dependence written in Rust. 15:02.000 --> 15:05.000 But if you want to use it in a Python app or in a JavaScript app, 15:06.000 --> 15:08.000 you're going to need G object bindings. 15:08.000 --> 15:10.000 And so, that's going to be one of the next focuses. 15:10.000 --> 15:14.000 So, any GNOME app developer can just use this sort of for free. 15:14.000 --> 15:17.000 And then we're also going to work on developer documentation to make that easier. 15:17.000 --> 15:23.000 And also, if you're interested in this, maybe Bookmark March 236, 15:23.000 --> 15:26.000 we're going to have a series of online events for developers 15:26.000 --> 15:29.000 where people can ask questions, and we work through the problems 15:29.000 --> 15:30.000 and questions people have. 15:30.000 --> 15:34.000 Because it is really important to us for this to, like, be, sort of, 15:34.000 --> 15:37.000 the beginning of an ecosystem rather than, like, this one app. 15:37.000 --> 15:40.000 Like, it is more about those ecosystem effects to us. 15:40.000 --> 15:42.000 And also, as part of this project, 15:42.000 --> 15:45.000 we've done quite a bit of user interface research, 15:45.000 --> 15:50.000 because a lot of the questions around local first 15:50.000 --> 15:52.000 are also not solved from a user interface, 15:52.000 --> 15:56.000 one of you, not just, like, from a science point of view. 15:56.000 --> 15:58.000 And to us, like, sort of, the idea of, like, 15:58.000 --> 16:02.000 solving these, sort of, as UX patterns, 16:02.000 --> 16:04.000 was also really important. 16:04.000 --> 16:06.000 And so, in addition to the stuff that we built, 16:06.000 --> 16:09.000 we also did quite a bit of exploration around stuff 16:09.000 --> 16:11.000 that we might want to do in the future. 16:11.000 --> 16:14.000 For example, Peter Pond already has, like, 16:14.000 --> 16:17.000 most of the technical side of access controls 16:17.000 --> 16:18.000 and permission management. 16:18.000 --> 16:21.000 And we also explored, like, how this would be integrated in reflection. 16:21.000 --> 16:23.000 And then, sort of, as an extension, 16:23.000 --> 16:27.000 how this would be done in any, like, 16:27.000 --> 16:30.000 local first GDK app. 16:30.000 --> 16:34.000 Another one is revision control, often, like, 16:34.000 --> 16:37.000 whatever, if you go offline for a longer time, 16:37.000 --> 16:41.000 maybe you don't want to, like, just randomly merge everything 16:41.000 --> 16:43.000 back when everything together when you're back. 16:43.000 --> 16:46.000 Maybe you want to, like, sort of, consciously branch off. 16:46.000 --> 16:48.000 And there are a lot of, like, UI questions around how 16:48.000 --> 16:50.000 would you do this for plain text? 16:50.000 --> 16:53.000 It was one question for more complex things. 16:53.000 --> 16:54.000 It's quite another question. 16:54.000 --> 16:56.000 And that's also something that we started exploring 16:56.000 --> 16:59.000 and would be really interesting to look into more. 16:59.000 --> 17:00.000 Another one is zones. 17:00.000 --> 17:02.000 This is one that we're hearing a lot from the people 17:02.000 --> 17:04.000 who actually are using the app. 17:04.000 --> 17:07.000 Like, having to have every single document 17:07.000 --> 17:09.000 beats on network, which is currently the case, 17:09.000 --> 17:10.000 has some downsides. 17:10.000 --> 17:11.000 You always have to have it open. 17:11.000 --> 17:14.000 And one of the ideas is that you just have 17:14.000 --> 17:16.000 these shared folders that, like, sync all together, 17:16.000 --> 17:18.000 rather than just, like, per document. 17:18.000 --> 17:20.000 And so, yeah, we did a lot of exploration around that. 17:20.000 --> 17:23.000 And the important thing for us is that we saw 17:23.000 --> 17:25.000 these problems in a way that, like, sort of, 17:25.000 --> 17:29.000 can ideally be inherited by the rest of the ecosystem. 17:29.000 --> 17:31.000 Maybe, eventually, as part of, like, some kind of widget library, 17:31.000 --> 17:34.000 where you just, like, get this little popover for free. 17:34.000 --> 17:36.000 And one concrete example for this is that last year 17:36.000 --> 17:39.000 at Guadak, Yakum and I were designing a new app 17:39.000 --> 17:41.000 that is currently still working progress, 17:41.000 --> 17:44.000 but Georgia is working on it here. 17:44.000 --> 17:46.000 It's, like, a presentation app. 17:46.000 --> 17:48.000 And they were like, but what if we had collaboration? 17:48.000 --> 17:51.000 And there was, like, sort of, copied the UI 17:51.000 --> 17:53.000 for the collaboration thing in from reflection. 17:53.000 --> 17:55.000 It just made sense. 17:55.000 --> 17:57.000 And sort of, I think it's a good example 17:57.000 --> 18:00.000 that, like, most of these apps are quite similar in this sense. 18:00.000 --> 18:04.000 And we hope to, sort of, yeah, make this possible for more people 18:04.000 --> 18:07.000 essentially without having to know about the local first that much. 18:07.000 --> 18:09.000 And then, sort of, like, I guess the next step 18:09.000 --> 18:11.000 is to bring it even more into the system 18:11.000 --> 18:13.000 and for that, I'm giving it back to the Andreas. 18:13.000 --> 18:14.000 Yeah, exactly. 18:14.000 --> 18:18.000 So, looking at all of these patterns 18:18.000 --> 18:20.000 reemerging, of course, we can ask ourselves, 18:20.000 --> 18:24.000 I think, we all do, like, okay, is there, like, some patterns 18:24.000 --> 18:28.000 we might just apply on a host level. 18:28.000 --> 18:30.000 So, host basically being a host environment, 18:30.000 --> 18:32.000 which, like, hosts multiple apps. 18:32.000 --> 18:34.000 And, of course, the operating system 18:34.000 --> 18:36.000 would be a good choice for that. 18:36.000 --> 18:39.000 And, yeah, so we've been, like, brainstorming a little bit. 18:39.000 --> 18:42.000 This is already, like, a process of, like, the last two years. 18:42.000 --> 18:44.000 Like, how would that play out? 18:44.000 --> 18:47.000 Like, obviously, one thing you may be want to do 18:47.000 --> 18:49.000 is, like, organize your context 18:49.000 --> 18:51.000 on some way on operating system level. 18:51.000 --> 18:53.000 Like, you know, you have free of public keys every year. 18:53.000 --> 18:55.000 Or, yeah, hash is already IDs. 18:55.000 --> 19:00.000 What if there is, like, a contact book application. 19:00.000 --> 19:03.000 And, you request access to that application. 19:03.000 --> 19:05.000 You add, like, some application can be written 19:05.000 --> 19:06.000 and anything. 19:06.000 --> 19:08.000 It doesn't even need to be peer-to-pender. 19:08.000 --> 19:10.000 Just request access to it. 19:10.000 --> 19:13.000 And, then, the user can give scope access, like, say, 19:13.000 --> 19:15.000 okay, I only want to share, like, these five contacts 19:15.000 --> 19:17.000 with this application. 19:17.000 --> 19:18.000 And, then, the application retrieves it. 19:18.000 --> 19:21.000 And, that's what everybody needs to do with this material. 19:21.000 --> 19:25.000 So, this is, like, one very concrete solution 19:25.000 --> 19:28.000 for, like, something we can sort on the host level. 19:28.000 --> 19:31.000 We, of course, want this to be, like, as private as possible. 19:31.000 --> 19:34.000 We don't want, like, unnecessarily, like, 19:34.000 --> 19:38.000 link, you know, people to, like, imutable data records. 19:38.000 --> 19:40.000 And, then, that across all applications. 19:40.000 --> 19:43.000 So, this is a tricky challenge. 19:43.000 --> 19:46.000 Obviously, pad name systems will be play a big part in this. 19:47.000 --> 19:50.000 And, something we call, or, like, which came up in the peer-to-peer 19:50.000 --> 19:53.000 browser group last week, like, something, like, maybe lazy identities. 19:53.000 --> 19:57.000 So, you don't want your data to be linked across all everything. 19:57.000 --> 20:00.000 So, you only want to reveal it, maybe, on demand 20:00.000 --> 20:04.000 when it is actually necessary to have it, for example, 20:04.000 --> 20:06.000 for access control. 20:06.000 --> 20:11.000 So, here, again, like, some beautiful wire frames of tovy. 20:11.000 --> 20:15.000 Like, this is now just, like, jam on, like, what this could look like. 20:15.000 --> 20:21.000 Maybe interesting to highlight is, like, yeah, you can add the context of how you met that person that might be interesting to, 20:21.000 --> 20:28.000 to keep around, like, you see the devices, like, which are connected to that identity 20:28.000 --> 20:31.000 because I think multi devices still have a big issue. 20:31.000 --> 20:35.000 And, and something we need to think about, and then, like, 20:35.000 --> 20:38.000 the documents, like, you share with that user. 20:38.000 --> 20:41.000 Think, obviously, something we all need, at least if you are 20:41.000 --> 20:44.000 application once, eventually, consistency guarantees. 20:44.000 --> 20:49.000 So, that would be great to have on the host level as well. 20:49.000 --> 20:52.000 Of course, the application doesn't even need to, like, think about this anymore. 20:52.000 --> 20:54.000 It just, like, subscribes to a topic or something. 20:54.000 --> 20:57.000 And, like, it receives, like, the events it needs to have. 20:57.000 --> 21:00.000 I don't, I don't think, I think, probably your all agree. 21:00.000 --> 21:06.000 We will not agree on a super sync protocol, which everyone will be happy with right now. 21:06.000 --> 21:08.000 I don't think we are there yet as a community. 21:08.000 --> 21:11.000 But maybe we can slowly agree on, like, interfaces. 21:11.000 --> 21:14.000 How they might look like, because they might look the same. 21:14.000 --> 21:16.000 So, this is going in a little bit in the direction, also, 21:16.000 --> 21:19.000 what the people from Delta Chat have been doing, like, the web XDC, 21:19.000 --> 21:23.000 where they try to simplify the interface so much, and then, basically, 21:23.000 --> 21:26.000 it doesn't really matter anymore once again, where the events come from, 21:26.000 --> 21:29.000 the event delivery layer is abstracted away, and that can be very different 21:29.000 --> 21:31.000 implementations. 21:31.000 --> 21:34.000 And, we try to get in that direction as well and think how we can maybe, 21:34.000 --> 21:36.000 at least express an API here. 21:36.000 --> 21:39.000 This is, like, just research. 21:39.000 --> 21:41.000 Another thing are, like, support nodes. 21:41.000 --> 21:43.000 Some people call them relay. 21:43.000 --> 21:45.000 Some people call them always online nodes, like, 21:45.000 --> 21:48.000 there's definitely terminology around. 21:48.000 --> 21:52.000 This is also awesome to do on an operating system level, right? 21:52.000 --> 21:56.000 Like, you can actually, like, share it across apps. 21:56.000 --> 21:58.000 You don't want to leak any data. 21:58.000 --> 22:00.000 It should be, like, fully encrypted. 22:00.000 --> 22:03.000 And, that phone, that device doesn't even need to be a server. 22:03.000 --> 22:05.000 It can just be your post-market OS device. 22:05.000 --> 22:10.000 With a solar panel attached, and that could be already like your support node. 22:10.000 --> 22:14.000 Of course, we want this to be multi-transport. 22:14.000 --> 22:15.000 Yeah. 22:15.000 --> 22:17.000 And, this is now part of a grant. 22:17.000 --> 22:21.000 We receive from an LNet, this sort of research and development. 22:21.000 --> 22:23.000 We're going to start around May. 22:23.000 --> 22:27.000 And, as I already mentioned, these are many open questions. 22:27.000 --> 22:31.000 And, yeah, we very much invite you to join us here. 22:32.000 --> 22:38.000 We also have this event happening now in a couple of weeks. 22:38.000 --> 22:43.000 And, this is one of the ongoing events series of the model collective, 22:43.000 --> 22:46.000 where we specifically are going to talk about identity systems, like, 22:46.000 --> 22:51.000 Kate, DM, and Eileen Wagner will be invited. 22:51.000 --> 22:54.000 And, yeah, we also going to talk about the Worker Wasteck. 22:54.000 --> 22:56.000 And, also, all the other usual topics. 22:56.000 --> 23:00.000 If you're interested in post-market, or, yeah, a curl, stuff, 23:00.000 --> 23:03.000 or a system-d or a GNOME design, you're also welcome. 23:03.000 --> 23:05.000 Yeah, it's always a fun time. 23:05.000 --> 23:07.000 Yeah, thank you very much. 23:07.000 --> 23:08.000 Thank you. 23:16.000 --> 23:18.000 Thank you very much, Les. 23:18.000 --> 23:20.000 And, Tobias, we'll take questions in the room. 23:20.000 --> 23:22.000 Do we have questions on the Internet? 23:22.000 --> 23:24.000 Please raise your hands. 23:24.000 --> 23:25.000 All of you. 23:25.000 --> 23:28.000 Now, so I know how many questions we have. 23:28.000 --> 23:29.000 Two. 23:29.000 --> 23:30.000 Okay. 23:30.000 --> 23:33.000 You can still think about it. 23:47.000 --> 23:48.000 Hi. 23:48.000 --> 23:49.000 Sorry. 23:53.000 --> 23:54.000 Oh, okay. 23:54.000 --> 23:55.000 Yes. 23:55.000 --> 23:56.000 Oh, yes. 23:57.000 --> 23:58.000 Oh, okay. 24:00.000 --> 24:01.000 I understand. 24:01.000 --> 24:02.000 Thank you. 24:02.000 --> 24:04.000 So, I maintain an app called Multiplex. 24:04.000 --> 24:07.000 That you just can use to like, stream, like, see, watch Torx together. 24:07.000 --> 24:08.000 Very sources. 24:08.000 --> 24:12.000 And, like, I had to get a, like, WebRTC base, like, 24:12.000 --> 24:14.000 like, is he side channels? 24:14.000 --> 24:16.000 You can, like, synchronize, like, playback positions. 24:16.000 --> 24:17.000 Membership and so on. 24:17.000 --> 24:19.000 And, and, and, I'd be curious to see, like, 24:19.000 --> 24:22.000 Cundee, I used, like, bit Torrent, and, like, 24:22.000 --> 24:24.000 what do you see, like, two different protocols. 24:24.000 --> 24:26.000 And, like, this is a chance of peer-to-peer, like, 24:26.000 --> 24:29.000 could do this, that could, for example, stream the actual video, 24:29.000 --> 24:32.000 as well, like, this is a way, or a story to do that. 24:32.000 --> 24:34.000 Yeah. I think that's not a peer-to-peer, 24:34.000 --> 24:37.000 but, actually, like, lower level, like, on the transport, 24:37.000 --> 24:39.000 because they really don't want to have any overhead, 24:39.000 --> 24:40.000 when you do streaming. 24:40.000 --> 24:43.000 But, I would look at IRO, and, and, 24:43.000 --> 24:47.000 there's currently an experimental repository called IRO live, 24:47.000 --> 24:50.000 which actually does all of that on top of the quick stack. 24:50.000 --> 24:53.000 And, I mean, get upon the has. 24:53.000 --> 24:56.000 I also built in, so you would basically talk the exact same APIs. 24:56.000 --> 24:58.000 Where peer-to-peer would help you, is, like, 24:58.000 --> 25:01.000 all the data you may be want to organize around your session, 25:01.000 --> 25:04.000 like, you know, who is online, what are we watching currently 25:04.000 --> 25:06.000 together, all of these sorts of things. 25:06.000 --> 25:09.000 But, like, the actual streaming I would do on the quick stack, 25:09.000 --> 25:11.000 maybe with IRO. Yeah. 25:11.000 --> 25:12.000 Thank you. 25:12.000 --> 25:13.000 Thank you. 25:21.000 --> 25:22.000 Hi, thank you. 25:22.000 --> 25:23.000 You're not here. 25:23.000 --> 25:25.000 I wanted to ask you. 25:25.000 --> 25:28.000 So, of course, this project is a very opinionated, 25:28.000 --> 25:32.000 and tightly linked to the economic system, 25:32.000 --> 25:34.000 and especially GTK. 25:34.000 --> 25:37.000 So, I'm wondering, as right now, 25:37.000 --> 25:39.000 the app is usable strictly on Linux, 25:39.000 --> 25:41.000 and you're planning on MacOS. 25:41.000 --> 25:45.000 I was wondering about interface plans that you have, 25:45.000 --> 25:46.000 especially, I don't know, Android, 25:46.000 --> 25:50.000 IOS, to broaden the applicability, 25:50.000 --> 25:54.000 and use a job reflection beyond the Linux, 25:54.000 --> 25:58.000 and specifically, you know, my ecosystem. 25:58.000 --> 26:01.000 I mean, like, GTK works on Android now, 26:01.000 --> 26:02.000 I hear. 26:02.000 --> 26:05.000 No, I mean, like, obviously, having this 26:05.000 --> 26:08.000 app specifically work on more platforms is cool, 26:08.000 --> 26:11.000 but like, there's no reason why you couldn't build 26:11.000 --> 26:13.000 a native client for other platforms, 26:13.000 --> 26:17.000 that called reflection or not, like, that's totally possible. 26:17.000 --> 26:20.000 And in fact, there is already an experiment 26:20.000 --> 26:22.000 to sort of make it work on the web. 26:22.000 --> 26:25.000 We have some experiments running it on the web browser, 26:25.000 --> 26:28.000 and also, I mean, I think what would be nice 26:28.000 --> 26:32.000 to agree on, like, a common way to do text editing, 26:32.000 --> 26:34.000 of course, I think the people from team type 26:34.000 --> 26:36.000 are thinking in that direction. 26:36.000 --> 26:39.000 So, yeah, if there's, like, a common protocol 26:39.000 --> 26:42.000 on how to describe, like, text CRDTs, 26:42.000 --> 26:44.000 then it would be fairly easy 26:44.000 --> 26:47.000 for them to have different ways to speak 26:47.000 --> 26:50.000 to reflection on different platforms. 26:50.000 --> 26:51.000 Yeah. 26:51.000 --> 26:52.000 Yes. 26:52.000 --> 26:53.000 Question here. 26:53.000 --> 26:55.000 Do you think that just matter? 26:55.000 --> 26:56.000 Yes. 26:56.000 --> 26:57.000 I have a question. 26:57.000 --> 26:59.000 So, you're doing, like, a great deal of design 26:59.000 --> 27:01.000 and UX in your work. 27:01.000 --> 27:03.000 And I was one, and at the same time, 27:03.000 --> 27:06.000 you're trying to do new products, new solutions. 27:06.000 --> 27:09.000 I was wondering, couldn't be interesting 27:09.000 --> 27:11.000 in that such people, like you, that do great design, 27:11.000 --> 27:13.000 actually work on solutions that are already 27:13.000 --> 27:15.000 heavily used to make them better, 27:15.000 --> 27:17.000 instead of trying to make new products, 27:17.000 --> 27:20.000 which are going to then fragment more 27:20.000 --> 27:22.000 the open source ecosystem. 27:22.000 --> 27:24.000 What are the existing things? 27:24.000 --> 27:29.000 Well, they might not fit everything you want to do, 27:29.000 --> 27:31.000 but I'm from CRYPAT, for example. 27:31.000 --> 27:34.000 We could do much better in design, 27:34.000 --> 27:36.000 but we don't necessarily always have the scale 27:36.000 --> 27:38.000 and the help of the people that have the scales. 27:38.000 --> 27:41.000 And when people kind of say, 27:41.000 --> 27:44.000 oh, it doesn't look good enough, 27:44.000 --> 27:48.000 then then go to solution that do way less than what we do. 27:48.000 --> 27:52.000 But then are looking nice, which is great. 27:52.000 --> 27:54.000 It's cool that there are new solutions. 27:54.000 --> 27:57.000 But why don't they come to help? 27:57.000 --> 27:59.000 Why don't more people come to help on design 27:59.000 --> 28:01.000 to make our solution better? 28:01.000 --> 28:05.000 Speaking from myself, I don't want to name myself. 28:05.000 --> 28:06.000 Sorry. 28:06.000 --> 28:07.000 No, sorry. 28:07.000 --> 28:08.000 Speaking of a solution designer, 28:08.000 --> 28:10.000 if you use GTK, then I'm all yours. 28:10.000 --> 28:12.000 If not, let's imagine. 28:14.000 --> 28:16.000 Hello, answer. 28:16.000 --> 28:18.000 Is there any doubt about questions? 28:18.000 --> 28:19.000 Well, I'd like to answer. 28:19.000 --> 28:20.000 We have one minute. 28:20.000 --> 28:21.000 Is the last question? 28:21.000 --> 28:24.000 I was wondering to what extent this stack is also 28:24.000 --> 28:27.000 allowed could work on a mesh, right? 28:27.000 --> 28:29.000 Not just peer to peer, but peer to peer to peer to peer. 28:29.000 --> 28:32.000 Like sending messages across multiple hubs. 28:32.000 --> 28:33.000 Is that possible? 28:33.000 --> 28:34.000 Yes. 28:34.000 --> 28:38.000 So this is what I hinted on the post-internet sort of as light. 28:38.000 --> 28:42.000 And I'm going to give a lecture as a talk on that in at 28:42.000 --> 28:46.000 3.30 in the decentralized internet and privacy room. 28:46.000 --> 28:48.000 I think it's about exactly that topic. 28:48.000 --> 28:52.000 And basically showcasing how these things are maybe the same 28:52.000 --> 28:54.000 depending on how we look at it. 28:54.000 --> 28:55.000 Really exciting. 28:55.000 --> 28:57.000 We're staying here, aren't we? 28:57.000 --> 28:58.000 Yeah. 29:02.000 --> 29:03.000 Thanks again. 29:03.000 --> 29:05.000 Thank you very much. 29:05.000 --> 29:06.000 Thanks a lot.