2PC is a basic building block to support the atomic commit and there are some optimizations way in order to reduce disadvantage of 2PC. As you mentioned, it's hard to support a single model that would suit several type of FDWs. But even if it's not a purpose for sharding, because many other database which could be connected to PostgreSQL via FDW supports 2PC, 2PC for FDW would be useful for not only sharding purpose. That's why I was focusing on implementing 2PC for FDW so far.