Engineering Office Report #2 – v3.0.0 Release and BFMS Roadmap

January 12, 2024

In my last report, I shared key objectives and a high level roadmap for the Bravo Fleet Engineering Office in 2024. Today, I am pleased to begin delivering on these with the release of BFMS v3.0.0. This release, which just went live today, included over 12,000 lines of new code and marks the first in a series of releases that will incrementally deliver a better experience, core systems updates and eventually all-new systems.

BFMS v3.0.0 Release Overview

In BFMS v3.0.0, the most obvious improvement is new frontends for all of the Lore Office and Gaming Office that formerly required members to use the cumbersome backend. This includes character, command and mission management, as well as submission of gaming activity. Accompanying these additions are a series of quality-of-life improvements for characters and commands including a new workflow for attaching characters to another member’s command, a new member-centric display for contributing authors on a multi-author command, a simplified form for command proposals, adjustments to fields within character bios, etc.

BFMS v3.0.0 also makes a number of under the hood improvements which, while not as visible to the end user, are necessary to the long-term success of BFMS. This release includes significant overhauls of several performance-intensive pages, most notably reducing the render time of the member profile page by up to 40% and cutting database load by up to 85%, as well as improvements to the dashboard, awards pages, command pages, etc. In support of these improvements and our future ambitions, this release also introduces both a new data access layer and major optimizations to the WordPress core, significantly improving cache performance and introducing an Active Record pattern to allow for both more performant pages and more efficient development. Additionally, new libraries have been built to support efficient and scalable development going forward, including a router, an MVC, and a wrapper that generates forms based on custom post type metadata.

To support the development efforts, significant changes were made to the way Bravo Fleet manages development and releases. This includes version control, automations to seed the development environment with live production data, and a wide range of new telemetry collection mechanisms and testing tools within the development environment. We also reduced our storage footprint by over 60%, which was necessary to enable development environment seeding and to ensure that Bravo Fleet has room to grow without significantly increasing our infrastructure costs.

While this summary hits many of the high lines in the release, a full set of patch notes can be found at the end of this report.

BFMS Release Roadmap

Now that we have the first release out the door, I am pleased to share a preliminary roadmap for the next few releases coming later this year:

  1. BFMS v3.0.1, target for early spring, will replace the remainder of the frontends, including most notably competition submissions and management, as well as all other OCS, JAG and Operations workflows, as well as some additional quality-of-life improvements.
  2. BMFS v3.1, targeted for late spring, will introduce an all-new system that we’ve been hard at work designing and tuning over recent months. We’re not ready to share the details just yet, but more info will be coming shortly in the Fleet Command Report.
  3. BFMS v3.2, targeted for a couple releases in the summer and fall, will make major additions to several core systems, including improving collaborative writing, adding native support for different competition types, and streamlining the new member join process.

Note that, as with all software development, this roadmap is tentative and subject to change. Still, as transparency is a key objective of the Engineering Office, I wanted to pull back the covers and offer a glimpse at our current path.

BFMS v3.0.0 Patch Notes

Commands

  1. Command proposals can now be submitted through a frontend interface.
  2. The number of fields required for a command proposal has been reduced.
  3. Active commands can now be managed through a frontend interface.
  4. Missions can now be managed through a frontend interface.
  5. Characters from other members that have been proposed to your commands will now show up in your command panel, highlighting that they are awaiting action.
  6. Story post dates now show in the list of stories.
  7. Story in-character date and location no longer show if empty.
  8. The command page now includes a section listing participating authors if the command is composed of characters belonging to multiple members.
  9. The user profile page now includes a commands section, replacing the old writing section and adding some quality of life features to the display.
  10. The command management form no longer erroneously includes a task force picker.
  11. The mission management form no longer includes archived commands as options in the associated command picker.
  12. The story panel no longer lists draft stories for RPGs where a member is neither an author nor a game manager.
  13. The story panel has been updated to allow game managers for an RPG to edit posts regardless of whether or not they are an author of the post.
  14. Site navigation now differentiates your commands from other commands, lists a member’s primary command first, and lists the rest in alphabetical order.
  15. Multiple display issues were resolved on the command show page relating to archived commands.
  16. The backend interfaces for commands, missions and stories have been retired, except as it relates to administration by the Lore Office.

Characters

  1. Characters can now be managed through a frontend interface, including character’s on a member’s own command and characters submitted to an RPG or as a guest character on another member’s command.
  2. A new approval workflow has been implemented for characters assigned to the commands of other members whereby it will be marked as pending until the other member goes to their command panel and approves it.
  3. The draft status for characters has been retired, except as it relates to a character that is rejected from another member’s command, or a character that was marked as draft before the release.
  4. Primary characters can no longer be assigned to other member’s commands.
  5. A pronouns field has been added to characters.
  6. The gender field has been updated to encourage clarity of use.
  7. The character management form no longer includes archived, draft or proposed commands as options for the assignment picker.
  8. A bug with character editing has been fixed that could cause the character name to show up as empty in rare situations.
  9. The backend interface for characters has been retired, except as it relates to administration by the Lore Office.

Gaming

  1. Gaming activity can be submitted through a frontend interface.
  2. Gaming activity now has a frontend panel that shows gaming medals, pending gaming activity submissions that have not yet been processed, and a call to action to submit gaming activity.
  3. The backend interface for gaming activity has been retired, except as it relates to administration by the Gaming Office.

Performance

  1. The user profile page has been rewritten to use the new BFMS 3.0 model system, reducing query count by up to 90% and page render time by up to 40%.
  2. The user award page has been significantly optimized to use the new BFMS 3.0 caching system, reducing query count by up to 75% and page render time by up to 55%.
  3. The object fields persistence layer has been modified to improve cache usage, reducing query count across various heavy pages by up to 20%.
  4. The object fields persistence layer has been modified to prevent automatic hydration of complex post types that cause recursive query chains, reducing query count on certain pages by up to 20%.
  5. Minor changes to the dashboard and the writing panel, reducing query count by up to 10%. Larger reworks of the dashboard and writing panel are slated for a future release.
  6. Minor changes to various pages to reduce the load imposed on the system by bot crawlers without reducing the efficacy of search indexing.
  7. Minor fixes to improve the impact on browser performance from the topbar menus.

Departmental Tools

  1. For Gaming Office staff, gaming activity submissions can now be viewed without having to through the edit interface.
  2. For Task Force staff, the activity tracker now calculates member anniversary date since first dedication ribbon and shows the date when next dedication ribbon is/was due.

Internals

  1. A new data access layer has been added using an active record pattern with field and relationship accessors, deferred access to reduce unnecessary queries, caching to reduce redundant queries, and hydration functions to aggregate multiple data accesses into single database requests.
  2. A new MVC-style router with BFMS-based controllers and theme-based views has been added. This new mechanism enables reuse of core UI components, and it is currently in use for the new Gaming Activity frontend. A mechanism for overriding requests to the admin routes was also added.
  3. A new form renderer was built out to support easy generation of forms for complex ACF post types within the frontend interfaces, as previously these were only supported on the backend. This is currently in use for the new Gaming Activity submission frontend. A method for managing auto-drafts was also added.