Today marks my first day in a new role: the DOM Core team at Mozilla. If you've read my prior post titled 100 patches to 5 browsers in 18 months then maybe this isn't a surprise to you - or maybe it is! I should probably call out this line from that post:
Am I looking for a job?
The answer has always been no. I wasn't contributing to browsers in the hopes of being hired. I was doing it because I love the web and wanted to push it forward. I wasn't really looking for new roles. I spent almost 8 years at GitHub, and didn't actively look elsewhere the entire time (I did talk to a couple of startups - mostly ones with ex-colleagues - entertaining the idea, but made it clear my passion is the web and that I only want to work for places that foster that). What I said at the end of that post is still true, I genuinely believe GitHub is in a position to be a great steward for the web! But for me, it wasn't enough.
I sense something big happening. For a long time the web has been fantastic for documents, and a really great albeit incomplete platform for applications. Frameworks have plugged the gap but we're reaching a point of convergence now. Largely frameworks are beginning to settle on reactivity patterns which are now being built into the web, like Signals and Observables. Design systems show clear areas where the web needs to improve, and browser vendors are aware of all of this; initiatives like OpenUI are exploring ideas and bringing rich new capabilities to the web like popovers, carousels, customizable select, and command and commandfor. The new CSS Form Control spec is giving so much capability back to developers who've been re-implementing these same form controls again and again just to tweak small bits, and View Transitions are going to blur the gap between apps & the web. I sincerely believe that we're at the next step in the evolution of the web. Just like CSS evolved in the 2010s, allowing people to stop building 9-slice sprite sheets by giving us border-radius and box-shadows, so will HTML & CSS in the 2020s. We'll be making jokes at conferences in 2030 about how hard it was to customize a <select>
, or how we'd painstakingly assemble application menus with gobs of code that will soon be a couple of lines of HTML.
So with this on the horizon, I find myself at a fork in the road. Do I continue to be behind GitHub, pushing the web forward and demonstrating how non-browser companies participate? Or do I get in front of this, and start building the future I'm so excited to see? As you can imagine this isn't really a choice, the answer is obvious. For the last year I've been spending about 20hrs a week in my free time hacking on browsers. Last year I took 3 weeks holiday across the year to work on various features (e.g. when I spent a week in December working on Scoped Element Registries within Firefox). That's because I want to see this features delivered and the idea of driving them forward gives me energy. Moreover, I found myself less enthused working on tasks at my dayjob, meaning I wasn't giving them my best. I've joked with friends that this isn't really a job change for me, in as much as it is freeing up my non-work hours ("I'm going to have so much free time now!").
But it wasn't a completely straightforward decision. I'm have some trepidation, some nerves. Maybe it's imposter syndrome, but there's more to it. I got very comfortable in my 8 years at GitHub. I got along well with colleagues, made some great friends, and I think I was popular & respected among my peers. My reputation was somewhat of a "resident expert"; teams would regularly reach out to me to ask me about web platform features, about performance issues, about historical choices that were made. That reputation was not without merit; I had a ton of context having been there so long and had written so much of the UI, and I've been a practicing JS developer for 20 years by this point - very little surprises me in JS at this point. But now I'm giving all that up to be working full time in C++, a language I hadn't picked up until last year, that still confounds me in various ways, and I'll be developing it out in the open, for an extremely high profile employer. While I've had some success at shipping features in my free time, I have no idea on what working on all of this full time will look like. But Mozilla put their faith in me, and so I only aim to show them that was a good choice to make.
With that said, I have some aspirations in mind. There are some things I'd love to get the available time to finish or push further, and this role grants me that. I had planned to do a follow up post to my "100 patches to 5 browsers in 18 months" this November to mark a year since the post (and hopefully another 100 patches), but given my new role, perhaps it'll be a retrospective on what I've accomplished in my first year at Mozilla. I know what I'd like to get done - though I don't know how much of that aligns with my teams goals, but here's a rough list:
- Get Invoker Commands Shipped.
- Get Close Watcher completed.
- Implement the missing parts of Dialog elements, including the new
closedby
attribute, and clean up some of the code. - Bring the new popover refinements in; such as popover=hint, getting Firefox on parity with Chrome.
- Bring to fruition some of the ideas in the Richer Text Fields proposal.
- Explore Observable more, and work on getting that fully implemented.
- Continue working on an as-yet released OpenUI proposal (mysterious, I know).
- Scoped Element Registries.
- Customizable Select.
So, I guess all that's left is to go make ship happen.