April 7, 2010

Introducing Funion

Filed under: Programming — Tags: , — Nathan @ 1:41 pm

I defended my dissertation on March 26. So, I guess that means I’m Dr. Nathan now. I’m not sure what normal people do the week after their defense, but I’m doing sprint after sprint on personal projects. I start work in the middle of July and I hear that this company is known as a black hole. There’s just too many cool things internally to learn so I probably won’t have much time for personal projects for a good while. Thus, the first of my projects that’s ready for the world: Funion.

Funion

Funion (Fuse Union /fʌn:njən/) is a Haskell program that uses the HFuse binding to the FUSE library. It presents a filesystem which shows a unioned view of multiple directories.

Example

Consider the case where you have the following two directories, A and B.




But, A and B represent two instances of some common hierarchical scheme. So, unioning A and B, we get:

Get Funion

You can get Funion two ways: GitHub and Hackage

If you have cabal, you can just do:


  cabal install funion


Installation

Funion requires: *nix, FUSE, and GHC (preferably the Haskell Platform).

If you have Ubuntu, install the Haskell Platform. Then, to install FUSE:


  sudo apt-get install libfuse-dev

Now, you can just cabal install funion.

Usage

Create a mountpoint. Then use funion to union several dirs into that mountpoint:


  mkdir mountpoint
  funion mountpoint /A /B

where /A and /B are teh directories to union.

Upcoming features

Currently Funion is readonly. The next version will allow file editing, and possibly file creation. If a file is created it will have a specific file system to be placed in. Or perhaps, there could be a round-robin file-writing scheme.

There is no logging as of now. The next version will have a logging mode.

FunionD: A daemon which will allow you to mount your funioned directories upon boot.

9,882 Comments

No comments yet.

RSS feed for comments on this post.

Sorry, the comment form is closed at this time.


  • I'm a software engineer at Google
  • I'm from Alabama
  • I live in San Francisco
  • I like to work on ridiculous things
  • I'm currently learning German, Scala, and Computer Vision
  • This book referred to JavaScript I wrote when I was 15.