Is there a good idea for having a node and wallet separate? Or should they be together?
It's good practice to separate them, here's why:
- Security. The node is open to the network and the wallet keeps your private keys. In case some exploit was found in the node sofware, this significantly reduces the risk for your funds
- Practicality. You can run multiple wallets all talking to the same node. With them bundled together this becomes messy, if not impossible.
- It's easier to focus on improving one aspect of the overall suite.
- It's easier to debug
- It's easier to maintain
- By having a stand-alone node software, you already did half of the work for many other uses like exchanges, mining pools and block explorers without them having to poke out relevant code from a bundled mess of everything.
- By having a separate wallet software, you make it easier to write another wallet implementation.
- The inner workings of the software will be easier to understand for those new to the code
To take this further, specific parts of each software could be "librarized", so it would become even more modular and allow flexibility in future development and allow to use already built code with other languages etc. In fact, this is also one of the long term development goals.