La problemática del navegador web

Hace tiempo, Luke Smith escribió en su blog el artículo Every Web Browser Absolutely Sucks., en el que exploraba superficialmente la problemática de los navegadores web y exponía lo que para él sería un buen navegador.

En este foro es conocida la problemática de los navegadores, con posts como ¿Realmente hay navegadores para huir del spyware?, El problema de los navegadores basados en Chromium o las discusiones generadas en ¿Que navegador utilizas?. Hechos que se han unido a un conjunto de polémicas con Mozilla (Sobre las acciones recientes de Mozilla) o resumido en vídeo del Chad:

Adhiriéndome a Luke Smith, y según mi opinión y subjetividad, creo firmemente que no existe ni un sólo navegador aceptable, ni si quiera pasable, ninguno. Es extraño, pues hacer un navegador aceptable y simple no debería ser, en principio, tan complicado; sin embargo, parece que la comunidad referente a navegadores se empeña en mantener una deriva hacia la complejidad innecesaria, la obtención de información indiscriminada del usuario y la inseguridad como norma general.

Para concretizar más, y siempre desde mi uso y reflexión personal, expongo las que considero características imprescindibles para lo que consideraría un buen navegador web. Empezando primero por que usable y compatible con las características de la web moderna. Desgraciadamente, esto descarta navegadores de interfaz de texto (lynx) y navegadores “indies” o de nicho (dillo, suckless surf).

Por razones evidentes, debe ser software libre: considero una locura e imprudencia confiar a un navegador de software privativo la información de navegación, que no sólo constituye el conjunto de páginas visitadas mas la información cargada y descargada de éstas (lo que per se forma un conglomerado de información altamente sensible, como información bancaria, financiera, búsquedas generales, gustos personales que generan perfiles ideológicos, patrones de búsqueda, afinidades, etc.), sino también una gran cantidad de metadatos, referentes a los tiempos de usos, user-agent, sistemas operativos utilizados, las huellas del propio navegador, etc. Además de constituir un riesgo alto de puertas traseras o backdoors, vulnerabilidades, spyware integrado, telemetría desconocida, etc.

El navegador no debe realizar conexiones no solicitadas. Es algo bastante sencillo de cumplir para el programador, pero a su vez, algo excesivamente raro de encontrar hoy en día. Así, las bases del navegador deben tender a la modularización y minimalismo: no quiero mantener en mi equipo fragmentos de código de características que no necesito. Si no quiero almacenar el historial, no sólo no quiero que el historial se encuentre vacío o se elimine al cerrar una sesión o proceso; quiero que en el código base del navegador no exista tal característica (suckless es un buen ejemplo de buenas prácticas al respecto). De hecho, defiendo que existiendo marcadores, el historial web está prácticamente obsoleto para el uso común, y su propia existencia, sea local o remoto, se establece como riesgo a la privacidad.

A pesar de ir contracorriente de la tendencia actual, no quiero un ad-block integrado, ya que puede convertirse en vector de ataque, puesto que permiten cambiar el código descargado, incrustar nuevo e incluso ejecutarlo en el navegador, lo que constituye un riesgo para la seguridad y la privacidad. Tampoco quiero VPNs y proxies integrados. Si quiero utilizar alguna de estas herramientas, correrán de mi cuenta. Precisamente, y entendiendo que es un riesgo la permisividad indiscriminada de ejecución de código en cliente (véase La trampa de JavaScript de Richard Stallman), es deseable una correcta gestión del código, aunque no obligatorio, pues este caso puede subsanarse a través de plugin o programas externos. La gestión de cookies y datos almacenados también debe ser gestionable.

La eficiencia del navegador debe ser una característica base, no ocupando excesivos recursos de memoria (especialmente RAM), y debe funcionar de forma fluida (de forma interna, entendiendo que el tiempo de subida y bajada depende de factores externos a éste). Para ello, considero importante que el código del navegador se encuentre escrito en un lenguaje robusto, por ejemplo C ó C++. Evitaría entonces navegadores escritos en Python ó Go, puesto que tienden a hacer navegadores lentos y más propensos a fallos.

Conjunto a la eficiencia, la usabilidad y accesibilidad, considero una característica muy importante la primacía del uso del teclado sobre el ratón. A día de hoy, el uso del ratón en mi ecosistema es casi exclusivamente en el navegador, haciendo que generalmente tenga que levantar las manos del teclado para usar el navegador. Por ello considero que debería tener un buen soporte y navegabilidad a través de atajos de teclado. Me da igual si lo basamos en comandos como vi o en combinación de teclas como emacs.

Actualmente, todos los navegadores que he usado crean continua basura desordenada en mi jerarquía de directorios (~/.pki, ~/.mozilla…). Ésto no sólo me molesta, sino que me parece absurdo que no se utilicen los directorios XDG apropiados ¿por qué no utilizan los directorios ~/.config, ~/.cache, ~/.local/share…?.

Al hilo, tampoco comprendo como, al menos en la familia Unix, sigamos teniendo navegadores que no cuenten con un archivo de configuración en texto plano. Las ventajas serían abisales, y más en un software tan ampliamente usado hoy día: permite exportar fácilmente la configuración de tu navegador, la cual suele ser compleja y poco intuitiva, requiriendo formularios arcaicos o páginas about. Mantener la configuración en un fichero permitiría además hacerla transportable, escalable, securizable, gitable… El hipotético archivo debería gestionar complementos y características agregadas, fuentes y personalización estética, combinaciones de teclas, marcadores y accesos directos, prefijos de motor de búsqueda, etc. Es algo tan simple de implementar, que no comprendo cómo no existe ningún navegador, al menos que yo conozca, que lo ponga en práctica.

A consecuencia, el uso del navegador sería absolutamente personal y simple. Se mejoraría en privacidad y seguridad; y por supuesto en libertad. Y el uso de recursos software-hardware sería más respetuoso. Además, estas características me dotarían, en lo personal, de una mayor eficiencia de uso general del computador, ofreciéndome una cohesión mayor entre las interfaces que suelo utilizar (gestor de ventanas en mosaico, terminales, múltiples monitores…) y la navegación web.


Me encuentro en una diatriba de uso de navegador; no me gusta ninguno, pero estoy obligado a utilizarlos. Utilizo a menudo Mozilla Firefox y GNU Icecat, también Microsoft Edge. En Android estoy usando ahora mismo el navegador de Starpage, estoy en pruebas, recomendado por este foro, de Mullvad. Tengo también una copia de Palemoon pero, desgraciadamente, no es usable en la web actual para muchos de los casos…

Ninguno de estos navegadores se acercan a lo que consideraría un buen navegador. Quizá la mejor opción, en función a las características demandadas en este texto, sea el navegador surf, de suckless; sin embargo, aun no lo he empleado e implementado tanto como para poder independizar el uso del navegador, tampoco he conseguido hacer correr varias webs -que utilizan exceso de programación- en él. A efectos prácticos, considero que el navegador es una de las asignaturas pendientes de las comunidades de software libre y de la informática en general.

¿Qué opináis ustedes al respecto?

3 Me gusta

Estoy completamente de acuerdo en todo, punto por punto.
Bueno, para a mí lo de usar ratón no es una molestia, porque lo uso más que el teclado, pero sería positivo que se tratara de una opción, y no de una imposición.

Creo que buena parte del problema no viene tanto del programa como de las webs actuales.
La figura del programador web ha sido sustituida por la del diseñador web, y la mayor parte de la web actual está montada sobre portales preprogramados (Wordpress, Pretashop, etc…) llenos de bloatware, por no mencionar las webs montadas a base de plugins y librerías enormes para usar quizá un par de funciones.
Además, todas están repletas de scripts externos (para seguimiento, publicidad, login externo, etc…). Estos factores, entre otros, hacen que hasta la página más sencilla ocupe decenas o cientos de MB de RAM, consuma procesador a paladas y requiera navegadores extremadamente complejos.
Lo ideal, además de tener mejores navegadores, sería volver a las webs “2.0”: páginas sencillas con los complementos dinámicos exclusivamente necesarios.

Otro problema que arrastramos los últimos años es el de los estándares de seguridad: la web nació sin ningún tipo de seguridad, con los años se han ido sucediendo sistemas cada vez más complejos, parche sobre parche, y obligados a mantener cierta compatibilidad hacia atrás. Creo que va siendo hora de replantear el sistema, empezar de cero con nuevos protocolos seguros desde el primer día y mantener la compatibilidad desde ejecutables separados (en principio, el navegador sólo abriría páginas con el nuevo sistema desde un ejecutable libre de código heredado; si tiene que abrir una página antigua, lo hace con otro ejecutable específicamente para mantener compatibilidad con el sistema actual).
Este mismo problema lo tenemos en casi cualquier subsistema informático: desde UEFI emulando BIOS, procesadores x64 soportando instrucciones de 16 bits, SSD emulando pistas y sectores de disco mecánico, editores de texto soportando codificación ASCII… Hace un par de días se anunció que los próximos kernels Linux dejarán de soportar 486. :rofl: Y, total, para qué: basta que un fabricante no actualice un driver para que un hardware quede obsoleto, o que sí lo actualice y deje en la estacada una función importante, o que cambien una librería y tengamos muchos programas que ya no se pueden ejecutar; entonces, ¿qué sentido tiene mantener una compatibilidad por un lado si se pierde por otro?

2 Me gusta

¡Por supuesto! Como decía eso sería para mí una ventaja, pero evidentemente no prescindo del uso del ratón. Pero para muchas ocasiones me sería mucho más cómodo y rápido acceder mediante teclado; evidentemente muchas webs, sino la mayoría, están diseñadas para ser usadas mediante cursor.

Por lo demás, radicalmente de acuerdo con todos tus puntos :military_helmet:.

Los navegadores fueron un mal necesario que tenemos que usar un poco en contra de nuestra voluntad y están llenos de bloatware como dijo @Yomes.

Además, la web incentiva las malas prácticas de programación, como comprimir código alto nivel de manera que queda inentendible o usar Javascript para cualquier cosa.

Perdimos la cultura de hacer código simple y optimizado, por culpa del infinito poderío que tienen nuestros dispositivos contemporáneos.


También estuve dando una ojeada a aquel navegador, es como Qutebrowser pero con menos bloatware, por lo que queda perfecto en mi sistema Alpine Linux, debe funcionar sin problemas con xinit $(which surf) desde TTY, ya que no usa librerías gráficas por lo que tengo entendido.

1 me gusta

Estoy de acuerdo completamente, y no veo realmente una solución a corto plazo, todo está tan centralizado en ciertos formatos web y estándares que se acumularon sobre el tiempo que ya es imposible deshilar el enredo, como @Yomes desarolló, saldría mejor empezar desde cero con nuevos protocolos.

Yo ya me he resignado por ahora a usar solo Firefox, Tor y Mullvad, no veo útil irse por otros caminos, hasta que Ladybird sea usable estaremos atrapados en los tres de siempre, dígase Blink, Gecko o Webkit.

3 Me gusta

Comparto la mayoría de lo dicho punto por punto. Ahora, hay muchos problemas por superar para solucionar esto y ninguno es fácil ni por asomo.
Lo primero es aclarar que las conexiones salientes no son buenas y malas, hasta en muchos casos son necesarias para las conexiones básicas con servidores. El problema está en realidad cuando no se puede ver qué es lo que se necesita enviar con dicha conexión.

Ahora para lograr tener un navegador decente se deben superar obstáculos muy jodidos como el financiamiento, la cantidad monumental de desarrollo incluso hasta para lograr un funcionamiento con “rueditas de entrenamiento”, interfáz intuitiva (a prueba de neandertales) y todo para que los usuarios comunes sin conocimientos de informática se sientan atraídos a usar la aplicación.
Otro problema que considero importante es el motor de búsqueda. Vas a usar el motor de búsqueda conocido con todo ya indexado o vas a usar uno nuevo y propio? Usar uno propio implica el trabajo de mucho personal para indexar lo que más se pueda de la web para que el buscador realmente sea conveniente para el uso.
La tendencia a “acomplejizar” la construcción de la web se debe a tendencias, modas y costumbres culturales que los usuarios mismos provocan, donde las empresas aprovechan para obtener la mayor cantidad de ganancias posibles. No está mal en sí lo que hacen las empresas en este aspecto, pero sí es un cúmulo de factores que lleva a que internet “este roto”. Los usuarios deben cambiar la mentalidad en relación a lo que consumen y así es como las empresas cambian de táctica.
En cuanto al uso de VPNs y proxys, no lo veo mal que esté integrado al navegador, porque muchas veces uno hostea sus propios servicios y estas tecnologías interfieren con la configuración de red y del servidor. Esto es mas bien algo personal y no obligatorio.

Cada tema tiene su propio caso de estudio y se podría desarrollar un tema por sí sólo.
Yo la verdad es que siento asco al ver la situación actual de inernet o al menos la parte más popular de internet.

2 Me gusta