 Okay, thank you. So hi everyone, this is talking KOFuse and it's basically I'm going to describe what it is why it should exist and what we're trying in the future. My name's Alex, I'm one of the developers of KOFuse. I've been developing with it for about maybe just a bit more than two years now. Okay, next slide. Okay, so to motivate the reason why it should exist, I'm just going to give you an example. So first, just imagine a user that wants to view documents, photos or videos, you know, on a network share. They didn't even pass it to enter it, but it's not on the local file system. We'll use Dolphin just to look at the files there and we'll use it to kind of open any files that we want. So we're going to consider three specific scenarios. The first one is we want to open a photo using Gwenview. The second one is opening a video using VLC and the third one is opening a document using a Libre Office Writer. So first, let's discuss what KO is in the first place. So KO is just a framework that allows you to access files and data that might not be on the local file system. So for example, you can access resources over NTP, SMB, SFTP, etc. And for the developer, it's also quite useful because it fits nicely into the signal slot mechanism. And so, you know, you can send requests to network resources that don't block. It does this by just launching a process to do the hard work and then it gets back to you once it's done. And you can see a code snippet here of how easy it is to use. So if you think of using it, please do. It's quite useful. So let's consider first scenario. So you've got your stuff open in Dolphin and you want to open an image. And so you're going to use it using Gwenview. So Gwenview is a KDE program and it supports KO. So what would happen? So using Dolphin, you might select that image and open it, either with the context menu or it might already be a default program. At this point, Dolphin will call some code in KO, which is going to decide what URL it's going to pass. So it'll be an SMB URL. And KO will read the desktop file of Gwenview. And it'll say, okay, actually, Gwenview claims that it understands KO URLs. So, okay, we'll just pass it to the URL. Fair enough. Good. So everything's working as intended, perfectly. And so now Gwenview is going to open it. It won't block. It won't freeze. It will open it nice. And you'll see your image. Okay, let's consider next scenario. So now you want to view a video with VLC. I mean, why would you not use VLC? It's an amazing program. It supports all sorts of codecs, et cetera. So no surprise that you use it. But it doesn't support KO. But it does support the SMB protocol independently. So similarly, you select the video to open. KO again reads the desktop files. And it sees that VLC doesn't claim to support KO, but it does claim to support that protocol, the SMB protocol. So, okay, fine, we'll just pass you the URL. If you claim to know it, you know it. But remember, the share is password protected. And so maybe when we opened the resource in Dolphin, we already entered our password so that KO can remember it. And so as he was told in KWallet, or K password server, both basically. But VLC has no access to it. So when you open the video, you're going to be asked to put in the password again. That might be really cumbersome. You don't want to do it every time. Well, at least the first time it happens. It's not really that nice. So not perfect here. So cumbersome, basically, we want to avoid this. The next is you want to view a document and leave it to the office writer. And again, the most popular document viewer for Linux. But it doesn't support neither KO or the SMB protocol. So again, you go to open it. KO has some code. It's looking at your desktop files and understands it has no clue how to open an SMB URL. At this point, it's not really a good idea to send the SMB URL or film spectacularly. So now, KO has kind of like a stopgap solution called KOexec. So it will be used to download the file on the local file system. So it's going to download that whole document on the local file system. Once that's completed, KO went past the URL to that new local file to LibreOfficeWriter. And so, well, obviously LibreOfficeWriter knows how to open a file on the local file system. So we're good to go from that point of view. But this isn't perfect because if I save a file on a local file system, how does it get to the actual network share? Well, KOexec actually monitors the changes to the file and then has to upload them. Okay, so I mean, is that all the solution? Well, for a start, you have to wait for the whole download to finish, which, okay, the document might be okay. But for a video, is that really satisfactory? Are you going to wait for a whole movie that's gigabytes in size to download before you even view it? Maybe you don't want to watch the credit, for example. So not good for large files. KOexec has some still long-standing bugs. So every time you save the file, event asked, again, if you want to reupload it, which is a bit confusing for a user. And there are more subtle bugs, which you can see on this bug ID. So it's not a perfect solution by any means. So if we switch from KWallet to Secret Service API, and assuming all the other applications use a Secret Service API, then maybe the password problem wouldn't be too bad. But we're not there yet. Although there is progress to get there. But again, sometimes maybe you only want to use the password for a session. You don't save it permanently in Secret Service or KWallet. So that's what KPassword server does quite well. So again, you still kind of have the problem. Okay, well, what's Fuse? Why is this? How will this help us? So Fuse like it is a kernel module, which allows you to make user space file systems. So you can see an example here. So let's say that the orange app or the yellow application here is LibreOffice writer, and green is what is now I'm going to call KAFuse. Then what happens is the application, if it's interacting with the KAFuse file system, it's going to go to the kernel VFS. And the kernel VFS decides which file system is going to deal with it. In this case, it's Fuse. And so the Fuse kernel module is going to figure out, well, wait a minute, which application is going to answer these requests. So the blue is the client, and the green is the server. And so KAFuse is the server. And it receives requests from the Fuse driver, which is talking on behalf of the application. And it simply got to reply to those requests. So what is KAFuse itself? So it is that green application we're talking about earlier. And basically it allows KAFuse resources to be accessible to all applications. So basically what happens is that simply KAFuse is a mapping between what Fuse requests are and KAFuse requests. So for example, an open request followed by some read requests and close is equivalent to the snippet I showed you earlier of KAO get, for example. And KAFuse simply manages that mapping and tries to keep it as seamless as possible for you. And to communicate with a daemon, so to mount a resource, you can simply use a debus request that can be seen here. You can use it on bash, for example, if you want in your terminal. KAO also has some changes to, so for you to seem as to use KAFuse, KAO also makes some changes, which I'll go into in a moment. So again, consider the three scenarios. I'm going to assume that we have these prerequisites, which I'm going to skip over, but I basically already discussed them. But here's the important three bullet points. So the KAO has a patch which should determine if we should pass KAO URL or KAO Fuse URL. So if the application understands KAO, pass URL as is, that's the ideal. If it does understand protocol, but it doesn't contain the user. So if the user doesn't contain the user, we're going to assume that it's not related to a user. So there is no, there is no chance for there to be a password that will block us. Well, if that's the case, and we just pass the URL as is. If there is a user, then there's probably a password. And so we're going to just pass the KAO Fuse URL, because KAO Fuse can talk to a K password server. And so we don't have the password problem anymore. So I'm going to quickly go through here. Let's not just play out like this. Used often to select an image to view with Grandview. And, you know, it should work perfectly because KAO knows that it understands the URL. So nothing's changed. Good. VLC. It doesn't understand KAO. But we know that the share is password protected. So we're still going to pass the KAO Fuse URL. We've avoided the password problem. And with LibreOffice Writer, it doesn't understand anything. And so this is a perfect candidate for KAO Fuse URL. So why is this any better? Well, for a start, for many protocols, we're not all. It's better for large files. We can do random access if we need to. So you can view video nicely. Again, we skip over the password problem as discussed. And it avoids the other pitfalls of KAO execs. So you don't have to ask for a reconformation of uploading. We manage in the background when to reupload the file. There's also a cool feature where you can try it now probably if you have KAO Fuse installed, open Dolphin, open a terminal, go to external resource. And the terminal will actually seamlessly go to the local mounted location. So that's quite cool. There's still some things here, you can go to extra trackers, or you can think about them yourself. But there's some things that we need to still improve. But now it's definitely a workable solution. Future work. So should we pull it to other platforms? Hopefully. But the main thing that we're interested in is exfas and tests integration. This is a huge test suite that is used by most file systems. And we believe it will allow better testing of KAO Fuse and more and even better, allows testing of KAO slaves. So if you looked at the test directory for all KAO extras, it's quite empty. Hopefully with exfas test integration, this will be coming into light. So boomer Tarty is working on that for Google Summer Code 2021. So please keep your eyes peeled. I've gone a bit faster, but I think I've just now fitted it in. So thank you all for listening. And any questions, please come by the KDE-FM channel. We'll be glad to answer or just email it. Thanks.