ZIM Filesystem Fuse Module
- Dominant language
- HTML
- Stars
- 93
- Forks
- 14
- PR merge metrics
- No merged PRs in 30d
Description
This ticket tracks the [Kiwix GSoC 2023 Project](https://www.kiwix.org/en/support-us/code/google-summer-of-code/) **ZIM Filesystem Fuse Module** until code contributions and/or specific tickets requires creating its own dedicated repository (or falls into [zim-tools](https://github.com/openzim/zim-tools)).
**Candidates, contributors**, this ticket is the preferred location to discuss this project. Ask your questions here and mentors (@mgautierfr, @kelson42) shall respond.
**Mandatory reads**:
- https://github.com/kiwix/overview/blob/main/CONTRIBUTING.md
- https://github.com/kiwix/overview/blob/main/CODE_OF_CONDUCT.md
---
## ZIM Filesystem Fuse Module
**Objective**: we need to create a filesystem fuse module that enables access to the content of a ZIM file, allowing users to view entries as files without using zimdump.
**Technologies**: C++, Linux internals, FUSE
**Description**:
Kiwix provides offline access to Wikipedia and other educational content through its ZIM file format. Inspecting ZIM files is very useful for developers and ZIM creators. While the zimdump tool exists, it is not as convenient and easy to use as a filesystem. Therefore, we want to make it easier for users to access the contents of a ZIM file by creating a (read-only) filesystem fuse module.
The ZIM filesystem fuse module will be written in C++ and will use the libzim and FUSE library to enable access to the contents of a ZIM file as if it were a regular (yet read-only) filesystem. The module will allow users to view the ZIM entries as a tree or folders and files, the latter being readable as regular ones. This will make it easier for users to access the content of a ZIM file and will provide a more user-friendly interface for exploring its contents.
**Key Deliverables**:
- A C++ implementation of the ZIM filesystem fuse module.
- Documentation for how to install and use the module.
- Test cases to verify the correct functioning of the module.
Skills required:
- Strong knowledge of C++
- Familiarity with Linux internals, specifically the FUSE library
- Knowledge of filesystems and file access methods.
**Difficulty**: Hard. Expect 350 hours of work.
Contributor guide
Assessment
This issue has not been assessed yet.