All,
In the current mainline client everything is lugged into one executable (with an optional daemon-only one). I think this is a bad idea for various reasons, and would propose something like:
- bitcoind: bitcoin daemon
- bitcoin(-qt): bitcoin GUI executable
- bitcoincl: bitcoin RPC command line
By default, all three would be built. In non-GUI mode, only bitcoind and bitcoincl are built (the names are obviously open for discussion).
Advantages:
- It is more clear to the user. One command, one function.
- It simplifies the main functions.
- The UI would no longer double-function as daemon. It is a waste of memory to link the UI libs if you only want to run a background process.
- The UI and daemon would no longer double-function as RPC call. Why load the code for UI and network if you just want to send a single command over JSONRPC? This would also prevent accidentally launching the daemon/UI locally if you just want to send a command and forget to give an argument.
JS