Dev Log Week 2025-35: Framework Fatigue

Before diving into the development update, I want to bring your attention to the vote for the name of the upcoming preview game world. Please head over to this thread with the poll, cast your vote and then return to enjoy the devlog :wink:

As mentioned last week, I am working on several “meta features” in preparation for the preview game world, namely in-game change-logs, a comprehensive feature/configuration overview and better way to restrict access to game worlds (like internal, exclusive or…well…preview game worlds).

While these feature sound trivial (which they are, technically), I use them as a first step towards the long-term transition to what I call the “Generation 3 framework”: When AirlineSim started in the early 2000s, the state of the art was “action-based frameworks”. You follow a link or submit a form and a new page opens. That’s what I call “Generation 1” and you’ll find it in old features like staff management or service profiles.

Shortly after, and with the rise of JavaScript in modern browsers, “component-based frameworks” started to pop up. You still have server-rendered pages, but many interactions would only update fragments of the page instead of reloading everything. You’ll find this “Generation 2 framework” in most “current” features of the game, including flight planning, fleet management or cabin configurations.

But for a while now, the leading paradigm has been “client-based”: All UI interactions happen on the client (in the user’s browser) and communication with the server is limited almost exclusively to data transfers (fetch information or issue commands) via an API. This setup has many advantages (and some disadvantages, of course) compared to the previous ones. In particular, it makes building rich, interactive UIs a lot easier, which is particularly useful when building a game that should actually look and feel like, well, a game.

This “Generation 3 framework” is what I am working towards right now, and the in-game change-logs in particular are my “pathfinder” here: I need to build the whole setup from scratch, including a new and more modern application setup on the server-side (that’s what the Spring Cleaning was about, among other things), the foundation for a standardised API, auto-generation API-specification and documentation, a semi-automatic pipeline to build the API client that’ll talk to the server, an internationalisation pipeline for the client-side framework (that handles extracting strings for translation, loading them into the translation management system, compiling translated messages etc.), a general build and test setup for client-side code and last but not least a component framework used to build and style the actual, visible UI. All of these components and more are needed even for a trivial thing like “rendering release notes in a popup after clicking the version number in the footer”. Hence me using this as a “pathfinder”.

The biggest challenge here is that I have sworn myself to avoid “massive, behind-the-scenes updates that take months and years to build” at all costs and practice continuous delivery, with all features, even big ones, being build continuously and on the same code base as “production”. While this works fairly well for “regular features” (just hide them behind a feature flag), it’s a very complex affair for something like a UI overhaul, where you can’t easily do partial updates. Or rather: Partial updates are complicated to pull of.

As such, finding the right approach and the fitting 3rd party frameworks to enable it, is difficult. And while I feel like I am getting somewhere, I am seriously tired of “framework stuff” and can’t wait to get back to actual feature development. Especially because I am just no designer and all that frontend UI/UX stuff is Greek to me :smiley:

2 Likes