I would like to better understand the process by which new designs (e.g. bitAssets) or other code gets introduced into BitShares. My background is financial not coding, so I'm admittedly a layman on this topic.
- Where does the BitShares code reside (for example, the trading engine)? Is it all in the client? Is there separate code used by the block-producing nodes, and how is it different? Does common code also sit elsewhere?
- If there is a major code change, who directs the propagation of this change through the network and how? Is it users, delegates, or both? Does this acceptance happen by simply downloading a new client version?
- In practice, how do all the developers agree on the code change? Is somebody responsible for vetting and testing all the changes made before a new version is released?
- If there were competing developers or development teams, that might produce competing client versions, how is a consensus formed within the community on which one will be supported? In practice, is it possible to even have developers compete on version design, or does this need to be a coordinated effort?
Sorry if these questions don't make complete sense.