La extensibilidad del navegador es, de hecho, un espectro. Hay múltiples formas diferentes de personalizar la experiencia estándar del navegador. En el último año, incluso hemos visto a personas, muchos diferentes forks del navegador Chromium para cosas como seguridad o incrustar capacidades de IA directamente en el navegador. Luego tienes el tipo estándar de experiencia de extensión personalizada con la que la mayoría de la gente está familiarizada. Vas a la Chrome Web Store, obtienes una extensión, hace algo. Y luego tienes una categoría de extensiones que, de hecho, permiten a las personas personalizar de diferentes maneras. Y así, una que algunas personas pueden conocer son los scripts de usuario como Grease Monkey o Tamper Monkey que te permiten ejecutar JavaScript en el contexto de una página web. Y luego Pixie Bricks es un tipo diferente que puedes pensar en él como scripts de usuario, pero más de bajo código o sin código para permitir a una audiencia más amplia poder personalizar. Cada uno de estos viene con diferentes compensaciones. Nuevamente, las cosas en el lado derecho de la pantalla son generalmente más livianas, más ágiles, pero luego esas vienen con compensaciones de menos control, menos facilidades y más tipo de restricciones en términos de lo que pueden hacer frente, por ejemplo, a crear una extensión personalizada o construir todo tu navegador tú mismo.
A medida que hemos comenzado a aplicar herramientas de codificación de IA como Cloud, como Cursor al problema de las extensiones de navegador, encontramos que había tres brechas principales o desajustes en términos de cómo esas herramientas tratan el ciclo de vida del desarrollo de software. La primera es que las extensiones de navegador son en realidad sistemas distribuidos, aunque a primera vista puedan parecer aplicaciones. La segunda es que debido a la estructura de la tienda web y cómo se distribuyen, en realidad tienen bucles de iteración más lentos que muchas de estas herramientas que están más enfocadas en aplicaciones web. Y tercero y finalmente, en muchos casos, deseas que las extensiones puedan funcionar en el contexto de los sitios anfitriones. Esos sitios anfitriones tienen cambios o pueden ser abiertamente hostiles a tu extensión. Y así, estas cosas son superables, solo tienes que pensar en cómo manejarlas mejor y cómo aplicar mejor las herramientas de codificación de IA. Pero para las personas que no están familiarizadas con cómo funcionan las extensiones de navegador bajo el capó, me gusta describirlas como un sistema distribuido en una caja. Puedes pensar en un navegador, tiene múltiples pestañas diferentes, cada pestaña tiene múltiples marcos diferentes. Y así, tu extensión de navegador está inyectando contexto en cada uno de esos. Pero luego también tienes áreas de superficie como el panel lateral y las páginas, así como cosas que están trabajando detrás de escena. Entonces, almacenamiento, el service worker, documento fuera de pantalla, muchas piezas diferentes que están hablando entre sí. Y así, te encuentras con los sospechosos habituales y problemas de sistemas distribuidos. Todo es asíncrono, estás pasando mensajes con cargas útiles serializadas. Y así, nuevamente, te encuentras con esos problemas comunes con los sistemas distribuidos.
Pero en algunos aspectos, es peor que un sistema distribuido normal. Algunos de estos componentes tienen ciclos de vida muy complejos. Tienes cosas como el pre-renderizado de pestañas, caché de avance y retroceso, o reciclaje de workers. Y así, es simplemente un animal diferente en términos de incluso sistemas distribuidos normales. Y así, en esto, hablaremos sobre las cuatro mejores prácticas que creemos. La primera es realmente cómo eliges la base adecuada, ¿verdad? Entonces, no creo que la mayoría de las personas deban preocuparse por las cosas que mostré en la última diapositiva.
Comments