 Okay, you're alive. Hi to everybody on another Tuesday. Welcome once again, both to familiar faces and newcomers we are the media and entertainment special interest group here at Hyperledger. And we're very lucky today to have an international guest specifically from Poland. This is Mr. Piotr Hewowski, who is on a larger scale part of the software mill organization again in Poland, but more specifically, is the guiding light behind the new FABLO initiative FABLO projects which you can find on GitHub, as well as in Piotr's more official material so I'll post that link in just a second if you want to drill down into the engineering of what he'll be discussing. And what he will be discussing is FABLO which and here I quote directly from the repo. It is a simple tool to generate the Hyperledger fabric blockchain to generate the network and then run it on Docker. It supports raft and solo consensus protocols, multiple organizations and channels, chain code installation and upgrades. That initial blurb is what caught my attention. So I wanted Piotr to come and explain to us in greater detail how this all works. So Piotr, it's over to you. Okay, thanks. I'm going to show my screen. And we'll be start talking. Okay, everything is fine. I assume that you are that everything is fine. So I'm going to start. Yep, everything looks great. Okay, great. So awesome. Thanks for introduction. As it was said, I am Piotr and I'm working in software mill and we're going to talk about FABLO today. And FABLO, it's our open source project and also part of make Hyperledger startup easier trend. And it was previously named Fabrica but got re-branded to FABLO recently, but it's the same thing. So if you got already interested in it and using it, you can start calling, start naming it FABLO and use the new repository that is FABLO. And we're going to talk today about why it was created, review its features, do some demos, maybe talk about future plans, answer some questions and stuff like this basically. So first of all, why it was created. And to answer that question, first we must talk about software mill. And it's not about bragging ourselves, but only to get the context. Because we do a lot of cool stuff like Scala, big data, machine learning, Apache Kafka, blockchains. But one factor is in common between all our projects. That is that we are not a product company. And that means that we help in building custom solutions products. So often we work in models such like team extensions, consultings for the clients. And all of this basically means troubles. It means troubles because we like don't have any single network setup in some cloud or in some external cluster. We don't have stable configuration, but rather we have multiple projects. And every other projects, it's kind of different and we must propose a different solution. Like in case of supply chains, many organizations, many channels in healthcare systems, maybe two or three organizations will be enough with common channel and also other use cases. So basically, our crucial needs are being able to experiment with network setup. So we could easily move from one configuration to another one to quickly experiment. And also really crucial part is limited time factor, because often we must work in kind of short timeframe to present something working to the client. And all of this sounds nice. But in case of hyper ledger, it's really bloody complicated actually. Because don't get me wrong, fabric is really great tool, but hard to get at understand on the beginning. Because it's got a lot of building blocks. Every organization have certificate authorities peers. We've also got order organizations orders. We've got channels to combine organizations chain codes that can be installed on the channels and policies to ensure security around the blockchain. And everything is nice, but everything is really complicated here. And that's great because thanks for through thanks to this building blocks we can cover a lot of use cases and a lot of scenarios. But it's really hard to get at the beginning. And we had really hard problems understanding fabric at the beginning. And I'm pretty sure that a lot of guys here at community also had a higher learning curve to understand hyper ledger fabric. So basically, what's our solution. That's why we've created Pablo. And Pablo started as our internal project quite while ago. There was no good hyper ledger network tooling back then. And I'm working on this project with Cuba or Jacob if you prefer so he couldn't make it today because he's happy and busy father of two, but he's really working hard on Pablo also. And right now we are in happy moment that most of our internal projects depend on Pablo and everything is working really nicely and we can shift between the project very easily and very easily change the network setups. And after using it for some time. And we decided to open source it. So it's pretty short initiative like it's been open source. New vacations in the summer. Pretty short three. So, what's the main idea became behind the fabulous. The idea is really simple. And everything is stored in one file that is configuration in a file. Let's call it Jason file for now. And that file will contain all needed informations about public like public version, all organization organizations, other types, peers, channels, chain codes, and absolutely everything what you need to get properly running hyper ledger network. And then you give that configuration file to Pablo, and Pablo will transform it into actually running network. And the best part is that you do it with one comment. So you just say Pablo up, you point to your configuration file, and then the network starts running. And let's review some key concepts. And what's really nice about Pablo. So, conflict Jason conflict Jason is hard to follow project, because it's like a complete blueprint of your network in one file. And everything should be a part of that file that it was set. So all organizations all peers channels chain codes fabric version private data TLS. So a lot of stuff so that no later for our flags or additions are needed. Contact Jason basically represents complete state of fabric network that we want to have. And besides of being really complex, and big file, doing a lot of stuff, we want to be it as concise as possible. So just covering minimal details, minimal details. So often we base on default parameters that you can easily override. And I will show it during demo that you can override many things in public traffic. Also, we are heavily focused on being flexible. So it will be basically as flexible as fabric is, and it's building blocks. So we can cover a lot of experiments and a lot of use cases. And everything in conflict Jason is covered by Jason schema. So we can do some sit by syntax highlight need to see some phable features and also thanks to it we can do some basic validation so what options can we use. And what it's not allowed in phablo. Also, I'm going to call it on this presentation conflict Jason but just one just wanted to say that we also can use the animal. So if you prefer that data format it's absolutely another problem. Second part is phablo itself. Pablo can do various things. Basic command is phablo units. And it's your starter point because you can initialize your new configuration file, and you can decide if you want blank network without chain codes, or you want some sample one just to play a little bit with fabric. And then you can modify your configuration file. And if you decide to verify that everything is okay. You can use validate. Besides of validate ticket again Jason schema phablo will also give you valuable suggestions, like, maybe it's not a good idea to lose to use solo order type to run your network, and draft is more production ready. One pier for organization is definitely not enough, maybe you should need another one. So validate is kind of easy way to get started with fabric and validate your setup. And also it was said, we have command phablo up to get everything running. But besides of running everything, we have also generate command so you can generate scripts for running network and then then customize them a little bit for your custom case. For example, maybe you need max message count for orders increased for five or another default. So you can easily generate files, a little bit customized for yourself and then then use them. Also, when running the network we have gentle upgrade for upgrading and experimenting with the chain code and usual ones like start stop down to manage the existing network and benefits of phablo. First of all, declarative approach. We are here heavily expired by Kubernetes operators and we tried to use as less comments as possible. So we tried to orchestrate the network only via using configuration file. And that's why because one file is really a one file is really easy to reason about to do code reviews and to check the actual state of the network. When we have multiple files and multiple strips. Everything gets kind of messy. So phablo thanks to that everything is taught in one file is really great for POC and continuous integration, because you can easily download phablo run it on continuous integration pipeline like Jenkins or GitHub actions and say it okay run this type of network containing this many organizations and channels and just do it and phablo will easily do it. So phablo is really great for future because right now we support only one type of transformation that is docket compose. But there is a cool potential for other transformations, like we also can include blockchain automation framework maybe, or maybe something else. And the guys at blockchain automation framework do a lot of great stuff. So we could easily transform that phablo file again to something more production ready, not only docket compose file to run on your local laptop. It's really also really great that you can transform that configuration fun in various visualizations so it's easy to business for business guys to reason about and to see some blocks and machines. Possibly we could do also custom plugins you see if you have some custom transformation and custom case in your organization, you can try to do some custom transformation to meet your cases. And I'm going to talk only about vision plans, and then we'll be the first time slot. Vision plans of phablo. First of all, as it was said multiple times but I want to say it once once more, we want to treat phablo configuration file as a single single source of truth. We can transform it configuration file into docket compose, but in future we could easily do a lot of stuff here, because right now we can share it with the rest of team and do some collaboration. We could maybe add orders checked why something is not working, and we can have common environment between all developers. We could also easily do code reviews and review why we've added another organization. If that's enough peers for that channel or must we join much more peers. So here, this single source of true also could be transformed into working cloud environment. So, really nice option I think, but I'm going to pause for now. And if there are any questions, I'm up in it so please feel free to unmute yourself and ask questions. It seems like everybody is listening very attentively. That's cool. If you have any questions. There will be also another slots for questions. So if you had something in mind, don't hesitate and just ask. So I'm going to continue. So basically fablo features and fablo features. First of all, we support a plenty of hyper ledger fabric versions from version one free from versions one for x basically one or one for versions up till the latest ones so 233 I guess right now. We support two order types that is solo and draft, and two database types embedded one, the default one that is level DB, and the external college DB, which is good for querying. So at our heart of our project is setting up channels and channels. So we try to be as flexible as fabric is, and I'll try to demo it really soon so I hope you understand it, and like it. Also we have TLS support private data defining on copies and the other useful stuff. Okay, I'm going to proceed to demo and after the first demo slot will be also slot for questions. So we're going to start really simple project using fablo. So I'm going to switch to my ID and enter presentation mode. Just a second. All right, got it now. So, first of all, let's start with absolute minimum. Like, here we have empty projects, we have only IntelliJ idea directory, some get ignore and absolutely nothing, nothing else. And we'll try to change it with fablo. First of all, as a side note, I have already fablo installed here. But if you don't you can do it easily using this command, which is also provided in our data repository. It will install small executable file that will communicate with dedicated Docker. It will install it globally but if you like you can install it also in project directory so the small file is really pretty elastic. And when you have this file, you can type fablo in it. And after typing it, as you can see, fablo config JSON was created. And that file contains informations about JSON schema, and we'll validate everything against this JSON schema. This file contains also informations about fabric version, about TLS, about root organization, also type of order and number of instances. Also, number of usual organizations and currently we have only one organization called organization one with two peers, both running on level degree. And also we have one channel named my channel two, and it will be joining both peers of organization one. As as we can see, we currently don't have supported anything included in chain codes, but we're trying to change it to proceed to proceed with demo and start and show something more interesting. So, we can try also to type fablo init note. And after typing it, we've also got for free custom just minimum chain code to test a little bit. And now, as we can see, we also have field chain code directory. It's pointing to chain codes chain code note. The chain code will be installed on my channel one. The chain code version will be 001 and it will be named chain chain code one. And as it was set with one command that is fablo app. And pointing to configuration file, we can transform it into actually running network. Pablo, Pablo just got our configuration file past it generated all scripts needed to run the fabric network. And now it's trying to run it. As you can see our example it's pretty simple so it's doing great and fast. And soon we'll have working fabric network. And voila, everything is running. And as a proof. This is just minimalistic docker ps to fit for presentation. It's like just saying docker ps and using some custom formats and sort. It's showing that we have one certificate authority for organization one root certificate authority CLI for organization one to chain code instances for both peers. Also we have older and two peers. And if you will try to execute it. Everything is running and the network is up and running. So pretty much simple and fast to run your sample network. And easily from nothing. We switch to this diagram here so root organization with two peers one chain code and my channel one. So I've got second part of them are prepared but if you have some questions in mind I'm opened and it's time for questions so I'm happy to answer everything. I'm going to pause for a minute maybe. So don't hesitate if you have something in mind. Once again please don't feel shy. If you have questions just by unmuting yourself, you can post them here in the chat, or if you're watching live stream on YouTube I'm also monitoring the questions there so any of those is equally great. Oh I see one question here we are in the chat already. Yeah. Okay. I can't view it actually could you please. Sure yeah read it out. Oh great two questions fantastic. From Dinesh we have. Where can we mention the fabric version in the config JSON file. Can you please repeat the question. Sure. Where can we mention the fabric version in the config JSON file. Maybe I didn't show it. The fabric version is here, just at the beginning so it's network settings and fabric version. And if you like syntax height liking and not sure what Pablo actually can do it. Here you should have a nice pop up in the IntelliJ so you can easily switch between the versions. So, yeah. So here's the version number. Sorry, but I beg your pardon no please continue. And one more question from our givens I apologize I don't see the first name. Very simple question can Pablo be used to create NFT. And no actually no it cannot be used because NFT is more about designing smart contracts and a lot of work to do some NFTs. We are doing only various network setups so no it cannot be. Hi. So, yeah I have a question so can we use Pablo to create a multi host network. Multi network like multiple computers in cluster yes. Yes, yes right. And no currently we cannot use it. We are only prepared for using it. So on Docker Composer like single laptop. We have some plans to do something more cloud ready but not yet. Probably a spoiler alert, we'll try to be ready with it for Christmas. Okay, also one more question. So can we integrate Explorer into this network. And yet, we cannot include Explorer but also there's plan for it again probably new Christmas, it should be relatively simply, because in future we plan to add Explorer at this level so at organization level just another flag that we won't explore for organization one organization to, or maybe global one so not yet, but soon. Thank you. Thank you, we don't have a question but we have a comment in the YouTube live stream I'll make sure you get the contact, but somebody says I would love to do a podcast with you. Okay, cool. This is very nice. I will give our email at the end of a presentation so we can think about some kind of podcast here. Any more questions. Dinesh again, do you have the feature to add a new org into the existing network using Fablo. And no, we don't have such a thing. I'm going to try to extend this example, and elaborate on why we don't have such a few features. So just please wait and I will show everything. And the last question I think at the moment from Hakeem who says can Fablo be added to a pipeline that redesigns and redeploys a network after an update. Is it possibly in future? Yes, because we are really keen on providing another transformations. And another use of transformation is obviously Kubernetes operators because this whole Fablo idea really nicely fits into Kubernetes operators philosophy. So in future, you could easily also transform it into something more cluster-ready and pipeline should transform your fabric network. So that's the plan in short. Fantastic, that's the last of the questions for the moment. Okay, so we're going to go back to presentation and chapter two with our network design. So we're going to pretend that we are working in supply chain use case. And we've got to go back to Fablo, go back to our configuration file and do some mess. First of all, we want something more production ready. So we'll try to enable TLS communication for security. Also, as it was mentioned, Solow is definitely not a good idea for production ready environment. It's only good for simple use case to play around with fabric. Also, let's have three instances of order. Also currently we have only one organization and we'll try to add new ones. So we'll add organization called just called organization to with domain organization to dot com. We've gonna also have some peers. So let's say that we'll have two peers. But to show how elastic Fablo can be. Let's say that this time we want to have couch DB, because maybe for, for some reasons, organization to wants to do some rich queries, or just likes couch DB. So we have two organizations. And now we must modify our channel. Let's do it a little bit. So in the orgs section, we're going to act organization to it. And we'll only join peer zeros. So like first peers of each organization to that my channel one. And also, we can play a little bit more. Show another interesting thing. Because we can add another chain code. For sake of simplicity, let's just reuse this program here. So chain cause chain cause QV node. So the sample one. And let's go with chain code chain code to and let's install it on my channel to. And let's define my channel to so second channel. And things are getting really complicated here, but still probably under control. And because we have second channel named channel to between organization one organization three, sorry. And let's join peer ones of that organizations to that channel. And also, let's add this organization. So organization three. And again, I will change it to level DB. It will be slightly show faster one. So in like just couple of seconds, we defined three organizations to channels and to chain codes. And also change everything to TLS communication. So our public version is secured. And last cool thing where that we can do is we can say that we want to do that we want to have private data collection. And let's say that this private data will be visible only for organization to. Oh, let's say that it will be visible for organization to so all names should be. And let's name this. Private data collection just collection one. And after having such a lot, a lot of mass, we want to type. Pablo recreate. And again, we can pass our configuration file. And Pablo is trying to pass it. And again, try to put everything out. And now it's going to execute for some time and I'm going to answer that one missing question. So, basically the question was about, can we have some commands for adding another organization. In short, we don't have such a things because in Pablo we believe that everything should be a part of configuration file. At the end of the term, we want just, we want just to orchestrate the whole fabric network, just using that file. So, so if you want to add another organization, you should add it to Jason configuration file. And then Pablo will try to defeat to execute some patches of the network. And it's really cool idea and cool philosophy, but it's also really complicated. And it's not yet supported. And it's not going to be supported probably for some time, because, first of all, we want to focus on Kubernetes operators integration and some cloud environment. And maybe we'll try to add it lately. It will be provided by doing so such diffs. It's kind of complicated. Oh, it went really fast actually. I wasn't expecting that. I'm going to verify it. Oh, and everything is running so cool. I wasn't expecting this, but yeah, we have the network preview here in my console. So we have three auto certificate autorities now. So we know that every every organization is running. We also have three CLIs for each organization. We have mentioned couch DB instances for organization to a bunch of chain codes. Code one and chain code two here is visible. We have order in raft mode already running and peers for organization one, two, and three. So everything is running. And we'll try to execute the command everything again. And something is not ready yet. Just give me a second. Oh, that's a pity. I guess we have some kind of error at the end of the demo. Okay, I'm not going to try to fix it right now. Because I'm kind of in presentation mode type. But in most cases, everything should be running and easily you could transfer your network. So you can try it yourself and I'll try to look on it on it after this talk to validate what actually happened here. I just want don't want to spend some time on debugging random lines here. So we follow. Again, easily we switched from simple POC kind of mode, just to play with fabric to something really broad and complex, like free organizations with two channels. We have channel one with one chain code. I hadn't done it yet. But we also could have installed another chain code on that channel. And Pablo is elastic enough to do so stuff, do such stuff. We also can join peer ones from organization two or three into separate channel and provide some information about private data. Normally, if we hadn't have Pablo or any other open source project, it will be like work for at least two, three weeks to get something running tested and probably ready for production and for some complicated cases here. We've just did it in like three, four minutes with network execution. So it's really cool, I guess. And that's enough of my demo. If you have some questions after demo, I'm happy to answer, answer them now. And so it's time for time slot and then last presentation slot. So questions please. We have a few waiting for you. I think it would be from Brett, which cloud solution would you pursue, perhaps Linux. I'm, first of all, I'm just a big fan of Kubernetes. So it's another level of abstraction. So I'm not thinking about Linux machines or something like that. Obviously I'm a cloud developer. So yes, I prefer Linux, but on top of that, I like to use Kubernetes and it's pretty useful and you can easily use also Kubernetes on the Linux machines. Sudarsan has a question. In Fablo, where do we specify in, sorry, where do we specify the endorsement policy or the chain code policy? Good question because I've omitted it because in the newest Fabric version, we have such thing as default endorsement policy, but we also support older versions so we could easily write endorsement and just provide endorsement policy here. We plan to do something more complicated like to point organizations from configuration file that are mentioned here and try to pass that file. But for now, just try to paste the endorsement policy here and everything should be working. And lastly, for the moment, another question from Brett. One second. What about the stack with Internet of Thing platforms? Not supported yet. We are not close in our business and in software with IoT solutions. So we are just digging into that. So I'm interested into knowing more about IoT in Fabric, to be honest. Okay, that's it for the moment. Okay, cool. Okay, so last part of our presentation. I hope that you could see that Fablo is really great. And it really is simple and it's really flexible. And you could easily define such as such complicated cases with Fablo like supply chains so many organizations with many channels. You could easily switch and refactor your file to cover such cases as two organizations connected with audit channel with one root audit organization, validating or approving some transactions. You could easily also create such configuration file to create free organizations with common channel and then also create small channels joining each organizations. So, Fablo is really flexible and good for various solutions. So, it's nice. But to be honest, Fablo as everyone and everything in life also had its drawbacks. It's not yet production ready as it was answered on QA session just minutes before, because we currently support only docker compose on single laptop, but in future we will be ready. Currently, we don't have any good support for Linux. We support only, sorry, we don't have any good support for Windows, we support only Linux and Mac OS. And it's fairly, fairly good tested on both of these machines and various systems here, but not on Windows yet. We can do basically imports of running network. So if we have some custom solution, we cannot easily transform it into Fablo configuration file to like repass it to configuration file. But I have some ideas on how I can improve it and how we can proceed with it. So maybe in future it will be available. Also, as it was mentioned, we don't yet have support of Hyperledger Fabric Explorer, but it will be fairly easy and heavily pull requests with it also when welcomed. And basically that's all for Fablo. If you got interested, here's our domain. That's Fablo.io. It redirects us to GitHub repository of Fablo. And if you get some questions, want to do some collaboration, talk about some open source and stuff like this. Here's our email. It's blockchain software.com, both Cuba and I will be available on this email and answering questions. And yeah, last time for questions here. So if you got something, just hit me. Last chance for questions. Anybody feel inspired? Just give people a few seconds to type. I type with two fingers, so I don't expect anybody to type quickly. Just a comment here. This is very impressive. Thanks very much for the presentation. Thanks. Thanks. Actually, to be honest, there was a lot of work to do it so flexible and we have a lot of battles. And then a lot of battles with macOS and working at both Linux and news distributions on macOS. So thanks for the comment. We are really happy to deliver it. One more question because one of the most considerable appeals in your project is simplicity. Have you worked at all on any user interfaces so that people with minimal knowledge of any blockchain could perhaps interface with your, your architecture. I'm thinking about it right now. Just to start with we want to do some visualizations so transform it into like images, but we are also thinking about some interfaces. So, in future, yes, and it's cool idea. So visualizations which you mentioned in an earlier slide, would that be a form of interaction rather than a, you know, drag drop menus it would be more perhaps of an intuitive engagement with a two dimensional decent image. So for start without interactions, just to present maybe such a diagram like this one, but in future we plan also maybe some console to do some drag and dropping and configuring schemas on fly. Randy has given us a question fresh question. When do you think Fablo might be ready for full production. So that's hard question because to be honest, right now we are doing it after hours in our spare time. So it's getting really slowly there. So maybe next year some fun for something more just try to follow us. We are also open for any kind of collaboration. So if you're interested, just join us. I have a question from Jorge on YouTube. What considerations should the fabric SDK have in order to integrate with Fablo? Basically nothing because Fablo doesn't do anything magical or new with SDKs. So only one missing piece is configuration YAML for SDKs, that's the usual part. And I guess that work on it is actually on progress in Fablo. So soon you will probably have a chance to transform that configuration file to connection profile for your SDK. Randy says thank you very much. This is very exciting and asks where the best way, what is the best way to follow you? Do you have maybe a newsletter or is it simply the GitHub repo? Right now only GitHub repo because I'm not a Twitter fanatic yet and I'm not trying to post every changes. So best way to follow is to try to use our repository and maybe official Twitter of our company and will try to make something better soon. And just to remind people the company is software mill. Is that .com or .pl? I forget. .com. .com. Yeah. Oh yeah, I've just got it. That is the central company. So that also is a way to follow. Yeah. And we have pretty active Twitter. So everything about Fablo will be on that Twitter. Yeah. I just noticed Brett said he's already joined you on Twitter. So that's exactly what you wanted people to do. So that appears to be the last question. Thank you very much indeed. It's been really an eye opener and I'll certainly be using it for one. And it's also very kind of you to give your contact emails and also an open invitation for collaborators because as you said this is being done at the moment in your spare time. So thanks once again for helping us after the end of your working day in Poland. Thanks. Thanks. Yeah. And thanks for warm introduction and some compliments and hopefully we'll be also be seeing ourselves in the option community. And on next talks. Fantastic. Well thanks again and please stay in touch. Thanks. Bye bye. Bye everybody. Bye everybody. Thank you.