Open scarmuega opened 1 year ago
100% in favor of something like this.
The following is a non-exhaustive list of topics to trigger a discussion regarding the content of what a Well-Architected framework for Cardano might include.
DISCLAIMER: I'm far from being an expert in most of the topics enumerated here. This list is my best-effort trying to extrapolate topics from similar frameworks (mainly cloud providers) to our context. Many topics are probably missing and present ones might require to be reframed.
I'm going to leave some further notes here.
Rollback handling
Yes Please! guidelines on correctly handling a rollback or some assurance that a given indexer will deal with rollbacks automatically would be beneficial.
For me, a well-architected framework would necessarily address issues of Portability & Reproducibility
Though admittedly, Light wallets currently don't support this kind of behavior. Otherwise we are very close.
I would also say that build time and tight feedback loops are key to such a framework.
@scarmuega Are you proposing that we work to build such a framework?
What would our path to success look like?
Lets discuss at the meeting Nov 15
@Benjmhart I agree with all of the points mentioned in your previous comments. I'm going to try to paraphrase the background of the ticket as discussed in previous meetings.
Development teams need to make architectural decisions when designing a dApp. Some examples:
... and the list goes on.
Within the context of this issue, framework
refers to a set of principles and best-practices, not necessarily tied to any particular source code or binary (other than those used for reference / example), that could help developers answer questions such as the above.
I think that a path to success would entail:
discuss how this work aligns with https://github.com/input-output-hk/cardano-engineering-handbook
Cloud-development platforms usually provide a "well-architected framework" that describes their view of how to approach the development of complex systems on top of their platforms.
Here are some examples:
In essence, each framework provides a set of best-practices on how to approach different development disciplines, such as: security, reliability, performance-optimization, monitoring, tracing, etc.
Having a "Cardano Well-Architected Framework" in a similar fashion to the mentioned above would serve as useful guidelines for developer teams entering the ecosystem.