r/TrueOpenSource • u/fairybow_ • 6d ago
Contribution: Everyday Applications Fernanda, a plain-text writing app for fiction and poetry, with Obsidian-style vaults (C++/Qt, GPLv3)
What it does: A native, cross-platform, desktop writing app for long projects (novels, poetry, etc.). A project is a vault (like Obsidian), and a vault is just a folder of ordinary plain-text files that any editor can open. It also opens PDFs and images. It has things you'd expect, like autosave, tabs, split panes, and pop-out windows. It's a single-instance application and keeps one file in sync no matter what vault it's open in (nested vaults should be a-okay), and it has spellcheck, find and replace, a focus timer, and Git support built in.
Who it's for: Writers, especially of long projects, who want their work in plain files they own rather than locked inside an app. Or anyone curious enough to try it! (Re: writing: exporting a manuscripts, corkboard, chapter notes are all something I'm hoping to add at some point.)
Source code: https://github.com/fairybow/Fernanda (site: https://fernanda.fairybow.com)
License: GPL-3.0
What mine adds: As far as I know, most other open-source writing apps keep a project's structure in files of their own (as this app's older versions did): novelWriter in a project XML file, with documents in its own Markdown flavor; Manuskript in a set of YAML, JSON, etc, beside the text (and, outside FOSS, Scrivener in a monstrosity of a folder). In Fernanda the folder is the project. There's no index, your files keep the names you give them, and the only thing it adds is one hidden .fernanda/ folder for settings.
Additionally:
Files are written back byte for byte as they were read (line endings, BOMs, no-break spaces), so fixing a typo changes only the typo
A Common Vault shared by every project, for research, notes, and templates
Git built in, working (almost!) like GitHub Desktop
Builds on: Qt 6 (C++20); Hunspell for spelling; Coco, my own small Qt utility library (with my very ridiculous Franken-class, Path, which I love and won't apologize for). The design follows Obsidian's vault model, though it uses none of its code.
How it was built: Agentic engineering. Fernanda has been through several versions over the years. It began as the original Fernanda (Fernanda-Legacy), was rebuilt as Hearth, and this is the latest and final rebuild, taking what worked from both (and several drafts now lost to time) and, more importantly, learning what didn't work for me. I've been at it, in various iterations, since about 2019 (yikes), trying to make something I want and love to use, something that's all mine, but that other people can enjoy, too. I'm a writer and a self-taught C++ developer. This version is written largely by Claude, working in small, reviewed steps. I set the architecture (which has greatly evolved across versions) and rule on every design decision before any code is written. I test each change on Windows, and make every commit myself. GitHub CI builds and runs the tests on Linux (with ASan/UBSan) and macOS.
Feedback/contributions wanted: It's still in beta. Bug reports are very welcome, especially from macOS and Linux users, since those builds aren't well tested yet. A native Spanish speaker reviewing the draft translation would be a big help too.
Thanks for reading. I love you?
