Reminder - no plan survives breakfast.
- Feel free to send pull requests to the repo!
- Here’s a contributing guide!
- Here’s the guide for creating pull requests that smurfd used and recommends!
Today
- Sorry for the delays!
- More travel coming soon though...
- HTTP code 418 - this is one of my favourites.
- https://developer.mozilla.org/en-US/docs/Web/HTTP/Reference/Status/418
- Previewing split view!
browser.tabs.splitView.enabled
- Testing a punch out of a hole for newtab
- nsICategoryManager
- Hand-off Search Component
- Has a SearchComponents.manifest
category browser-newtab-ui-component moz-src:///browser/components/search/ContentSearchUINewTabComponent.sys.mjs ContentSearchUINewTabComponent.definition- ContentSearchUINewTabComponent.sys.mjs
const ContentSearchNewTabUIComponent { definition() { return { type: NewTabUIComponent.TYPE_SEARCH, scripts: [dependencies, and script that defines moz-search-input], markup: { tagName: "moz-search-input", attrs: { } }, } } }
- Something that reads from the category manager on initialization, also adds observers for
"xpcom-category-entry-added"and"xpcom-category-entry-removed", and on initialization OR when the category in question (browser-newtab-ui-component) changes, we reconstruct the list of components - Potentially reuse CatManListenerManager, which does the above (but we need to recompute the categories on notifications)
- Interestingly, the CategoryManager has its entries populated from manifest files for each process, meaning that we'd get build-time registration for free in the privileged about content process. What we wouldn't get is dynamic registration and unregistration
- Have the backend newtab code iterate the relevant categories, and get the return values for each entry in the category, and then to sort them by type.
- This will then create a structure which can be send down in the state object that each New Tab receives
- A class (or component?) will be responsible for parsing that structure and holding it per page
- Yes, it's awkward that each instance of newtab has one of these, but that's already a problem with the state object
- The Search.jsx component will get the definition for the lone "search" item in the registry. When it finds it, it will insert the script and insert a web component (React, Lit, vanilla) that is responsible for adding stylesheet dependencies within its shadow dom or via CSS modules.
- I need to start an Engineering Design document to start shopping around with these ideas, at least show Gijs and Scott, but probably a bunch of others as well.
- File a bug to get rid of non-handoff behaviour to simplify Search.jsx and contentSearchUI -
- This will then create a structure which can be send down in the state object that each New Tab receives
- A class (or component?) will be responsible for parsing that structure and holding it per page
- Yes, it's awkward that each instance of newtab has one of these, but that's already a problem with the state object
- The Search.jsx component will get the definition for the lone "search" item in the registry. When it finds it, it will insert the script and insert a web component (React, Lit, vanilla) that is responsible for adding stylesheet dependencies within its shadow dom or via CSS modules.
- Reviewing?
Chat
- Join us in the Livehacking room on Mozilla’s Matrix instance! Here’s documentation on how to join. I’m only sorta monitoring the Twitch chat. A bot will try to bridge Matrix and Twitch (joc-bridgebot).
Links
- Felicia Bacon
- nbp hacks on the SpiderMonkey JS engine
- Alessandro Castellani has been streaming himself livehacking on Thunderbird
- emilio hacks on Firefox!
- Compiler Compiler - watch a Mozilla engineer hack on the SpiderMonkey JavaScript engine!
- How mconley uses Mercurial
- Andreas Kling hacks on a custom browser engine for a hand-rolled OS called SerenityOS
- The Joy of Coding: Community-Run Episode guide
- Feel free to send pull requests to the repo!
- Here’s the guide for creating pull requests that smurfd used and recommends!
- I've been mirroring the episodes to YouTube
- Code Therapy with Danny O’Brien
- Watch a developer put together a Windows game from scratch (no third-part engines) - really great explanations: https://handmadehero.org/
- /r/WatchPeopleCode for more livehacking!
Glossary
- BHR - “Background Hang Reporter”, a thing that records information about when Firefox performs poorly and sends it over Telemetry
- e10s ("ee ten ESS") - short for Electrolysis, which is the multi-process Firefox project
- CPOW ("ka-POW" or sometimes "SEE-pow") = Cross-Process Object Wrapper. See this blog post.
- Deserialize - "turn a serialized object back into the complex object”
- Serialize - "turn a complex object into something that can be represented as primitives, like strings, integers, etc
- Regression - something that made behaviour worse rather than better. Regress means to “go backward”, more or less.
- l10n - localization
- a11y - accessibility
- i18n - internationalization
- k8s - kubernetes
Feedback
- @mconley@mozilla.social on Mastodon
- @mike_conley on Twitter
- You can chat with me on Matrix at @mconley:mozilla.org
- mikeconley.ca/blog
- mconley at mozilla dot com