Hacker Newsnew | past | comments | ask | show | jobs | submitlogin

> ... the software is garbage.

I try to be slow to jump to that conclusion ... so often there are reasons for things to be the way they are. The software tools and the hardware capabilities were very, very different in the aughties, and many people currently writing software don't really seem to appreciate by just how much. It may be the case that things could have been done differently, perhaps better, but then again, once you know the full story, maybe not.

Some time ago I wrote up a war story from the mid-nineties and had some current software people crap all over it. When I started to explain about the machine limitations of the time the bluster increased, and among the replies I got was "The software was crap".

Ever since then I've been interested in the contexts for these stories. So often I hear "Well you shouldn't have done it like that!" rather than an enquiring:

"OK, let's assume some clever people wrote this, I wonder what the pressures were that made them come out with that solution."

I've learned a lot by approaching things that way, instead of simply declaring: The software was garbage.



> “OK, let's assume some clever people wrote this, I wonder what the pressures were that made them come out with that solution."

Pressure from everyone to get something shipped and out-the-door - never-mind the technical debt - and after it ships management is only interested in further growth fuelled by more features - deepening the technical debt.

As for the problem of Apache keeling over too easily - that’s because Apache (at the time - and I think still now) is based on “one thread per HTTP request” - or one thread per connection. Asynchronous (or rather: coroutine-based) request handling was very esoteric in the late-1990s and early-2000s - and required fundamentally different program architecture - no-one was going to rewrite their CGI programs to do that - and Perl script based applications couldn’t do anything at all. Asynchronous HTTP request handling only really became mainstream when NodeJS started getting popular about 7-8 years ago - but, to my knowledge, besides ASP.NET Core - no other web application platform treats asynchronous request handling as a first-class feature.


> Asynchronous HTTP request handling only really became mainstream when NodeJS started getting popular about 7-8 years ago

Nginx first came out in 2002. It was being used widely by something like 2008.

> no other web application platform treats asynchronous request handling as a first-class feature

Huh? Web application platforms that do this have been around since the late 1990s. (Heck, there was one written in Python in the late 1990s, it was called "Medusa".) They just weren't "popular" back then.


I think not being popular would qualify them as esoteric


Perhaps the ones from the late 1990s were (depends on what you think qualifies as "esoteric", since Medusa, for example, was serving high volume websites in the late 1990s), but I wasn't claiming they weren't; I was only pointing out that they did in fact support asynchronous request handling as a first class feature, even before Nginx did.

Nginx, OTOH, was popular before NodeJS even existed, let alone before NodeJS became mainstream.


It's not the async logic that's hard, it's the parsing and handling of the HTTP protocol. Apache had years to get it right and figure out the workarounds for non-compliant black boxes. It's this that keeps it around unfortunately. Its architecture is obsolete and a waste of resources.

Nginx does the async stuff properly I believe but there's still the nonsense of forking child processes.


Not sure where you draw the line between a server and a platform, but Go and Elixir are async by default. (Not in the async await sense, but in the sense that they handle requests using lightweight userspace threads).

Besides that, Python, Java and PHP have had mature async web stacks available for years as well. Is there any commonly used language that doesn’t?


How many years? More than 15? This conversation is getting into decades, which many developers (just by nature of growth of the industry) haven't experienced.


You should make this a top-level comment.

Ed: or maybe a blog post to be repeatedly deployed in threads like this one.


I may blog about it ... I've put it on the list of things to think about.

Thank you.


Now done that, and submitted it here[0]. I have no doubt it will sink without trace, but it's there for me to point at in the future. Thanks for the encouragement.

[0] https://news.ycombinator.com/item?id=23123342


I gave it an updoot, at least. :)


Thank you! It didn't get much attention, so in accordance with the guidelines I've given it one re-submission. I expect it will sink without trace, although I may be surprised. Regardless, it's there as a resource so I can point people at it.

Cheers.




Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: