Hashing It Out
Hashing It Out

Episode 25 · 4 years ago

Hashing It Out #25: Embark Framework - Iuri Matias

ABOUT THIS EPISODE

Today we have the pleasure of interviewing Iuri Matias of Embark Framework. Embark is a decentralized application framework that abstracts away the implementation details of specific technologies, allowing dapp developers to focus on what really matters, the experience. We talk about the features of Embark, the design decisions of the framework, and how Embark will integrate new technologies into their systems as they develop.

Links: - embark.status.im - twitter.com/iurimatias

Joy. Welcome to hashing it out, a podcast where we talked to the tech innovators behind blocked in infrastructure and decentralized networks. We dive into the weeds to get at why and how people build this technology and the problems they face along the way. Come listen and learn from the best in the business so you can join their ranks. Alrighty, episode twenty five of Hashing it out, Dr Corey Petty, with My Trustee Cohosts Colin Cuche. Say what's up, calling what's up, Colin, and today finally got someone from status over to join us, but not necessarily working on status, but a project with Thein Status Out. Will let him explain it. We got your Evertais, who works on the embark code, but the ide for creating start contracts and do centralized applications, and there's a tremendous amount going on with embark that I've noticed while working with status and I wanted to get him on to kind of explain what's going on, what is used for with a a future holds off. So Ry. Why don't you give us a quick introduction as to who you are, how you got kind of started in the space a little bit of your background and then what embark is all? Okay, guys. So yeah, I work for a state for status and then park framework on the lead developer. Also work for leader in foundation in parts of the REMIX team. We work in the remix idea and also related tools such as the debugger itself. I'm also moderated moderator at our eterium and are at trader. Was One of the confounders of a trader too. Was One of the curtiss of the dough at. have been in been in space, it m space pretty much since the beginning, since the very early proof of concepts, and I've been following bitcoin for a long time and so I started. What really caught my attention was a name coin actually, and the reason with the reason was, if you guys remember, back in the day with the wikileaks censorship. So the first time that was actually the weekileaks domain was censored in the US and this cut the tension of a lot of people, including myself, because although we knew the system was centralized, when never really thought that any kindy sort of censorship would happen because the servers were in the US. So in you know, and then't democratic country. So we didn't thought that that would happen. So a lot of people that time we're bringing storming how to do a desertilize DNS, and turns out was really hard. It's really hard to do. It's what it's what is called zocos triangle. Right. It's really hard to do to do a destroys DNS. Or was it? At least which you can have a meaningful names is the centralized and the same time secure, and no one could really figure out how to how to do assistant that supported the three properties. Or we've obviously there was things like Freenet, but they didn't support the meaningful part. And so someone meant you, what about what about Bitcoin? And we could use that, but and and use that to register domains. And then name coin became a thing within the first Alf Cooin, and that what that was what really got me really interested, because certain I realized that this bit point technology go to create all sorts of decetilized...

...systems. Afterwards came the snow then leaks in, which revealed that things were actually way worse than anyone could imagine, and it became very, very clear that we need the centralization. So afterwards that was a lot of new block chains all over the place. People would create a blockchain just for a specifically specific purpose, which is very problematic with they will essentially for Bitcoin, art code, whatever use case they wanted, and then release a chain. And when it when I first ever heard of Vitium, because they wanted to do something like that was programmable, was on hardcos it it was generalistic, I got really, really interested because that was like the perfect solution to to really create decentralize the applications and to start this is alized systems. That's a that's a I think that's a story we can all relate to in some way, shape or form, at least the ones that have been around for such a long time. How did you had you get started into like embark specifically, like what make by? First off, what is in Park? And then how did you decide to you want to create your own, because you have other ideas in the space. By make a no one as supposed to add on to the ones that existed then. So in Park was actually the first one. Nothing existed before, before before that, and that's why I created so I I so my term was in a finally some stage that could be usable at was one of the proof of concepts. It was still really, really hard to use. It was incredibly complicated. You need to hope to use this client called, I'll let zero. It was very overwhelming, like a lot of different options that didn't necessarily make sense, and you need to compile the card yourself, copy paste the byte code, putting this really weird dialogs, figure out what is the gas cost, copy paste a Bei. You know, it was a very painful process and there was no tools. There was not development tools at all. Nothing existed. So and I really wanted to do at the time this descentalized market. I wanted to experiment with the decentized market. So I started to create a pipeline that would facilitate development, so it would automatically detect my changes, automatically deploy the contract way to get to address and we just built it up for me and and and then I realize, okay, this can be useful for others. So I saw I put it on, read it and I call it in Bark, mostly for lacking imaginations. I thought embark into the into the eater, or to them into because that was the missed browser. So I was I somehow just trigger picture this. This ship actually a partnership, but anyway, that would I would explain all the yeas meadships or expend all the spaceships, YEA Sati slack channel. Yeah, yeah, later the the that ship became a spade shop and so so that became quite popular. Little other tools came along, but I continue working on it and it could in just at the time and until recently, pretty much on my spart time, I kept I kept working on it. The so the reason is because the main goal of embark is to is to create true decentralized applications, and by true the centralized I mean that really leverage the entire available stack for the centralized technologies. So we had...

...too, we have to phase until now. The first phase was that people are just doing contracts. We're not even caring about the the UI. So that stage pretty much users were being asked to copy paste Apis and address into into a wallet publication and just, I not to participate in some CEO or something like that. Now we're stage up developers actually creating Uis for smart contracts. But that's still not enough. With to create really true decentralized applications. They need to leverage the entire white prey stack, and and that means that the larbage not just the blockchain, which is the consensus mechanism, but also a decertalized storage mechanism such as swarm and Ip, a fast, decadlized communication system such as a whisper and and since then we'll we also have been adding other other stacks. So yins is is one of them. So as a naming, disciblized naming, and in the new future we're going to add even the surprise video stack and stay channels and things like that. Yeah, I notice there's actually apfs streaming that was recently on on separated it that's pretty cool. Now that's awesome and you know, honestly, when I look at look at this kind of reminds me back of the day when I was doing like PHP socked. I need to use like a codg niter and stuff like that to actually get an application that would interface with standard stack of standard lamp stack stuff. There's a whole nother stack, like you called it, the web three stack, that people just need quick and easy integration if they don't necessarily need to know the guts of everything so I think it's great that you're doing that. So what? Oh, go ahead, right, I was just going to add that. And we di try to make it flexible for for more the Vesti volpers, but also very extremely easy for new developers. And we add we have an abstraction layer on purpose so that for the volper wants to switch, for him, say swarm typfs, it's just a configuration he needs to switch from, you know I pfs. So just delete that and you put swarm and you don't need to change any code in your in your replication will just work. Yeah, that's exactly what the experience has been like with me, with most most open source frameworks kind of go that route and I think it's great that we're finally that embark is finally sort of maturing in that space. I will I will full, full disclosure. I gave it, gave it a try last time as many months ago and it kept running into a couple issues, but I hear that three points two is quite resolved and getting very matured in the way that it actually handles things. I'll need to give it another crack because most of the stuff I'm building is my own custom stuff, so getting a decentralized application going is in a shore. Each time there's a new project I have to develop a whole new way of deploying and managing everything because I can't use the code from the previous projects for, you know, contract reasons. But yeah, I think that's great. I think one of the things that that interests me most is the way that it helps with the deployment, meaning that it doesn't have a built in mechanism for dealing with and managing the test networks, private networks, and then all the ways launching to the public network. It does. Yes, it's it's supports. How do we really cool Ui for just how all the services are run, and I thought that was just very neat. Yeah, we have this said Dashboard people really really love. We got a lot of good feedback about about that dashboard. I'm thing it's even even more so that the next version should it should have even batter dashboard than the current one. And you're rather...

...about the contracts. That it's something that that they embarked team actually feels we need to do a better job of communicating. Is that the the contract, the contracts configuration. You describe the relationship between the contracts and then in Bark automatically takes Carl deploying the contracts the correct the right way, and if something changes you just need to change that the configuration and embark will only deploy what's actually necessary to reflect that graft for really that contract configuration. That is relationship that's configured. Now. That's that's similar to what truffle kind of does, but the difference is that you have to do actual code to sort of say, Hey, this is how my migrations work with in the deploying these these contracts is basically web three code. What are you doing differently to model this, because many times I found that actually deploying contracts through the truffle framework is not as straightforward as it seems it would have been just based off what I would intuitively feel in my head. I don't feel like I need to write all that code just to get my contracts up, tested, verified, etc. Etc. A lot of it's pretty much just standard input, standard out, but it work okay. Good. What kind of stuff are you guys doing on the configuration and to make it more streamline and simple for people to deploy applications? Right? So, yeah, in trofably needs pretty much everything needs to be declared explicitly and it work take some more implicit approach and then you have the option to be more explicit if you if you really want to. But we found that for ninety nine percent of the cases migrations are not really needed at all. Old People want it is rude to declare what contracts they have. All the contracts are related and when it bark that's typically done because when you specify the contract arguments typically you want to put the the dress of another contract as an argument typically indicates that those contracts are depending on the only each other. So when you you when argument, you just need to put, say, dollar sign the name of the other contract and in bark will automatically know that, okay, I need to deploy do the contract first. Need to take that address. Another address will be the argument for for this other contract. So automatically figures it out. It basically just because you have reference, it'll map out the the optimal tree of deploying these things and go, okay, there's dependencies here, dependencies here, dependencies there, which also helps when you're designing these contracts, especially if there's idea integration with them. Bark to say hey, look, you've got a loop dependency. This whole freaking work like yeah, yeah, that's that's pretty that's pretty nice. Or you need to resolve it some way. We buy not declaring this necessary on the actual launch of the contract, on a dependency until after they're all launched or something like that. Yeah, and then you have other options. You can say you can in a three point two, for example. You can there's a director forage contract that you can choose to deploy or not based on some condition, which can be calling an existing contract. You you can, well, you kind of of course decide what it comes to deployed to you can. You can define a set of commands to run on the deploy of each contract, which could be some set up or something that needs to be done when the contracts deployed, and you can run a bunch of actions after the entire contracts deployed. And we found that that works really, really well for the vast majority of projects. I don't say all projects, because my the might be some one out there that I can see that maybe this May this. Some are limited, but all the projects we're seeing it is...

...this fits pretty well and when you put side by side a troffle migrations. With this kind of configue. The configure is way more straightforward, way easier to understand and work with as fotastic and and I think the the thing to keep even mind here is a truffle really just focuses on the ploying the contract. So you're going to build a standalone application and in it you might include truffle and your contracts and then include your playment mechanisms and say in say using Javascript, no JS, you would. You would in your like, I don't know, package at Jason or your yarn file, you would define a script which which says, Hey, here's how I deploy the contract. So so many pulls down your repo. They can employ their own version of the contracts that way. But there's no real pipeline there. There's no real way to get from from, you know, the contract to the actual Ui. One of the things I ran into that was kind of difficult was I had to constantly copy over things like artifacts from from truffle. What do you do in your framework to make the Abi accessible to the application? Right? So we have to metically generate the application with the ibis and look, we are the initialize. So all the contracts. Are You initializing with that? That's approach we take. We also generate separately Jason Files for each contract in case someone wants to take that debt output and just use it in a different way outside of the embar could pipline, but but that's essentially the which you would take is that we generally that that already would old. The contracts sort of available. So you just need to require them. And so if you have a contract call simple storage and and that's contract employs, then in your depth you just do import simple storage from embark contracts and and you have the the simple storage contract objects, which would be a webtory gs one points of object. So that leads me to the kind of a problem that I've run into. Is, when I'm developing this stuff, I'm actually also simultaneously doing some extra bug testing work on this. Smart contracts, meaning the smart contracts, a understand alone. especially if you're developing a decentralized application. Your smart contracts are part of the application. You need to bug test them along with the application. Sometimes you find quirks that you need to adjust just because user experience changes or something like that. When you redeploy a contract is it automatically update and the require and just does? Is there any sort of versioning kept so that if you need to roll back to a previous version, you would know what that look like? It's so it does. It does. A file of little available for the user is called, let's typically name Jay chains, that Jason, but it can be named or whatever. Developer once and that. And this file it tracts for each book chain where each contract is and takes into a content the arguments of the contract, takes into contact byte code as well as the the chain itself, among other factors. So meaning that if you so, if you modify contract and that doesn't result in any actual change. So let's say if you rename a local variable the boyte code will will be the same. So in that case in bark will will detect. Okay, change, the contract compiles, but it's actually nothing changed. For in the watch in a watching you connected. So you want to deploy, but if the text there is a change, it will deploy it. And if there's any sort of relationship, so if doesn't another contract that it's dependent on contract that you just change, then it will deploy that contract to so it's quite smart and that reguard. And then you can also configure this by environment. So typically, on the development environment you would have a change to...

Jason that is not in source code, not in source control, is just for you, and then you might have a change Jason that is configured for other environments. So when you work on a project with the other developers, they can also take advantage of this feature, meaning if they are correcting the same private change as you or the or main net or or test net, then and they do a change, then you know they will see that. Or actually, my Colleaguori did that this change embark or did the text that nothing changes this need to read employ. Oh Wow, okay, that's very cool. So how do you make that connection between the other helpers? What is the thing that's actually binding them together so that they know of each other's changes? So right now, though, this might change the new future, but right now it's a it's just a truck and follow, which we call change things out chason. That's that follows referring to. So it's a follow and puts in source control and AH, okay, and keep track. Got You. So it's all up through to get, for instance, okay, yeah, I tired? All right. Well, I got more questions. Are you sure you do? But I haven't been able to speak in the past fifteen minutes. I was curious, like there's creating decentralized applications is really hard. There's a lot of there's a lot to this stack and I think what people typically get introduced to this space. They go through and look up to toials online and it's like, I say to make a smart contract or to say you do certain things of smart contracts and so on and so forth. But like there's not a lot of really good tutorials for the walking you through the entire stack, going an including other technologies like decentralized storage and whisper. How are you, how are you facilitating like people learning the entire thing or like what's been difficult and your experience building something like a bark that enables the entire thing and then you get user feedback that maybe doesn't understand half of it. Coders can't write right. Yeah, that's a really weird to question. And and and if we struggle with a bit and it's something we're aware we're not we need to do a better job because embark. You know, if you see the commentation pretty much assumed you know solidity. The pretty much assumes you know Webtree gs and it assumes you understanding Noble blockchain technology works and it makes a lot of assumptions and we're aware of that and we're looking to, I know, ways to minimize that somehow. But yeah, it is it is a bit of an issue for newcomers because there's such a, you know, learning curve. That is just assume. I think it's assume as well because so many invelopers, I've been in the space for so long and we see we saw things evolve that we don't even realize that how much things I've changed because we just took it in small and so old pieces during this last three years. But someone that's coming in now, yeah, it's a huge learning curve right and there's no really good resources that I think, go through the whole tinging it. So it must be a bit a painful process and yeah, we're looking at ways maybe to include specifically webtryg has tutorials and Igumentation, maybe some solidity crash court just to bridge that gap a bit. Well, I mean honestly, your system is set up so well, especially with the dashboard that seems to me like baking tutorials on how to use your system along with tutorials on how to how to actually, you know, do some of this stuff. One of the things that I that I really liked when it comes to like this whole education side of things was he's cryptosombies. Yeah, yeah, that kind of methodology got a lot of guys that I know up to speed on what is solidy, just the basics of it.

What are the you know, some of the more fundamental terminology and just solidity? That could apply to all these other technologies as well, and I really feel like there's core. He's dead on, like there's you know, there's a need there for that. So this could be its own decentralized APP that comes bumbled with a bumbark framework, you know, just an idea, but definitely cool. Yeah, yeah, absolutely on this ocause, you know, parts it's it's something we're very seriously looking at and looking words for improving and games like Crypto zombies and those other games. That also was pretty much most like dungeons and dragons stylent and that, yeah, I did look like very fun, very fun way to get people into the human and learning to basics. Also there's this other likes. We've interviewed quite a few of the security frameworks. For some reason we went on like a security rant over the past coupple weeks and they all have like they all kind of try and target specific part of a pipeline for looking for vulnerabilities. Were smart contracts? Have you looked into any of these in these platforms, for like, including into the build process of the ploying smart contracts to see like we're standard like vulnerabilities lie, like reangency bugs or things like that, I felt. Have you all looked anything? Yeah, we have. So one challenge kind of is that a lot of the tools are in Pointon and we're like in the javascript ecosystem. So a lot of it basically involves calling, calling from GS directly the the command line. It's it's so we looking at waste to integrate this using plugins and an embarks. Embark has a very powerful plugin system, so you can you can extend it to to your to your liking, and so we've been looking at integrating this sort of this sort of tools. But I I look, I look at some of them recently and it was not entirely clear to me if they could really benefit from plugins or not, because a lot of it seems to be developers just called directly on referring some contract twiles and the connect some notes out and I we'll still looking at it. It's not it's very clear to me integration with emparkment be beneficial or not. But yeah, ideally we would integrating in a way that as soon as the contract deploys, it's a it's Roe's though, it one's that's kind of tests and just says, Oh, yeah, you have a screw teacher here, a screw tshe there, but tools like, I think was like me through. Yeah, Metrong did look now, yeah, those look more like tools that that you are more like iterative, like right to your you tried different staffs, you tried your phone flows. Is Not exactly something automatic, not yet, and that's why it would be very interesting if there was some sort of like that was able to be integrated into the pipeline. So I had to play a contract and I automatically do a mythro audit on it, throwing alerts and warnings to a log file and reporting them to the screen so I could go, Oh Huh, look, I've very interest you bug, let me fix this. That's that's kind of like, you know, part of the whole thing, is it you're building a framework and that that to me, includes the whole like flexibility of not only that, be you should be independent of those kind of auditing tools. So if you want to go with MIS roll, that's fine. If somebody comes out with something better, it shouldn't matter, and I think your design approach really really works well for that. So I look forward to seeing kind of how you integrate security practices into the pipeline in the future, because I kind of feel like it's inevitable progression for what you're doing. So I guess I still have a ton of questions core you...

...might if I keep going. Let me get one in real quick for you before you go on a runt. Let's see. So what has been how do I want to put this? What's again? Doing this stuff is hard. Where do you see the largest across the entire space? Like what's lacking the most for developers and tooling around building secure, decentralized applications? What needs to be built? That is keeping people from from making the same mistakes they've made all over the place or reusing code that doesn't need to be reused, or not reusing code that needs to be reused. Like what would you say is the is the largest gaping whole of a problem and today's ecosystem right. So it's a great question. Yeah, I think. I think, unfortunately, the biggest gap is really knowledge. First of all. I think it's just not being aware of the possible security issues and they move with we interesting bugs can be very easy to do, I think. For I think that's first of all, that's a that's the big one, more than then tools themselves, because they went if we have the tools. If that's missing, it's sort of a still stop for there the I think that's better debugging tools. That's also something that's also still a missing there. There's a lot of improvements recently in the last year, but we still can do a lot more, and this recent tools that came up, like a mutual the definitely help a lot too. But I'd say actually knowledge, it is it is one of the big I think that's a big issue. Cool, so you you had us, so I will just let you know. So when I'm an early, early attempted user of embark, I don't know if I was using a stable or release or not? There's a simulated block chain that was in the system. I don't know if that's still there. Are Using a certain test our pc or is there some sort of are you agnostic to that? Or how does how do? How do you test this stuff? You know you don't want to deploy on a even a private chain is sometimes just not rapid enough. What do you what is the what is the methodology for testing? Right so we for testing itself with a Vm for for the normal development when doing work run, our preference right now is is to run a gorterium. However, so in the old days we're running gored Torium with we calls like a mine script, so that mine script would would activate the minor bood. Would not mind, it would actually monitor for transactions and we'll only mind which wonder was penning transactions and also would mind to a minimum, to a minimum amount to achieve a certain balance. And these days we still support that because people like to use that for privately chains when they're sharing some chain where a colleague and and of course they don't want to kill their the computer of mine one hundred percent. And but we are preference to use the minds damp mode of great um and that's a proof of authority, is not proof of work. So it's really really fast and we have a preference for that because you're also developing on a real block chain, on a real avm, and I had, I got countless complaints about yeah, I was working in test RBC and then I switched to to get and it's all broke. And so, yeah, we're not very keen on using. Similarly, we don't really encourage it. We do use for VM purposes because for tests it's really convenient, especially if you have a CEI. But for the devolvement we prefer a...

...really to interim note. And historically in part was introduced to first testing tools for forts in Java script, for for a tium a beginning. We're using python, was was based on Pi Vm. was kind of like a weird python warp in javascript. So it's like a big act, but immediate work. Then not towards afterwards. That was a that was test arpc python, which was sort of something similar to that, and then it turned GS VN came out and that when that came out, I I develope. I will put a similar business on top of that called atter. Same so, so that was the Thato was a Jew script jobs crypt similator based on tetering GSVM and little on that got forked into its MGS test RPC. I know it's called Gonnas. So that's kind of like the whole history of it. And but we're not king on VM's though, because again, because they can cause all visues if you're trying to Develope as. It's not a real book chain. I at that exact problem. I I'll I was deploying the test RPC. We get clear to pass all my test cases and then I deployed my private network and for some reason it wouldn't work and it would blow my mind. It was like everything's gon figured the same, everything looks the same. What's different here? And Yeah, I can't remember what the exact errors were each time, but it was it was always something quirky. And you know, that's the space, the state of the space right now. It's kind of quirking. So we can all relate to that. Yeah, so I think I think it's great that you're not supporting you really don't want to use, you know, test ourpcs, because I agree if if you can use the same a client that you're going to be using in production. You're you stabilized every Internet client, but you know, protocol clients kind of attached that some degree. I mean there's differences between, say, parody and and gas, obviously, but there's a using the same sort of system, same sort of blockchain protocol. Then you're you know, you're better off as a develop so the the next question I have is deployment. You're deploying these depths. Where they deployed to? Can you deploy them to IPFs and can you create a standalone version of the APP that runs like an electron or something like? Is there any how do you handle deployment? So you've got those contracts deployed, but how do you deploy the DEP can you deploy the IPFs and you deploy in an electron APP and then distributed as an executable, like, how do you? Yeah, so the is actually it's essentially an upload. So because the DEP is always a servilist, that a servilist application, client side application, then you can just upload to something like IPFs and will just will just work. And so in the bark you have this option. You can do embark upload and if you have IPFs configure or swarm configured, will just take the depth that was generated and and just uploaded there. So then I'll do users can and can access it. Yeah, with three point two you've introduced quite a bit of pipelining with Webpack. Okay, is how a difficult is it? I can figure web pack so that you could compile the s Downdar like a nice single file to upload. Right. So, yeah, in previous versions we embark. I mean one of these shows we had is that embark at add as and had his own pipeline and that's really great for for beginners, but then for more advance users, they were not that happy...

...about it because they wanted to do, say, optimizations or they want to use the webpack file for their own purposes. So yeah, on three point two we revent the pipeline a bit. We added the same Jack Inject and just inject the Webpag file and then customize it the way they want. By the foot we put a lot of options that are pretty similar to the create what you would expect and something I create react APP from from facebook. And with this we support two modes. We support that development mode, which generates source maps. Another thing I was missing before the nots available, or you can or you can build in production mode, and if you do that, then it takes longer to build, of course, but it generates way smaller, way smaller output, so something like four times smaller. So it's so this way. Yeah, yeah, the best of what will also beginners. They can they don't need to worry about Webpag they can just it just works. More advanced users they can then inject the webpack con figure if they want. And and we support both source maps and much, much smaller built which is also ideal deal for decentrized storages. Write like like a PFS, because it's Moller than all of the better. Also also a mobile, because a lot of this also came from the need to have light depths on browsers such as status. So I notice that you're supporting quiper, which actually is a language I'm still pretty excited about but haven't really had an opportunity really use all that much. HOWD that support go? How that how does since you're abstracting everything way, was it a big deal to a support piper? Was it fairly straightforward, and does it impact your dependency mapping at all? And how does that how's your experience with Bi Piper Been? Right, so, with because the park as this plugin system, it's actually super, super simple to add more compilers to it. It's becomes really a small extension that you just registered the type of the fall type and then you point to the Compo, to the compole function, and it's has to return a specific object and as as long as you can do that, you can generate an object that as Abi, Byte, cold and a few other properties and you can add any compiler. So we support not just viper. We support us of bamboo, although that's in that's in separately in a plug in. So it wasn't that big deals to support. It actually was really pretty straightforward. We had is that, because it's in very early stages, a lot of things can break easily. So the lit this version. Think we had to update that to be compatible with the latest version of Viper and we still have still up limitations. Like it doesn't, as far as I know, at least the last I check, it doesn't really generate say, source maps and things like that we could use for things like called coverage, for example, or debugging. So it's still very early stages. So adding any any adding support for it in a bark was actually quite easy, but in practice to actually use a day to day still in early stages. But since it since we like, you know, in a bark, we like alternatives, we like that developers have a choice, they're not stuck with some particular technology or, in this case, a particular programming land language, we thought it was important to add support to it out of the out of the box as a so we could have is external plug in. Would we wanted to make an eternal plug in? Just emphasize that. Yeah, if you don't need to only use solidity, if you want, you can use viber, you can use it even...

...together with solidity. You have that choice. So that's that's the kind of breaks. Me To another question I've had when, when developing these frameworks, and since I haven't had the opportunity to speak to many framework developers in general, and I'm not just talking about these centralized application frameworks, just frameworks in general. When you're designing a framework there's a kind of responsibility to be agnostic to the user and to the stuff the user is using. So, you know, if you include Viper and embarks really taken off, then that's sort of like almost like an implicit endorsement of Viper, isn't it? Since it's actually included as part of the main package? How do you feel about your responsibility for curating technologies as they are integrated into main main parts, in which you rather that they're just be a community built up that can support things using the plugins that are already available? Are The plug in system that is already available? What is? What is your balancing act between those two approaches? Yeah, so right now, if we see it, technology is usable enough to at least do. Prototogis one we would do include it. Ideally, is it is, as you said, developers goes just leverage the the plug in system and integrate on technologies. Things like, say, storagey come to mind for example. They could easily be integrated within bark using the plug in system. Think we still lacking a community around this plugins and I think a lot of it is due to a lot of improvements that need to be done on the commentation and we also need to communicate better what in Bark can actually do. So I often talk to people who know about embark but then when I tell them what inmbark can actually do, the they are bit surprised and that tells me that we don't do a good job, good enough job, to communicate what the framework connect can actually do. And so so, too so again, if there was a community a on the plugins, that would be ideally a dough be the ideal scenario, but that's not the case right now. So allow attack. We need to add as ourselves. And you have a good point about about the endorsement and yeah, I guess it. Yeah, if we included by defaulting a framework, yeah, I could be seen as sort of an endorsement. I'm not sure identific that true to too much. I mean there your developers in the theorem ecosystem. To I can't you be excited about something and added on to the Tak your building? I mean I feel like it's that's it's not that big a deal based on where we are in this space. It's just you're giving people options to use new technologies that they're probably also excited about, and in the process of doing that, you're helping the development of that of that technology, because you're giving people access to it, which usually exposes bugs, which allows people to report things, and the majority of people who are using something like embark have a really good idea on how to do those types of things and it's at my opinion. It's a boost of the entire ecosystem versus a opinionated inclusion of a technology versus another, and that's exactly what I'm talking about, opinionated. So when I bring this up, I'm talking about integrating get into the core. Now I mentioned that there is a plugin system and and you, you're mentioned that developers could develop their own plugins for embark. But when embark starts developing the plugins for other applications, that's when it becomes kind of a little different beast. Now they're in control over the way that this third party application that's separate from embark or this third party tool interfaces with embarked. So, for instance,...

...we talked earlier about mythral integration. Okay, that is a good sets this product. And you know, if myth rol were to be by default integrated into embark, and embark was, by you know, he leading coding framework. Now mythral is the leading security framework, which is not competitive. And also it removes, it puts in, injects in Bark's voice into the mythral development process, meaning that they are the ones actually developing the plug in for mythral it would be better the other way around, that in bark has a hook that's a security framework can develop a specific plug in for and that would enable them to smoothly integrate with the embark framework, and then that also lowers their development costs. But overall, I was just making a simple comment about how the control of a framework is actually the control of an opinion, and I see a certain level personal responsibility in framework developers to remain as agnostic as possible to tools that are outside of their direct scope. But that is just an opinion and that is me soap boxing, so tell me to shut up. I would agree with a lot of that, but I also I don't really care, like at this point in the game, I want functionality over choosing to visit or worrying about choosing civic platforms. If it works and it helps developers get better code out, I don't like care who's doing it and I and maybe letter down down the line. I mean keeping that in your head and making sure you're not playing favorites. Granted, it is a status product, so status about something. I'd imagine it would get included in a bark but YEP, yeah, I don't like. Is it okay? But there secured example, I can see that being a thing because that's a that's a horizon development technology that's rot with a lot of money and a lot of competition for identity frameworks. Well, you haven't kind of a sort with consensus, right? I mean consensus. When they develop any sort of tools, their first priority is to interpret with their own tools and everything else is a secondary to that, and that that can be also a challenge to to external, external tools. Also consensus that we're pretty much have to play cutch up because developed MERTU old er first, prior to to actually work it with trollfl and then everything else is is a secondary. So those kind of sort of conflicts of interests do exist in the space already, and I think it's very good point you. You bring them something we should kind of worry about and taken to the count. The thing I want to bring out, Corey, you say you don't care. I want to tell you my experience and I I'm struggling. It's like one of those things you build an intuition for, but you can't remember the exact reason why you have that intuition. But in the eighteen years have been in this space. Early decisions like this tend to have long term consequences, and so asking these sort of questions. What is our philosophy on how we support third party technologies is a very meaningful question in day one, once it starts getting traction, of course I could sider that to be one. Everything else is zero. Everything before that is zero's to one. So what's your at one? It's does that? Does that? That personal philosophy of development. How are we going to support other technologies? Is it going to be through encouraging them to build their own plugins, interacting with them directly, but they're in control of it? Are we going to directly support it? I'll certain Java models. Are we going to are we going to encourage? You know, how easierre we going to make this for ourselves and how easier we're going to make this for the community? That's really the opinion question, you know, and I think it's an important philosophy question, philosophical question when developing a framework like this. Yeah, I agree. I we do try to make everything plug in base, so even the plugins that are internal, you can overlide them completely. So let's say that...

I pfs. The internal IPFs plug in was not too lot. You're liking. You could include a plug in that which is completely overlided. And Yeah, it's so it's true that we, we, we do have some default plugins and which I guess in the way that does. Yeah, it doesn't emphasize some technology over the others. That's not necessary intentional. But yeah, I get it. And it's early in court. To Corey's point, it is early and there's limited options and want to gain traction, you want to get on boarding. So the there's there's definitely balancing act there. I get it. Like you know, you you know there's action. So no identity. Identity is a great case. Do you want to support you port? You know? Okay. Well, do we own you port plug undor does you port on the you port plug in? You know, this is kind of like just just simple question. I was kind of curious to the answer for it. It seems like you're kind of leaning in the same direction I am. where it's it seems like it's supportant question to ask, but just really no strong one case fits all answer. So right, cool. So what's most interesting to centralized application you've seen so far built on framework other than status. WHO The most interesting? HMM, that's a that's actually usable. The fine, usable, the fine. Let's go with let's go with my reason overall. And then what's your most interesting, usable one? I mean, I for the reasons I explain early. Yeah, and that's something I'm super excited the bolt. That's I mean, that's definitely I mean doesn't one of the thing, one reason I came into the space. I entered the space and I'm very excited to see that life. Another one is the maker doll, so the die, because just a few years ago that look like goal, like a dream, and I remember the maker maker guys when they're just starting. was just two people and the whole team look really, really ambitious. So to see that live, such a complex project, it is just fantastic. And I generally like, for me, the most useful our applications that are not necessarily related to two money. You know, I like, I felt that's for me that's the least interesting part of this entire space. So when it's such a sorry, amen, preach it, amen, preach it. Sorry. Yeah, and yeah, I totally agree. Yeah. So, yeah, when I see those type of applications that look actually the Diet is money, to be honest. But but it says that a more so, much more complex as and Yennass is as nothing to do with money and it's something that could actually be useful for for every day people. And and yeah, I mean I look, I look forward not to a future that we actually own our data. That's that's what I really hope now. I really hope that this decentralized systems allow us to to create and all some sort of sis and that we actually own our data any and instead of companies owning and storing our data, we just give it a permission to access it, but they can. They don't really own it. And if we do, if we do want to give the permission to actually store that data, then it has to be a very a very explicit process that makes it clear that, yeah, okay, this guy's a lexus to everything that you your own and reternal debt. It's free, but because you're getting advertising things like that. So that that kind of you obviously to look into the future...

...of how this works. It's like that's why we all got into this space. Is Because, not because it's what they are now, it's because we are on the frontier of something that we believe is to be greater than and what things are, than what they are right now. We see what's coming on the horizon and we see the birds flying and we know that where those birds flying, there must be carrying, that must be dead out there and we're going to go for jet again. I'm rambling, sorry, but you know, that's that's how early hunters work. They would see the birds flying and that's how they knew that they would go to that. Sorry, that's weird analogy, but the point is that we see what's coming, we know that this is happening. Yeah, yeah, I just wanted you piter for a second. Anyway, Um, the the the interesting things that are coming out deal with things like plasma chains and side channels, general state channels and and and things like the beacon chain, where it's got one chain but every there's many different charge and you might need to focus one for dealer chard. And that's just in say, the etherium space, although there are analogous things in other spaces and that also. So there's these technologies and then there's also the possibility that there are other consensus truth mechanisms which may eclipse atherium in the future. Right, things like could then definity and now I have a Lanch are all looking in cosmos like there are, there are, there are, they're all looking really like interesting ways of handling this truth trust mechanisms in a decentralized, trustless way, you know, like so embark is a huge code base that is agnostic to which etherium network you're using. But what kind of migration do you think it will take? What kind of effort would it take if you wanted to use it on, say, a different type of chain, a different protocol entirely? Is that even possible with your current and is that something that's on the road map? Yeah, because all those chains that shit for tooling, so you're going to need something that's going to help them out. Yeah. So, so it is actually on the road map because we want to be as of NSAC as possible and we also like good cold and being a Musta goles little helps having clean the clean the couple of code base. So we planned to supports things like like tender men, for instance. And Right now, the way it is a set up, and this is for the historical reasons, because because embark was primarily a term framework, is not really possible because it's that part is pretty much very coupled to Webtry G as and to and to its rim way of doing things, and we plan to abstract that much more so in the code. We even we just called that blockchain. We only qualiterium, so we just call the blockchain stack or the constantus mechanism. And but the way it is right now, yeah, you can't really use in what park with say, tenderment or organ on a Bitcoin or something like that, and we would plan to. We planned to introduce us over the abstruction. So that's possible and we starting first with making sure we support other clients. Well, of we need to space, and afterwards we make sure that to extract Webtry Gy as also, so people can use their own, can you say, each ergs and things like that. And once that, once that that is done, would be much more easy to would be easier to support, say, things like thunder mint or other change, all the change like me cart downo and things like that. So you got into this, you built this framework to help build better depths, faster and cleaner in easier. Yeah, it is said, a necessity...

...not just for the community but yourself. Yeah, what are your aspirations to you see embark framework so well. It's also it's I also did it too, because I I believe that if we decrease the entry of barrier and we make we make it easier to build complex things, then the bar is raised on on what you can do right. And so, for example, we have this very popular workshop which is how to do this rice twitter, and it's really really easy to do a decentrize twitter with the with in Bark. And then something that just a few years ago would be really, really complicated, but by making such a thing that used to be complicated very, very easy, then it races a bar on what depths can can do. So a lot of that we focus on on. That's why we focus so much on supporting different technologies and make them really, really that simple to use, because we want to see better depps, we want to to the space advanced. So you're asking why myself, my inspirations I so originally I wanted to create a decentralize market. That's what I wanted to build, and but then I got so busy with embarking and that's pretty much takes all my time and devoloper tool, other type of the volts tool, such as the has debuggers that I've I'll Fortu just that time. For anything else. I do some ports on the side, like say, this surprised rabbit, and with some experimentation with repetition, the different repetition mechanisms, but I don't want to particular Zapp I'm working on, just because embark justics pretty much all of my my attention. Make Persons. I think so. You know, I just briefly want to touch on something, since you are the moderator of a traitor, you are a moderator of trader. You guys just simplemented a point system. We want implemented this community, this community sort of Karma Rating, point system, reward system. Is that built in a decentralized way or is that just still kind of a centralized, you know, Reddit Pot. Are you referring to the to the I know referring? Sorry, because I thought you were referring to the happening, which is like a project that we had to create a no, yeah, it's a recent development where you have you're basically awarding points to people, and this to me sounds like a great way to just, you know, you know, eat, you know, eat what you make and it would have been a great decentralized sort of system. Is this a a socialized system or you know, how did you guys build build that? I'm actually at fully on part with the this later this one. I don't something we were working early last year. was we working in this token? And that would by being the central lie, and that's kind of on hold for saying I think next year. And and this's token with what I've been a whatever in anyterium token that you could just you can almost do pretty much like up votes and down votes, but would be on itterium and and and you would see, also, you would see rather differently depending of how much tokens that person had, and by togs I mean reputation, reputation and that were and that reputation points would were assigned based on the existing Karma or on the self raddit of users, because usually bought accounts. You know, you can buy an account of BOT account for, I don't know, with let's say Tenzero Karma. It doesn't really mean much. Yeah, or people...

...can have a lot of Karma just by posting and in some silly, silly stubs, but to actually have a lot of Karma on on the aterium subreddit or that I trade it self right. That's actually quite part and we did some experiments that we took the minds of the reputation for specific users in in each souperreddit and some controversial posts, and nearly one was back at the doubt. Those a lot of drama. We could see all that was a lot of manipulation because a lot of a lot of people were clearly outside of the community and it would just coming into you just cause trouble. So we taught to use this too, and we have such a prototype that when you're connecting to to the system, it's actually changes the order of the comments on on reddit according to the reputation of the of the users, and this way you ideal you got a better idea of what real or what's a puppet account and zone. That's awesome. See that's that's fantastic. I love that. And that's done in decentialized way or still just kind of a Databas, instance scanning. It isn't a decent alize way, though. We had some challenges. So the first challenge is was that putting, I don't I forget not the months of users, but was a lot of users. Was, I know, talking about tens of thousands of users. To put all of those accounts in a contract. Of course it's not really doable. With cost a lot. Also, different transaction costs a lot. So we're not coming with this solution, I think originally actually was suggested by Nick Nick Johnson, which you basically can just do a miracle tree, and I'm just a mercle tree and and and everyone, have everyone's balances and then you can put it online digital entire tree and make a tool that people and they want to claim the tokens, they just generate their marcal proof and then they called a contract, would the marcal proof and they got the tokens that are assigned to them. So that's the solution we we implemented and we were so taught to use that for some community to sort of like the committees who could make decisions, almost like good doll on the sub and that's something we're we're still kind of experimenting, experimenting with, and we toldoso do you say, are gone for that, but that they're going to challenge with. Our Gon is that putting all those users in one go is not easy, but let's less time. I spoke to Argon guys. They were they were taking to implement the same system with this kind of like a mercal route for people could do again marcal proofs to prove they are part of that doll and then they could vote. Yeah, I'm when I saw that up. Those very cool, especially since actually just gonna let out there I bothered a few subreddits and I actually wrote my own read it pot so you can assign Karma to other users who had conversations with each other and if it bide, you know, there was a sufficient amount of evidence that had actual conversation, it would allow them to assign Karma to each other. And I found the same problem, like you want to have your own individual like Karma system, and you know, I had a similar thought to you, like we need to decentralized Reddit, and I felt like, you know, as trader, being the proof of concept for how a sort of that that could come up out a very early stage version of just a signing, you know, Karma to a net debt anonymous identities, as an early proof of how this would kind of work is just intriguing to me. So just kind of seeing what kind of effort was gone and neck is just personally interesting. It is a very hard problem, though, the repetition systems to do, especially if it's especially if it's supposed to be the centralized and objective, and the key word here is really objective. It's really,...

...really hard and old proposal I've seen. They allays have flaws because they can always fall into Sibil attacks, and so one solution potentially can be still decentralizes what I call subjective repetitions, repetition systems, meaning that you would see things differently depending on who you trust, and the weakness, I guess, would just would just be there. who over who you trust. So as long as you trust the right people, this not really subject to to sibils. But then, but then, I think feels philosophical. Dasue what that is. In my opinion, it's it's bubbles, right, it's opinion bubbles and selection bias. They can really make echo chambers or something like that. Sorry, can really make echo chambers and something like that. Yeah, yeah, I think, I think so. Yeah, that's the big disadvantage of subjective repetition systemss is those echo chambers, and that's already a huge issue. Yeah, so I think, I think we can start to wrap here. Is there? Are there any questions that you were hoping we'd ask you what we did? GET AROUND TOO? HMM, no, I can't think. Go. No, no, I think we're good, awesome. So I do. How do people get started within bark? How do they reach out to you? How do they learn more? So we are. Yeah, so we have a good a channel. It's it's a getter, it's a get bark. That's framework and we are there. In the entire team is there and its hell is ready to answer any questions the vlobers might have. The entire team will also be at the status that cootswe and in progue coming dicks this next month and we also be vobbaled for to interact with the community. And Yeah, we're quite excited actually to to meet people that are using work and all they are using it and how we can improve that. Yeah, I kind of want, I kind of excited to see if anybody can come up with like great plugins that happened to be there alongside the hackathon. If they do, I want to work on creating things for status and everything, great things for a bark and just kind of I see any anybody that comes to hackathon and contributes to making something better. That we do is a win in my book. Yeah, I agree. All right. Well, thanks for coming on the show. Appreciate your time and we'll be seeing you in Prague. Yeah, thanks, thanks for see you, guys.

In-Stream Audio Search

NEW

Search across all episodes within this podcast

Episodes (127)