1 puntos por GN⁺ 2024-02-05 | 1 comentarios | Compartir por WhatsApp
  • A diferencia de las plataformas móviles y de escritorio, las extensiones de navegador son un raro ecosistema de software hackeable que permite a los usuarios modificar las apps web de maneras no previstas por sus desarrolladores originales
  • Las más de 180 mil extensiones en Chrome Store y la tasa de instalación cercana a la mitad de los usuarios de Chrome muestran que, si hay una forma sencilla, los usuarios comunes también arman por su cuenta una experiencia de uso personalizada
  • La amplitud de usos de las extensiones surge de la apertura de la web, como el código cliente legible por humanos, el marcado significativo y los layouts web estándar, más que de APIs específicas por app
  • Extensiones como ingreso de contraseñas, lectura de kanji, anotaciones, bloqueo de anuncios y reproducción a 2x funcionan como pequeñas herramientas en múltiples sitios, creando una experiencia de software distinta del modelo centrado en apps gigantes
  • Aunque hay que seguir abordando las extensiones maliciosas y las invasiones a la privacidad, si se equilibra accesibilidad, compatibilidad y permisos, es posible preservar la extensibilidad que permite a los usuarios cambiar más profundamente el software que usan

Por qué las extensiones de navegador son especiales

  • Las discusiones recientes sobre extensiones de navegador se han concentrado en las extensiones maliciosas que recopilan el historial web y en las restricciones de Google a los bloqueadores de anuncios, pero las extensiones siguen siendo un caso especial de software dirigido por el usuario
  • Entre las principales plataformas de software, las extensiones de navegador son una rara excepción que permite y fomenta que los usuarios modifiquen las apps que usan todos los días fuera de las intenciones del desarrollador original
  • En plataformas móviles y de escritorio, este tipo de cambios es raro o imposible, pero en el navegador se volvió una actividad cotidiana
  • Las extensiones reviven la sensación de que los usuarios pueden controlar más profundamente la forma en que usan la computadora

Software que los usuarios arman por su cuenta

  • Cuando una plataforma de software es lo bastante abierta, también cambia la manera en que los usuarios comunes se relacionan con el software
  • Si instalas cuatro extensiones de Gmail y cambias desde el diseño visual hasta funciones clave, en cierto sentido armaste tu propio cliente de correo electrónico
  • Los usuarios dejan de ser consumidores pasivos de apps prefabricadas y pueden configurar por sí mismos una forma personalizada de usar la computadora
  • Chrome Store tiene más de 180 mil extensiones, y casi la mitad de los usuarios de Chrome instala extensiones de navegador
  • Esta popularidad muestra que, cuando existe una forma sencilla de extender el software, muchos usuarios aprovechan realmente esa oportunidad

Una plataforma hackeable más que APIs específicas por app

  • Las extensiones de navegador tienen casos de uso muy amplios: ingreso de contraseñas, lectura de kanji japonés, simplificación del diseño visual de Gmail, resaltado y anotación de artículos, guardado para leer después, reproducción de video a 2x, bloqueo de anuncios, entre otros
  • La clave de esta amplitud de usos es que la mayoría de las extensiones modifican las aplicaciones de maneras que el desarrollador original no planeó específicamente
    • Cuando un periódico japonés publica un artículo, la extensión puede funcionar aunque el medio no haya considerado la compatibilidad con una extensión de lectura de kanji
    • Los desarrolladores de extensiones no quedan atados a APIs específicas por app que reflejan la perspectiva del desarrollador de la app sobre la extensibilidad, por lo que tienen mayor libertad creativa
  • Varias características de la plataforma web hacen posible una extensibilidad no planificada
    • La forma tradicional de distribución en la web entrega el código cliente al navegador en un formato legible por humanos
    • Incluso cuando el código está ofuscado o compilado desde otro lenguaje, los source maps son importantes para conservar esta ventaja
    • El modelo de layout de la web fomenta un marcado semántico estandarizado
    • Las extensiones de gestores de contraseñas funcionan porque las páginas web usan de forma confiable la etiqueta form para enviar contraseñas, en lugar de implementaciones propias
  • Aunque puede hacer falta alguna solución ingeniosa cuando un sitio no fue creado pensando en extensiones, por lo general es posible con una cantidad razonable de trabajo, sin años de ingeniería inversa
  • Incluso si puede surgir tensión entre desarrolladores de sitios web y desarrolladores de extensiones, cuando los desarrolladores del sitio no tienen que hacer trabajo adicional, es más común que acepten extensiones creativas
  • Las funciones de nicho que solo quiere una minoría de usuarios pueden ser creadas como extensiones por miembros motivados de la comunidad, lo que también reduce la carga para los desarrolladores de la aplicación

Herramientas pequeñas, no grandes apps

  • Muchas extensiones de navegador funcionan como herramientas de propósito general que mejoran la experiencia de uso en todos los sitios web
  • Una extensión de anotaciones puede usarse en cualquier sitio web, sin exigir una herramienta de resaltado distinta para cada artículo
  • Como con un resaltador físico, puedes aprender una herramienta y luego aplicarla en muchos contextos para obtener un gran efecto multiplicador
  • En muchas plataformas de software se asume que el sistema operativo ofrece herramientas transversales y que los terceros ofrecen apps independientes y aisladas, pero en las extensiones de navegador los terceros también agregan herramientas
  • Las unidades pequeñas de software también cambian la economía
    • La mayoría de las extensiones son gratuitas, y su alcance funcional puede ser demasiado pequeño para sostenerlas como un negocio completo
    • Aun así, la gente crea extensiones y los usuarios obtienen grandes beneficios de esas pequeñas piezas de software
    • Explorar una tienda de extensiones se parece más a un mercado de pulgas de barrio que a un supermercado
  • El software grande creado por corporaciones gigantes no es la única forma posible

Las raíces de la apertura de la web

  • Desde los inicios de la computación personal hubo una tradición filosófica que veía a las computadoras como un medio interactivo en el que los usuarios podían sumar sus propias ideas y crear sus propias herramientas
  • Esta tradición se refleja en sistemas como Smalltalk, Hypercard y, más recientemente, Dynamicland
  • Cuando Tim Berners-Lee creó la World Wide Web, imaginó un sistema dentro de esta tradición
    • Su visión era “un sistema en el que compartir lo que uno sabe o piensa fuera tan fácil como aprender lo que otros saben”
    • Él creía que el navegador web también debía ser un editor de sitios web, pero el navegador Mosaic ganó popularidad sin esa función, algo que lamentó
  • La web terminó convirtiéndose en un lugar donde cualquiera puede publicar opiniones o fotos mediante plataformas de redes sociales
  • Sin embargo, dentro de apps como Facebook hay que publicar en formatos definidos y usarlas de la manera que la app impone, incluidos los anuncios
  • Las extensiones de navegador permiten ir más allá de escribir en un cuadro de texto provisto y cambiar profundamente la forma en que se usa cualquier aplicación de la web
  • Aportan una descentralización que impide que las empresas que crean grandes sitios web decidan todos los detalles de la experiencia de usuario

Cómo hacer mejores las extensiones

  • Es necesario trabajar para proteger a los usuarios y evitar que las extensiones maliciosas invadan la privacidad
  • Accesibilidad

    • Hoy, pasar de usar extensiones a crearlas exige aprender bastante desarrollo web
    • También es difícil desarrollar extensiones fácilmente dentro del navegador
    • Podría ser posible una transición fluida: editar un sitio web en las herramientas para desarrolladores y luego publicar una pequeña extensión
  • Compatibilidad

    • Como las extensiones se enganchan a sitios web de formas no soportadas oficialmente, una actualización del sitio puede romper temporalmente una extensión
    • A veces los desarrolladores de extensiones deben corregirlas con urgencia para adaptarse a los cambios
    • Hace falta una forma de conectar de manera estable a desarrolladores de sitios web y desarrolladores de extensiones sin depender de APIs explícitas de extensión
    • El marcado semántico limpio, el CSS legible por humanos y los source maps son prácticas existentes que facilitan el desarrollo de extensiones
    • Si, después del lanzamiento de una nueva versión de software en la nube, los usuarios pudieran seguir usando la versión anterior durante 3 meses, los desarrolladores de extensiones ganarían tiempo para actualizarse a la nueva versión
  • Permisos

    • Las extensiones web pueden modificar ampliamente el cliente del navegador, pero no pueden tocar el servidor
    • Si el servidor de una app de redes sociales solo ofrece un endpoint para consultar publicaciones en orden cronológico, una extensión de navegador no puede buscar todas las publicaciones por palabra clave
    • Si se reconsidera la frontera cliente-servidor, las extensiones podrían hacer cambios más profundos
    • Permisos más fuertes hacen más difíciles los problemas de seguridad y privacidad, pero hay que valorar la extensibilidad y encontrar un equilibrio

Posibilidades para la próxima plataforma

  • Beaker Browser y la comunidad de la web descentralizada exploran formas en que la web funcione sin servidores centrales
  • Este tipo de arquitectura puede dar a los usuarios un control más completo para modificar el lado “servidor” de una aplicación web
  • El nuevo proyecto de Tim Berners-Lee, SOLID, incluye el principio de que los usuarios tengan mayor propiedad sobre sus propios datos
  • Con más propiedad de los datos, los usuarios pueden manejarlos de forma flexible mediante extensiones y otro software, más allá de lo que permiten las APIs del servidor de la aplicación
  • La computación todavía es joven y las plataformas cambian rápidamente
  • Las extensiones de los navegadores modernos y las plataformas móviles apenas tienen alrededor de 10 años de existencia
  • Qué tan abiertas serán las plataformas del futuro es algo que tendremos que decidir colectivamente
  • Las extensiones de navegador son un ejemplo de un lugar donde los usuarios hackean cotidianamente el software que usan y lo hacen suyo

Actualización de 2024

  • Al mirar hacia atrás cinco años después de haber escrito el artículo en 2019, se agregaron algunos proyectos relacionados
  • Creé una popular extensión de navegador para Twitter y dejé un artículo sobre la experiencia de usar extensiones como forma de arreglar problemas del software que uso todos los días
  • Durante mi doctorado con Daniel Jackson en MIT, desarrollé Wildcard, que permite a personas que no programan crear extensiones de navegador desde una hoja de cálculo
  • Glen está trabajando en ExtensionPay, una plataforma de monetización para quienes quieren convertir una extensión de navegador en un proyecto sostenible
  • Más recientemente, en el laboratorio de investigación Ink & Switch, estoy trabajando hacia el software maleable impulsado por IA

1 comentarios

 
GN⁺ 2024-02-05
Opiniones de Hacker News
  • Soy el autor. Escribí este artículo hace 5 años y, desde entonces, mi convicción sobre el valor del software personalizable ha crecido, aunque algunas de mis ideas cambiaron

    1. IA: la IA está mejorando rápidamente en programación. La IA actual suele ser débil en arquitectura de alto nivel, pero se le dan bien las pequeñas modificaciones locales, así que parece encajar bien con el código necesario para escribir extensiones de navegador. Estoy explorando esta dirección y escribí más al respecto en “Malleable software in the age of LLMs”: https://www.geoffreylitt.com/2023/03/25/llm-end-user-program...
    2. Seguridad: después de hablar con personas que han creado varias plataformas de extensiones, incluida la API de extensiones del navegador, ahora veo con más claridad que hace 5 años que la seguridad suele ser el cuello de botella principal para distribuir plataformas de extensiones masivas. Es difícil proteger a usuarios comunes si les permites instalar extensiones invasivas de terceros no confiables en software importante
      Aun así, creo que la discusión sobre extensiones se enfoca demasiado en la seguridad a costa de otros valores. La posibilidad de personalización puede, en algunos casos, ser lo bastante importante como para tener prioridad sobre la seguridad. También hay varias soluciones posibles. En lugar de instalar extensiones de cualquier persona en internet, se pueden compartir dentro de relaciones de confianza, como colegas o amigos, o usar solo extensiones hechas por uno mismo. La programación asistida por IA puede hacer que crearlas uno mismo sea más realista, aunque introduce nuevos problemas de seguridad. También he conocido a personas con ideas de arquitectura de software que reducen esa tensión central; hay un ejemplo en https://www.wildbuilt.world/p/inverting-three-key-relationsh...
    3. Acceso al backend: en la web centrada en servidores, cada vez me doy más cuenta de que las extensiones de navegador solo pueden acceder al código del cliente, lo que a menudo bloquea una personalización más profunda. Puede que no puedas leer los datos que quieres o que no exista una API de escritura para realizar las acciones necesarias. Soy optimista sobre lo que las extensiones pueden hacer dentro de los límites del cliente, pero es una limitación inherente de la propia plataforma
      En el laboratorio donde trabajo ahora, Ink & Switch, estamos creando software local-first: software colaborativo donde los datos y el código están en tu dispositivo. Además de ventajas como la privacidad, creo que es la base correcta para extensiones más potentes, porque los datos y el código de la app no están encerrados en un servidor: https://www.inkandswitch.com/local-first/
    • El problema de seguridad de las plataformas abiertas es clave. Si están lo bastante abiertas como para que quienes saben hacerlo personalicen el sistema a su gusto, los actores maliciosos también pueden convencer a personas que no saben mucho de cambiar el sistema de formas dañinas
      Que en Android puedas crear tu propio teclado personalizado es genial, pero no es nada bueno que alguien pueda convencer a tus abuelos de instalar un teclado con un keylogger integrado. Las extensiones de navegador siempre han sido un ecosistema lleno de malware, y el chiste de borrar barras de herramientas de Internet Explorer en la computadora de tus padres cada vez que vuelves a casa por Acción de Gracias existe más o menos desde 1999
    • Si los navegadores y los sistemas operativos móviles facilitaran proporcionar recursos falsos a apps o extensiones, ejecutar código no confiable podría ser mucho más seguro
      “Sí, puede leer el contenido de mi teléfono. Desde su punto de vista, eso es todo el contenido y no hay nada más. Pero desde mi punto de vista, es solo una carpeta, y está vacía. Es un teléfono nuevo.”
      “Sí, esta es mi lista de contactos. Perdón, está casi vacía. Solo hay un número premium caro. Espero que su empresa matriz no llame ahí.”
      “Sí, este es mi micrófono. Gracias. Imito bastante bien a Rick Astley.”
      “¿Fotos del teléfono? Aquí están. Todas son fotos de nabos. ¿Le gustan?”
    • Me entusiasma muchísimo el punto en que se encuentran el software maleable, local-first y la IA local. Se siente como el comienzo de una nueva era del software y, si sale bien, podríamos recuperar de las grandes empresas el control de nuestros datos y tener más control sobre la propiedad y sobre la forma en que trabajamos
      En particular, me interesa mucho que herramientas CRDT de propósito general como Automerge o Yjs se conviertan en el formato de archivo base del software local-first, con backends de sincronización y colaboración interoperables encima. Los usuarios podrían acceder directamente a los datos subyacentes con herramientas estándar, y los archivos podrían enlazarse, incrustarse, ramificarse y fusionarse entre sí. Podríamos crear una nueva plataforma hipermedia donde todos los documentos se puedan compartir, bifurcar y editar en tiempo real. Me encanta lo que hace Ink & Switch y espero con ganas sus próximos anuncios
    • Una gran limitación de las extensiones de navegador es que, incluso cuando las escribes para uso propio, no existe una forma de instalación amigable para el usuario y extensible. No hay manera de decirle al navegador que confías en todas las extensiones de cierto directorio y que las cargue automáticamente sin firma y sin empaquetarlas como XPI
      No existe una función tipo “pon el código y el manifest en un directorio y el navegador lo usa”. En la época en que el viejo Greasemonkey simplemente cargaba archivos normales desde el subdirectorio gm_scripts/ del perfil del navegador, esa distribución sencilla hizo que yo creara muchísimos userscripts. En ese entonces extender sitios web era divertido y fácil, pero Mozilla eliminó todo eso
      La distribución es realmente horrible. No pienso mandar mi extensión a algún lugar de internet para que la firmen cada vez que hago un cambio en código que escribí para usarlo en mi propia computadora. Además, la última vez que revisé, la herramienta de firmado era una app NPM/node de más de 100 MiB en la que había que confiar, incluso más grande que compilar el kernel de Linux
    • En general estoy de acuerdo con la evaluación, pero el problema es que los proveedores de navegadores a menudo retiran APIs, rompiendo extensiones buenas y populares
  • En 2024, el marco mismo de las extensiones de navegador es muy problemático. La mayoría de las extensiones de navegador son, por proporción, extensiones de Google Chrome, y Google Chrome está dejando claro, en su proceso de aumentar ingresos, que ninguna API está a salvo
    Quien crea extensiones con la API de Chrome debe saber que probablemente está invirtiendo esfuerzo en algo que una megacorporación puede aplastar sin pensarlo. Como no quiero vivir en una situación estratégicamente ya perdida como esa, creo que la discusión debería tratar sobre extensiones de Firefox. Firefox tampoco tiene un historial impecable. El cambio a compatibilidad con Google Chrome de hace unos años todavía me molesta muchísimo. Aun así, cualitativamente es una parte mucho mejor con la que tratar

    • Dejando todo eso de lado, las extensiones 1) aumentan la superficie de ataque del navegador, 2) con frecuencia se han vendido por dinero a actores maliciosos o han sido secuestradas, y 3) a menudo rompen cosas de forma sutil, algo manejable para usuarios expertos pero que para otros termina en solicitudes de soporte. Todo el ecosistema de extensiones es un desastre
    • Las extensiones de navegador parecen usarse más en Firefox. Es porque Google es demasiado hostil con las extensiones de Chrome. A medida que Firefox fue decayendo, el mundo de las extensiones también se redujo
      Durante 10 años usé algo llamado “Ad Limiter” tanto en Firefox como en Chrome, y el código era el mismo. El año pasado, cuando Google endureció más las restricciones contra los bloqueadores de anuncios, envió mensajes intimidatorios, y abandoné la versión para Chrome
    • También se puede ver literalmente como algo que no es en absoluto distinto de desarrollar en cualquier otro entorno
    • Me pregunto si ya arreglaron la función de sincronización de Firefox. Antes había que mover físicamente los archivos del perfil. Hace mucho, cuando trabajaba en IT, Firefox era una verdadera pesadilla de manejar en entornos empresariales. Claro que en ese entonces tampoco se podía controlar la instalación de extensiones de Chrome
    • Las extensiones de navegador tienen un estándar. Yo ya había creado extensiones de navegador incluso antes de que existiera el estándar. Hoy se pueden crear extensiones que funcionen en Chrome, Firefox, Edge y Safari
      Por supuesto, también se pueden usar API exclusivas de un navegador específico. Eso es realmente malo, como crear un sitio exclusivo para un solo navegador. Lo básico debería ser compatible. Además, como el código fuente de una extensión siempre se puede ver, puedes modificarlo a una versión que funcione bien en tu navegador y también volver a compartirlo
  • Muchas extensiones de navegador populares fueron adquiridas por data brokers y usadas para extraer el historial del navegador, así que es difícil decir que estén subvaloradas. El modelo de seguridad y privacidad de las extensiones fue, o sigue siendo, bastante deficiente, por lo que hay que tener mucho cuidado
    Por ejemplo, sé que una extensión de capturas de pantalla como Awesome Screenshot absorbía el historial del navegador y lo enviaba a un data broker israelí. Probablemente sea mejor que funciones así existan como funcionalidad integrada del navegador

    • Como alguien que crea extensiones web de pago por adelantado, diría que las extensiones pagas por adelantado están subvaloradas
      La frase “si no soy el cliente, soy el producto” es tan cierta que ya suena trillada. Pero ¿qué pasa si realmente soy el cliente? Creo que una parte importante de la desconfianza hacia las extensiones de navegador se debe a que es difícil monetizarlas directamente. Si no estás ganando dinero con una extensión y alguien aparece con un cheque decente para comprarla, es difícil rechazarlo, sobre todo si la extensión implica una carga de soporte para el desarrollador. Por supuesto, como casi todo el mundo, yo también tengo un precio, pero ahora tendría que ser de 7 cifras en dólares, quizá 8, y no creo que nadie vaya a pagar eso por mi extensión. Al ser de pago, la base de usuarios es relativamente pequeña, y justamente por eso tampoco representa una gran oportunidad para la recolección de datos ni para planes malvados
    • Por estas razones y por la falta de permisos granulares, cuando es posible uso apps de escritorio en lugar de extensiones, y mantengo mi lista de extensiones muy reducida. Básicamente solo instalo extensiones FOSS de autores “grandes” y confiables como Raymond Hill, o proyectos que no vayan a venderse
      Claro que las apps de escritorio también tienen riesgos, pero históricamente este patrón de adquisición seguida de filtración de datos ha sido relativamente raro en apps de escritorio. Especialmente en macOS, las apps firmadas están en sandbox y no pueden hacer muchas cosas sin permisos del usuario
    • Es una locura tener que confiarle todos mis datos de navegación a un programador desconocido solo para usar pestañas verticales en Firefox. Por eso estoy de acuerdo en que es mejor que sea una función nativa del navegador
      Por supuesto, muchas de estas extensiones son open source y se pueden auditar. Pero no tengo la habilidad para detectar código malicioso, así que me pregunto si no podría ser un buen caso de uso para la IA. Me gustaría saber si alguien tiene ideas sobre cómo crear buenos prompts para detección de malware
  • Me gustaría que las extensiones del navegador tuvieran permisos más granulares. Pero el problema de verificar si el software usa los permisos de forma maliciosa es difícil; basta ver el Obfuscated C Code Contest o el Underhand C Contest. También es difícil comunicar permisos con matices a los usuarios. La mayoría de los usuarios no lee o no entiende los detalles técnicos, y puede ser fácilmente inducida a error.
    Hay un tip para usar extensiones de forma más segura al probarlas en Chrome. Ve a Profiles > Add profile > Continue without account para crear un perfil separado, y luego instala ahí la extensión que quieras; quedará completamente aislada de los inicios de sesión en pestañas, historial, cookies, etc. de tu perfil normal. Del mismo modo, también puedes usar Chrome Beta o Chrome Canary junto con Chrome normal para instalar extensiones.
    Por ejemplo, podrías instalar en este perfil decenas de extensiones de desarrollo web potencialmente riesgosas, y mantenerlo separado, como en un sandbox, del perfil que usas para banca personal o para iniciar sesión en sitios web de tu empresa. No es práctico para todas las extensiones, pero yo lo hago así para desarrollo web y en el perfil personal uso solo unas pocas extensiones.
    En la extensión de navegador que vendo, el permiso que realmente quisiera solicitar es “solo puede observar el tráfico de red enviado y recibido por su propia pestaña”, pero en la práctica tengo que pedir el permiso de “leer y escribir todos los datos”. Por eso comparto el tip anterior en la descripción: https://chromewebstore.google.com/detail/checkbot-seo-web-sp...

    • Como usuario de Firefox, me gustaría que en Multi-Account Containers se pudieran desactivar extensiones por contenedor. En los sitios bancarios no necesito ninguna extensión. Se puede usar un perfil separado, sí, pero la experiencia de usuario es mala.
    • El permiso de “leer y modificar todos los datos” es una gran barrera para una extensión de compras. En realidad, solo necesita identificar páginas de compras. Para generar confianza, intenté publicar como open source la analítica de seguimiento: https://github.com/Score-Extension/score-extension-analytics...
      Espero que la transparencia sea una forma de superar esta barrera de confianza.
    • Me gustaría que hubiera una forma de limitar todo el alcance de los permisos de una extensión mediante una lista de dominios permitidos. En Chromium existe una forma de especificar una lista de dominios en los que una extensión puede ejecutarse[1], pero entiendo que no afecta permisos más amplios, como el historial general.
      [1] Hay que hacer clic en “Details” de la extensión, cambiar la opción “Allow this extension to read and change all your data on websites you visit” a “On specific sites”, y luego agregar los sitios a la lista de permitidos.
    • En Windows se pueden usar apps empaquetadas por portableapps.com. En el .ini se necesita AllowMultipleInstances=true.
  • Eso de que “las extensiones del navegador evocan la sensación de tener un control profundo sobre cómo se usa la computadora” probablemente hará que los usuarios de Linux quieran decir algo.
    Más en general, se parece bastante a la pregunta que intenté discutir hace unos años en un texto titulado “Is Open Source a diversion from what users really want?”. El entusiasmo por poder “hackear” software sin tocar el sistema de build parece mucho mayor que el acceso completo, abierto y teóricamente infinito que ofrece FLOSS. Parece haber razones obvias para ello, pero aun así es un poco decepcionante.
    Lo discutí aquí contrastando el enfoque scriptable pero de código cerrado de Reaper con el enfoque scriptable y open source de Ardour: https://discourse.ardour.org/t/is-open-source-a-diversion-fr...

    • Soy usuario de Linux, pero no estoy de acuerdo. No es exactamente el mismo problema. Si quieres, puedes recompilar el kernel, y también la mayor parte del espacio de usuario. Pero es engorroso, sobre todo si te separas de upstream y tienes que mantener esa diferencia a largo plazo.
      Se pueden hacer hacks interesantes con cosas como LD_PRELOAD, pero no se acercan en absoluto a la flexibilidad y facilidad de acceso de las extensiones del navegador. Tienes derecho a modificar todo el software como quieras, pero la fricción para hacerlo en la práctica es relativamente alta.
    • El paso de Linux a systemd fue una experiencia muy parecida al declive de las extensiones de navegador. Claro que puedo cambiar el comportamiento de mi computadora. Pero si no estoy dispuesto a dedicar mucho esfuerzo a mantener ese cambio, la API que uso desaparece bajo mis pies, y cada vez se vuelve más difícil hacer que mi computadora se comporte como yo quiero y no como alguien más pensó que debía hacerlo.
    • Las extensiones parecen una forma de eludir la firma de código, la distribución y la construcción de marca. Por eso navegadores como Chrome se convierten en plataformas para distribuir y ejecutar software.
  • Hice una extensión de Chrome recomendada en Chrome Web Store[1], y es realmente preocupante la cantidad de brokers de datos sospechosos que me escriben para comprar mi extensión y llenarla de spyware.
    Un desarrollador ingenuo puede crear algo genial y venderlo pensando que alguien le dará mantenimiento, pero en realidad podría poner en riesgo a los usuarios. Google parece hacer bastante bien la revisión del uso de permisos, pero también hay extensiones, como la mía, que necesitan acceder a todo lo que hay en la página. Basta imaginar lo que un broker de datos podría hacer con eso. Hay que tener cuidado al instalar.
    [1] https://chromewebstore.google.com/detail/css-selector-helper...

  • Creo que lo más necesario es un view source para las extensiones del navegador instaladas desde la tienda. Debería ser fácil ver el código fuente y extraer una extensión del navegador como carpeta.
    También debería ser fácil saber a qué páginas web accede y qué modifica. El código minificado u ofuscado dentro de una extensión debería estar prohibido, y el código debería ser muy fácil de leer. Por ejemplo, esta extensión dice que “registra la actividad del usuario”, pero es difícil saber qué significa eso en la práctica: https://chromewebstore.google.com/detail/coffeelings/hcbddpp...

    • En Chrome, si vas a chrome://extensions y activas el modo de desarrollador, puedes ver el código fuente de cualquier extensión en devtools. Los content scripts ya se pueden ver desde las devtools de una página web normal, incluso sin activar el modo de desarrollador.
      La lista completa de sitios web se puede ver en el popup de instalación de la extensión. Chrome Web Store ya prohíbe la ofuscación de código. La minificación está permitida porque no hay una forma significativa de imponer la calidad de los nombres de variables.
    • Se puede ver el código fuente de las extensiones del navegador publicadas en Chrome Web Store incluso sin instalarlas. A veces uso esta herramienta para eso: https://robwu.nl/crxviewer/
      No ayudará con código ofuscado intencionalmente, pero debería servir para investigación de seguridad y privacidad en la mayoría de las extensiones.
  • No son extensiones completas, pero los userscripts y los estilos de usuario logran hacer bastante, y también hay extensiones que permiten a la gente crearlos y usarlos dentro del navegador. Por ejemplo, Tampermonkey[0] y Stylus[1].
    Aunque no puedan hacer tantas cosas como una extensión, me parecen tremendamente importantes.
    [0] https://www.tampermonkey.net/
    [1] https://chrome.google.com/webstore/detail/stylus/clngdbkpkpe...

    • Los userscripts están subestimados. Los uso para todo tipo de cosas. Por ejemplo, arreglar la inútil landing page de GitHub para que me lleve a mis repositorios, hardcodear el dominio de mi instancia para que el botón “follow” de Mastodon funcione, y bloquear resultados inútiles como stackshare en los resultados de búsqueda de Google.
      También los uso para redirigir la vista de “shorts” de YouTube a la vista de video normal y para eliminar el espacio tonto a la derecha de la barra de desplazamiento de Gmail.
  • No programo en JavaScript/TypeScript, pero sí programo, uso muchísimas extensiones y me considero un power user que jamás usaría un navegador sin el ecosistema de extensiones de Chrome/Firefox. También hice temas para Chrome y VSCode, pero sigo en este punto. Si te gustan el rosa y el cian, está aquí: https://marketplace.visualstudio.com/items?itemName=mikejk8s...
    Solo con el aviso de Chrome no tengo ni idea de qué puede hacer, leer, ver o acceder una extensión. “Permitir acceso a los datos de todos los sitios web”: ¿eso realmente significa todos los datos? ¿También lo que escribo? ¿Sabe que navego de una URL a otra? ¿Solo lee recursos? ¿Hay APIs de Chrome que limiten el acceso y que yo pueda ver? No sé de qué debería preocuparme en la práctica.
    Uso una extensión de zoom de video que permite ampliar cualquier video en cualquier sitio web; ¿tengo que auditar cada extensión personalmente para asegurarme de que no copie mis datos a algún lado? No tengo idea, y cómo podría saberlo un usuario no técnico.

    • Por lo que se escucha, parece que sí es así de malo. Por eso, como dijo otra persona, solo confío este tipo de permisos de acceso a unas pocas extensiones clave como uBlock y Bitwarden.
      Tendría especial cuidado con productos de startups de grabación de pantalla/sesión. Aunque no fuera por otra razón, podrían ser especialmente vulnerables a ataques a la cadena de suministro.
    • Sí, es así de malo. Escribí algunas webext y, si pides todos los datos, realmente son todos los datos. Aunque también es difícil imaginar de qué otra manera funcionaría si necesitas cambiar algo en la página.
      Por eso mantengo mi lista limitada a extensiones puntuales hechas por mí, extensiones grandes y conocidas, o cosas cuyo código audité personalmente.
  • Prefiero los bookmarklets. Son fáciles de editar, están inactivos hasta que haces clic, funcionan en todos los navegadores, también en móvil, y se integran bien con la UI.
    Puedes moverlos como quieras, ponerlos en cualquier carpeta de marcadores y asignarles atajos de teclado. Hice un editor que facilita convertir entre código limpio y bookmarklets: https://www.gibney.org/bookmarklet_editor

    • Es un sitio bastante útil. La última vez que toqué un bookmarklet no funcionaba en Firefox para Android, pero ahora sí. Podría ser útil junto con mi instancia de Node-RED.
      Me pregunto si habrá buenos bookmarklets que valga la pena compartir.