WhenFS turns your Google Calendar into a FUSE filesystem. It whimsically supports the following features:
- Create a filesystem out of existing Google Calendars, or create a new one from scratch
- Read, write and create files and directories
- Mount your friends' WhenFS calendar file systems to share files in the most timely way possible
This is what a filesystem containing a single image of the Mona Lisa looks like when uploaded to Google Calendar:
⬇️
The image above is a visual representation of how data can be split up and distributed across hundreds of calendar event descriptions and metadata fields. The entirety of a WhenFS filesystem—files, directories, reads, writes, attributes and more—is based on manipulating these calendar events.
WhenFS is an example of a harder drive—a hard drive we don't want or need.
WhenFS can mount existing WhenFS-ed Google Calendars when given the calendar's ID and ID of the file system recovery calendar event:
WhenFS can transfer a 3 KiB file to Google Calendar in just over 7 seconds—a blistering upload speed of 400 bytes per second:
WhenFS operations start at the FUSE file system layer, facilitated by fuser. The filesystem sits on top of a write-through object cache, which itself sits on top of an abstract data storage interface with swappable calendar API backends.
flowchart TD
A[FUSE filesystem] --> B[Write-through cache]
B --> C[Storage interface]
C --> D[Calendar API]
If you poke around enough, you'll likely run into bugs, edge cases, and completely unimplemented features. There are no plans to fix these.
I used this project as an opportunity to learn about Rust and FUSE file systems. I also think it's hilarious.
Visitors interested in the code should note that this is an irredeemably messy codebase—it's full of hacks, unidiomatic code, and wildly poor design decisions.
However, visitors should also note that that's okay. The best way to learn something new is to try it out for yourself—and creating a mess is a vital part of that process. The page you're on right now is my mess. Now go create yours!
The diagram above took too long to create, so I no longer have the energy to write up a tutorial. If you figure out how to use this, let me know.
On a more serious note: Google Calendar is a wonderful service. Users are strongly advised against utilizing WhenFS for storing anything beyond a minimal amount of data or for purposes outside of educational use.
Abusing a free service is wrong—don't be evil.
Contributions are more than welcome. Note that contributors are subject to a contributor license agreement ("CLA"), which requires that all contributions be accompanied by a lighthearted meme that makes the author chuckle slightly, but not too much.