Skip to content
/ TPFS Public

Tagged plain file system in which a file can only have multiple tags and nothing more.

License

Notifications You must be signed in to change notification settings

devyn/TPFS

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

73 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

TPFS

TPFS (the Tagged Plain File System) is a revolutionary new file system developed by ΩF:∅ that aims to move beyond the rut of hierarchical file systems through a purely tag based model. There are only two objects in TPFS: files and tags. They share a many-to-many relationship; files can have many different tags, and tags can have many different files. It is designed to be quick to look up in both directions.

TPFS is simple, but powerful. Tags can store any string data and are not restricted in size. They can be looked up quickly, through SHA-256 hashing and a B-tree index. While TPFS is not designed to be the fastest or the most reliable, it should be enough to satisfy most users. The loss is a small price to pay for such an innovative filesystem.

The reference implementation of TPFS is written in Haskell. Lots of help is currently needed, but please note that the challenges are often not for the faint of heart. It is recommended to be quite comfortable with Haskell and the barebones basics of filesystems before attempting this project.

That said, if you're interested, here's a rough idea of what needs to be done:

  • Block allocation.
  • A B-Tree implementation in Haskell using the Device API. This will be used for the file and tag indexes.
  • Implementation of the low level part of System.TPFS.Objects. This, of course, is dependent on the B-Tree implementation.
  • Design of the high level access API for the Haskell implementation.
  • A FUSE driver, probably using HFuse if it works. The FUSE driver will need to be very carefully planned; mapping TPFS to the conventional POSIX system in an obvious manner won't be easy.

About

Tagged plain file system in which a file can only have multiple tags and nothing more.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published