Thanks to all attendees and speakers for the good time we had. The processing of the session recordings have started. You can find them on vimeo. Also most of the slides are available for download now. We will add more videos and sildes over time.
XtextCON is the place for new users to learn Xtext quickly and for existing users to understand advanced use cases. Get in touch with Xtext users and the developers behind it. Discuss bugzillas and feature requests and get your individual problems solved.
The conference takes place in Kiel, located at the baltic sea in northern Germany.
XtextCON is a two-day event with two tracks, preceded by an optional full workshop day for beginners and those who need an update on May 26. We run a special clinic track in parallel to the main conference, where attendees get help and advice on individual Xtext-related problems.
After all an Xtext editor is just a StyledText widget. In this session you learn how a fully working Xtext editor can be embedded as a text widget in any SWT form.
The grammar language sits at the heart of the Xtext framework. While attendees are expected to have a basic understanding of the grammar language, this talk covers the more unknown features and semantics. If you are an experienced Xtext user who thinks he knows almost everything about the grammar language, this session is for you. You will learn about details of the Ecore model inference, syntactic predicates, grammar inheritance, value converters, and some best practices.
Scoping and Linking is often considered the most complicated part of a language infrastructure. Xtext provides you with the needed concepts to get the implementation right and with good performance. In this session you will learn how scoping is done in Xtext languages, which default implementations there are to choose from and how to implement custom scoping logic. You will also learn what the index is, how it works and how you can add even non-Xtext elements to it.
If your language links against Java and/or is executed on a JVM, the Xbase grammar is for you. Xbase provides you with a powerful Java-like expression syntax, Java type references and annotations, which you can use as you wish in your DSL grammar. Not only the syntax but also linking, typing, and validation as well as an interpreter and a code generator are available. In this session you will learn how to use Xbase and benefit from these powerful constructs in your DSL.
Language implementations in Xtext are wired up using the dependency injection (DI) container Google Guice. This architectural choice allows for using sensible default implementations for common cases without forcing anybody to stick to them. In this session you will learn how DI is used in Xtext and how it lets you easily customize every single aspect of your language infrastructure.
This session covers some of the typical hot spots and common performance pitfalls in an Xtext language and its IDE support. We will discuss what possibilities exist to analyze and fix performance issues and learn where CPU cycles are usually burned and which solutions are practical.
Xtext languages are parsed into an EMF tree. This session will walk you through the concepts of EMF and how EMF allows for using Xtext languages with other EMF frameworks. It also explains the new textual syntax Xcore and how that is to be used with Xtext.
A diagram is a great way to present parts of a model to human users. Using an Xtext editor and a read-only graphical view combines the efficiency of textual editing with the suggestiveness of graphical diagrams. Because a view is much easier to implement than an editor, you will be able to focus on usability and visual representation. In this session we will compare several approaches for graphical views on Xtext models using GEF, Zest, JavaFX and Graphviz.
Editing EMF models is fun and easy with Xtext. But what if the models grow big over time? Big models are best managed with CDO. CDO is a model repository for EMF which replaces the traditional file-based storage with a distributed, collaborative, and scalable database-backed engine. Unfortunately, Xtext and CDO cannot work together out of the box. This session discusses the challenges and possibilities of combining both technologies.
Handly is a recently created Technology project at Eclipse. Inspired by JDT Java Model, it aims to provide a common foundation for language-oriented handle-based models. A main feature of Handly is its integration with Xtext. In this talk I will describe what Handly is about in general and how it can be used to implement handle-based models for Xtext languages (domain-specific or not) in particular. It might also be a great opportunity to discuss the future of Handly with the Xtext community.
Content assist is one of the most important tools to assist your users. Although the default implementation provided by Xtext already helps a lot, you might want to enhance and customize the list of proposals. This session explains how content assist works and how it can be tailored to your needs.
Xtext grammars are bi-directional, that is Xtext not only parses text into models but can also serialize EMF models back to text. Although the serializer can be used for more complicated quickfixes and refactorings its main usage is when an Xtext language is integrated with other EMF based frameworks, such as graphical editors. In this session you will learn how the serializer works and how it can be customized.
In this session we will show, explain and share a prototype that combines Xtext with an Orion-based web editor. You'll learn how it was done and what limitations exist. This session will also leave some room for discussing what we could do to further improve the support for web editors in future.
Xtext comes with Junit4 support out of the box, which is great for unit testing. Xpect on the other hand allows to define test expectations right within your DSL inside comments. As a result everyone who understands your DSL can write and read the tests. This is especially beneficial when working with more domain-related people, such as a Quality Assurance (QA) department.
Although Xtext languages can be used outside of Eclipse, the IDE support is for Eclipse only. In this session we want to discuss whether Xtext needs to target other platforms, which platforms that would be and why. Also we want to discuss the available options.
Type checking and type inference are extremely helpful tools to guide your users properly. In this session we will cover how type computation for a few example languages can be implemented and will discuss the limits of this approach. We will also briefly present Xsemantics, a DSL for writing type systems, reduction rules and in general relation rules for languages implemented in Xtext.
In Xtext a text file is parsed into an EMF Resource. In this session you will learn about the AST, the underlying node model and how that connects to your grammar. We will also cover the different lifecycles of an XtextResource, how URIs and URI conversion works as well as what adapters are and how they are used in Xtext. This is an advanced session, where basic EMF know-how is required.
Sometimes a picture says more than a thousand words. In this talk you learn how to implement a graphical editor for an Xtext language. We go through the different options, such as GMF, Graphiti, Sirius or hand written using JavaFX. The attendees will get an overview of the advantages and disadvantages of each framework, the consequences for your textual language, and the main challenges when integrating with Xtext.
All customization points and aspects of Xtext can be implemented in Java as well as in Xtend. In this session you'll learn why Xtend is often the better fit and see some best practices and idioms when implementing code generators, transformers, validators and more using Xtend.
Sandvik Coromant produces cutting tools for the manufacturing industry. By combining Xtext with a CAD/CAM system we have been able to create a mass-customization environment for mechanical engineers. This gives us the possibility to automatically offer products tailor-made to customer demands. In this session we will show our enviroment and demonstrate how a cutting tool is automatically designed in 3D.
Interpreters are an alternative to traditional code generation. They are a good way to provide really fast turnarounds to your users and as such can improve the user experience significantly. In this session you learn what an interpreter is and how you can build one for an Xtext language. We will also discuss some advantages and disadvantages of this approach.
Xtext provides rich textual editing for your domain - aka "your *own* IDE" while Eclipse Sirius makes rich graphical editing a breeze for any kind of EMF model, but can they work together? This talk will walk through all the possible integrations between those two technologies, from concurrently using the Xtext and Sirius editors on top of the same files to integrating the Xtext completion to a diagram or to a popup editor. It will also tackle the pitfalls and specific pain points one should be aware of.
Each time you set up a fresh development environment to work with a particular version of a specific project you must install an IDE with appropriate tooling, materialize the appropriate projects in the workspace, materialize the appropriate target platform, install your personal tools, and manage your personal preferences. These tasks need to be well documented and evolve from release to release. In this talk we'll show how you can manage all this more effectively by formalizing the instructions so they can be performed automatically with the click of a button.
German tax authorities incorporate a great amount of tax offices. Choosing the right one involves domain and law knowledge. You will have a unique opportunity to sneak a peek at the Xtext-based rule engine with an interactive interpreter that saves a lot of headache for both programmers and officials.
Parsers are complex beasts. In this session you will learn how to best debug and test parsers, how to exchange the lexer and how to convince the parser that you know what you're doing.
Not every code-generation problem should be solved with a custom DSL. Xtend's Active Annotations provide a more lightweight alternative, which is a good fit especially for smaller and more code-centric problems.
In this last session we will discuss the future roadmap of Xtext.
Runs in parallel to the main tracks on May 27 and 28.
The clinic is your chance to get any Xtext-related problem solved. No matter if you got stuck in the middle of a project, or you just want to get some feedback on your design decisions and ideas. At the clinic you'll get the chance to go into a deep dialog with one of the Xtext experts.
This workshop is for beginners and those whose Xtext skills could need a refresh. Attendees will be well prepared for the rest of the conference.
During the day we will first focus on achieving a quick breakthrough from defining a language to generating code from its instances with Xtend. Then we will walk through all conceptual and code-related aspects of Xtext that every language designer should understand. Common scenarios will be covered with hands-on exercises. You will also learn how you can benefit from using the programming language Xtend when building languages with Xtext.
Lunch and tea / coffee on arrival and throughout the day are included in the workshop fees.
The ATLANTIC Hotel is located in the heart of Kiel, in the immediate vicinity of the Central Railway Station and overlooking the Kiel Fjord and the ferry piers.
Make a room reservation at the conference hotel using the special booking code "XTEXTCON"