Hi — I'm P.H. Lobato (Pedro Henrique Lobato, for anyone wondering), and this is Qenna Writer: the project you've already seen up to this point.
Since I decided to give this project away, I've gotten the same question over and over: why free?
It's a fair one. Look at most creative-writing software out there and the majority of it is paid — subscriptions, premium features, or one-time purchases that run high enough to sting.
I started building this — back then it was called Mira Writing — as a personal alternative. I hated splitting my work across different programs and documents just to write. It was exhausting, and on a big project with a lot of moving parts, it got worse.
I'd already tried what existed in the space, and even the good ones always had a catch. The free tools tended to feel dated and unappealing. The paid ones were expensive and crippled in their free tiers — I've personally seen dark mode gated behind a paywall.
I found that unacceptable.
So, on my own, I started a project: a writing tool that would give an author everything — or as close to everything as possible — a book needs, without asking for a dime.
Writing a good story should require creativity from you. Nothing else.
The first version was built in JSX, on Electron, React, TipTap, ProseMirror. I was a writer with almost no programming background, and I gambled anyway — AI agents, a lot of research, and several afternoons lost trying to make Focus Mode behave. That version came into the world and held up for a while, until it ran into a wall: TipTap.
It wasn't a real text engine — not one built to handle the volume of text a tool with this ambition actually needs — so performance was a problem from day one. When that problem hit its ceiling, I had to start over.
Somewhere in the middle of building that first version, a second disaster happened — one that had nothing to do with TipTap.
I wasn't a programmer when I started this (I still don't really consider myself one), so I didn't know how to use GitHub, set up a repository, or make a commit. The entire project lived in exactly one place: my SSD, backed up to the cloud only rarely.
One day, that SSD decided its time had come. And the way a plane goes down when the pilot does, Mira Writing went down with it.
Months of near-daily work, gone. The app was in a solid, working state by then — solid for what it was, at least — and then it just wasn't there anymore. I looked into paying for data recovery, but it wasn't financially realistic. For about ten minutes, I seriously considered giving up.
Then I considered reverse-engineering my own app from the compiled build, to somehow claw the source back out of it. If I wasn't skilled enough to use GitHub, though, I definitely wasn't skilled enough for that — everything I read on the subject looked like hieroglyphs, and every hour of research just made me angrier.
Then, one afternoon, it clicked: the SSD itself was the problem. As long as there was any chance — however remote, however impossible — of recovering the code off it, the project wasn't going anywhere. So, in what I'd call a great display of emotional control, I took a hammer to the dead drive and decided, right there, not just to keep going, but to make the whole thing better.
I rebuilt it out of scraps — code I'd once sent to AI agents to review for bugs, forgotten backups, loose fragments here and there. I'd guess I recovered about half the app that way. The rest — the majority of it — had to be built from zero. Not just rebuilt: improved. I fixed old bugs, reworked UI I'd never gotten around to fixing, and added things that didn't exist before (the Board started here).
And before I knew it, Mira Writing had survived. I also knew how to use GitHub by then. I became a machine about it.
That was the first step toward Qenna. Mira Writing went into a full rebuild in C++ and Qt6 — this time focused not on matching what the first version already did well, but on fixing what it lacked: real text performance.
It worked.
With every version the app took more shape, more freedom, got better. I had ideas for new features and built them, until this stopped being a remake of the old JSX app and became a complete rebuild — and a far better one.
That's the point where Mira Writing got renamed. Turns out "Mira" was a lost cause — there are millions of projects across every field with that name. So the app became Qiyva.
Which I swore was completely original. The name came from a character in one of my own sci-fi projects: Qiyva Jarhmud.
It wasn't. Turns out there's an app called Quilva that sounds close enough to be a problem.
Back to the drawing board. After a lot of research and back-and-forth, three names made the shortlist:
Personally, I thought Qelis was the best of the three. But in a democratic vote, Qenna won — and since the voice of the people is the voice of God, that settled it.
And here we are.
Qenna Writer today is a creative writing app built to give an author every tool a book could need — not just matching what other tools lock behind a subscription, but going well past that.
And, as covered on the Source page: why free? Honestly, I never planned to release Qenna at all. It was always a personal project. At some point I don't fully remember, I sent it to a few friends to test — especially our most loyal beta reader, A.C.S. Freitas, who pushed me to actually ship it. I'm an easily-persuaded guy, so I did.
And why open? A few reasons, but three stand out:
There's a fuller version of this argument on the Why it's free page.
I'm leaving the source for the very first version of Mira Writing up, in case anyone wants to look.
A reminder: that version is fully discontinued, and I don't recommend using it — if something breaks, it won't get fixed. But if you're curious, feel free.
It's also entirely in Portuguese (Brazil). I never translated it, because at the time I didn't know I needed to plan for i18n from the start. On top of that, the code was a complete, disorganized mess — don't ask me how I understood any of it back then.
npm install npm run dev
It's an Electron + React app built with Vite, so you'll need Node.js installed first. npm install pulls the dependencies, then npm run dev starts the Vite dev server and the Electron shell together.
That's it. Thank you for reading this far and getting to know Qenna's history. I hope you enjoy this app as much as I've enjoyed building it — now go write good stories.With love, — P.H. Lobato, Guardian of the Lands of Qenna