I'm not entirely clear how ethereum will work in practical terms but I was thinking about development workflows and I'm curious what others think or if this is even coherent as I try to keep up with this technology.
It seems to me the best approach to application development would be to create isolated, single-function contracts that are then referenced by applications or other contracts. Applications being mostly an interface and basic logic to offer up a particular arrangement of contracts. In this way, contracts may represent an arrangement of parts, which are also parts that can be exchanged for another arrangement. You could even use a contract to serve the function of dependency injection to ease migration paths or expose a ui to allow end users to configure their own arrangement. A contract can provide meta for a single purpose about other contracts such as associating a logo or description with a contract.
By isolating logic into small, dumb contracts, code that can be written in a day, it seems like it would be easier to maintain the complexity while improving reusability and developer consensus. I know I've read one example of this which is a contract that serves the purpose of a standard library. Thoughts? Criticism?
I've been piecing together how you might build governance applications from this. So create a contract for a particular kind of democratic function, very isolated and generic. Several services might reference that contract but implement wildly different governing structures through their employment of various other contracts. This would make it easy to fork entire bodies of governing logic which could be used for anything from music clubs to companies to online guilds to governments.