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?