===== Finish porting FUSE to FreeBSD ===== %%FreeBSD%% fuse kernel module was developed during Google Summer of Code 2005. Sadly it is not actively maintained since February 2007. Since than two forks of %%FreeBSD%% version where created: macfuse for Mac OS X and %%OpenSolaris%% fork. Nowadays fuse is not only actively used by desktop applications there are production quality server file systems built on top of fuse. ==== Deliverables ==== * Updated fuse port with stability improvements * New fuse file systems * Fusefs regression test suite, formal results of tests with tools listed below * Wiki page with relevant FUSE status ==== Testing tools ==== * fsx: io and mmap correctness tests * pjdfstest, tmpfs tests: conformance to standards, stability tests * blogbench and dbench: stress, stability and performance tests ==== File systems for testing ==== * ntfs-3g: known to have locking issues on %%FreeBSD%% * sshfs: reported to incorrectly handle inode numbers, network file system * glusterfs: production grade distributed file system, no %%FreeBSD%% port * ext2-fuse: can be used for testing, reuses source code from linux kernel, no %%FreeBSD%% port. (secondary importance) * smbnetfs: important because kernel level smbfs is not actively maintained and giant locked. (secondary importance) ==== Milestones ==== Weeks 1-3: Move to macfuse code base. Extensively test individual changes. Weeks 4-7: Check and if necessary fix architectural issues documented in fuse-kmod: attribute and name cache, large file support, missing inode numbers, fix /dev/fuse cloning/creation, etc. Week 8-9: Reproduce and fix bugs known for actively used file systems. Week 10-11: Test network file systems mentioned above: sshfs, smbnetfs, glusterfs. Port gluster, unofficial port for older release exists. Week 12-13: Test rest of fusefs ports or use time to finish incomplete tasks.