Home Creators Posts Import Register Favorites Logout

Content

I'm on stage 6 of my 12-step plan for Pathfinder 2 sheets at the moment, but I'm keeping an eye on the horizon, and in particular on stage 8. When I get to it, stage 8 will be a massive change in how my project works.

So far, everything I've been doing has been driven by a makeshift test rig. It includes ugly steps like "just wait 3 seconds here so that the other thing has had time to load" and "pre-load this list of image files".

The output from stage 8 will be a self-contained library for creating character sheets. It will contain all the source code (combined, minified and transpiled with Babel), all the data that will go into making Pathfinder 2e sheets (processed), and all the accompanying stylesheets, pictures and fonts (all minified).

That library can then be plugged into any end system capable of running JavaScript - a web server, or a web browser, or an Electron application, or a mobile app - and give it the capacity to build character sheets.

Essentially it'll mean going from this:

To this:

The heart of this step will be separating compile-time concerns from run-time concerns. Some tasks need to be done in advance, while others need to be done as you build a character sheet from user choices.

This article from a developer working on Go's dependency management system came along at about the right time to help me clarify some thoughts: Our software dependency problem. He points out a growing issue in which software dependencies can grow out of control: my code requires package X, and that requires package Y, and that requires package Z, and so on; before too long I find that I'm using hundreds of dependencies, when I only consciously added one or two.

This came to a head in 2016, when one developer removed a tiny package that was used - mostly indirectly - by thousands of others. Suddenly, large chunks of the internet were broken because of one guy.

And that's an issue for stage 8 because every package that's needed at run-time will need to be vendored in - meaning I'll need to include a copy of it the library. That potentially inflates the size of it (and things like images and fonts mean it'll be pretty big already), which limits its portability. Nobody wants to download a huge archive of stuff.

It also raises questions of legality. What license do I release my library under, if it includes ingredients that use the MIT license, or the GPL? I've tried very hard to make sure Dyslexic Character Sheets is 100% legal, covering the OGL, the policies from Paizo and Wizards, the conditions of using artwork and logos, and so on. My own work is released under the Artistic License 2.0, which is designed to encourage others to use it freely, but this could get complicated.

The answer to this conundrum is simple but complicated: I need to strip my run-time use of dependencies down to the absolute minimum, replacing convenient utility functions with my own dumb equivalent - or trusting a transpiler to do it for me.


Comments

MMdock

That sounds like a hell of a hurdle, but I know you’ve got this. Glad to hear you have a plan for it.