Async bookmark folders got its second review. Currently trying to convince Mano that my design is good, which it totally is.
Bookmarks and history in content was supposed to be easy, but there are wrinkles. A new WIP patch but not much forward movement. Think I’ll have to take a different approach.
Epic meetings with Atul and the Jetpack team. Is there a meeting instruction booklet? There are two distinct APIs we’re developing. Still working out the terminology, which is stunningly important, but one is Cuddlefish, and the other is Jetpack.
Cuddlefish is the Mozilla standard library. It wraps the Mozilla platform—or at least the parts that extensions commonly use—in XPCOMless APIs packaged as CommonJS modules. Cuddlefish is chrome-privileged and ignores security. You can write traditional extensions using Cuddlefish or use Cuddlefish in your traditional extensions. Cuddlefish will make it easy to write no-restart-needed extensions, which is an upcoming mechanism altogether independent of Cuddlefish and Jetpack. Anyone can write CommonJS modules, so if the standard library doesn’t expose a certain part of the platform, you can write a new module. You can keep that module to yourself, share it with others, or submit it to the standard library so everyone can benefit. There are other interesting aspects to Cuddlefish, but it’s not my intention to enumerate them all.
Jetpack securely exposes Cuddlefish and provides UI hooks. I’m not sure whether the Cuddlefish API is a subset of Jetpack’s. Maybe Jetpack’s API is fairly impotent, I don’t know. Atul has mentioned keeping Jetpack’s surface small, so that might be the case. One idea we discussed this week is making it dead simple for jetpacks to hook into the UI: They provide some UI bits, like an icon and title, and a callback. No statusbar, no toolbar, no sidebar, no UI power. In return they get ease of implementation and a spiffy presentation that fits in well with the rest of the browser and the user’s other jetpacks. If they need more power, they can write a UI-oriented Cuddlefish module, expose it securely, and use it. (More likely, they can find such a module that someone else has written.)
It’s possible to simultaneously dislike Jetpack and find Cuddlefish exciting. Jetpack might fail while Cuddlefish succeeds. I think that Cuddlefish, if it does succeed independently of Jetpack, will be really, really large, and that’s quite a daunting task. Atul, however, has described it as a sleek and svelte kernel.
Is it our immediate priority to build Cuddlefish broadly or only enough for Jetpack’s needs? I think we should start at Jetpack and build downward.
To that end, wrote a patch that adds byte streams to Cuddlefish, so it’s now possible to read and write files. Once it lands we can implement simple JSON-backed storage in Jetpack, if indeed we want to bring over that API from the prototype.