New Ethereum talks, every Monday. The week's conference uploads by event, in your inbox.

Loading player…

EthCC 2: Olivier Sarrouy

Ethereum ParisWed, Oct 9, 2019, 12:00 AM

EthCC 2 The Ethereum Community Conference is created by the community, for the community. It brings together great minds and forethinkers, and allows the community to grow.

Transcript

okay everyone sorry for the kind of mess so I'm sorry I'm the tech lead of pandu I'm gonna talk about today which is distributed VCS like version tracking system based on IP FS Aragon and um so what's the goal of this project like the short term goal is to provide the centralized alternative to github and the long term goal is to provide decentralized alternative to get so let me explain you that a little basically we started walking on pondo seven months ago thanks to a nest from a grant nest from Aragon and so our goal will let's try to decentralized how software development works you know and we figure out that do we need to base our product on gates and we're either get of course there were lots of reasons to use gate like everyone's using it basically but also get is not that suited to decentralized workflow for lots of reasons from our technical like the ash primitives it rely on some are more political organization all let's say radically get is organized around this idea of maintainer so if you want to disent relies the production workflow around it it's not that easy for instance this thing like pull requests which are so important in the open source ecosystem right now are not even real part of get actually you can create pull requests with the get CNI but then you have to send the pull request by mail you know so it's not really integrated so at that time we decided ok let's let's go for the long run let's go for the long term vision and let's start developing our own version tracking system which will be a real web 3 and aetherium native VCS but then the more we are working on that and the more the community started hearing about us the more people came back to us saying this project is cool if we can help us if you can help us ditch github it's really great but we can't leave gate like that you know we rely too much on gates we have lots of tool relying on it so we can't leave get just like that so we took the decision to ear the community and now we are walking on two different branches basically one being a long-term branch where we are trying to experiment in building a real new VCS which will not be get and which will be where three native but for the short term and two E's adoption of the centralization we are also working on a version of pandu which is get compatible and actually turned pondo into a remote protocol for get triples so you can keep on using your gate stuff and still have full control ization so what's the point about that I told you it's to achieve as much decentralization as possible both from a technical or architectural point of view so how does it work it's kind of simple in the end ethically each time you try to push a new version you push your commit to a pond or remote repo what happens that we take all the files of your codebase of the different commits you are pushing online we upload it to ipfs we pin it if you provide European services and at some point of course we'd like to rely on file come to do so then we take all the gits objects like your commits trees blob stuff like that and we translate it into an IP LD tree IPL distending for interplanetary links data medical it's like a data format to store linked data over IP FS and then we just take the IPL d ash of this route data set like the last commits the add the ash of the ED commit you want to push and we send it to an Aragon Dao being in charge of governing your repo and we say this down okay that's the new head I want to push on your repo do you accept it or not and then it's up to the DA to design with respect to the governance scheme it relies on to accept or not this new head reference okay so what the point about that well basically it means that open the repo are fully distributed both from a storage perspective like everything is relying on ipfs and once opening problem is going to be solved at the ecosystem level then it's gonna be really fully distributed and all the business logic is enforced on the Assyrian blockchain that's pretty cool because it means that of course you have no single point of failure but also it means that you actually own your repo medically your repo becomes a Dao on the III on blockchain so we as the maker of the bundle protocol have no rights whatsoever on your Dao we can't touch your Dao you don't need any token to use part of its like public infrastructure protocol so well you own your stuff the other point about the centralization is maybe the most important one actually it's about political decentralization you know and all we try to solve the problem of maintainer how we try to solve also the problem of open-source sustainability and we don't pretend we have a solution to actually solve this problem totally but we are trying to help basically how it works we talked about it a little there is this whole idea of maintainer either you own the push rights of a repo and then you can do whatever you want or you don't and you can't do anything you know or you can use pull requests if you use github or get lab or stuff like that and this is a problem because actually there is no incentives for people to contribute to your repo you know no economic incentive obviously but even symbolic incentives you end up you know just being one name in the list of every one of them contributing and that's not that much you know what we are trying to do we spawn do is to give contributors actual authority over the repo both to offer them some reconnaissance you know on their work but also to free the maintainer somehow and this one July they're on work with which often requires lots of time for which maintains are not paid so basically what's happened so when you try to push something to a pound or repo while the tool kind of looks for if you are the push right or not because we can steal a low maintenance who have pushed right but if you don't which is going to be like the default use case then your pull request is going to be forwarded to a decision making application basically like a voting application and everyone in your repo can vote to decide whether or not to merge this pull request into the code base and the cool thing is that if your pull request is merge then another box is going to be initiated another decision is going to be initiated about what is the value of this pull requests okay and depending on the value people grant to your pool request which has been merged you're going to be rewarded with specific tokens like he has a 22 called lineage tokens to acknowledge your contribution to the repo these tokens have no money to revalue they are not even meant to be transferable actually that are just there to acknowledge that you contributed up to that importance to that value to the overall work on the repo so depending on what you've pushed is like a typo correction into a readme or you have brought brand new features to the repo of course the number of tokens you get are not gonna be the same and the thing is that then you can actually organize a governance scheme around this contribute contribution token lineage token so the next time someone push a pull request or open a pull request you're going to be able to vote and to participate in the governance of your of your repo to decide whether or not to merge pull request how much to to which point should this pull request value 80 so to which point I accept to dilute my own authority over the repo stuff like that so basically each time you contribute you can earn authority in some way over the repo this also means that if at some point your software against an income for some reasons then it's gonna be super easy to split this income between all the contributors with respect to the auto-ship share into the repo and it kind of help solving the problem of open snow sustainability because then you have an economic incentives to contribute but you can even go further you can say actually why would I not grant some lineage tokens to the repo I've just you know to acknowledge I come from there why do I not why not renting lineage token to my software dependencies and actually one of our long-term goal is to integrate more tightly with the Aragon package manager which is a non chain package manager that we are going to we're willing to work on to improve to make it backward compatible with NP and stuff like that so that you can automatically grant lineage tokens to your software dependencies or declare on your Aragon package declaration file and this is pretty cool because it means that let's say we are building an open-source library you know I don't have to wonder ok what's going to be my economic model I can just leave it there for free and if lots of people use it and people use project you think it and stuff like that then if at some point one rapport gains an income then it's going to be shared split between all the contributors and all the dependencies and flow up the dependency tree so I can aggregate lots of value thanks to my work so we hope that this can be some kind of beginning to help solving the problem of open sewer sustainability in some way all the cool thing about that is that pondo rely on Aragon I don't know if you guys all know Aragon it's an open source framework to build modular dows distributed governance and stoppable organizations and actually when you use pondo you have to spawn like a github organization you know to manage your repos and actually this is a black organization is not a toboggan ization it's an Aragon Dao and the cool thing with Aragon dows is that there are highly modular so you can use whatever governance scheme you want you can plug new governance scheme you can plug new applications to enhance the power of juda and then the ability of what we are able to do into your repo so for instance you can plug your government scheme for now in the default template we are developing for pondo the government scheme is basically a voting application if you open a pull request then it's going to be a voted application relying on this contribution token and people are going to be able to vote to decide whether or not to merge the pull request but if you feel like you want to use another government scheme there are lots of team working on two Aragon and Aragon application to bring your governance scheme at play so for instance there is a team working on Fattah key and if you feel like it makes sense you can use a filter key application to decide of what should be merged into your repo or not or to decide to which value these contributions should be rewarded and stuff like that the other cool stuff is that you can be on governance you can plug any kind of application you want into your Aragon Dao one of the thing we are working on right now in parallel of bondo for instance is the fundraising application like a crowdfunding application somehow but more or it's a complex one based on bonding curve so basically people can invest in your dau and if more and more people invests the price of the and of the to canoe gonna buy is gonna raise so you can expect small profit so it's like crowdfunding but with more economic incentives somehow and so we are developing an application which always you to easily install this app in your Oregon Dow and spawned a fundraising campaign very easily and then you're talking all those your investors can decide to which pace people can withdraw found how fast you can use these phones to what for what purposes and stuff like that so it's like a crowdfunding in just a click you know and this answer is called funding in just a click so yeah this is something which is supposed to be shipped this summer this summer for instance so it means that you can take your upon the organization or recognization you up on the repo and just in a click spawn a crowdfunding campaign to out found your work basically so no it's kind of demo time so the demo I'm gonna make a small video of the get based version just to show you how easy to use basically how easy it is to you so yeah basically we are I yeah you see something so we are now in a repo the Aragon GS repo basically so first thing to do of course you need to repository this one is pretty straightforward and then we have a get extension so when you call get mod or something it's going to call a specific CLI tool so you can configure upon though how it is supposed to connect to III on for instance so we support both direct connection or frame which is a desktop level Israel's I now which integrates with your cold wallet stuff like ledger and all so once Paulo is config you can just deploy a new Aragon organization with all the pond or related applications in styled on Shane so it's just one comment away now it's pretty quick because it's actually deploying on the test chain of course and then once you have your organization spoon you can deploy new repos like you will do in a github organization so let's call this reboot this repo Aragon API let's just give it the name of the mother Dao and yes that's it so no the last thing you have to do is to add this our contract have a git remote you know so we have a special specific get remote protocol so it's super straightforward you just do git remote add as you are used to do but except of passing an HTTP URL you pass bondo URL this way and now you just use git as you are used to do you know what nothing specific so you can just stage your file commit your stuff and get push so this is an example where I do own the push rights of all the repo so there is no pull requests open so you just use your get stuff as usual and then we have this front end so this is the front end of Aragon dolls with on the left you have all of the list of all the implication installed in the dow and phone we have a bat account and we just always you to browse through your branches and through your commits and actually browse through the codebase what we are working on right now is precisely improving a lot this front-end to be able to end all the pull requests to be able to default files and basically bring all the features you are used to on github to easily see the difference between two versions merges immediately and stuff like that so obviously there is still some work to do we also had like an inflexion in the code base when we decided to a forget compatible version a couple of weeks months ago so the next stuff we're going to be working on is improving the get remote helper the front-end the UI so that you can have something which is as much as get a B as possible you know being able to do stuff and rely on the same workflow you are used to we intend to have a test net release this spring actually we just need to update the front-end right now to make it really usable so it should be released this spring and we expect to have the main net release system l along with this fundraising called up hurry up we are walking on so gonna be able to Ostia repo on Shane govern your repo and change through your Aragon Dao and just from a click just raise or start a fundraising campaign from this front end you've just seen the long-term plan is to offer more let's say project management tool so it is centralized it's your system which is not that easy to spawn because of the pinning problem as always and also we are gonna work out to integrate with another team working on Aragon project which is called Oh talk which is developing huge it's a tools for team management and project management's for example being able to set bounties being able to set roadmaps stuff like that reward people for their work stuff like that so the idea being to bring and to integrate as tightly as possible with a project management to study the centralized so that we can actually provide with a real alternative and decentralized alternative to github as soon as possible that's it thanks a lot think we have time for a couple of questions if there are some yeah yeah sure so you have a github repo sorry about that so you ever get a rapport you can you can actually clone and run locally so everything's walking like just take the dev branch from the dev branch it's a default branch right now because master branch is the old standalone non get related version so you can clone it locally and start playing with it yeah development is going pretty fast right now so maybe some stuff can break at some point but yeah you can already play with it locally you can I'm gonna put all the instructions are in me also to spawn the front end the I reckon front end stuff like that cause no it's not explaining the readme but it's gonna be explained soon so yeah you can already play on it and you can also you can even deploy to test net not ganache but rinkeby if you want it's working so yeah you can you can play even though it does not make lots of sense for now but no or it's something to plan in the future yeah that's definitely something we'd like to bring into the future it's not working for now well I mean one of the things that we intend to bring like probably 2020 or something it's gonna be private stuff regarding the files basically it's like encryption you know and so integrate with there are already three motels plus to encrypt files and store encrypted version of your stuff so this is kind of easy to plug for the governance level of course since on this um blockchain so privacy is way more complicated to achieve for obvious reasons but yeah it's kind of on the roadmap not the most needed feature you know but at some point yes hi great talk do you what what kind of limits does Aragon put on how the Dao works like do you have to pay out tokens and their token what kind of I'm not sure it was what kind of limits like do you need to use it or you know stuff like that I don't know talking under control they know there are no Aragon is an open-source framework so you can bet you don't need to use any kind of the reason Aragon token which is used for governance of the world project for now so there is token but you don't need to use that token to use actually Aragon dolls or to deploy Aragon dolls or to use Aragon application so it's token free somehow so you're not tied to to the Aragon token in any way you can use it without relying on the token that agrees the token is going to be used is used already for governance purposes it's like a governance token it's also going to be used in the upcoming code feature basically you're going to be able to decentralize caught between dowels to settle on agreements and use these agreements are broken then you can have some kind of an unguent trial and that's one of the use case the token is going to be used for but if you don't want to enter this court process all this code features you don't want to access this feature you don't need ante token so and for its contribution you need to wait for it to commit or it's push you need to pay for do you hear me for its push you have you need to pay a fee because it's stored in the blockchain so the question is it's put request if you have to pay like 20 cents of you know right now maybe in the future it is going to be different and they the price but the you plan any way to fix that or I I know that it's not a specific problem of Pando but I think that it's something that you are going to see improve yeah sure um as you said it's like a generic problem of blockchain projects to be honest we don't intend to develop our own solution to that problem but Oregon evolved the Oregon project is something which they are already working on for instance to make votes free kind of I think he's going to talk about that tomorrow or something like have like layer 2 relating system to make votes free so I think what we intend to do is work with all arrogant aims to provide Oregon wide solution to this fee issue and to make some actions free through some system it can be meta transactions it can be a level 2 layer to relying stuff so that something we'd like to contribute working on in the future thank you yeah I guess I was I was gonna ask a similar question just in terms of what stuff happens on ipfs and what stuff what stuff happens on aetherium and your current architecture yeah so the thing you that it's really not that expensive to well of course you have to pay a fee for each pull request it's kind of a problem somehow I agree with that but it's a Syrian white problem it's not that expensive because actually the only thing you need to store unchain is the ash of the edge of your branch so if you have three branch you have three ashes sweet strings medically to store somewhere so then if it goes through without then you have fees for the vault but everybody water pays for this fee once voting can be kind of free thanks to layer architecture then we can kind of solve this problem and then you also have this minting token minting process once your pull request is merge so you have this wall process which uses fee but the pondo specific stuff is just storing your hash on the blockchain so it's real cheap is as cheap as possible actually thanks everyone no that was equation that no I might have missed this at the very end but you mentioned you want like long-term you want to decentralize get could you go a little bit more into that and why yeah so I'm gonna start with the why I'm gonna end up with the how the why basically is that what most important problems some are technical it's really not that important but for instance get rely on Chauhan algorithm to identified subjects so if you want to make unchained verification of history checking for instance I push a commit I just want to make sure that the parent commit is still in the dependency tree if other and like acting 4246 opportunities were used then we could kind of check this stuff on chain because we don't have to it's just you know gasps not get expensive operation with sha-1 we can't basically so it's like one problem but the most important problem is about like the workflow basically get has been has been entirely built around this idea that there are people maintaining a project and in charge of the project and the own push rights of all the repo or knots and everything is thought and organized around that which you can always find a way to circumvent and pull request and merge requests and stuff like that are just a way to make it to work even though it's not really integrated in the grid layer you know but at its core it's not meant to be a decentralized workflow not from an architectural perspective but from like a workflow perspective or collaboration perspective so then how do we achieve better to centralization stuff first of all by kind of ditching the idea of maintainer and making okay it's it's a decentralized process when and depending on what all the technical solution you use if you run it on the theorem watch-chain or on its own power chain somehow or stuff like that then you can envisage different solutions for instance you can say okay actually any kind of branch becomes any kind of version becomes a branch of its own and it's only when you have more and more like you can't you can turn it into a block chain of commits you know and like transaction become commits and the branch which become like the master brain if the one which add the most comic pointed back to it basically so you can think about really different workflows which are not the geet ones depending on how you want to achieve it technically and where the volatile ecosystem and blockchain ecosystem is adding to right now so it's like a long-term consideration but I seen for instance the idea of saying okay let's think about it as a chain of commits and let's make the consensus system work out of that then then a different repo just become a blockchain function somehow so you can think about stuff like that which I think can be pretty cool but it's like a long-term goal and also on the CLI part of what we've been working on there was stuff like trying to make the use of git or this VCS as easier as possible because git has some design flaws it's like really hard to to use when you are not used to it it takes long time to actually learn how to use it so you can really enhance the design of get kind of easily and also there are some stuff which has you can identify new people or stuff like that but touch-based VCS which basically rely on other data structure which kind of solve the problem of merging conflicts so there are lots of I'd say clues or ways we can go to try to improve it in a way which way will make it way more WebSphere friendly somehow kissing's [Applause]

Automatic transcript — names and jargon may be misspelled.