 Okay. Hey guys. Thanks for joining. Welcome everybody. My name is Sergey Kabashnuk. I'm a software developer in DevTools Ukraine Red Hat. And today we are going to talk about the tools, development tools, the tools you like, the tools you think you are efficient with. And we talk about Eclipse chair, which is specifically designed for cloud native application and how swapping in the Eclipse chair help you. So the tools. This is a constant process for human to search for a better tool. The tool that makes you efficient, the tool which allows you to spend less physical or intellectual resources and to do more things. Let's take an example from the digital cameras. That's actually my example. With just a simple switching a tool and the same scene and the same hands, you can receive a more shallow depth of field, a nice blurry background, a nice bokeh, and you get like a wall effect and the footage like this can start looking like this. And think about that. In my life I changed a couple of EDIs. And I'm always looking to EDI like do more things which I be more productive. So you can imagine different tools that give you more efficient. But let's talk again about the EDIs, the bit of history. One of the first programs, that's not the first, but one of the first programs looks like that. It's a punch card. And we can imagine like that was the first EDI for that. Not sure how it was really efficient, but I think it was productive. But time goes. We see movement and probably have, all of you have the different experience that was my experience with the EDIs. But interesting that in 1995, computer roach claims that developer thinks that EDI was not well received by developers because they think the EDI will fence the creativity, really, in 1995. What are the trends now? There is a ton of tools, a ton of EDI that allows us to focus on bringing the value to the product to be more and more efficient to unleash our complete potential. A new generation of EDI become lightweight. They are simple. They have a powerful tooling. Quite easy to customize. A lot of tooling allows you to customize a lot of things from the colors, from the menus, from the fonts to the different functionality. And as a developer, we love high release cadds. We love new features. We like to see more and more. And a good example of the EDIs code. In a couple of years, it becomes a huge potential, very popular. In one of the Stack Overflow service, about 35% from 75,000 responses claims they are using the EDIs code. And they admit that it's easy to unload. It's quite small. It has a lightweight modern flat UI. It has a lot of extensions. It has the support of the language server protocol, which allows you, if you don't have the language you like, you can easily bring the new language to the EDIs code. And high release cadds. Also, there is another different light editors like Sublime, Atom. They don't have a huge number of features, but that feature they have that allows developers to be really, really productive. The features they have are really nice. And an interesting item recently, not recently maybe, add a language server support so you can edit new languages there. And one of the biggest trends we see for last years, that developers are no longer afraid of the browser EDI. They start using it, actually. Recently, almost each quarter or month, we see new browser EDIs. Some of them made by companies, some of them made by a group of individuals. This particular example called the Sandbox is specifically designed for web development in more particular for React. It's doing not a lot of things, but that thing it's doing, it's really efficient. It's really nice. One of the trends in Eclipse Foundation, we see new EDI, Eclipse tier, which is cloud and desktop EDI. With Electron, you can run it locally in your desktop, as well as you can run it in a browser. It supports a language server protocol so you can plug it in a new language, very easy. And last but not least, it is built in on quite modern JavaScript frameworks with TypeScript, CSS and HTML support, which is kind of nice. And of course, Eclipse chair, which has a broader set of capabilities with the goal to allow anyone to contribute to the project without installing anything. And one of the points to do that is accelerate project onboarding. So if you don't need to install anything by yourself, it saves your time. It removes inconsistency, but it works on my machine, which kind happens sometimes, sometimes often, sometimes not. And it protects your source code. It removes the source from your hard to secure laptops to the infrastructure. And you don't need even to check out your sources to your local host, so it's removed to infrastructure of all of that. And to do that, Eclipse chair has a slightly different definition of the workspace. So you have an EDE. Currently, we have a GWT one, but we think that TR is a nice tool, so we like to switch to the TR as our default editor. We have a project sources and we have runtimes. And by runtimes, I mean all tooling you need to build, run, test, and debug. And all of that toolings run in containers, EDE running in individual containers, debugger running in individual containers, language servers running in individual containers. What's the benefit of it? So let's take an example of this code. For instance, if you want to have a Java support, you still have to install Java locally. But if we're providing all tooling with containers, when you get the language support, Java support in the chair, you get all dependency. You don't need to think about which one dependency you need to install. Another nice feature, if you want to upgrade the version, for instance, you have Java 8 and you want to support Java 10, all you need is just to upgrade your containers. You don't need to mess your local environment with different dependencies. For instance, in Eclipse for different components we use, sometimes we use Java, sometimes we use Node, sometimes we use Go. So imagine how many dependency you need just to build the project. But with this, you don't need to mess your local environment. Also, as part of the Eclipse chair project, we would like to define a format, a format which you can put in a file. We call it the dev file, where you can specify a free major part for your development. The project you are developing, or projects, if you have a couple, the tooling like EDE or language servers, which you would like to run with it, and the commands which you need in your work. So this is a dev file. Later, with the demos, I will be heavily using such feedback as a dev file. As I mentioned, we like container based, but that's not the only one way to have extend functionality of the chair. So as I mentioned, we like the end, we would like to switch to the tier in our next versions. So we support all the plugability that the app provides, plugins or extensions, and now Red Hat and other the guys working heavily to allow use almost every this code extension that you can find in the market with the tier. So it's kind of from time of that code. But that's not only it. We think that we don't want to tide you to any specific editors. We think that if you like some tool or like different editors, like a Dirgeable, Eclipse Dirgeable, or you like scientific tooling provided by Eclipse, Uputer or other editors, you can swap the default editor with the one you like. And we don't want you to be connected to any specific of this. And of course, we thought about the delivering plugins and the editors. We're building as part of a Clipshap project a plugin registry with all different social activity like stars, like commands, like anything you expect from the marketplace. We also thought about the enterprises. So if you want to have it locally to have some proprietary software or proprietary tooling, you are able to do that, to install and of course, administrative tasks like team management, everything you would like to expect from the as administrator demo. So I will try to show you some live demo. We have a backup plan with the video, but I hope the internet will be fine. So I get the GitHub repository with the different examples. And as I told you about the Dev file, I've put the Dev file in the root folder. So you can see here I just put a tooling which I would like to use for working with this repository. And as part of the Eclipse chair, we have a nice feature which is called in factory. All example I will show you are running on my local OpenShift, but you can run it on your Kubernetes as well or our RedHeads public check out, chair OpenShift.io. You can install it by yourself. So the idea is really simple to have a link. This is a domain that the chair is running. And to have a link for the GitHub repository, there is a Dev file. So everything you need is just a click. And as I mentioned, we would like to increase project onboarding so you don't need to install anything. You need just a click on the link. And you can share this link. You can create a button on your project to start contributing it to the project. You just need to click on the link. We also call it factory. So at this moment, the chair gets the definition of tooling, gets the information from the tooling which container it needs to run. It pull it and it started. So now we expect to see a tier editor. We really hope to see. Yes, so it's starting. So you saw the tier start cloning. So you saw probably two tools. One tool was a tier editor. Another tool was the exact site car. So this is a separate container which allows us to execute commands in different containers which is running as part of your workspace as well as to see a terminal. Like here's a terminal for container which is running here. We can take a look at the process running. And yeah, so it clones my project so we can see it here. And the all cool feature that regular IDE is providing. So I wouldn't go too much of details about what this particular editor can do. I guess we have another demo about that. But let's take another different example. What if I don't like the CD? That's a good example. So another way to use the links is to specify a direct link to a dev file. So I have another example which will run our GWT IDE. So I specify the link particular to that IDE. So as I said, you don't need to install it anything by yourself. Eclipse share will go to the registry. It takes the definition of the tooling I've asked. In this case it is GWT based editor. Yeah, it also start cloning your project. It has different instruments like syntax highlighting. All you may expect from the IDE. Any questions so far? I'm sorry? Yes. So as part of your tooling you can define volumes you need. So for instance you know that your tooling usually save the settings in some particular place so you can define the volume for that place. So next time when you restart your IDE some settings will be saved. As well we are mounting the project folder to its kind of default location for sources where we usually put the sources. Okay, let's move next. So in this example was the regular IDEs which we use. The current one, the GWT one and the feature one that we would like to use. But what if you like UPeter as an open source web application that allows you to do some accuations, visualization, some maths. For instance if you are a teacher and have a student which do some maths and you want them to have a class with some coding and they don't need to install anything. They just need to click a link. And everyone would get their own environment which is running their own instance of UPeter where they can do some editing of the sources and run it. Let's take a look how it looks like. So this is a UPeter. It's a created Python. You can do some coding. You can run it. Obviously it's not run. I guess you can do some debugging. You can save this file. So all you need is just a link to share this link to the students and they receive the complete environment. And all that running on the open sheet of a Kubernetes in your infrastructure which has the scalable environment. Okay, next up, you know, the editor Eclipse Dirgeable which is also kind of integrated development environment with different set of features. As I said again, now Workspace Monster gets the information about the tooling. It pulls the containers and it started. Yeah, that's Eclipse Dirgeable. So we can create something here. Create project and do some stuff. Okay, so you get examples with the editor, with HTML editors. What else? So imagine you want to have some application like Dropbox. So we have a HTML web file browser and let's see how it may look like. So basically it gets some web interface for folders and the files and with some sort of imagination you can think about that like Dropbox. At least HTML version, not the application. So you see you can create the folders. You can start creating the files. You can start editing it. So pretty much looks like that version of the Dropbox. Okay, so you get the idea so that if application is a web application it's kind of easy to do, to integrate that. But what if your favorite application is not HTML based? In this case, in this example I will talk about Eclipse, the classical Eclipse. So it used the platform UI and SWT framework to draw the widgets and on Linux you can use a GTK to show the widgets and there is I guess a front end for GTK called Broadway which draw your GTK widgets as HTML. So as part of the container we run Eclipse, which we will see that later, run Eclipse and Broadway Demon. So this Demon will draw GTK widget as HTML. Let's take a look how it may look like. So now Eclipse start drawing. It's still drawing. Not everything runs smoothly. I guess that's somewhere around SWT and GTK. It's still drawing. We need I guess couple of seconds more. Yeah. So now that's a classical Eclipse and you can start coding. So if you fan of the classical Eclipse, here we go. Okay, another GTK example. So there is a scripting I guess, Bridge, which is a scripting for GTK. So if you know well GTK and you like scripting, you can write a script and build your GTK application and draw it. So this is Alexander Larsen example. So in this case we will download the container. This container runs a JavaScript which has the connects to the GTK and start combining GTK widget to some applications. Let's take a look how it looks like. Again, if you get the more powerful notice than my desktop, you can get really fast user experience here. Actually that's a good example. Your client there, your browser doesn't suppose to be very fast. It can be like a quite cheap laptop or tablet, but your infrastructure can actually run in a really powerful cloud hardware, which gives you an ability to run your software easily. So this is that GTK application. It's very simple. Just a bar with some buttons. It's run actual GTK application, which behaves a little bit better than the regular Eclipse. So this is a GIMP. Yeah, it started. So let's take a look on the script. This is the script. Can you see it? So basically what this script is doing, it's now initialize GTK, create the panel, get the whole application, add some buttons and add some actions to the buttons. So if you are really familiar with GTK, you can easily combine this widget to application you would like to run and run it in a browser or run it in a cloud. Okay, next. So what if you are not a fan of GTK? What if you are not a fan of GTK, but you are still wants to run that application you like? Okay, we can do a different move. So the idea is to install XVFB. It's a virtual frame buffer or X11 server. Install X11 VNC client to that and with help of no VNC client to X11 VNC connect from the browser to your application. Again, let's take an example of G-Edit. I really like G-Edit. That's why so many examples with G-Edit. Yes, and that's basically it. So G-Edit is running XVNC working, XVFB is working, translated real application to HTML. But I guess not a lot of you write in your application with the G-Edit. Let's try more popular application. In this case, it will be IntelliJ. Again, you don't need to install anything to your local laptop. Everything is defined in the dev file, which you can share a link to all your colleagues or students and that will be replicated. Since it's used the same container, it's removed inconsistency, but it works on my machine. It will be always the same. Okay, we have IntelliJ running. So let me show you some example that is actually running and where you can build, run and debug your application. Again, imagine that your client, your HTML browser is running some simple hardware, very cheap laptops, but you have the good infrastructure with like eight cores or 10 cores and the flattops RAM and you get the full access to all that power just from the simplest clients. Okay, we have running and we can debug it. Yeah, so now you're debugging. That's basically all the examples I have. I have some slides about the problems. As you might expect, not everything works very smoothly. So some of the problems that I met preparing these examples. So first authentication and authorization. It's more related to the HTML editors like the Eclipse Dirigible with a demo you. It's quite hard to combine the Eclipse chair, authentication authorization and the Oran. In most cases, I just turn it off. But as part of the Eclipse chair, it has a multi user mode. We have that mode that we are running a dedicated container, which is like protect everything you are running in your workspace. And it's required to have a token to be passed. So no authorized access will be used. We use that for a Thea-based editor, but that's kind of big topic. And like, it would be hard to tell you everything just right now. Next point is that if you are preparing the images to be running in OpenShift, since it's not allowed by default you run as a root, think about that. Then you will be building that images. You need some additional actions to correct writes in home folders and configuration files, so make sure you will be able to run it on OpenShift. Access to the parent frame. So that was I met, I guess again, with one of the editors. So let's take example one. So basically what is happening here is the left side bar is our major application and ED is running in an iframe. And not every tools expect that they will be running in an iframe. And since it's a different host, different domains, sometimes you can get the cross-demand request, which is not possible. So that is something you will need to deal with. So ED is running in a separate container. It has a different URL and the Eclipse Share application has another. And it shows you ED in an iframe. So expect you may have the problem like that. Screen size. So if you are playing with the GTK Broadway front end or if you are playing with the X-vencing of NC staff, screen size is not always adjusted as you might expect. You need to figure out the proper combination of all of that to run it more or less, mostly. We are close. So if you are interested, you can get the communication. You can send email to the dev list, IRC. I don't recommend IRC. Netermost. This is the place where we are most active in combination with the GitHub. And dev list. Of course, dev list. So any questions? Yes. You are showing the Jupyter notebook demo. Yes. It's quite common. I guess that's possible. So usually then you are at least, if I can project to an open shift, in that container, you can get the open shift token and OC2. So you are able to run OC2 and create all open shift resources. So I guess the same for Kubernetes. You can get the terminal to the container and run all commands you need. Do you have a dev file in those repositories? Yes. Have you considered to introduce something like .I don't check whatever directory in which there could be some demo files in the preview? Yeah. So as part of the tooling, let's take a look. So this is an example of dev file. You can see tooling with a plugin editor and you can have the open shift or Kubernetes recipe. So this recipe located behind the dev file, so near the dev file. And you can specify in that YAML all open shift resources and Kubernetes resources you need. And they will be run as part of your workspace tooling. Yes. You can just use Citrix for something where it's just remote into a thing and just use an ID. You can, if you feel that you are efficient in the Citrix, then you can do it. The idea, I guess, that you can easily debug the HTML. I guess yes. I'm not a front-end guy, so I can't answer you particularly, but what I see, the guys who are working on the Thier stacks, they are developing a Thier extension inside of the Thier or in its under chair. And they actually run in, as far as I remember, a separate instance of the Thier with the new code and they are debugging right here in the browser. Any other questions? Okay. Thank you.