Three Major Questions
I broke your question into the three areas you were concerned about. While I can't help you write a FUSE file system, I can answer those 3 questions:
- Quoting Wikipedia:In computer programming, unit testing is a software testing method by which individual units of source code, sets of one or more computer program modules together with associated control data, usage procedures, and operating procedures, are tested to determine whether they are fit for use.
In regards to why Python was used: This was done because some, if not all programming languages contain Unit Testing Frameworks. A framework allows a programmer to use something that already exists in order to extend and test their code. Python was the programmer's choice for the libfuse project. See The Hitchhiker's Guide to Python: Testing Your Code.
- From the README.md file:
FUSE (Filesystem in Userspace) is an interface for userspace programs
to export a filesystem to the Linux kernel. The FUSE project consists
of two components: the fuse kernel module (maintained in the regular
kernel repositories) and the libfuse userspace library (maintained in
this repository). libfuse provides the reference implementation for
communicating with the FUSE kernel module.
A FUSE file system is
typically implemented as a standalone application that links with
libfuse. libfuse provides functions to mount the file system, unmount
it, read requests from the kernel, and send responses back. libfuse
offers two APIs: a "high-level", synchronous API, and a "low-level"
asynchronous API. In both cases, incoming requests from the kernel are
passed to the main program using callbacks. When using the high-level
API, the callbacks may work with file names and paths instead of
inodes, and processing of a request finishes when the callback
function returns. When using the low-level API, the callbacks must
work with inodes and responses must be sent explicitly using a
separate set of API functions.
In regards to your question, all the archives should contain the C Files. If what you downloaded did not contain C files, it probably wasn't a FUSE archive.
All linux based source code always comes in the format
.tar.gz is common for Linux. It's short for GZipped Tar Archive. Read
man tar and
man gzip for more information.
.zip is common in Windows. It's short for Zipped File. It's linux equivalent comes as two commands. Read
man zip and
.asc is commonly referred to as the ASCII Checksum. This file is used to verify that the file you downloaded isn't corrupted. To verify this use the GNU Privacy Guard program. See UNIX / Linux: PGP TarBall File Signature Keys Verification for examples.
Regarding FUSE Itself
Please note that you probably don't need to write your own FUSE filesystem, as most distributions contain a FUSE package. Ubuntu is one of those distributions. See the Official Ubuntu Repository Page for FUSE, and install it with
sudo apt-get-update && sudo apt-get install fuse.