Hacker News new | ask | show | jobs
by Swizec 759 days ago
WordPress is my favorite example of "It doesn't have to be perfect, it just needs to work"

So many cool projects die because people over-complicate the first steps. You can always make it better later if people start using your thing, but first you gotta ship.

2 comments

Funny, I think it proves the contrary. Wordpress effectively made their whole code base the public API, so now they’re stuck with the legacy code they have for eternity, unable to meaningfully improve it, as plugins may depend on the existing state.

It’s so bad, the PHP language developers are unable to implement some features/fixes in the language, as the Wordpress team refuses to migrate their code, which makes for a huge chunk of PHP usage. Imagine that.

This is stability. Stability is good. There is no need to change code that works just because it collides with modern taste.

If WordPress has a stabilizing influence on php that's even better. All the breaking changes of the new versions are a nightmare for an established project I work on.

Code is never just working. The environment it runs in changes, requiring refactoring things. We’re not talking about a showcase piece of artisan algorithm here, but bug-riddled legacy code reliant on outdated system packages, SQL queries that cannot use bound parameters for historic reasons and are ever-prone to injection attacks. Code that uses broken multibyte encoding, such that it is vulnerable to several attack classes. And that’s not even talking about performance. Are you seriously telling me software performance should not improved if the core functionality kinda, sorta, works?
> Are you seriously telling me software performance should not improved if the core functionality kinda, sorta, works?

I would not hesitate to take this position. Of course it depends, on how severe the bugs are, especially for the outer code (like plugins) calling it, and on how bad the performance is. But otherwise absolutely, never break user space.

> The environment it runs in changes

The web environment Wordpress runs in did not change all that much. The JS ecosystem simulates big changes, but that's all bullshit. Server code that worked 30 years ago still works - if projects like PHP don't go out of their way to break it.

> Server code that worked 30 years ago still works - if projects like PHP don't go out of their way to break it.

I'd be horrified to expose ANY software written 30 years ago to the internet, if it touches money or valuable data in any way.

> But otherwise absolutely, never break user space.

Neither the Linux kernel, nor OpenSSL, or any other reasonably complex project manages to do that over a given time frame. Sometimes you need to adapt, and things break in the process. Nobody would expect a house built 30 years ago to not require some maintenance and upgrades over time.

> The web environment Wordpress runs in did not change all that much. The JS ecosystem simulates big changes, but that's all bullshit. Server code that worked 30 years ago still works - if projects like PHP don't go out of their way to break it.

That sure sounds good, but is simply not true. We went from HTTP and FTP deployments to TLS and containers, from dialup to gigabit consumer uplink; the browser isn't a remote document viewer but a platform-agnostic virtual machine for fully-fledged applications; the web is centred around a few enormous platforms; people regularly stream GBs worth of video and expect services to deliver web apps on a variety of devices; they don't post on bulletin boards and in news groups, but use chat services; scammers distribute ransomware, steal your identity, remotely take compromising pictures from your webcam, or order stuff from your shopping accounts online. The modern web has almost nothing in common with the one from 30 years ago.

> That sure sounds good, but is simply not true.

Sure it's true. Many users are still doing deployment FTP-style, even if it's not the original protocol anymore. That the pipes are bigger just meant we could up the thumbnail size, and the browser is still also a remote document viewer for sites that don't demand more. I just today answered a support question on a bulletin board, and so on.

There are other aspects of the web today, but the old way still exists.

> Nobody would expect a house built 30 years ago to not require some maintenance and upgrades over time.

You can do upgrades of software in a way that does not break compatibility, and you can definitely always aim to minimize breakage. Wordpress is not a bad example for just that. HN itself counts as a further example. If it weren't possible we wouldn't have this thread to discuss in.

Newer PHP versions are certainly supported (and required by many hosts due to the significant performance improvements of PHP 8.0): https://make.wordpress.org/core/handbook/references/php-comp...
Wordpress requires at least PHP 7.0... and will complain about it if it's not above 7.4 (which was released in 2019).

So this to me looks like WP is progressing with PHP, just slowly.

Frankly I don't have a massive problem with this.

The speed of Laravel's PHP baseline change may be appropriate for Laravel, because it is git-managed, more easily run in a container etc., but it's absolutely inappropriate for WordPress to chase the edge.

Compared to trying to stay up-to-date with needless Node.js changes and frameworks that get EOL'd as soon as there's something more fun to play with, it's a paradise.

Why don't people build things with a decade of life in mind?

Isn't the fact that people started using WP about 25 years ago evidence against "you can always make it better"?