A soft fork is forward compatible. Soft forks restrict block acceptance rules. Hardforks are not forward compatible and expand the rules. So like you say increasing the block size would be a hardfork because old nodes with a limit would not count a block larger than than that limit as being valid thus the old nodes would be broken compared to new nodes. Decreasing the block size however would be forward compatible because old nodes would still consider the smaller block size valid. Eventually if the change was accepted by enough nodes the network will still move towards all the block being smaller but in the meantime old nodes can still continue to work on the network as before.
Segwit scripts are OP_0 followed by an 20 byte hash. Old nodes accept this script as valid because the top element is nonzero. Newer segwit nodes have a special new way to validate this type of scripts which includes knowing to look for the witness part of the transaction. Again forward compatible so a soft fork. Segwit was activated by the user not the miners. This chapter in @jimmysong book explains it much better than I could. https://github.com/jimmysong/programmingbitcoin/blob/master/ch13.asciidoc.
deleted by author
reply