 OK, thank you for attending this talk about Eclipse. So I guess that some of you are using Eclipse every day and as an IDE and probably you don't know all what you can do with Eclipse with a lot of different projects that could help you to be more efficient in your developer life. So I will in this talk speak about the Eclipse Foundation for a couple of slides to explain to you how Eclipse is managed. That can be interesting for you to know that this is a really controlled technology actually. I will have a couple of slides also on the IDE, maybe two slides or three slides that will be just to introduce the OSGI architecture. This is the basement of all the Eclipse products and even if you do not use Eclipse as a framework for your new developments OSGI could be used for any kind of Java development. That can be very interesting for you. That would be maybe the most technical part of the talk about eight or ten slides about it just to give you an overview of what you can do with OSGI. And then of course OSGI will lead us to the Eclipse RCP architecture where I will explain you in a couple of slides also what are the interests of the Eclipse 3 and 4 architectures and how you can use it in your application if you need it. And the last part of the talk is about modeling projects. I think that today a lot of people could be interested in using modeling, tooling and modeling concepts like DSL for instance, domain specific languages and for your projects even if you are a web developer you could use this tooling to create for your business your specific tooling to enhance your efficiency in your development every day. So that can be very interesting. And especially if you have projects that will last a long time often you have to change the model or the structure of what you are doing with your business model and if you change something usually you have to change it everywhere. So modeling projects could be a very good entry point for you to create efficient tooling. So the goal of this talk, I don't know you exactly. I don't know if there are some RCP developers. Are there some RCP developers here? I think no. You, maybe, okay. So you want a pen you can come back to, you can come after to take the pen. There are also maybe people who isn't involved or interested in modeling stuff, I don't know. So the goal is to give you an overview of all this technology in a couple of sites. So I know that you have worked today, me too because I prepared the slides, but I would try to make it interesting for you and dynamic. So my name is Olivier Prouveau, I'm coming from France where I have my own company, the name is HopiCoach. So I'm only focused on Eclipse technologies and I do that for more than 10 years. I provide Eclipse training, Eclipse consulting. I try to connect people around Eclipse technologies and my website is of course HopiCoach.com and I've got a Twitter account also. So let's have a look on the Eclipse foundation and the Eclipse ecosystem. So what is exactly how is it managed just behind the scene? And as you, maybe you know that there is an Eclipse foundation. The Eclipse foundation is an organization that will manage all the Eclipse projects and also the Eclipse members. So in the Eclipse foundation, you can be a member. Depending on the size of your company, you will contribute with different ways. Maybe you will give a lot of money. Maybe you will give some developers. It depends on the status you have. And the foundation also now manage groups of people that will work on very focused projects like Science Group or IoT Group. Are there some people involved in IoT technologies here? Well, everybody's working in the bank. Okay, so the groups I will show you some size about it. So the goals of the foundation is also to host the projects. So the projects are managed by the Eclipse foundation where they provide a kind of software forge or software like a GitHub. Or we could say there was a Git and there was a lot of bug, a lot of tooling like a bug ZR or Gerrit for managing the code. So this is all the infrastructure to manage the code is managed by the foundation. Of course, the foundation, one of these goals is to promote the Eclipse technologies by organizing some conferences, there are four conferences in a year and to help people and members to make business with Eclipse. For the history, the foundation has been created at the beginning by IBM people. IBM started Eclipse to create a new IDE. And then because that was too much IBM oriented, they created the foundation where a lot of different members could participate and then that's a more open organization. So this foundation is located in Canada, in Ottawa, and it's only funded by members. So just a couple of, I will show you some figures about it, just to show you how it's organized. Of course, everybody knows Eclipse as an IDE. It started in 2001. But they created the foundation for the WIS and I explained just before in 2004. And then the Eclipse foundation became a kind of meta foundation that will manage different groups. The IDE is one of these groups. But you have also several working groups here. I will show you one slide per group after. Maybe you will find something interesting for you. And the RCP architecture also became a group, a kind of group where people are involved for that. And now the Eclipse foundation is involved in the research projects to connect, I would say, industrial people and research. And they do that all over the world. Some figures about Eclipse, usually the unit is millions. So you have millions of users, millions of commits, millions of, a lot of things, millions of line of codes. I will not detail all the numbers here. Maybe the number of about money is interesting. The foundation has a budget of five million dollars per year, only contributed by the members. There are about 250 or 240 members. And the foundation is composed of 30 people working in Canada and in Europe. Maybe we could ask the question, how Eclipse was such a success? Because it started in 2001, we are in 2017, and it's still there and it's still very, very dynamic. So a lot of different tooling has disappeared for a long time. If you compare with NetBeans for instance, even if NetBeans is a very good IDE for starting Java projects, but you cannot go forward with NetBeans, just start your project and you have an IDE for Java project and that's it. IntelliG also is a very good IDE, but there is no RCP architecture just behind, you cannot use it to create your full application that will have nothing to share with development tooling. For instance, if you want to create a bank, application, you will never use IntelliG as a framework to create your bank application. But if you want to use Eclipse and the Eclipse architecture, you could create a full bank application without knowing that this is done on Eclipse because Eclipse will provide you a lot of different components. And the success can be explained by these different points because one of the points was that, of course, the foundation tried to put everybody in touch, but they also have a very sharp IP management and a license. The license that is provided by Eclipse is named the Eclipse public license and it explains that you can do what you want with the code. You can take all the code of Eclipse, even if you change any line of code, you can take it and sale it on the web if you want. If you can do that, you are very good commercial because you change nothing. But you can also add maybe 10% of code and change the license and say that this is a commercial license. So you can make your business with that. That's very important. This is EPL. EPL is Eclipse public license. Basically, this license allows you to make what you want with the code. You can take the code and make your business with it. I don't know everything about the open source licenses. I know that there are many, many, many licenses and often if you have a license, it's a viral license. I mean that if you put the code in your code, your code should have the same license, for instance, or should mention that this is this license. In Eclipse, you are sure that the code inside Eclipse has been controlled before being provided to the community. So you are sure that everything is EPL. When I contribute something to Eclipse, I'm assigned something to say this code I created on my own and I didn't copy it from another code that has another license. So that's very important for the business issue, and especially in the US. And of course, one of the secret is the governance. The governance of Eclipse and the Eclipse Foundation, I think it's really a good model of open source community. If you compare the different open source communities, you will see that, for instance, the Eclipse community is different than the Eclipse community because the goal of the IPG community is not to help you to make business with the IPG projects. It's just to give you, I would say, standard implementation of software problems. That's a different approach. So that's interesting because the governance of the Eclipse Foundation is really a model for how to make an Eclipse, an open source community. So if you want to make business with an open source project, Eclipse will give you everything to make this and everything is ready for you. So there are a lot of members, as I said, I will not zoom on this slide. So there are a lot of big companies, small companies, even me, I am alone in my company, I am a member of the Foundation. So, but you have also Airbus, Thales, IBM, and a lot of them. And there are some specific members. The name is Strategic Members. So Strategic Members are members that are involved in the steering committees and they can create new trends inside Eclipse. It's not especially big companies, of course, you have got IBM, but you have also small companies like CodeMV. CodeMV is a new company created maybe three or four years ago and they provide a new way to use Eclipse on the web. So they are very involved in the Eclipse community because maybe one of the next steps of Eclipse will be to be used on the web. So you will be able to have a link on a web page and you just click on it and it will open an Eclipse IDE and you could change your code and commit your code and deliver your code. That's really, really impressive. It's really working today and the name of the project is Eclipse Che. Eclipse Che, T-H-A-E-E, and it's a very famous project in Eclipse today. You have also, OBEO is a small company in France, there are maybe 100 people and they are only involved in modeling projects. So the business model is based on modeling, tooling, modeling projects, DSLs, graphical editors, or something like this. So depending on the size of your company, you can even become strategic members. Like? Board members? Board members? Yeah, some organizations, they are something called board members. They pay the highest fees. I don't understand what is board members or what do you mean? Small members or? Something like board of directors. So they got some voting, Ah, board members, at the board, you mean? Board, board. Yes. Yeah, yeah, okay, board members. Yes, these people are board members. Yeah. So they pay the most amount of money? Yeah, sure. And they must provide a lot of committers. For instance, when you are a strategic member, if I remember, you must provide eight committers per year, every year. You must pay eight committers, people that will develop code for Eclipse. And you can be on the board. Well, maybe it depends on companies, but this is the basic rule for that. So this is board members, yes. Exactly. I spoke about the groups. So just some information about the groups. You have several groups. One of them is a science group where you have different projects that are focused on science problems like data representation or like a specific physical computation or something like this. So that can be interesting. Of course, you can see all these groups on the Eclipse website. There are links for that. And there are some companies that are well-involved in these groups. So this is a science group. I will not detail the projects. If you are interested in, you can go on the website. There is the PolarSys group, which is more focused on embedded code. You know, for the code that will be embedded on electronics or on systems. So there are a lot of different projects on this. There is also the IoT group. The IoT group is maybe one of the most famous in Eclipse. They provide a lot, a lot of tooling based, of course, on the Eclipse architecture. And for instance, there is the KUWA project. It's an OSGI framework that can be set on a card. Even, you know, the Raspberry Pi. For instance, the Raspberry Pi is a very small computer. You can buy one for 20 euros. And you can put it, you can put KUWA on this Raspberry Pi and make it running and just getting information from your sensors. Everything is free, of course, and it's really a specific Eclipse project. And so a lot of companies are involved in this project. This is a very famous group. Usually they, each conference, they show very, I would say, funny demonstration of what we can do with that. With a lot of sensors, they can check a lot of different things. There is also the LocationTech group. The LocationTech group is focused on, you know, maps. So you can display maps of information. So that's close to the IoT because the IoT, usually, when you have sensors, you want to put them on the map. So that can be interesting to have a signage between the two projects. So one of the groups that could be created, why not, that could be a financial group that could provide some open source projects about finance, financial problems. Why not? But it doesn't exist for the moment. But that could be an idea to create something like this. Why not? So that was the part of the foundation. So the foundation is really, really dynamic and they create a lot of events to make Eclipse more popular. Now I will just speak about the IDE, which is a specific group of Eclipse. As you know, the IDE, you use it every day, probably. You have, every year, you have a new version of Eclipse in June. The last one was Neon in June 2016. The next one will be Oxygen. And in each release, we have a lot of different projects. So this is this, in this bar chart, we have about more than 80 projects that are delivered together and compliant together. So in these projects, you will find modeling projects, C++ projects or something like this. But often these projects that are for cues on the IDE concept. So the reasons of the success of Eclipse is the architecture, which is open and for a while, everybody can contribute to Eclipse and provide a new tooling that will be compliant with the existing tooling. So I will say it's component proof. When you add a component in Eclipse, it will not be merged with the, you can depend on the other components, but it will not break everything. So that's very important. It has been adopted by all software vendors. There are a lot of documentation and tooling. Of course, it's free. It's portable. You can use Eclipse on a Mac, on Linux or Windows. And if you create your application based on Eclipse, you will be also portable for free. You have a stable and regular deliveries. The Eclipse license, as I said before. And of course, all this success is due to the OSGI architecture. That's really a key point of Eclipse. The OSGI architecture is the way to make an application modular and to help you to have different version of your components that can be mixed together. That's very important. I can give you an example. If you have an Eclipse version and you are using your IDE and then you want to use a new tooling, that will use a new version of something that is already installed in your IDE. If you have a standard architecture with Java components, standard architecture, you will have problems because you will have to upgrade the components that are already installed. You will have problems for that. But with Eclipse and with the OSGI architecture, you will not have this problem because everything is independent. So you can have two different versions of the same module running in the same application. So that's the reason why you can create very easily new tooling. So I decided for this presentation to show you some slides about OSGI because everything is based on this. And probably if you understand how it works, I will not detail it deeply, but I will just explain you, give you an overview of OSGI. You will probably understand that the power you have behind Eclipse, that's very important. So OSGI means Open Service Gateway Initiative. It's what is the reason of this creation, of this tooling. Actually when you create a Java application, you have the feeling it's modular because you create a class, you create packages, you create jar files, and you say, yeah, I'm modular, I have created several jar files. That's great. But when you launch your application, you, if you have several jar files, you will have to cope with a jar hell. So jar hell means that you will have a lot of different jars that must be compliant together. If you use the Apache Common libraries, for instance, and if you use Spring, and if you use all the common jar files, you have to ensure that everything is compliant. And that can be a really nightmare. And jar files are not connected together. Of course, you can use Maven. You can use Maven, a Maven file that will pull all the dependencies, but it's only used for the build and for the delivery. It's not used at runtime. You cannot control at runtime if everything is compliant. So you will launch your application and your runtime will be broken because you changed the jar file. That could be a very, very big problem. So you have to know all the dependencies and you have to deal with the class paths by hand. So that's really, really painful. And you will get, of course, class.fund exceptions and a lot of different problems like this. You cannot mix two different jar files. If you have two different versions, you cannot mix them. That would be a problem. And this is really nightmare. So when you launch your application, you will get something like this. You have your different jar files. You have created here. And if we assume that we have mailed jar files that will manage mails and send emails, when you launch your application, everything is loaded in memory. So something that you must have in mind is that all these jar files have been loaded when the application starts. So if you have 800,000, 800, excuse me, 800 jar files, everything must be loaded in memory before running the application. So that can be very heavy. And everything must be loaded at the same moment. And everything is mixed in the memory. So the modularity has disappeared. Now, your mailed jar file is used maybe by several jar files. You must know which are them, what are the dependencies to this one. Now you want to change something and you say, okay, my mailed jar file is an old version. And some of my jar files would like to send an attached file in my email. I must have a new version of my mailed jar file. So how can you deal with that? You will have this configuration where you will have two jar files with mail. So how can you deal with that? Maybe you can say, okay, there is no API break and everything is compliant. That's okay. But maybe you don't want that these jar files use a new version of mail. Maybe you don't want that. Or if you have an API break, you will have a lot of problems because you will have to change all the packages for the new version, for instance, to be sure that everything is separated or you will have to update all the other jar files. And of course, this one has been written by a guy who has been fired or has left your company six months ago. So you will have a big problem. And it's not possible to run your application with two different versions. So the OSGI is there to give you a solution to this problem. And it will simplify the modularity and evolution on your application. So that's very, very important. And Eclipse, if you have in mind how you use Eclipse every day and sometimes you know you use install use software and you install something in Eclipse, it works. You have no problem of compatibility or modularity. Everything is working. So that's very cool. If you add jar files, that will be very difficult. So just to finish this overview of OSGI, I would like to show you some technical stuff about it. What is exactly OSGI? OSGI is a specification of what should be a modularity in Java. It's only used by Java programs. It's not compliant with C++ or other languages. So it will manage bundles, the bundle concepts. That was a representation of a bundle. A bundle is something that will gather some information about your program. And in the module part, you will be able to define what is the name of your module and what is the version. So you can have different bundles with different versions that will be managed together. So there was a life cycle. I will just give you some information about it. This is a specification. So it's only a specification and then you have implementations in Eclipse. That was in implementation of OSGI. The name is Echinox. Maybe you have seen that in some install of Eclipse. So this is managed on this website, OSGI.org. And there was an alliance with different companies that are involved in this modularity. And this project has been started in the last century, in 1999. So that's a very old project. So the bundle in the specifications, they define what is inside the manifest file. This is the description of your bundle. So when you launch an OSGI application, only these files are read. You don't have to read all the jar files and all the contents. Only this description is read. And you can, so I will not detail it. There are some editors, of course, to do that. And when this bundle is read, at one time, OSGI will allocate a specific class loader to this bundle. So if you have two different versions, you will have a class loader. I don't know if you know what is a class loader. The class loader is a mechanism in Java to create classes when you have a name, the name of the class. So you have the package name and the class name. So if you have a class loader for each bundle, you guarantee to have, I would say, you are bundle proof. I mean, your bundles will not be mixed together. They can depend on each other. But a class in a bundle will stay in the class loader of the bundle. And you can define a bundle for a specific platform. That can be also interesting. If you are running on Windows, only Windows bundles will be started. If you have a jar file, you don't know if the jar file is only compliant with Windows or Linux. You must put something inside by hand. So of course, you can also say this bundle depends on this one and you can have dependencies. In this case, you don't have to care about the class pass, because when you give the first bundle to start, OSGI will analyze every dependencies and it will say, OK, this bundle must start, because this one needs it, and so on. So you will be sure that everything will start smoothly and not by winning all the jar files in one step. So maybe you have heard something about the Java 9 Jigsaw project. So Jigsaw project is also a way to make your Java modular. It has been delayed. That was a Jigsaw project should be provided in the Java 8 version, but it has been delayed. So now there will be a component like an OSGI like in Java 9. So this is really an important problem in Java. So OSGI is a solution for more than 15 years and now we'll have something official in Java 9. So I don't know how it will cope with OSGI, but anyway, this is our solution. Another very interesting architecture artifact for bundles, you can create fragments that will be included in your host bundle at runtime. So you can create different fragments and decide to say, OK, I will use this fragment, this fragment, and this fragment in this application. Or I will create a specific fragment only for my test, because the test, the fragment will have all the view and will have access to all the data in your bundle. So this is a very common artifact to make your application modular. So just to finish about OSGI, dynamic behavior also is managed by an engine. So when you start your application, and especially when you start Eclipse, you start an OSGI application. So you just start a main that will read all the manifest files, find the dependencies, and allocate a class loader to each of the bundles smoothly. If you open the PHP editor only three days after having started the Eclipse, the PHP bundle will be started three days after, just when you use it. So that's very interesting. So in this way, you can have different versions of bundles that will be one on the engine. And you can, in this case, so in this example, I have only four bundles. When you launch Eclipse, you have maybe eight or 900 bundles that are running together. So of course, if you have to run everything at the same time, that would be complicated. And the last point about OSGI now we stopped this technical introduction is about services. You can create services. So you can say with a specific annotation, add component, you can say this bundle provide to other bundles a service. For instance, you can say I've got a mail service or a message service to send messages. Or you can say I have a device service to operate some devices or whatever. So that's a normalization of what is a service in OSGI. So if you create an architecture with OSGI, you will create different bundles. And each bundle will have a specific world. So you are, I would say, you are lead to create a modular application like this. You will not create only one jar file that will manage all the message stuff. You will have a message core bundle that will manage the model of what is a message, what are the classes to send messages. You will have the UI. You will have maybe implementation of specific services for SMS or mail messages. So you have everything, all the artifacts, to make something modular. If you have only Java projects with jar files, maybe you will have only one jar file for messages. That would not be very modular. And you can extract the testing fragments. So you can have dependencies to JUnit, for instance, here, and not to have your code and the test code in your bundles. So that can be very interesting for modularity. So of course, as I said before, the Eclipse architecture is based on OSGI. So what is this architecture? Actually, so this is a very old slide about Eclipse 3 architecture. This is not the last one. But it has been created with this. Actually, the Eclipse platform architecture is a set of different bundles. Or the name in Eclipse is plugins. That will provide some specific stuff, for instance, the help plugins to manage help, the Worldbench UI to manage perspective views, property pages, preference pages, and so on. So all of this is at least a set of Android bundles that will provide you a lot of functionalities that you can use in your application. Whatever the application, you will always need preferences, maybe perspectives, views, editors. Even if you have a bank application, you will have to deal with these concepts. And in this architecture, the plugin has also two concepts in addition to the bundle. We have extension points and extension. I will not detail that. But this is the difference between the bundle and the plugin. So the plugin has something more configurable than the bundle. So extension point is just a concept of something. And the extension is the model of this one. Eclipse 4 architecture has been created four years ago in 2012. And they decided to create a new infrastructure, a new framework for Eclipse, because they were sticked on a very basic problem because the architecture was maybe not, even if it used OSGI, something was asked to be written because it was old code. And basically, E4 will now use modeling technology projects, and especially modeling an application model. So I didn't show you the slide about modeling stuff. But when you want Eclipse, every day, you use models inside Eclipse because all your application is defined in a model. So your IDE is defined in a model. And in the Eclipse architecture, in the E4 architecture, the model is UI agnostic. It means that you can create a model, whatever the library use. So you are not sticked on SWT. You can also use Java FX, for instance. And there was injection and CSS, injection stuff. So this is the Eclipse 4 architecture where you have the ECNOX OSGI engine and the EMF stuff. EMF means Eclipse Modeling Framework. This is the basic component to make models. So with this, they can create a model of your application. And you can display this application with Wandaverse. So this is a very powerful application. But the problem is that there are a lot, a lot of tooling that has been created for 10 years. So there is a Worldbench compatibility layer that will transform and convert Eclipse 3 concepts into the model or into some Eclipse 4 concepts. So that comes for free. If you have an Eclipse 3 legacy application, for instance, the IDE is written maybe with 80% of code written with Eclipse 3 concepts. It will be managed by the compatibility layer, and it will run with a new runtime. So the UI model is just a way to describe the different areas you have on your application. So this is an example with different views. So I will not detail a lot, but the model will give you a way to describe how the views are organized, for instance, and to say, OK, in this view, I've got a contextual menu, for instance. So that can be defined in the model. There is also something important about this model. This model is live. It means that when you start Eclipse and you kit Eclipse, when you restart it, you get exactly the same UI. It's because your model has been saved, and then when you restart your application, the model is loaded, and then it's run out. So this is a very, I would say, elegant way to store everything that is present in the UI stored in the model. And saving a model with Eclipse Modeling Framework, it's always the same code. With three or four lines of code, you can save any kind of model. So the code of Eclipse 4 is the API when you use Eclipse 4 is easy, because whatever the concepts you use, it's always the same way to use it. It's not like before. So OK, so the model is there was an editor for that, and you can describe everything. So I will not detail injection, but I think that people know about Spring, for instance, or Google Juice. This is a way to inject. Do you know what is injection globally? People have done that before, I think. If you are a Java developer, you should know that. So this is a way to get value from your framework. And something very interesting with Eclipse 4 is that when you inject something in a method or in a field, if this object has changed, after it will be re-injected automatically, you don't have to care with listeners. So the code is very small and very concise. That's very cool. So for instance, I'll give you a very common example in Eclipse 4 if you need to manage the selection in the UI. You select something in a tree. If you inject the current selection in your code, when the selection change, you will be notified automatically because you injected the value, the current selection, in your method. Your method will be recalled automatically. So that's very cool. So that's it for the part of architecture. So if it was a little bit technical, but I guess that there are some developers in the audience. And I cannot only show slides about marketing or communication. Something that maybe you don't know. If you write an RCP application, you can launch it on the web for free. You don't have to rewrite a new application with a web framework. It's very easy to do. If you have a RCP application, you will have your application that will depend on different bundles or plugins from Eclipse RCP. It's possible to change the library, the SWT library. This is the graphical library. And to put another library that will create a web server for free. Don't have to change the code for that. And instead of creating a display in this version, you will have a web server that will wait for HTTP requests that will display your application on the web for free. This is really, really powerful. The name is WAP. It's Remote Application Platform. So if you need to have an application that is used on a desktop and is used on the web, that can be a good solution. It avoids you to have two different developer teams, one for the web and one for the standard on application. That can be interesting. And if you have several, I would say, views to display remotely, that's really a good way. I've got some customers that use that every day. And for the customers, for the customers of my customers, they use that to manage cloud applications, for instance. And everything is written with WAP. That's very cool. So maybe these parts, so far we have seen some technical stuff. But I think it was interesting for you to know how it has been designed. So Eclipse is really, really well designed and very modular. So what I would like to show you now, and that would be the end of the talk, is about modeling projects. Modeling projects is probably one of the most common, I would say, projects that can be used by everyone. Whatever your business, you could create models. If you are creating satellites, if you are dealing with planes, or even on the bank, or even in communication, whatever you do, you need models. And you do models without knowing it, maybe. So what I would like to show you in these slides, it's how you can use that in two ways. You can have MDA. Maybe you know that it's model-driven application. It means that you use the model inside your one time in your application. When you use Eclipse, this is an MDA application because there was an application model that is used at runtime. But you can also use models in the way of MDD, it's model-driven development. It's a way to create tooling based on models. So the model will not appear in your one time, it's just used before to create your code. So of course, all the modeling projects are based on the RCP architecture. So it's really modular and you can do a lot of things with that. So don't be afraid of this slide, this one side of my training. It's to give the name of the different projects. I will not explain everything. But we have talked about RSI, RCP. And as you can see, there is a lot of different modeling projects that are based on this. And I will just explain you four parts of this. And you will probably find something interesting for you inside. So this is the common part. This is EMF, Eclipse Modeling Framework. So of course, you need to know this part if you want to make something with models. And after, if you need, you can select to create textual editors based on models, graphical editors. So you don't need to know all this stuff. Only this one will be used. And you can also generate code from the model. So you can define something. You can describe something and generate the code. When I say generate code, it's not only Java code. You can generate whatever you want. You can generate Node.js code. I don't know PHP code, C++ code, something that is textual. So that's very fun and very easy to do if you have a model. So what is EMF? EMF means Eclipse Modeling Framework. This is a component that will give you a new modeling language. The name is E-Core. So maybe you know UML. UML is a very huge modeling language with a lot of different diagrams that's complicated to manage. Sometimes the semantic is good for describing very complex system. But usually, you don't need to have to describe everything with UML. That's too, I would say, there is too many things inside. If you use E-Core, E-Core is basically the description of your classes. So the classes and how they are managed together, how they are bound together. So you have classes, attributes, references, and operations. So that's very easy. If you have already done the code in Java or in C++, in C++, you will know how to make an E-Core model. So that's very easy to do. And for an E-Core model, you will be able to generate the code in Java by default with EMF. So this is a very powerful framework. It's used maybe for more of, I would say, 15 years. It has been created in 2004, I think. And this is the earth of all different frameworks. This chart is very old. But it's still real. Because with this definition of EMF and the E-Core model, you can create a lot of different tooling around this. You can, for instance, transform the model into another model, UML to E-Core, E-Core to UML. You can create a text, a graphical framework, or something like this. So even if it's an old chart, it's still updated. So only two slides about this to understand how you can use models in your application. I will take an example of an airport or air traffic application. You need to make an air traffic application where you want to compute a route for a flight for a plane. And you want to be sure that if there was a problem in the plane, you can go on another airport, for instance. So to do that with Eclipse and with EMF, you will, of course, use the E-Core language. And with the E-Core editor, you will be able to create the meterminal of an airport. It means that will be your DSL, your domain-specific language. With the airport, you will say in the airport, well, an airport has maybe one way. It's oriented like this. The length of the one way is one or two kilometers. It's compliant with the A380. I don't know, whatever. You can say what you want about your metamodel, dedicated to compute air traffic routes. And then with EMF, you will have for free an airport editor. You will have a full compliant Eclipse editor that will allow you to create new airports. So we'll create the Singapore airport, the Bangkok airport, or whatever. And it's up to you to decide to put these models in your application or to create specific generators to generate some code that will be included in your application. If you need to manage a new feature in your application, for instance, you need to know if you can manage, for instance, very big planes. So you must add some information on your model. You just change your airport metamodel and you generate the code. And everything will be managed by the framework, by EMF. Of course, you will have to change in your code to take into account the new feature. But everything will be generated. You don't have to generate the code for the database or if you have specific generators, for instance, or for the code for the UI, maybe you can generate everything. So that's very cool. And the last slide about modeling, the modeling project is about the DSL. So depending on the domain, the domain where you define, if you have an e-core model, if you are in the e-core model, in the e-core domain, this is a model, but this is a metamodel in your DSL. So just to, often we speak about model and metamodel, it's not really clear. So this slide is, explain this. It depends on the model, on the domain, actually. So if you are in the modeling domain, you have a model, an e-core model, that would be the metamodel of your business. And of course, you can create your airport or your agency here. So that's maybe a little bit detailed, but anyway. So how can you use that? You have, for free, a free editor that will allow you to edit your models. So it comes for free in Eclipse. You can edit your model with e-core objects here and change the values in the properties. You can edit your model graphically. This is a serious editor. I will speak about it just after. You have a palette here on the right, and you can drag and drop elements of your model. So this is an e-core model in this case. But you will be able also to create a graphical model for your airport. That's possible. You can have here a palette with all your airport objects. That's an advantage of models and metamodals, because all the tooling is not dedicated only for e-core domain. The tooling is generic. So you can use whatever you want. You can create a bank model or communication model and have your graphical editor for that, if it's interesting for your domain. So when you have done your model and your metamodel, you can generate code. So this part is there are two main projects for that. So if you are always writing the same code for all the objects you have in your application, you should have a look on this. Because if you have maybe 20 different classes, and for each class, you need to create an interface, an implementation, the database connector, and I don't know the elastic search code and something else, you can generate this from a model. And you change only once, and you generate and everything will be compliant. So the big picture of the model to text transformation is just using a model and a metamodel, you can create modules or classes that will generate the files. So for instance, if you have a satellite that is composed of different systems, if you have 20 systems in your satellite, you will maybe generate 20 skeleton files regarding the code you need to create for a satellite. Of course, this is not a final application. It's only skeleton that will be used in your final application. But you can really stop to waste your time to write always the same boilerplate code that is really not interesting. Something that is interesting in software engineering is to model and to design the things and to understand how the world is and how you can put it in a software. It's not to write always the same stuff about GPA connectors or something like this. This is really not interesting. You should generate that. So for doing that, there are two projects. I will only speak about Extend. Extend is a new language that will use the model. And maybe it's the only slide with code. And with Extend, you have a specific notation def, and you can open three codes. And in the codes, you have the text that will be generated for this object, for instance, for the E-class. So maybe I can zoom on it. So in the background gray, it will be generated in the file. And then this code will generate one text for this E-class object, Instance. So if you have 20 E-class instances, you will generate 20 files. And you can write another template like this to write the interface code, or to write the PHP code, or to write your Node.js code. You change the E-class once. It will be generated in all the systems for all the languages. So I will not detail that. But just with a reminder of this name, Extend, or Axelio, Axelio is also a good product to do that. I don't have time to explain all the projects, but how can you use that? You can create your own meta model for your business. You are managing bank accounts with maybe money transfers between different banks. That can be designed with a model. And if you do that, you will have to produce code. So you can then create a model of this. You can create all the different instances of the banks that will be in your application, and maybe the different protocols of communication, and maybe the different rules that you have in your application. And so I say that for a bank, because I know that there are a lot of banks here, but you can do that for a satellite or any kind of system. And then you create a model, and then you generate your code, and you stop to write boilerplate code. You are developers, you are engineers. It's really expensive to make your writing code that is always the same. So it will be better to make you writing a generator. That's very fun, because you just write one template, and you generate 20 files. That's very cool. Very exciting. And you can, the boilerplate code will be generated for you. You change something in the model, you generate the code again. So the rule for that, you should ask this question. If I describe something more than once in several places, maybe I should describe only once in a model, and then propagate the modification with generators. So that can be a good question to do that. So to finish this presentation, maybe you need to have editors for your models. You are, for instance, using your application with the bank, and you have different banks and different communications. You want to have a graphical description for that, or you want to have a textual description for that, with, of course, a lot of helps that will help people to say, oh no, this bank cannot communicate with this one because there was a rule for that, and you must take care of that. So you will have two products for that, serious and text. So for graphical model editors, you can use serious, you can include this graphical editor in your application. You will be in an MBA approach, or you can put it in your tooling. Anyway, this is this part. So these are sub-projects, you don't care about it. This one is the most important, and with serious, without code generation, you will get in a few minutes, or maybe a few hours, yeah, few hours, you will get a way to say, in a graphical editor, usually you have nodes and links between the nodes. So you will be able to, with serious, to say this object in my model will be wandered or displayed with a node, or this object will be displayed with a link. So this is the goal of this file, this is an old design file that will, of course, this is bound to the metamodel, so you cannot say you must follow the metamodel, and in this example, for instance, they say that this is a family metamodel with a main woman, and with relationships between men and women, like father, mother, or something like this, or sister, and you can say that a man is wandered by a square, and a woman is wandered by a losange, and with different colors, and you can explain, you just describe what is your graphical editor. So actually, you are creating another model here. This is the model of your graphical editor, because there was a DSL behind the scene that is expecting some information to have a graphical editor like this. So you can say what is in the palette, there was nothing in this palette, but anyway, you can describe a lot of things. So that's very, this is, I think, a very good example of what you can do with DSLs. And whatever their business model, you can have exactly the same editor with your business elements. So this is serious, and the last slides are about x-text. So also, this is maybe a technology you don't know about it, and you will never think that you can create so easily a text editor. Do you know the Java editor in Eclipse? You have syntax alighting, you have content assist, you have quick fixes, you have awards, warnings, everything is included in the Java editor. But it has been written, everything has been written by hand in the GDT. The GDT is a project that managed this Java editor. It is not based on models. But now, if you have a mental model, you can, with x-text, you can create exactly the same editor than the Java editor, but with your keywords and with your DSL. It's done in this case in a few minutes. So this is this part of the description, and we'll finish on this. x-text is a language IDE framework. It will help you to connect token, text token, to something in your model. So when you write something, x-text will understand, oh yes, this keyword means that you are creating a bank account, for instance. Or you are creating a satellite. It will make the link between the two concepts. It's like for serious, serious you have a model object, the object in your model, and you have the representation. It's quite the same. So it will generate an editor for you, for free. And it's really easy to do on the x-text website. You can follow, you have a five minutes tutorial. Just have a look on this. You will see that it will open your eyes on what you can do, of some tooling that you will never think that you can do that. That's very, very powerful. And that was another biggest tutorial. If you are using IntelliJ, it's possible also to have a specific editor generated for IntelliJ. x-text is compliant with IntelliJ. For free, you will get syntax highlighting, content assist, quick fixes, error and warnings included in Eclipse. You will have also indexes. You will have templates. If you are, for instance, a new customer, you want to create a new customer in a text editor, you can have a template of customer with different templates for customers. For instance, a French customer, an English customer and US customers. With the text, that is expected for this kind of customer. Just doing control space and you get it. It's really, really easy to do. You have also outline. You know, this is the small view with the, to navigate in your editors. You can have course languages, course DSLs. For instance, you have a customer description in a text file and you have, I don't know, a bank account which is connected to the customer. It's possible to navigate between the files for free. Don't have to write code for doing that. It's also possible, I think, I don't remember, but I think it's possible also to have a web editor. So you can edit on the web with x-text. So, yes, it's Java like. So there was a description of the grammar. The grammar will describe the token you are expecting in the text and what it will create in your model. So for instance, in this one, there is a grammar rule customer. Sorry, I will zoom on it. A grammar rule customer that is expecting the customer keyword, then a brace and then the keyword first name. And if you enter a string after the first name keyword, it will feel the first name field in the model. So maybe it's a little tricky for you because you don't have seen grammar for the moment, but managing grammar, it takes one hour to understand what you can do with it. Just have a look on the tutorial. You will see that it's not very difficult and you can have a graphical representation. And when you generate your editor, you will get this. This is quite the same than the Java editor. You have keywords, entity, for instance, in this one property, they are highlighted. You have the auto-completion here, which provides a dynamic auto-completion depending on the name of the objects available in the file. You can have the quick outline here. You can have quick fixes. If you make a neural, you will get a quick fix and a neural defined and a quick fix that will be proposed. So that's very, very, very cool to have this. Usually, you think that it's not possible to make such an editor. It will take maybe weeks to do that with very low-level API. But with XText, to get this, it takes one hour. So that's very quick. And just this is the last slide. You can customize, of course, your editor. There is a very, very powerful generation framework that will generate code. And you can change this code with specific annotations. It's very cool. You just say, I want to check if a customer is valid or is OK. You just create a method with add check annotation, and you put the customer as a parameter. That's it. And then you can write the code for controlling your object. So it means that if you have the customer, you receive the customer. You can control if the customer name is compliant, with the naming rules, or if the address is OK. And you just have a check method that will be called automatically by XText. And if you remember, I said that the grammar is bound to the model. So when you start the customer keyword and you enter the name after, the check will be called and will check that the name is compliant with the rule. So you will get the error in your editor if it's not good. So it's really powerful. And if you make a model that is edited with a text, you can also bind your generator. We spoke about generator before. And the code generator can be bound to the save command. So when you save your file, you generate the code. It can be interesting in some cases for a customer, maybe not. Or maybe for the customer, you can generate the HTML page for your customer. Why not? So that's it for this talk. I hope it was not too boring for you. I tried to make it dynamic. I know that you had a big day today with your work. So maybe you could have a look after this talk or you can ask me a question. I put some flyers on my business card if you need to ask questions about this, how you could use that in your everyday work. Maybe you can build your own tooling to help you to generate your boilerplate code. You know that boilerplate code is usually containing a lot of errors because it's always the same code. And you just copy some code from another class and just say something. And maybe you will make some errors when you do that. You can also maybe try to think about OSGI. If you have Java code and you want to make it modular, if you do not use OSGI today, or if it's a new application, you can also have a look on Java 9. Of course, but that can be interesting. And you can have a look maybe on the groups, or you can have a look on how you could be involved in Eclipse. Maybe you have some things interesting to do. I know that the open source business model is quite strange for people because they say, how can you make money with free code? But if you analyze this model, it's really, really powerful because, of course, you will give free code, but you will also have commercial products based on your free code. That's the idea. And if you put free code on the web, if people is using it, of course, if nobody uses it, it's not interesting. But if people is using it, you will get feedback and you will get bugs fixed in your code. And of course, you need to have a critical mass of code to do that. But that can be a good way to make your product better and better every day. So you can have a look on Eclipse' website. You can have a look on the groups. You can open bugs on Eclipse. If you are using Eclipse every day and you find something that is wrong or something that you don't understand, you can open a bug on bug.cr. It's bug.eclipse.org. If you are interesting in contributing to Eclipse, it's not very, it's really interesting because the workflow to produce code is really, really powerful so you can become a committer or become just a contributor. You can attend Eclipse conferences. There is no Asia conference. No, is India in Asia? Yes, I think so. So there is now a conference in Bangalore. There will be one in July or yes, I think in July this year. And you can, or you can create your tooling or whatever. So I hope that the goals have been reached for that. So if you want to learn that, you have of course the website, the Vogela website. Maybe you have seen already this, if you saw something on Eclipse, you always go to the Vogela website. So this is the last Vogela website. This is a German guy. You can buy an Eclipse book if you want or you can contact me or you can ask me for the slides if you need to remind of the names of the products. Just send me an email. You have my business card here. I can send you the PDF file or we can put it on the meter, but I will do that tonight. Okay, so thank you. I have checked that not a lot of people have slept during this talk, only one. I will not say no to. So I don't know if you have any questions, maybe a public question or a private question after. It's up to you. I don't know. Just a quick question. Yeah? Okay. I'm sorry, maybe I didn't mean to say it, but there are a plan for a few weeks to move to Jigsaw while Shabana... Oh, I don't know because waiting that Jigsaw is finished, first of all. But probably, yes, I think in the next version, they will change the manifest format and they will say that the manifest now is a module because in Jigsaw it is a module. So there are specific syntax, which is Java compliant. So in this case, that would be natural to migrate to Jigsaw, but not today. I don't know if there are plans, but... Do you know if OSGI is meant to exist once Jigsaw will be out? I don't know. I think there are some features in Jigsaw that exist in OSGI and that do not exist in Jigsaw. For instance, I don't remember that in Jigsaw you can filter class paths, you can export packages of bundles in OSGI. Any Jigsaw, I haven't seen that. So that's maybe more... It's more accurate in OSGI for the moment, but I don't know. I think it will be done in the next, I would say in the next two years if they do something. But it will be transparent for users, like Eclipse 3 and Eclipse 4 version. It has been transparent. You have not seen that you have a model oriented and an MDA IDE now. You didn't see that. It's inside the software. Maybe I have a question? So I just want to understand that you've been mentioning about this business model of how Eclipse makes money. Yeah. I know it's a good source. But supposedly a person becomes an Eclipse converter. So how will he proceed? Supposedly he wants to become a full-time sort of Eclipse totally focused on Eclipse. So is there a way that he will be able to get some compensation on that also? Yeah. That was in the Eclipse Foundation. Now there is a contribution. The name is Friend of Eclipse. So there are a lot of people that give money to the Eclipse Foundation. This is also a source of revenue for Eclipse Foundation. And this money is dedicated to developers, so for committers. So it's not the committers that decide to say, OK, I will fix this bug and I will get money. It's not the workflow. The workflow is that the Eclipse Foundation will identify some major problem in Eclipse or something that they want to fix. And they open a proposal and committers can say, OK, I will take it and they will get money for that. And there are ways funds like with the Eclipse friends. So if you go on the eclipse.org, there was a friend of Eclipse. And there are a lot of people that are giving money for eclipse. You can give $5 or $10 or some people give a lot, a lot of money, $1,000, for instance. So that's a way also to make money with eclipse if you are a committer. So I'm a committer. I do not use this system because I try to fix more bugs that are in the scope of my business. So for my training, when I see something that is painful in the training, I will fix the bug. And I will make the tooling better, for instance, for Eclipse 4, for instance. I'm a committer on Eclipse 4 and platform UI. So for instance, I provide new bugs on how to use Eclipse easily to create new plugins, for instance, that are with new templates, for instance, that follow exactly the rules we are expecting. Like for example, as you would see, the architecture of E3 versus E4 is a totally different architecture than we are. Like a compatibility layer of a workbench, two workbenches, supporting each other, supporting the legacy also. So in this case, coming up with a new architecture and things like that, there need to be a core thing. Because if you have 1,400 core parameters as a sort of figure, it is very difficult. So how does this, the things work? Proposing a new architecture is totally different. So what you mean is, how can we deal with migration? That's what you mean. So there are several ways to migrate your application. The first step to migrate an application is just to change the target platform. It means that, rather than having your code running on Eclipse 3, you just change, you put Eclipse 4, you don't change your code and you want it. It's not a... This thing I have done actually. Yeah, okay. What I was trying to say is, what I'm trying to say is there a core team also of Eclipse which does this, some four or five people, one they come up with the proposal and they're okay. I want to give a new architecture, E4, and they will make it and get it there, that's it. Because coming up with a new architecture, how these guys, Eclipse comes up with a new architecture and then you have 1,400 committers committing to the code every day. Yeah. So how's the process of working works? How's the process of working on Eclipse? You mean, your question is also is the new code committed in Eclipse for a way? Is what you mean? Or I don't exactly understand your question, excuse me. For example, there will be an architecture for Eclipse, architect for an Eclipse, right? Eclipse, sorry. So coming up with a new architecture for the newer version of Eclipse, right? How has this process been done? Or what is the process followed to come up with a new architecture for Eclipse? You may be aware about the history of how E4 came into the picture, right? You mean how did they change the architecture? Yeah, okay. So in Eclipse, in the foundation, in the Eclipse Foundation, there are architecture conceals and actually architectural meeting and there are some committers that are involved in this. So it has been done four years ago. So it has been done a long time ago. Something, an interesting point about this, maybe, is that when they created the Eclipse 3 architecture, it was really an IBM concept or IBM team that was involved in this one. For Eclipse 4, it has been more, not individual, but small companies that wanted to make it better because IBM, they spend a lot of money on the Eclipse 3 architecture and they want to have a return on invest on this architecture because they build commercial products on this architecture. So on the Eclipse 3 architecture. On the Eclipse 4, they have been involved for the one time. So the one time, because the IDE is running on the Eclipse 4 one time. So they have been involved with this, so there have been a lot of meetings for that, but it has been done four years ago. And, but they didn't write a lot of documentation. So they didn't write a lot of tooling. So the tooling is more done by individual people like Lars Vogelmi or guys from Italy or from Austria or from maybe Canada. But it's not a main goal of the foundation today to make tooling on Eclipse 4. So if you have a poor tooling on Eclipse 4, it's our fault of me, for instance, as a committer because I don't spend enough time for that on also of other committers. But now the foundation, yes? Committers for Eclipse, people for a page like IBM or... Yes, but it's not in the scope of, they have enough stuff in Eclipse to make their business. So they don't need to have more tooling. If you want to have more tooling, you can do it. I propose to have, I propose to change some stuff in Eclipse 4 some time ago as they said, okay, you can do it. Yeah, but I don't have time. I do not have time, so. So this is the open source also, open source community. This is a specific, it's not like a project workflow that you can have in your company. When you are in your company, you create bugs and you say these bugs are very important, you must make them. So in Eclipse, of course, there are bugs. There is also kind of, there is a very precise world map with milestones between two dunes, between neon and oxygen. There was one year and there would be nine milestones with some stuff that would be fixed. But it's not, it's open source. So it depends on who is there at the moment, I would say. That's my feedback. So if you decide, for instance, I went to Hamburg in Germany at the end of December with Lars Vogel and he organized the Nakaton to fix bugs in Eclipse. So we decided what we wanted to fix. So it was up to us to select the bugs. So there was not exactly a very precise workflow. That can make people not very confident with this one map, but it works because when there was a big bug, it's fixed anyway because the foundation will react. But if it's only minor bugs, say let the community take it. You will see that there are bugs. I think there are more than 500,000 bugs in the bugs here, but maybe the bug number, I would say something maybe false, but maybe the bug 150,000 is not fixed yet. Maybe, because nobody cares about it. So this is an open source. So it's also an advantage because if you find a bug, you can report the bug and you can say this is very important that you can make people involved in this bug and contribute and add comment. So that's very interesting. It's different than a commercial product. Commercial product for me is not really safe because if you find a bug, if you are a customer, you find a bug, you will maybe have to pay a lot to get the fix or maybe you will be never fixed because it's not in the one map. So in open source community, that more open is open. Yes, open source. So maybe I have other questions. No, it's okay. So you have three doings. So thank you for attending. If you are interested in this technology, I've put some flyers in my business cards and some pen if you want one. And of course I will stay wide for your question if you have any question about this. Thank you. How long was it? One hour?