Capital "C" Celebration — The Mattermost Platformer #14
Published: 2022-07-12 09:59:00

_This post is part of a series previously posted in the public ["The Platformer"](https://community.mattermost.com/core/channels/the-platformer) channel on [Mattermost's Community](https://community.mattermost.com/) server. "The Platformer" is published on a weekly cadence sharing the latest updates from the [Mattermost](https://mattermost.com/) platform teams (web, server, mobile and QA). It's an insider look into **how** these teams operate, and **what** they're working on._

Regions of the world vary wildly in terms on holidays, some of them are national, historical, religious, or (for the hardcore capitalist areas) bank-related. Clearly, even in this area there are many things that divide us, so it’s good to remember what unites us.

“What is it then, oh wise Zef, that we all value and share universally?”

It’s the one celebration that happens like clockwork across the globe (I’ll blatantly ignore timezones because it would take away the rhetorical effect).

It’s the one celebration that sees universal excitement everywhere.

It’s the one celebration that happens not _once_, but _four times_ every single year.

You guessed it: _it’s the start of a new financial quarter!_

Happy Q3 everybody 🎉, it’s going to be a good one! #bestpartyever

## Cherry picks
A new quarter means new [OKR](https://en.wikipedia.org/wiki/OKR)s, so to remain in full-on party mode, let’s do a special **Cherry Picks: OKR Edition™️**. As these are cherry picks, I have to be _picky_ (hah!) in terms of what to list, because otherwise this would be a book-length update (as opposed to chapter-length as it is now). But it’s going to be worth it — tons of dad jokes, a surprise ending, and perhaps some valuable nuggets of information here and there, you’ll see!

On the **mobile platform** end, _Q2_ was probably the biggest quarter since shipping the original mobile app, which happened — or so the legend goes — roughly around the same time sliced bread was invented. What happened in Q2? We shipped the _mobile v2 beta_ not just internally, but to [whoever wants to live on the bleeding edge](https://mattermost.com/blog/mobile-beta-program-v2/). And this is an edge we all want to be bleeding on, trust me. Wow, that sounded terrible. Anyway, when I say “we,” we have to acknowledge this was a true cross-team effort involving members of the Channels, Suite Users, QA Platform and Mobile Platform teams. Indeed, at this stage all these teams have deserved the privilege to be Be Capitalized When Referenced. Congrats to all on this big project that’s been about two years in the making. Now let’s just wrap this up and get to GA later this year. How hard can it be? Famous last words. What else? We did a fair amount of work on GraphQL, and supported the Calls team (capital “C” as well) to soon integrate calls (no capital “c”) into v2. TL;DR: “what does that look like in board form?” [This is what Q2 looked like in Board form](https://community.mattermost.com/plugins/focalboard/workspace/p33mj7xh4frntrtbxbp5xp1joy/shared/bbam1crdg6jn93qhcgiq8xbpk8a/voyimxsfw1igf7c1ru6pqnqgpkc?r=keadbck8m8oc84ng6ozhcqqcgpc) (a capital “B” board).

In _Q3_ the focus is going to be split into two: partially we’ll keep on pushing on getting v2 to GA status, whatever that may mean in practice (ranging from porting features, to fixing hypothetical bugs, blindly approving pull requests, to enthusiastic cheer leading). However, we will also get back to what I’d qualify as “actual platform work”: specifically we want to invest in better instrumentation of the application to get a better sense of customer’s experience in daily use, including crashes, performance metrics. Right now, we’re still largely flying blind, which is not a comfortable state and we hope to get out of by the end of Q3. Likely this will involve [Sentry](https://sentry.io/welcome/) or equivalent tool. However, that is not all, we’ll also be pushing on various performance opportunities (and we’re about to ship the [first iteration](https://github.com/mattermost/mattermost-mobile/pull/6024) using GraphQL). TL;DR: [here’s the Q3 board](https://community.mattermost.com/plugins/focalboard/workspace/p33mj7xh4frntrtbxbp5xp1joy/shared/bbam1crdg6jn93qhcgiq8xbpk8a/v151axzyd8jy4dqmpo74q6tienw?r=keadbck8m8oc84ng6ozhcqqcgpc).

On the **web platform** end, _Q2_ involved a lot of doc writing, but we now have a better idea of where the front-end side of the ~multi-product-architecture should be headed, and will take steps into that direction in Q3. In addition we shipped the first iteration of GraphQL on community (you’re likely using it right now, _how does it feel!?_ Does it feel _graphy_?). We also shipped [@mattermost/client](https://www.npmjs.com/package/@mattermost/client) and [@mattermost/types](https://www.npmjs.com/package/@mattermost/types) on npm. TL;DR: [Q2 board](https://community.mattermost.com/plugins/focalboard/workspace/p33mj7xh4frntrtbxbp5xp1joy/shared/bbam1crdg6jn93qhcgiq8xbpk8a/vsiur3cp1zb8q7ncfm7hacokd3h?r=keadbck8m8oc84ng6ozhcqqcgpc).

For _Q3_ we’ll keep on pushing on GraphQL to improve the performance of the web app. Our first steps towards the multi-product architecture will primarily be targeted at module federation in Q3. Beside these, we also intend to ship the menu component and do some heavy-handed refactoring on the post components (and turn that plural componentS into a singular componenT). TL;DR: [Q3 board](https://community.mattermost.com/plugins/focalboard/workspace/p33mj7xh4frntrtbxbp5xp1joy/shared/bbam1crdg6jn93qhcgiq8xbpk8a/vymj86spn97bjuyqz8uy7aqh9we?r=keadbck8m8oc84ng6ozhcqqcgpc).

On the **desktop platform** end, _Q2_ was the quarter of the self-updating 5.1 app. The last desktop app you’ll ever need... to update manually. You can now also find it in an app store near you. We also made good on the _R_ part of R&D, that is: Research. We looked into making a single-view desktop app happen in Electron (capital “E”) which could lead to serious reduction in system resources, this investigation will continue in Q3. TL;DR: [Q2 board](https://community.mattermost.com/plugins/focalboard/workspace/p33mj7xh4frntrtbxbp5xp1joy/shared/bbam1crdg6jn93qhcgiq8xbpk8a/v8rtwgxkg47bg3nzs87nacyhpdo?r=keadbck8m8oc84ng6ozhcqqcgpc).

In _Q3_, we are going to focus on adding translations to the desktop app, hopefully leaning heavily on our excellent translation community for all the languages we don’t natively speak (which, as it turns out, is approximately all of them). We’ll also work on supporting native `node_modules`, which will unlock building more OS-specific functionality, such as interactive notifications (e.g. the ability to reply to a message inside of a notification on operating systems that support this). TL;DR: [Q3 board](https://community.mattermost.com/plugins/focalboard/workspace/p33mj7xh4frntrtbxbp5xp1joy/shared/bbam1crdg6jn93qhcgiq8xbpk8a/v9d1n36auab8eb8d736ubudud9y?r=keadbck8m8oc84ng6ozhcqqcgpc).


On the **server platform** side, in _Q2_ we better leveraged Go 1.18 by using [module workspaces](https://go.dev/doc/tutorial/workspaces). This was the groundwork to also onboard Boards (capital “B”) onto the multi-product architecture. Work that is almost there [with the PR opened](https://github.com/mattermost/focalboard/pull/3309) a few days back. Ultimately this entire effort will result in one big-ass Binary (capital “B”), not to be confused with a [big ass-binary](https://xkcd.com/37/) (lower-case “b”) — a.k.a. “one binary to rule them all.” The goal here is to ultimately compile the entire back-end of the suite into a single executable, which should reduce resource use, boot-up time, improve debugability, and maybe improve performance, but also give us more flexibility on how we structure our internals, no longer being limited to the plug-in model. Beside this, we made a play on Playbooks enabling them to perform future data migrations using our new Morph library (which we [bragged about on our blog](https://mattermost.com/blog/morph-database-schema-migrations-made-easy/)), and iterated further on the “one GraphQL endpoint to rule them all.” TL;DR: [Q2 board](https://community.mattermost.com/plugins/focalboard/workspace/p33mj7xh4frntrtbxbp5xp1joy/shared/bbam1crdg6jn93qhcgiq8xbpk8a/vs7unbo44pid7dgq4nfo8sz6pqe?r=keadbck8m8oc84ng6ozhcqqcgpc).

In _Q3_ we’ll continue supporting the GrapQL effort, and use our learnings onboarding Boards to the MPA (that’s slang for “Multi-Product Architecture” ALL CAPS) to make some architectural improvements there before making a similar play on Playbooks or call on Calls. Rumor has it, Q3 may also be the quarter in which we will get an actual _event bus_, which you can think of as the back-end engineering equivalent of a party bus. And since Alejandro Garcia (soon to be known as _Alejandro “what about load testing?” Garcia_) will be joining the team as performance engineer, we are also expected to make major strides on our load testing and performance efforts — but no pressure Alejandro. Welcome to the team! 🎉 I’m already looking forward to our first _performance review_. Padum tss. TL;DR: [Q3 board](https://community.mattermost.com/plugins/focalboard/workspace/p33mj7xh4frntrtbxbp5xp1joy/shared/bbam1crdg6jn93qhcgiq8xbpk8a/vqnxrjaewnibrtnp8m38fswt63e?r=keadbck8m8oc84ng6ozhcqqcgpc).

On the **QA platform** side, _Q2_ was the quarter in which QA had to pick up the pace again preparing for the v7 release, and the new weekly cloud release cadence. How do we do that? Through the sheer magic of dog fooding (leveraging Playbooks more effectively) and... investing in automation. Automate all the things! In fact, we’re now automating more of the automations by running our e2e test suites automatically in more cases (now that we automated the infrastructure to automate the automation with automation). Another long-term investment we’re making is expanding the QA contributor community, and we successfully onboarded 2 fresh members in Q2. TL;DR: [Q2 board](https://community.mattermost.com/plugins/focalboard/workspace/p33mj7xh4frntrtbxbp5xp1joy/shared/bbam1crdg6jn93qhcgiq8xbpk8a/v3nzhpewjjjnfjfk1by7snwgb4h?r=keadbck8m8oc84ng6ozhcqqcgpc).

In _Q3_ we continue to automate the running of more of our automated test suites, ideally expanding to both mobile and desktop. We also continue one of the Hackathon (capital “H”) projects and work on migrating of our Cypress tests to TypeScript (and you can never have/do enough typing) — hopefully getting support for this effort from the community. We also hope to further expand our test suite by adding visual regression testing with Playwright as well. TL;DR: [Q3 board](https://community.mattermost.com/boards/workspace/p33mj7xh4frntrtbxbp5xp1joy/bbam1crdg6jn93qhcgiq8xbpk8a/vmsmjdfofui8giq14bebr9omd3y).

/me takes a deep breath

And with that I wish you...

“Hold your horses, mister! Didn’t **you** set some sort OKR for yourself for Q2 (for unknown reasons)? We demand accountability, what did you achieve?!”

Alright. _Fine._

## One Q of “The Platformer”
The long-term _The Platformer_ fan will remember [“The Platformer #1”](https://community.mattermost.com/core/pl/d5wxercikpyxbjbusuu6wyy1sh), like it was yesterday, in which I set the following personal OKR:

> **Objective:** Increase the transparency of the work done by platform teams both internally (within the teams) and externally (towards the rest of the organization) and the community at large.
> 
> **Key Result:** Publish 14 weekly updates highlighting topics and projects relevant to platform.

As the title of this edition will suggest (unless I faked it), I was right on the money with my goal of 14 weekly updates. My estimation skills are excellent. From a pure OKR best-practice perspective this is actually a bad result. OKRs are supposed to be ambitious — reaching them for 100% reeks of lack of ambition. So therefore I’ll try to up my game and go for DAILY _The Platformer_ updates in Q3. Muahahaha. Just kidding.

Beyond hitting this pure consistency metric, I’ve received a fair amount of positive feedback, both in post reactions, comments and out-of-band conversations. I was a bit concerned about post length, but people generally did not see this as a problem (or didn’t dare to admit it to my face). In terms of member count this channel grew organically from just me to 80 people (of which about 25% is community), and most people stuck around so that’s something :itssomething:. If there’s any feedback you have, or any ideas on how to improve _The Platformer_ in Q3 let me know. A podcast version with me doing a dramatic reading, perhaps? a Youtube reaction video series, showing my kids’ faces as they respond to my dad jokes? Emoji spoiler alert, it’s going to look a lot like this: 🙄. What I’d like to do is find a broader venue for publishing these updates, maybe on [Mattermost @ Dev.to](https://dev.to/mattermost), we’ll see.

However, before we enter into the weekend...

One more thing.

Here is something I think we all come to realize working for a tooling company like Mattermost, especially in management:

**Ultimately it’s NOT the _people_ that do the work that matter (most), it’s the _tool_ they use.**

Case in point, [Github Copilot](https://github.blog/2022-06-21-github-copilot-is-generally-available-to-all-developers/):

> In files where it’s enabled, nearly 40% of code is being written by GitHub Copilot

You may have wrongfully assumed that “engineering” meant typin’ the codez, but it’s really just hitting `Tab` whenever Github Copilot suggests something. We should be getting all our engineers branded Mattermost keyboards with just a `Tab` key.

It’s all about the tooling.

So, you’ll be wondering — what’s the tooling behind _The Platformer_? You may have naively assumed it’s just me opening Notepad.exe on a Friday morning, followed by thirty minutes of stream of consciousness writing. Hah! You’d be wrong. Do you think I can keep all the things happening in platform in my peanut-sized brain, and distill all that to its essence on a whim? No no. Tooling. I need tooling.

The magic happens using a project I’ve been working on for about half a year on the side, on and off. I hinted at it in [The Platformer #8](https://community.mattermost.com/core/pl/yfkoic9esi8uzmmncwzm53ub7e). It’s a Markdown editor called [“Silver Bullet”](https://github.com/silverbulletmd/silverbullet) (perfectly named, because it is one) and I’ve [open sourced](https://github.com/silverbulletmd/silverbullet) it over the long F&F weekend. I say “markdown editor,” but the project escalated a bit and is actually more of a “markdown platform” (are you surprised?). It allows me annotate, tag and query things I put into it. The documentation is still lacking, and the code is very much in flux, but if you want to get a high-level idea of what it does and how it works, here’s a [18 minute video of me demoing Silver Bullet](https://www.youtube.com/watch?v=RYdc3UF9gok). If I may say so myself, it’s pretty cool. And if you’d know how this works behind the scenes, it’s even cooler.

But mostly it was me just opening a `.ts` file, typing

```typescript
// Build me a markdown platform
```
 
Then hitting `Tab` a lot, and claiming credit. It’s all about the tooling, ultimately.

And with that... I wish you a great weekend!