views:

50

answers:

2

I would like to implement a virtual filesystem using FUSE under Linux and Mac OS X. I have mainly worked in Java and .NET/C#, but also familiar with Python and do write small utilities/shell scripts in Python. Writing is C/C++ is something that I would try to avoid if possible mainly because of lack of experience in the team.

I see from the FUSE bindings site that there are many binding towards different languages, but I'm not sure which one is the most mature. I have a development team around me which also have worked most in Java and C#. On top of that, the environment must have implementations of common cryptographic algorithm such as Rijndael/AES and RSA.

I've considered Mono since we have a lot of client code in C# already, but the binding haven't been updated for a while and I'm a bit concerned about deploying Mono on Mac OS X. Python is an option, but the team isn't too used to Python syntax although I know it. Java is an option, but I concerned about the bindings which seems to be forked without to much progress.

A last option which I have considered is Vala which has FUSE binding, but the documentation and examples are missing. I know that Vala isn't a garbage collected language, but I still consider it an option. Not sure how easy it is to deploy GObject on Mac OS X.

A: 

Consider creating your own binding using a tool like SWIG versus using a pre-compiled (and possibly old) binding. This approach gives you a few advantages:

  1. You can use any language you mentioned (With the possible exception of Vala. I'm not familiar with Vala).
  2. You know your binding is up-to-date and works with your version of the FUSE API.
  3. Most importantly, you gain experience with a wrapper generator which is extremely valuable if you require bindings to any other C/C++ API in the future.

Creating your own binding will certainly take longer, but may be worth it in the long run. As a shortcut, the FUSE bindings page includes SWIG bindings. They might provide a good starting point for compiling your own binding using SWIG.

Corbin March
A: 

I am also developing fuse fs. I am using python. As for me it is better for this purpose than some static typed language (c# or java) because there is problems with debugging fuse filesystems. You don't have access to stdin/stdout/stderr therefore after mounting you can't see even exceptions. Python is dynamic and it is easier manipulate with tracebacks, exceptions, execution frames, etc in it.

Mykola Kharechko
Which Python implementation do you use? There's a Google Code project and the FusePython.
tronda
@tronda: http://pypi.python.org/pypi/fuse-python/0.2
Mykola Kharechko