## 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.