initiative.sh is now open source

initiative.sh is now open source

Dec 06, 2022

I'm proud to announce that as of today, initiative.sh is now an open source project!

Project vision

For newcomers coming upon this blog post, initiative.sh is a storytelling aid for RPG game masters. The ultimate project vision is to seamlessly follow the twists and turns of your evolving game session while offering you useful information and suggestions along the way. It cuts friction with a keyboard-first interface that accepts plain English commands, removing the need to switch pages or move from one context to another. All actions are available at all times, rather than hidden behind submenus and page loads.

By tracking the state of your game, the random generators can offer sensible suggestions. If the application knows you're in a dwarvish town, it'll know to generate a pub mostly populated by dwarves. If it knows that it's nighttime in the woods and the players are level 6, a random encounter can be tailored accordingly. The usefulness of most D&D tools wears off in the time spent inputting information that the application could already know.

This state tracking also makes integrations possible, such as changing Spotify playlists as the party moves from one location to another, or using HomeAssistant to dim the lights as the sun sets in-game. And by integrating the content generators and the campaign journal into a single package, there's no risk of randomly generating an NPC that ends up being a recurring character, but forgetting to write down their name.

Technical details

Initiative.sh is written primarily in Rust and compiles to WebAssembly, which runs in-browser. It uses IndexedDB to save its data directly to your browser. The site is 100% static and hosted on Cloudflare Pages, with no server-side components (yet). Once cloud-based components like sync and event hooks begin to be introduced, they will use Cloudflare Workers.

Most of the project is licensed as GPL 3.0, except for the command line frontend, which uses the MIT license.

Why open source the project (now)?

I may do a longer blog post on this in the future, but essentially the project has reached a level of completion where its purpose and design principles are evident to anyone using the app. This was my first blocker.

My second blocker was wanting to complete one more round of code refactoring to make onboarding easier and avoid stepping on contributors' toes as I move code around wholesale. This I didn't get to, but I don't have a clear idea of when I'll have time and I don't want to put off open-sourcing the project any longer than I have.

Thirdly, I held out hope that I could develop this project to produce some passive income on an ongoing basis. Frankly, the activity just isn't there right now to make that a plausible prospect, and bringing the project to a MVP that could plausibly make money involves many more months of work with no reason to believe that uptake would be any greater. So that blocker has been effectively abandoned as well.

Despite that shift in priorities, I continue to invite and deeply appreciate your financial support. I will continue to give of my time as a developer and maintainer, and I am personally invested in building this tool. I started this project because it is something I wanted to use personally, and I'm going to carry on for the same reason. I now invite you to join me on that journey.

How you can participate

If you're interested in contributing to the project, please refer to CONTRIBUTING.md for details and project links.

Enjoy this post?

Buy Mikkel Paulson a set of dice

More from Mikkel Paulson