rasguanabana / ytfs

YouTube File System
MIT License
1.1k stars 45 forks source link

Thoughts on migrating from fusepy to easyfuse #20

Open JelteF opened 8 years ago

JelteF commented 8 years ago

Fusepy seems kind of dead, as it has not had any commits in three years, with quite some open issues and pull requests. https://github.com/terencehonles/fusepy llfuse seems to be the new and maintained FUSE interface. https://pythonhosted.org/llfuse/ However, that is quite low level and requires quite some work for easy use. That is why I have created easyfuse, which is a new library building on top of that with a very simple interface. https://jeltef.github.io/easyfuse/dev/

I would like to check out what would be needed to migrate ytfs from fusepy to easyfuse. Is this something you are interested in as well?

rasguanabana commented 8 years ago

I'd be happy to migrate, but in the first place I need to be sure that new interface will be stable, portable and won't limit any features like, for example, xattrs (which might be used in the future and are needed for a filesystem to be working on OSX, as far as I remember). It also would be nice if API was similar to fusepy's, as it feels simple and consistent, and wouldn't take much time to migrate.

Anyway, I'd be happy to test easyfuse with ytfs. I'd like to see how this will work out and give you some help with developing.

JelteF commented 8 years ago

Looking at ytfs.py I think the interface is pretty similar. The big difference is that llfuse uses inodes instead of paths, this makes some stuff quite a bit easier but also a bit less intuitive. But this should be mostly abstracted away by easyfuse.

xattrs are also supported by the llfuse, although there is no default implementation in llfuse at the moment.

The only thing I'm not sure about is the stable API. I think easyfuse should stay pretty stable after I would have ported ytfs, but llfuse still has (small) breaking changes most of the last releases as the maintainer says it is not stable yet. This should be easily fixed by depending on a specific version though.