A soft fork is a new restriction on bitcoin blocks or their contents, done in such a way that old nodes still see all the new block contents as perfectly valid

A hard fork removes a restriction on bitcoin blocks or their contents, done in such a way that old nodes see the new block contents as invalid because they break a rule that those nodes still enforce

Okay, makes sense from a full node perspective. But I was thinking about miners: Any miner which produces a block bigger than your new smaller limit will be incompatible with your fork.

So there will be one fork mining small blocks and one fork mining big blocks, no?

And not only one chain which everyone sees valid like in a soft fork.

All soft forks impose new restrictions on miners that they have to follow to stay in consensus. E.g. the segwit softfork took bc1 addresses -- which used to be "anyone can spend" addresses, because you could spend them without a signature -- and made it so you could only spend them if you put a signature in the witness data. At the time, miners running an old node still "thought" they were anyone_can_spend addresses, but if they had ever tried creating a block spending one without a signature, upgraded nodes would have considered that block invalid.

So when a soft fork happens it is important for every miner to update their nodes otherwise they can mine invalid blocks and the network will reject them...and they will lose money

Ah okay, I see. I think that's also why we had miners signalling for taproot, right? It was a soft fork but as you explained it, miners still need to agree.

Thanks for the explanation!

Edit: Lol, just noticed they posted a video on https://taproot.watch/