Open sourcing MonsterWriter, piece by piece | MonsterWriter
AnnouncementWe are open sourcing MonsterWriter, piece by piece<br>Two components are public already. The rest follow, one at a time.<br>I believe in open source, and AI has made me believe in it more, not less. Any decent model can already reproduce the rough shape of this code from a description. I would much rather someone used the original than had an AI copy it, because then there is at least a chance that a bug fix finds its way back to me.<br>There is also a habit behind this that I call Minimize Code, Maximize Use Cases : you keep scanning your own code for the generic pattern hiding inside the specific one, and pull it out as a component that stands on its own. I wrote the idea up in a short blog post if you want the longer version.<br>Which is why MonsterWriter, an academic writing tool I have built solo since 2017, contains so little that is actually about academic writing. The rest is general purpose infrastructure: the backend, the form layer, the editor internals. Worth more to you as a dependency than to me as a moat, so it goes out one component at a time.
Available now<br>Both are MIT licensed and usable outside MonsterWriter today.<br>LinkedRecords<br>Open source<br>The backend MonsterWriter runs on<br>A backend-as-a-service your single-page app talks to directly, with no backend code. Authorization is not written in server code, it is asserted as data: subject–predicate–object facts stored in the same triple store you query your data with. Real-time collaboration is built in. Self-hostable, so you can run your own.<br>wolfoo2931/linkedrecordslinkedrecords.comMIT licensed
Declarative Forms<br>Open source<br>Forms as a function call, not a component tree<br>Ask the user for an object the way prompt() asks for a string. You await a function and get data back: no mounting, no form state, no framework dependency. Ten field kinds, stacked dialogs, live descriptors where options and visibility depend on the current values, and async selects that load from the server.<br>wolfoo2931/declarative-formsMIT licensed
Coming next<br>These are the pieces I can already name. No dates, and no fixed order: each one is announced here when it can stand on its own, not before.<br>HTML Razer<br>Planned<br>A grammar for your HTML, enforced<br>You describe the grammar your HTML is supposed to follow, and the library normalizes whatever HTML you throw at it until it conforms. It repairs misalignments, applies the rules you declared, and inserts missing markup where the grammar calls for it. All of it declarative: you describe the shape you want, not the traversal that gets you there.
Presspack<br>Planned<br>Templates that declare what they need<br>A specification for LaTeX and HTML template formats. A template declares the inputs it needs, and Presspack fills it in once those inputs are supplied. It pairs directly with Declarative Forms, because the inputs a template declares can be handed straight to the form layer and asked for.
The editor<br>Planned<br>Block based, collaborative, academic<br>The editor MonsterWriter is built on: block based, collaborative, and made for academic writing, with footnotes, references and cross references. The whole thing is pluggable and extendable. It is being refactored now to work outside the app, which makes it the largest piece on this list.
File tree<br>Planned<br>Tree structures backed by LinkedRecords<br>The file tree used in the LaTeX workspace. It renders any tree structure and stores it directly in LinkedRecords, so persistence, sharing and permissions come from the backend instead of from code you write around it.
And others<br>Planned<br>Not identified yet<br>More will surface as the code keeps getting scanned for the next generic pattern. If a piece of the stack would be useful to you, saying so is the fastest way to move it up the list.
What this does not mean<br>MonsterWriter the product stays a paid app. Nothing changes for people already using it, and nothing is being deprecated. Opening the components is additive, and it is also the groundwork for where MonsterWriter is heading: Bring Your Own Backend , where you run the backend yourself and your documents never leave your infrastructure. That promise means nothing unless you can read and build that backend without me.<br>If you want to follow along, watch the repositories. New components will be announced there and listed on this page as they land.
Links<br>github.com/wolfoo2931/linkedrecords· LinkedRecords<br>github.com/wolfoo2931/declarative-forms· Declarative Forms<br>The story behind the stack· how this got built<br>info@monsterwriter.app· Get in touch