How do Bitcoin nodes discover eachother

From googling this, it seems like each node maintains a list of other know nodes, and this is in turn distributed to new nodes. There are also some hardcoded nodes to get the network started.

But what happens if those hard coded nodes go down? I don’t understand how this can be truly decentralized.

Nothing stops you from adding nodes, or changing the list of nodes, if some nodes go away. If all the nodes go down, that’s too bad, though if you think about it you don’t need that many nodes; having a lot was just supposed to keep nodes from cheating by re-writing the transaction history as it were. I don’t remember all the details but by 2009 iirc some nodes were DDoSing each other to enjoy more of the “mining” rewards for themselves, though.

Seems to me that having all the hard-coded nodes go down would make it more decentralized, not less. A hard-coded node is a nexus of control. Without it, you rely on something else.

Presumably if none of the nodes in your list respond, then you have to go find some nodes some other way.

This all sounds very much similar to the internet DNS system.