Post author here! I wrote this post five years ago. Since then, my conviction in the value of customizable software has only grown, but I've also updated my thinking in a few ways:<p>1) AI<p>AI is rapidly getting better at coding. Current AI is often bad at high-level architecture but is capable of making small local tweaks. Seems like a good fit for the kind of code you need to write a browser extension!<p>I'm exploring this direction; wrote more about it in "Malleable software in the age of LLMs" [1]<p>2) Security<p>Having talked to people who worked on various extension platforms including the browser extensions API, I see more clearly than I did five years ago that security is often the key bottleneck to deploying extension platforms meant for mass adoption. Anytime you want everyday computer users to be installing invasive extensions to important software from untrusted third parties, it's gonna be challenging to protect them.<p>That said, I still think that conversations around extensions tend to focus too much on security at the expense of all else. Customizability is important enough that it may be worth prioritizing it over security in some cases.<p>I also think there are many reasonable paths forward here. One is to exchange extensions with trusted parties -- e.g, coworkers or friends -- rather than installing from random people on the internet. Another might be to only build your own extensions; perhaps that'll become more viable with AI-assisted programming, although that introduces its own new security issues. And finally, I've met a few people who have smart ideas for architecting software in a way that helps resolve the core tensions; see [2] for an example.<p>3) Backend access as a key limitation<p>I've increasingly realized that the fact that browser extensions can only access client code in a fairly server-centric web means that many deep customizations are out of reach. Perhaps you can't read the data you want, or there's not a write API to do the thing you need.<p>While I'm optimistic about what extensions can do within the boundary of the client, this is an inherent limitation of the platform.<p>At Ink & Switch (the research lab I now work for), we're working towards local-first [3] software: collaborative software where the data and the code lives on your device. Among other benefits like privacy, we think this is the right foundation for more powerful extensions, since your data and the app code aren't locked away on a server.<p>[1] <a href="https://www.geoffreylitt.com/2023/03/25/llm-end-user-programming" rel="nofollow">https://www.geoffreylitt.com/2023/03/25/llm-end-user-program...</a><p>[2] <a href="https://www.wildbuilt.world/p/inverting-three-key-relationships" rel="nofollow">https://www.wildbuilt.world/p/inverting-three-key-relationsh...</a><p>[3] <a href="https://www.inkandswitch.com/local-first/" rel="nofollow">https://www.inkandswitch.com/local-first/</a>