Decentralized development: what even does it mean and should we care? (yes!) (Devcon4)
Devcon·Wed, Oct 9, 2019, 12:00 AM
Visit the https://archive.devcon.org/ to gain access to the entire library of Devcon talks with the ease of filtering, playlists, personalized suggestions, decentralized access on IPFS and more. https://archive.devcon.org/archive/watch/4/decentralized-development-what-even-does-it-mean-and-should-we-care-yes Amber Baldet and Patrick Nielsen discuss decentralized development. Speaker(s): Amber Baldet, Patrick Nielsen Skill level: Intermediate Track: Developer Infrastructure Keywords: dapps, architecture, process, network, consent Follow us: https://twitter.com/efdevcon, https://twitter.com/ethereum Learn more about devcon: https://www.devcon.org/ Learn more about ethereum: https://ethereum.org/ Devcon is the Ethereum conference for developers, researchers, thinkers, and makers. Devcon 4 was held in Prague, Czech Republic on Oct 30 - Nov 2, 2018. Devcon is organized and presented by the Ethereum Foundation, with the support of our sponsors. To find out more, please visit https://ethereum.foundation/
Transcript
and we're here to discuss a little bit today well show you a little bit of what we've been working on in kind of a fun little new tool that hopefully will be helpful to the community but also we really just wanted to talk about some of the thought process that we're going through and what it really means to be creating the kind of decentralized quote-unquote applications and that it's not just about the types of networks that we're building but about the entire type of architecture that we're using and also the processes that we use to create and manage and maintain and extend these kinds of networks so what are we trying to do here are we really trying to drive adoption of a specific protocol if we're all here because we all agree that we like one kind of protocol does how does that incentivize us to act differently when new things come out do we really want to decentralize all the things and put everything on the blockchain probably not hopefully not if you're in the back you might not be able to see what I hope we're actually working on which is building applications that challenge systemic power structures empower humans and foster consent and honestly I don't really care how we get there so hence the weber next I'm wearing my webbernet shirt today so who can tell me the difference between web 3 web 3.0 the decentralized web D webs daps replicated the state machines you had nobody knows so that's why I just I was like I I can't rationalize all these different definitions I'm just gonna call it the Weber next we're on the webbernet now next would be the Weber next that's fine and what that means to me is a couple things we're trying to build applications where data can be kept close to its point of origin Trust is not required for most tasks the low level protocols might be censorship resistant applications may or may not be you know principles of least privilege throughout the process there's data portability there's client interoperability there's maybe a blockchain where it's helpful and not where it's not helpful and user experience rivals or exceeds the current web we need to be able to challenge the existing business models that have made the centralized web so powerful and figure out how we can achieve the goals that were looking for so if you saw Patrick at web 3 so we tried to drive adoption of a specific protocol no we are building applications that challenge systemic power structures and power humans and or consent hence the Weber next thank you okay so there's some things that the Weber nuts can do for you and here is the way that we're thinking through decentralized architectures and you might have heard this at web three summit or a crypto Spring as I kind of went through it but the point being that maybe what's that it's I don't know what does that say can you Center it can you enhance them enhance zoom that's optional oh why is that it turns out that black trains are haven't been around that long and peer-to-peer systems have been around for three decades and there are plenty of useful tools out there that people aren't using and if we just keep going lalala we're we're here to do blockchain stuff we fail to learn the lessons that those projects have learned and have tried but not succeeded in overcoming to become used as alternatives to decentralized things so I think we need to be a little more test ourselves a little more and say blockchain is not really the answer unless it solves a specific problem for this but we do have there it's it's hard to do things which are not centralized indeed so at every layer of the stack though there's this potential for points of power aggregation and for what I would consider to be kind of soft centralization to happen and things that we didn't really necessarily intend to happen and things that you can't necessarily code away at the protocol level so for example if all of a sudden all of the research money is going to SGX and it turns out that everyone likes that as a privacy solution and people just happen to converge which if you're a fancy tech bro we would call a shilling point but otherwise we might just call a lot of people doing a common thing then maybe SGX becomes a point of centralization which involves corporate interests etc so do you do we need to guard against that maybe not there's there's no reason that we need to max out skill points into centralization for everything the point is simply to be aware of how the choices that we're making now have long term impacts similarly for heterogeneous cloud kind of deployments of several these networks if you're running some sort of permission network and it's within an entire single cloud what's the long-term impact to that as when it becomes a vendor sticky and it becomes a cost control issue cetera so I'm curious show of hands who in here has heard of STX as a way to solve some buck blockchain related problem all right 30 30 % of people would it surprise you to learn that STX has won signing key for all chips in the world and it's owned by Intel ok so right so what are we working at a cleaver so the product with that it's under development right now is our view and kind of our pitch to to try to make this stuff more relevant to normal humans but also developers who come from both inside and outside of the space so if you can see on the screenshots we are starting off with making it extremely easy to use the software that you guys and everybody else in the space has has made but again it's not limited to blockchain software it's not a kind of blockchain product but we are trying to make blockchain based stacks ones that are actually being used to solve real problems especially when it comes to businesses and Renee was talking about you know how this is basically not really used in any meaningful way between public and and the business fears yeah so we want to help people build Weber next applications basically and in doing that we want to be able to dog food those who same architectural choices that I was just talking about and so how can we create a business model that doesn't require us to ask for people's login information every step of the way how can we make sure that things are faster because they run locally than if they were run via a centralized sass service how can we make people not make trade-offs and want to use this kind of a toolset which right now yes is very developer centric but longer-term is hopefully for people in general yeah this project is all local and there's no logins everything you see even though it looks like kind of a cloud launcher thing it's actually just fully local I'm just gonna show we're just gonna show this quickly says it'll be fun the rates are shilling point we did oh this is ours we're we're shilling this is the shilling point portion of hashtag okay thank you okay so hopefully this is a useful tool so solidity search so if you have ever attempted to write some more contracts in solidity you may have needed to stop and go google a specific function to find out what the inputs are so that you could go back and make everything work properly right and that takes a couple seconds you have to go to google type things in find the right thing click through figure out if it's right right okay yeah and it turns out you know a big problem when you're developing software and smart contracts is you keep kind of forgetting what the definitions are when you have types and named arguments it actually there's a lot of information communicated just in the types of things and but probably most people in here that are doing smart contracts if they forget today they will google that and then plus solidity and maybe it will be the first result so we thought we build a tool that let you search api's in which every oldest information is already encoded and allow you to add kind of your own information to this without it being needed to be sent to any server anywhere or to clover or anything like this so again this is all running locally we provided a few examples like open Zeppelin but you can add your own if you want any IP the IP is also searchable in here so a few examples are try to try it burn so this is an example of looking for every function that is called burn so I can see kind of which contracts in the space that burn funds that's the kind of one kind of search the other probably more common search when you're developing stuff is to type for example a RC xx I remember you know some of the methods on this but I don't remember exactly in which way the arguments go you can just see the whole interface for the contract yeah so the second part here shows that you can you can actually make one solidity file import all the libraries that you want to search in this way and compile it well with the solidity compiler and paste it in here again does not leave your machine it just is parsed by the page and add it to the index you can also remove the things that we have by defaults and use totally only your own solidity api's and so that's at clover app now and so it's uh this is live now so if you want to check it out it's clover dot app so that's fun okay so now let's talk about some what decentralization quote-unquote means throughout the rest of the development process and life cycle here so I I found this white paper I just really enjoyed this one for go chain I don't know if you're familiar with this but it's it's 10x more decentralized and it's 100x faster and a thousand X greener and it sounds amazing and I was like how is it so much more decentralized so then on their FAQ it's like how can I become an authoritative note in this amazing decentralized network apply here to be considered awesome great stuff so we're not there's so many discussions about that that's not what I'm talking about here but you might have heard I guess a couple months ago at this point when Jackson Palmer and Emin Geun decided to put together this are we decentralized yet.com site and look at these various metrics by which you could judge some of these different cryptocurrency projects and figure out which ones are the most decentralized but the one that really caught me I want to talk about any of that point you can yell about it on Twitter later but what caught me it was the number of clients that are available for these is not higher than 3 for any and for most projects is one or two and now we hear a lot of the time anybody can make a client if you don't like it just go build your own and there's there's many Bitcoin clients and there are actually several etherion clients as well but if you look at the statistics of how they're deployed over 95% of nodes are running the same Bitcoin core implementation and in aetherium it's split between the guest and parity versions to over 80 percents of the network so it was just kind of interesting trigger for us to say can we look at some of the code itself and how this is happening in the build process because we keep saying decentralize the development process as though there's this unlimited Universal pool of qualified open source developers who are just waiting to be asked to contribute something so and the space tends to take a lot more pride in being decentralized in different metrics and and keeps kind of holding it over each other when they fail to meet some of those metrics yep but yeah we poke at each other right so you might have seen yesterday that the Z Cash Foundation which is not the Z cash company azúcar would like to remind you and of which I am a board member on the foundation so full disclosure today is the single most important step for robust and capture resistant evolution of Z cash in the long run I thought it was interesting the way that he didn't say we want to decentralize Z cash he was very specific in saying that we want to make this a capture resistant evolution wherein it's not just about having two clients all a theory or a guess and parity but it is about having multiple clients which are also governed by separate organizations and that's cool so a cross guess if you look at the the contributions and let me don't click back at this point but if you go to clover tap as well there's another app that's down there that is called code stats and you can look at all of the underlying data for these and kind of sort stuff and you can click contributors and see the actual libraries that they've contributed to so some some people might actually work more on importing existing projects or databases into other blockchains as opposed to say working on underlying cryptographic primitives which is fine we need all things some people do test cases whatever but there's there's this whole ego attached to what court devs mean and it's kind of interesting to dig into where the the code change and the code progression comes from so Noah court is somebody who changed to read me in Bitcoin core a little bit okay so so there's there's guest for you but I noticed there's one two three four real things that kind of names it hang out there I'm there's parody okay maybe a smidgen more but really I mean over half half the code for sure is like three people what about Bitcoin yeah you notice there's an interesting trend here most of these PI's are circles donuts look look basically the same they have one major contributor one pretty big one and then a couple of semi-active ones and then a bunch of people who have contributed once or changed a few things here and there and I leave it as an exercise to the user to aggravate or to map these verses Twitter followers but it is not a direct inverse relationship - similar now what I did for Z cache also is I dipped out the portion of the Bitcoin code base that they had used so you can see the actual Z cash portion there which those are employees of the Z cache company doesn't matter I don't know but we need to know who's doing these things so so across all of those and also just to note when I did Bitcoin I threw lightning in there as well so it kind of appears as an additional client which kind of boosts them a little bit so I think that across Bitcoin and etherium Z cash even Cardo know you're seeing like seven different developer or there's seven developers that would account for more than 60% of the code so if you start from the top of was the largest percent of change over time which we is a touchy number but has to do with insertions and deletions and stuff not just over all random commits that it only takes at maximum seven people to have hit sixty percent of the code so and those address the best ones in the block transfers yeah now what about other open source projects that have nothing to do with do you centralizing anything so it's it's a little bit ironic that kubernetes and react some of the most popular and some of the most centralized or central centralized origin in all of the world and all of open source one coming from Google obviously and one coming from Facebook are far more decentralized in terms of who contributes to the projects and kind of where your risk points are if somebody dies does the project die kubernetes certainly not react has a few major contributors but they don't really any of them is not kind of deciding anything so just kind of stood out that kubernetes has absolutely nothing to do with decentralization went vendor login prevention sure but there's no there's no kubernetes coin why is that they're already decentralized yeah okay so remember it's so it's not just about who writes the code though and at risk of doing analysis of code contributions is an implicit agreement that only code contribution matters and that is not the case right so I wanted to think more about how we get to that point where code is created but after that how it kind of leaves that that that mothership and is distributed around the world and becomes kind of installations that we all use right so the process for this could be initially we're thinking about things we're coming up with ideas then there's really design processes you're writing specifications then you're doing that build step that entire thing we just talked about is really just the build step then it's who has merged mastery rights you know who's doing the actual commits then you have how you get the code out into the world and distribute it in a push sense so that would also include marketing how you let people know that that product is there for them and then how people come to you and how they access it is it accessible only via web browser do you have to have a specific operating system what kind of language is in is it available in where in the world can you run these things and then how is it deployed is it a SAS thing that you could that you don't control is it a local thing is it in the cloud or not how is it running and then how is that reporting happening and then going back home right so how do we handle bugs monitoring usage patterns figuring out what we should build next that's really it's a it's a long process and it's not just the DevOps process it's a full product lifecycle and and you could have that same kind of soft power aggregation at any of these points right so if we talk about the the brainstorming process and we the obvious question is how many people contributed ideas to this project right but maybe some of the less obvious questions that we should be asking as we go through this are things like how are new ideas solicited and from home and how are we processing and capturing them who feels qualified to be able to share those new ideas what tools are we using to capture them where are they available where do they run how dependent are we on github when and where do these brainstorming sessions happen is it every single project that you saw a chart about what came from github yep good point what kind of reception do disruptive ideas receive from the community when they're proposed whose opinion is able to bless kill an idea I mean I know it's a meritocracy and the good ideas always win and in which languages are the ideas shared right and then moving up to the design process like how accessible are the kinds of specs and that you're creating to other audiences are they presented in language that they'll understand how is is feedback collected who's deciding if we're ready to move on to this and how similar in perspective are the various contributors to the actual design do they all use the same Matthieu languages do they all want to write something in latex that isn't necessarily accessible to some other people how can we kind of this is where it turns into sounding like diversity and inclusion but it's not really it's about finding how to create a more robust design process that doesn't become centralized around any specific kind of groupthink then the build process we already talked about with all of those code stats but it's easy to say how many people contributed to the codebase but more important is probably how many people made those significant outsize contributions how specialized are some of the skill sets that you need in order to make a significant contribution and all projects are not created equal they're how many different working implementations not just hobby projects are there how many of those individuals aggregate up to the same corporate entity how welcoming are we to newbies and how about documented is the code like you could go on and on and on but we just need to do a better job of thinking through what these things are and then I kind of bundled all these ones at the top here but you know where is it hosted how's it phoning home all of the privacy issues that you have where where are the bottlenecks in this process and this is where I think it's a lot easier for us to call out third-party entities and say oh well you own that you push that application out to us and because of that it's centralized but really especially if you look at most of the daps there's really only one way one or two ways to access them and not a lot of people are spending their free time even if api's are published to go out and build competing implementations so to kind of wrap up here how might these soft dependencies impact the etherion community and also other cryptocurrency and decentralized projects at large well every single one of the points that you said just mentioned it's a point of centralization in a way and in a way lack of diversity is also itself a part of centralization because she do not get that hetero hetero generosity and so our takeaway or takeaway for you is try to evaluate the projects that you're currently using in the space and the project that you're developing and see where these fault lines are because if we're really trying to truly become decentralized we can only cheat for so long before somebody kind of calls us out calls us out on it actually not being decentralized and ultimately what are we trying to build is it about maxing out those decentralized stats and competing stats and if we do that do we not run the risk of ending up with either a year of the Linux desktop problem for these applications or possibly that it stays something like tor where it's great for people in the bubble but not widely acceptable we need to think kind of outside that bubble and remember what the ultimate goal there is which is to build these kind of applications that allow us to challenge existing power structures and foster human consent so thank you it's cool to see how you layout the development process and and suggest how we can decentralize that is there any do you guys clover adopt any kind of practice in that development process to make your code development process more decentralized I think there's there's a danger in kind of adopting a methodology versus keeping these things in mind and evaluating them when new information meets you so we do think about these things all the time but it's not it's not kind of a rigid process to go through because when you want once you have kind of a rigid process it gets a lot easier to loose information and care about the wrong things and I really don't think that it matters that you know a single company or even a small group of individuals are putting tools out there if those tools are allowing the people that use them to come to achieve the ends that they're looking for we just need to be aware that yeah if those people get hit by a bus or that company implodes or they just suddenly decide that do no evil was a bad slogan and then we're stuck with it like that those are things that we need that the community needs to inoculate itself four and hopefully theoretically market forces are supposed to take care of that but it would be probably a better idea to design for it up front and it's not really easy to say how we live up in in the tool the tools that we showed for example to kind of being decentralized of course it's hosted centrally but you could take those javascript files and HTML file you could put it somewhere else so is that decentralized okay awesome I think that's our time Thank You amber and Patrick thank you
Automatic transcript — names and jargon may be misspelled.