logo

drewdevault.com

[mirror] blog and personal website of Drew DeVault git clone https://hacktivis.me/git/mirror/drewdevault.com.git

Reckless-limitless-scope.md (4171B)


  1. ---
  2. date: 2020-03-18
  3. layout: post
  4. title: The reckless, infinite scope of web browsers
  5. # Word count:
  6. # - All RFCs: 57,716,641
  7. # - POSIX: 2,017,056
  8. # - USB 3.2: 872,395
  9. # - UEFI: 659,580
  10. # - C++17: 576,344
  11. # - C11: 208,220
  12. # - x86 ISA:
  13. # - All of the books on Wikipedia's list of longest novels: 39.7M
  14. #
  15. # All W3C specs:
  16. # - 113,875,980 (preliminary count)
  17. ---
  18. Since the first browser war between Netscape and Internet Explorer, web browsers
  19. have been using features as their primary means of competing with each other.
  20. This strategy of unlimited scope and perpetual feature creep is reckless, and
  21. has been allowed to go on for far too long.
  22. I used wget to download all 1,217 of the [W3C specifications][w3c specs]
  23. which have been published at the time of writing[^1], of which web browsers need
  24. to implement a substantial subset in order to provide a modern web experience.
  25. I ran a word count on all of these specifications. How complex would you guess
  26. the web is?
  27. [^1]: Not counting WebGL, which is maintained by Khronos.
  28. [w3c specs]: https://www.w3.org/TR/
  29. The total word count of the W3C specification catalogue is 114 million words at
  30. the time of writing. If you added the combined word counts of the C11, C++17,
  31. UEFI, USB 3.2, and POSIX specifications, all 8,754 published RFCs, and the
  32. combined word counts of everything on Wikipedia's [list of longest
  33. novels][longest novels], you would be 12 million words short of the W3C
  34. specifications.[^2]
  35. [^2]: You could fit the 5,038 page Intel x86 ISA manual into the remainder, six times.
  36. [longest novels]: https://en.wikipedia.org/wiki/List_of_longest_novels
  37. I conclude that **it is impossible to build a new web browser**. The complexity
  38. of the web is *obscene*. The creation of a new web browser would be comparable
  39. in effort to the Apollo program or the Manhattan project.
  40. It is impossible to:
  41. - Implement the web correctly
  42. - Implement the web securely
  43. - Implement the web **at all**
  44. Starting a bespoke browser engine with the intention of competing with Google or
  45. Mozilla is a fool's errand. The last serious attempt to make a new browser,
  46. Servo, has become one part incubator for Firefox refactoring, one part
  47. playground for bored Mozilla engineers to mess with technology no one wants, and
  48. zero parts viable modern web browser. But WebVR is cool, right? Right?
  49. The consequences of this are obvious. Browsers are the most expensive piece of
  50. software a typical consumer computer runs. They're infamous for using all of
  51. your RAM, pinning CPU and I/O, draining your battery, etc. *Web browsers are
  52. responsible for more than 8,000 CVEs*.[^3]
  53. [^3]: Combined search results for CVEs mentioning "firefox", "chrome", "safari", and "internet explorer", on cve.mitre.org.
  54. Because of the monopoly created by the insurmountable task of building a
  55. competitive alternative, browsers have also been free to stop being the "user
  56. agent" and start being the agents of their creators instead. Firefox is filling
  57. up with ads, tracking, and mandatory plugins. Chrome is used as a means for
  58. Google to efficiently track your eyeballs and muscle anti-technologies like DRM
  59. and AMP into the ecosystem. The browser duopoly is only growing stronger, too,
  60. as Microsoft drops Edge and WebKit falls well behind its competition.
  61. The major projects are open source, and usually when an open-source project
  62. misbehaves, we're able to fork it to offer an alternative. But even this
  63. is an impossible task where web browsers are concerned. The number of W3C
  64. specifications grows at an average rate of 200 new specs per year, or about 4
  65. million words, or about one POSIX every 4 to 6 months. How can a new team
  66. possibly keep up with this on top of implementing the outrageous scope web
  67. browsers already have *now*?
  68. The browser wars have been allowed to continue for far too long. They should
  69. have long ago focused on competing in terms of performance and stability, not in
  70. adding new web "features". This is absolutely ridiculous, and it has to stop.
  71. *Note: I have prepared a write-up on [how I arrived at these word counts][writeup].*
  72. [writeup]: https://paste.sr.ht/~sircmpwn/13c1951014a256e9f551296a129bf6d10e9303dc