Web development

The insane, immense scale of browsers

Since the early wars between Netscape and IE, functionality has become the main tool in browser competition. But the strategy of unlimited growth and expansion is completely insane. For too long we have let it go on.

Using wget I downloaded all 1217 of the W3C specifications published to date1. A significant portion of these must be implemented in the browser for the modern web to work. I have calculated the scope of these specifications. How complex do you think the modern web is?

[1] As of 2020-03-18. Excluding the WebGL specs that Khronos is responsible for.

In total, to date, the W3C specification catalog contains 114 million words. If we take the C11, C ++ 17, UEFI, USB 3.2, and POSIX standards, add to them all 8754 published RFCs, as well as all of list of longest literary works on Wikipedia, the W3C is still 12 million words longer2.

[2] The remaining space can be easily filled using the 5038 pages of the Intel x86 Architecture Manual. You just have to copy it about six times.

My conclusion: it is not possible to create a new web browser. The complexity just goes off scale. The laboriousness of creating a new browser is comparable to sending a person to the moon or creating a nuclear bomb from scratch.

It is impossible to implement the web correctly.

It is impossible to implement the web securely.

It is impossible to implement the web at all.

Create a brand new browser to compete with Google or Mozilla? Yes, it's so stupid that you will be immediately asked if it has any boring wallpaper. The latest major effort, Servo, has slowly morphed into half-incubator for Firefox refactorings, half fun for bored Mozilla engineers, where they can safely play with unnecessary technologies. A viable modern browser? What is it? Who cares when we have WebVR! Cool, right? Yes?

The consequences are obvious. Browsers are the most complex and heavy software that people run on typical consumer computers. Everyone knows how well browsers consume RAM, processor, battery, etc. More than 8000 vulnerabilities have been found in browsers alone3.

[3] The number of CVEs in the cve.mitre.org database for the keywords "firefox", "chrome", "safari", "internet explorer".

Due to the monopoly guaranteed by the truly cosmic cost of creating an alternative, browsers have ceased to serve users and now serve their creators. Firefox is bringing in more and more ads, telemetry, and must-have plugins. Chrome is used by Google to monitor your online behavior and to plant malicious technologies like DRM and AMP. The browser duopoly is growing stronger as Microsoft abandons Edge, and WebKit has long since stopped developing.

Most browsers are open source. Usually, if an open-source project is doing some kind of game, then the community can fork it to create an alternative. However, this won't work for browsers. The W3C prints an average of 200 new specifications every year - that's 4 million words - like a new POSIX every 4-6 months. Show me a team that can keep up with all this development - and also deliver on time that mountain of specifications that have already accumulated.

The browser wars dragged on. A long time ago, you should have started competing in browser stability and performance, instead of development team productivity measured in features per sprint. You are fucked. Get there!

Note: If you are interested methodology for counting words in specifications , then I have it.
kleop 26 february 2021, 11:07
Vote for this post
Bring it to the Main Page


Leave a Reply

Avaible tags
  • <b>...</b>highlighting important text on the page in bold
  • <i>..</i>highlighting important text on the page in italic
  • <u>...</u>allocated with tag <u> text shownas underlined
  • <s>...</s>allocated with tag <s> text shown as strikethrough
  • <sup>...</sup>, <sub>...</sub>text in the tag <sup> appears as a superscript, <sub> - subscript
  • <blockquote>...</blockquote>For  highlight citation, use the tag <blockquote>
  • <code lang="lang">...</code>highlighting the program code (supported by bash, cpp, cs, css, xml, html, java, javascript, lisp, lua, php, perl, python, ruby, sql, scala, text)
  • <a href="http://...">...</a>link, specify the desired Internet address in the href attribute
  • <img src="http://..." alt="text" />specify the full path of image in the src attribute