uNetworking / uWebSockets.js

μWebSockets for Node.js back-ends :metal:
Apache License 2.0
7.82k stars 568 forks source link

TechEmpower ban 2024; the lore #1078

Closed uNetworkingAB closed 1 month ago

uNetworkingAB commented 1 month ago

Sour critique leads to ban

His ego couldn't take me pointing out that his quality control is zero (which it is), so he permanently banned me on GitHub, Twitter, removed and banned uWebSockets.js from the top and added a code of conduct. Yes the project itself is lifetime banned now.

The tweet:

Screenshot 2024-07-18 at 19 17 05

The response:

"[...] Happy to remove your framework. Seeing your tweets now as well. You're not interested in reviewing code and making things better; you're interested in being right and you're too toxic about it. [...]"

Screenshot 2024-07-18 at 19 10 39

The ban:

Screenshot 2024-07-18 at 19 51 40

The block:

Screenshot 2024-07-18 at 19 49 12

1st place in TechEmpower performs half that of uWS.js

TechEmpower is a flawed benchmark for two main reasons:

  1. Fake Participants: Many top participants use obvious hacks like simply splitting the TCP data on "\r\n\r\n", doing no real parsing or standards compliant interpretation whatsoever. There is no quality control to catch these fakes. For example, "gnet," which won Round 22, uses such a hack, making the entire test meaningless. "faf" also uses this hack.
  2. Misleading HTTP Pipelining: By enabling the most bizarre level of HTTP pipelining ever seen in a benchmark, the test only measures how fast the parser can process these tightly packed requests, not its total I/O performance. Since all top participants simply fake the HTTP parsing step as explained above, the entire TechEmpower benchmark is meaningless.

We can very easily see this by running a regular non-pipelined benchmark showing uWS.js massively outperforms "mrhttp", which is the very 1st in TechEmpower.

GSZjHKuWYAAEgji

Most recent run before ban

TechEmpower is not a credible benchmark.

Either way, uWS.js scores insignificantly different from 1st. If excluding obvious fakes & incorrect participants, it scores actually 1st (however, even this should be taken with a grain of salt given how statistically insignificant the win would be).

techruncomplete

Some important nitpicks (elaborating the critique)

uNetworkingAB commented 1 month ago

Ok, looks like the project can come back if someone other than me reverts the removal:

git clone https://github.com/TechEmpower/FrameworkBenchmarks git checkout -b add_uwebsocketsjs git revert 4b0a91f07147386c8f11b36b1410f00b34c7611c git commit git push origin add_uwebsocketsjs

and make a PR of that 👌

porsager commented 1 month ago

If you're fine with it, I'll add it?

uNetworkingAB commented 1 month ago

Absolutely, it's good PR regardless of credibility

uNetworkingAB commented 1 month ago

If you want you can also remove the MySQL subject since it's very obvious all the top ones use PostgreSQL, so why even have MySQL there at all

matiaslopezd commented 1 month ago

@uNetworkingAB that's a pity. Your obsession (in a good way) with following best practices in building high-quality code is admirable, but sometimes when I read your comments in discussions, maybe you're "too rough" in saying things. It's your way of expressing yourself, but you know... some people are a little bit sensitive.

I think we can help in future cases where a benchmark is not transparent and equivalent, in the same way you've exposed here with many arguments.

The hassles of public relations 🙄

leeoniya commented 1 month ago
uNetworkingAB commented 1 month ago

So, nobody added it back?

porsager commented 1 month ago

Done ;) https://github.com/TechEmpower/FrameworkBenchmarks/pull/9189

Got delayed because I wanted to make it run myself too first, but that was unfortunately not as straight forward as it could have been. - Also on vacation

uNetworkingAB commented 1 month ago

Ok. Thanks, guess that puts an end to this thing

uNetworkingAB commented 1 month ago

Aha, vacation. Pfft, no time for vacation

porsager commented 1 month ago

Sure thing: https://github.com/TechEmpower/FrameworkBenchmarks/pull/9194

uNetworkingAB commented 1 month ago

@porsager aha, it is uWebSockets._cfg

porsager commented 1 month ago

Already changed it ;)

uNetworkingAB commented 1 month ago

It needs to be uWebSockets._cfg can't be webserver._cfg

porsager commented 1 month ago

https://github.com/TechEmpower/FrameworkBenchmarks/pull/9194/commits/389ed041de728ae9448d7092249137fb548291ba ;)

First fix was from cfg_ to _cfg..