Project Overview: Polishing KIOFuse
KIOSlaves are a powerful feature within the KIO framework, allowing KIO-aware applications such as Dolphin to interact with services out of the local filesystem over URLs such as fish:// and gdrive:/. However, KIO-unaware applications are unable to interact seamlessly with KIO Slaves. For example, editing a file in gdrive:/ in LibreOffice will not save changes to your Google Drive. One potential solution is to make use of FUSE, which is an interface provided by the Linux kernel, which allows userspace processes to provide a filesystem which can be mounted and accessed by regular applications. KIOFuse is a project by Fabian Vogt that allows the possibility to mount KIO filesystems in the local system; therefore exposing them to POSIX-compliant applications such as Firefox and LibreOffice. KIOFuse is a feature that has been requested many times before, case in point this very active 15 year-old bugzilla bug report and several reddit threads (1, 2, 3, 4).
This project intends to polish KIOFuse such that it is ready to be a KDE project. In particular, I’ll be focusing on the following four broad goals:
• Improving compatibility with KDE and non-KDE applications by extending and improving supported filesystem operations.
• Improving KIO Slave support.
• Performance and usability improvements.
• Adding a KDE Daemon module to allow the management of KIOFuse mounts and the translation of KIO URLs to their local path equivalents.
Our development workflow is that I have a fork of the KIOFuse repo, and changes are done on branches. When the branch is ready to be reviewed a merge request is opened upstream.. All my merge requests can be found here.
I also have a blog which gives more details about the technical challenges that I have faced (and hopefully solved) in the project. The blog can be found here.
• Map KIO job errors to fuse_reply_err Merged
• Install own signal handlers Merged
• Change of password support Merged
• 32 bit support Merged
• Disable writeback caching Merged
• Fix broken links kdeconnect - fixed upstream.
• Deal with slaves that don't support stat - it was decided that would be too much hassle for little gain. Slaves that don't support stat cannot be mounted.
• Optimising lookup function Merged
• Kill KIO::put job if the cache got written to. Merged
• Changing parent node to Invalid instead of DeletedRoot. Merged
• Refresh attributes of files/dirs and children of dirs after a while. In Review
• Verify that write access works before writing into the cache. In Review
• Look into using KIO::read/KIO::write if possible In Review
• Deal with invalid size reporting slaves (http/gdrive) - unfortunately this bug hasn't been managed to be resolved as of yet.
• MTP is severely broken on KIOFuse. Whilst not part of the proposal, this was noticed during the GSoC period and needs to be rectified.
• remoteUrl() does not seem to always correctly convert from the local path to a remote URL. This was noticed during the GSoC period and needs to be rectified.
Name: Alexander Saoutkin
Mentors: Fabian Vogt, Chinmoy
IRC: feverfew (#kde-fm freenode)