Building with Intention: Achieving System Qualities through Design Choices | Devcon SEA
Devcon 7 · 15 Nov 2024 · 8:57
Auryn Macmillan argues that technical and design decisions should be treated as means to broader system qualities rather than ends in themselves. The talk reorients attention to why we build the way we do and whether there are better ways to reach comparable outcomes, using examples and case studies to help attendees evaluate their own design choices critically.
Speakers
Topics
From Devcon 7, hosted by Ethereum Foundation.
Transcript
[Music] maybe there we go uh so I'm going to talk briefly today just about uh building with intention I'm not going to do intros and everything because got five minutes and just want to quickly kind of wrap through everything um so when I say building with intention what I really mean here is being deliberate about uh the combination of tools and uh components that we use to construct systems in order to achieve specific qualities um and a critically overlooked part of this is understanding what qualities one actually wants to achieve in a system uh one is designing uh and so when you're designing systems uh perhaps the best shortcut I can offer
for actually understanding what qualities you might need um is to mentally stray from the happy path uh so the default way that we typically think about building applications uh and systems is to consider the the affordances the features that we want to enable but a lot of our most critical design choices often don't make themselves apparent until we uh either mentally Traverse the kind of unhappy paths uh what happens when something goes wrong uh or they reveal themselves later uh they reveal themselves to kind of be critically absent when it's already too late um so it's it's this category of problems that where
typically trying to solve for Via decentralization but in our industry I think uh decentralization is this kind of buzz word right it it's this commonplace descriptor expectation but it's near meaningless in a lot of cases um because it's treated as an end uh and in reality it's a means it's a means to achieving a handful of other qualities that are really valuable in in uh the types of systems that we're often building uh and so I want to quickly caveat that decentralization is this kind of spec it's not binary a system may be more or less decentralized than another system across various different axes and most complex systems make these really explicit kind of trade-offs at various layers of of their stack based on which
priorities or which which uh qualities need to be prioritized but again decentralization is this means uh to achieving some other ends uh so let's talk briefly then about what those uh qualities actually are what we're looking for um I think there's four critical uh components that we're looking to achieve uh looking to achieve kind of guarantees around so this is censorship resistance correct execution availability and capture resistance um censorship resistance is essentially asking the question can one prohibit another from using the system uh and if so under what conditions and is that desirable so say Twitter taking Twitter for example one's interactions on Twitter can almost certainly be censored
right Twitter can choose to arbitrarily uh allow or disallow an account allow or disallow some piece of content uh and this is perhaps a good quality in some scenarios uh for moderating things like hate hate speech um but it can also almost certainly be abused almost certainly is abused uh for you know to to suppress criticism to uh uh suppress conflicting political opinions um and so there's this uh kind of interesting design space to play with there for decentralized or more decentralized Twitter Alternatives uh things like farcaster to aim to find essentially a different balance between uh this censorship resistance uh and then content moderation um and so yeah
interesting kind of design space to play in uh next one correct execution uh will the system essentially behave as expected could one coers the system into unexpected behavior um good kind of example here would be thinking about say airline miles right you would expect to uh earn Miles when you fly be able to redeem them to purchase a flight um but those things could be arbitrarily changed right um by by whoever's operating the uh the airline miles and unfortunately we've had a kind of trend towards similar patterns recently in uh in the web3 space uh essentially treating uh points right uh these arbitrary arbitrarily kind of controlled systems for for rewarding users that
ultimately end up reintroducing some uh censorship or capture resistance or or correct exec ution uh vectors uh last one here sorry availability uhen can one rely on the system to to be online uh is the system dependent on any specific actors uh and what happens if they're unavailable um obviously the the the previous two correct exe uh yeah correct execution and censorship resistant are kind of subsets of or kind of tightly related to availability um but yeah another another kind of really important quality and then this last quality here uh capture resistance is asking like will the other guarantees hold indefinitely is there some party that could uh could
arbitrarily change these rules in future or or kind of capture enough of the the mechanisms that control this thing to make changes in future um so again these the these four kind of key qualities censorship resistance uh correct execution availability and capture resistance uh in concert uh these are kind of best achieved via radical decentralization um however obviously legitimate decentralization is is notoriously difficult to achieve um and this is the whole kind of value proposition for the infinite Garden for for blockchains like ethereum is to enable applications to inherit these kind of features uh while focusing on implementing their own affordances um so I guess yeah the the
kind of key question here that I'd encourage people to ask is when they're designing systems is what qualities what of these qualities can they inherit from uh the systems that they're building on on top of um and which qualities do they need to kind of explicitly engineer uh and and then kind of importantly are any of the design choices they're making about or you're making about the systems You're Building uh undermining the qualities that you would otherwise inherit um again you can you can largely inherit those four qualities from building on top of something like ethereum but it's it's very easy to unintentionally or intentionally undermine them and kind of reintroduce some of the problems uh so I'll leave it there for today
necessarily super high level very quick talk uh happy to go deeper into the topic if anyone wants to chat again uh but just to reiterate big takeaways uh is really important to tread that on Happy path when you're designing systems uh think about the things that could go wrong how your system handles it what you uh what what qualities you can uh uh bake into your system in order to to avoid those unhappy paths or handle those unhappy paths um from those that have kind of trodden the unhappy paths before us a handful of the really critically important qualities censorship resistance correct execution availability and capture resistance uh and then obviously you can inherit those qualities by building on top of ethereum or something like ethereum um but be
careful not to undermine them uh you can find me on Twitter at Orin McMillan thanks for the uh very brief talk awesome Morin we have time for one question who who wants to who wants to go next with a question someone just just one question not that many hints just we have space for one question cool everything clear or how you you you mentioned the role to um well let's just say full decentralization that it's quite far um what do you think like if you give us St
a time frame oh so I'm notar saying like a road to full decentralization I'm saying if you're building uh a system from scratch it's it's very difficult to to build a legitimately decentralized system largely because it it implies having uh cultivating a a community of say node operators right and this is a this is a notoriously difficult thing to do is to to set up the incentive structure and uh and actually find rally the people to kind of run your nodes or or kind of participate in your EOS system and do you know anys that are and do you know any projects that are um that have that standard that you're looking at there ethereum it's
great so like this is a great way to to inherit a bunch of these qualities this is is by deploying on ethereum or deploying on uh something that's that's kind of tied to ethereum thank you so much everyone please give him a great Applause I appreciate it