• Wednesday, February 10, 2016


    As many of you already noticed, we had to find a company name without 'Xtext' in it. Longer story short, we finally decided for TypeFox (it still has an 'x', ey? ;-)).  We are still all about Xtext and Xtend, of course.

    The website is online now and reveals some additional details about what we do. Also we are having a blog there, which will be updated with useful content around Xtext and Xtend and more general about language engineering, code generators and so on on a regular basis. If you want to get notified about the content, there is a monthly newsletter. It will contain information about the latest blog post, upcoming Xtext and Xtend releases and upcoming events. The sign-up form is on the blog page.

    Also Jan joined this month as a co-founder and there will be five more friends (Xtext committers) joining TypeFox in the coming weeks.

    Finally I wanted to say thank you, for all the good wishes and the trust of our partners who already do business with us. It starts all very well and I am very thankful for that.

    How do you like our logo?

    Tuesday, January 05, 2016

    Founding An Xtext Startup

    First of all, I wish all of you a Happy New Year! In addition I'd like to update you about some decisions I made recently.

    Since January 1st I no longer work with itemis. Instead I am founding a startup together with my friends from the Xtext team. The new company will be all about Xtext, and as such 100% dedicated to language engineering and tool development.

    We want to make sure to run a healthy and sustainable open-source business. The huge success of Xtext in the past few years has shown that there is a significant market for special tool and language development and that this is even growing. We really enjoy working with so many different customers around the world and it always is a pleasure to see them getting excited about the power of Xtext. Just in case it is not clear, we will for sure invest significantly into the further development of the open-source framework.

    We start by offering the classical support packages, trainings, and general consulting. That is everything you need to make sure you get the best possible results with Xtext. In future we might have some ideas for additional services and products as well. The new website will be up in a couple of days and will contain more detailed information. Stay tuned!

    If you have questions, just want to chat, or want to work with us - this is my private email:

    Edit: We really would like to use something with Xtext in the name (like XtextSource), but this unfortunately conflicts with the guidelines at Eclipse.org. This may come to you as a surprise, as there are companies like EclipseSource, but this is a special case as they were founded before 2005. We will come up with another good name soon. :)

    Tuesday, October 13, 2015

    Xtend: Active Annotation Processing in IntelliJ IDEA

    This is a short screencast showing the use of @Accessors, @EqualsHashCode and @Data within IntelliJ IDEA 15.

    See how getters, setters and other boiler plate gets eliminated in Xtend.

    Note, that unlike case classes in Scala or data in Kotlin, in Xtend these annotations are just library. You can easily build your own!

    Friday, October 02, 2015

    Xtext for IntelliJ IDEA - Preview

    Today we've released a preview version for the upcoming IntelliJ IDEA support of Xtext. With this it is now possible to develop Xtext languages entirely in IDEA and due to the cool Gradle support in any other environment, too.

    The preview plugins for IntelliJ IDEA can be installed from the following repository location:


    Note that Xtext requires the latest IDEA 15 Preview build.

    I've recorded a small screencast that shows what Xtext in IntellijJ IDEA looks like:

    Friday, September 11, 2015

    What I learned at JavaZone 2015

    This week I was lucky to go to Oslo to attend JavaZone, which is what they say "the largest community-driven developer conference in the world".
    No matter that's true or not it is for sure one of the coolest conferences I have ever been to. It is generally extremely well organized and on top of that they have some really cool features like:

    •  an overflow area, where you can watch all sessions on a split screen and switch audio using a headset!
    •  different food stations, that open in the morning and serve delicious food all day!
    •  recordings of all sessions, uploaded to vimeo and made available in a couple of hours!
    •  ... many more cool things (e.g. I got a Raspberry Pi as a Sopeaker's present :-))

    But that such a conference is all about the people and the content, which was equally great:


    The first day I started with a talk about alternative implementations for collections. The speaker maintains a library with something he called a gap list, that had some clever techniques to make positional insertion cheaper (compared to ArrayList). It made sense to me and the measurements looked good, although there's a last bit of sceptic on my side, as he did the measurements "on his own".

    The next session was the one about Neo4J by Michael Hunger. I already knew Neo4J a bit as did some examples using Xtend some time ago, but it was still very interesting. He showed a cool demo, where he imported data from twitter, github and stackoverflow and joined it together in the database. Also I didn't know the cool web frontend he used, that lets you enter some Cipher code (the Neo4J query language) and shows the results as dynamic diagrams. Cipher btw. is implemented using Scala's parboiled. They really should consider reimplementing it with Xtext, so they get proper editors for free ;-)

    Next up was Rafael Winterhalter, talking about his open-source library "Byte Buddy". Byte Buddy is a bytecode library, that comes with builder APIs and some hooks for agents to make it easier to do byte code generation at runtime. The talk was well presented and very interesting. I especially liked the style of his slides, which were very reduced and calm (I'm kind of sick of stockimage-heavy slide decks - I know I use them myself too much :-))

    The fourth talk was "How to make your code sustainable" by Christin Gorman. The room was very crowded and it seems like most people enjoyed that talk very much, as she was very enthusiastic. For me it was a bit too superficial and the enthusiasm was tiring me at some point. (nitpicking on)Also there were strange code examples that just wouldn't compile (nitpicking off).

    "The Rule of Three" with Kevlin Henney came next. I went to the room, and of course it was overflown. It's Kevlin Henney after all. So I got to try the overflow area for the first time, and it worked flawlessly (as everything else at this conference). The talk was cool, it's always a pleasure listening to him, although he was doing jokes on IDEs :-). I didn't learn many new things (maybe some quotes I have forgotten about now already) but it was super entertaining.

    Next up it was my turn to give an introduction to Xtext. The talk went well I think, there were at least some very excited attendees approaching me after the session. As always most of the talk is a demo. It has been recorded and you can watch it here (find all the other talks in the same album).

    After that talk I went to the hotel to watch the silly Apple Event (what a waste of time!) and were too tired to get up and go back to the #AweZone party. Oh my, I'm getting old!

    On the bright side, I was able to get some work done in the evening and wouldn't have a hangover on ...


    I took the time to get in touch with some people and also get more work done. Also I found some cozy places on the conference site and enjoyed the great coffee, food, and ice cream along with some coding.

    The only talk I attended was Neal Ford's take on "Microservices". As you might know microservices are the thing, these days and there were very many talks on this topic at JavaZone. I was reading up on microservices from time to time in the past months to understand what that hype is all about and I was still somehow skeptical. But Neil managed to explain the benfits so that I finally understood how, why and when such an architecture might be helpful. At the same time I also figured how much stupid stuff you can read about this topic on the internet. But maybe that's the case with every heavily hyped topic.

    After that talk it was time for me to get to the airport and catch my plane to Hamburg. Everything went well and I was already sitting in front of the gate, when Germanwings sent me a note that my flight got canceled (40 mins before boarding). As I knew I couldn't do anything about it I rebooked for the next flight Friday 12:15 and booked a hotel room.


    Breakfast, some work, and then to the airport. On my way I wanted to check the boarding time once more: 20:15. Huh? WTF! They silently canceled that second flight, too, and rebooked my for an even later flight! Fun times.

    So now I'm sitting here in front of Oslo Airport writing this and wait for the next possible flight to go out tonight. I hope they won't cancel it again.


    JavaZone was a blast. Thanks for having me I hope I can come back next year.
    Also: Germanwings I hate you!

    Thursday, May 28, 2015

    The Future of Xtext

    As we have mentioned, the agents of the King of Prussia were45 eager to kidnap tall men, in whatever country they could find them. This greatly exasperated the rulers of the various realms of all sizes and conditions which surrounded the Prussian territory. Frederick William was always ready to apologize, and to aver that each individual act was done without his orders or knowledge. Still, there was no abatement of this nuisance. Several seizures had been made in Hanover, which was the hereditary domain of George I., King of England. George was very angry. He was increasingly obstinate in withholding his assent to the double marriage, and even, by way of reprisal, seized several of the subjects of Frederick William, whom he caught in Hanover.Presently he stopped; said it was evident that she was an Englishwoman, that he did not wish [440] to cause them any further inconvenience; they could continue their journey, but he advised them to put out the lantern as it might be dangerous. He showed them a bye way by which they could reach the Austrian outposts without meeting any more French troops.this is a write up of a presentation I gave together with Sebastian last week at XtextCON. It is about our future plans of Xtext. But before we talk about the future I would like to start with a quick summary of ...

    The Status Quo

    I fell from the clouds on hearing all that, and knew not if I were sleeping or waking. He then questioned me on the affairs of this country. I gave him the detail of them. He said to me, When your goose of a father-in-law dies, I advise you to break up the whole court, and reduce yourselves to the footing of a private gentlemans establishment in order to pay your debts. In real truth, you have no need of so many people. And you must try to reduce the wages of those whom you can not help keeping. You have been accustomed to live, at Berlin, with a table of four dishes. That is all you want here. I will invite you now and then to Berlin, which will spare table and house expenses.Xtext is in development for seven years now. We have always been between 6 and 10 active developers, currently being 9. With a total LOC of 5.747.523 our code base is huge. However you have to take into account that we not only check in generated code (it sometimes helps us to spot problems) but have many, many tests. All in all there is 27.539 usages of @Test which are executed in many different scenarios and against different platforms. All together we count over 180k unit tests.

    The King of Poland, who was also Elector of Saxony, had strong feelings of personal hostility to Frederick. His prime minister, Count Von Brühl, even surpassed his royal master in the bitter antagonism with which he regarded the Prussian monarch. Frederick, whose eagle eye was ever open, and whose restless mind was always on the alert, suspected that a coalition was about to be formed against him. He had false keys made to the royal archives at Dresden; bribed one of the officials there, M. Menzel, stealthily to enter the chamber of the archives, and copy for him such extracts as would throw any light upon the designs of the court. Among other items of intelligence, he found that Austria, Russia, and Poland were deliberating upon the terms of a coalition against him.This kind of test coverage together with a passion for code quality is key keep a software system maintainable and extensible after years.

    Xtext 2.8.x

    Though he painted this portrait in haste, with tears in his eyes, it was one of the best ever done by Isabey. [35]She was constantly surrounded by perils and temptations which to many would have been irresistible. Admiring eyes followed her at the theatre, people crowded round her in the gardens and places of entertainment, men of rank who wanted an opportunity of making love to her had their portraits painted by her for that purpose; but she treated them all with indifference, and when she noticed that their looks and glances were too expressive she would coolly remark: I am painting your eyes now, or would insist on the portrait being done with the eyes looking in another direction.In the coming week we will release 2.8.3, a bugfix version of the 2.8.x stream that introduced many cool new features. With version 2.8.3 we have fixed over 120 bugs and improved quality furthermore. This is also the release that will be part of Eclipse Mars.

    Error Reporting

    It is true that Schlubhut had no trial, but he certainly deserved his doom. He was a public thief, stealing the taxes he was sent to gather; insolently offering to repay, as if that were184 all the amends required; and saying that it was not good manners to hang a nobleman.Not sure if you have noticed, but with Mars also comes the new error reporting tool, an initiative by the developers behind Eclipse Code Recommenders. It basically asks you to automatically send in error reports for all kinds of exceptions and UI freezes you experience when working with Eclipse. Although it is not yet included in the Luna SR2 packages we already got many helpful tickets through that feature from the milestone builds. Please, turn this feature on and provide as much information as possible. It really helps!

    What about future releases?

    To figure our what the community demands, we did a survey. Thanks for everyone who attended! The survey was targeted at Xtext users, and besides some more demographic questions, the most important question was:

    "What should be changed or improved?"

    The answers included a lot of valuable feedback. Most of them could be assigned to one of the following four themes. I put some of the original answers and comments from the survey on the slides.

    Having met with this repulse, Kannegiesser returned to Berlin with the report. Frederick William was exasperated in the highest degree by such treatment from a brother-in-law whom he both hated and despised. He had at his command an army in as perfect condition, both in equipment and drill, as Europe had ever seen. Within a weeks time forty-four thousand troops, horse, foot, and artillery, were rendezvoused at Magdeburg. Fritz was there, looking quite soldierly on his proud charger, at the head of his regiment of the giant guard. Vigorously they were put upon the march. George II., who had already in his boyhood felt the weight of Frederick Williams arm, and who well knew his desperate energy when once roused, was terrified. He had no forces in Hanover which could stand for an hour in opposition to the army which the Prussian king was bringing against him.People asked for more documentation, specifically around Xbase and in the code (i.e. JavaDoc). Also many asked for an overview chapter where a bird's eye view of the architecture and life cycles is explained. We agree that these parts should be added and enhanced and have put it on our agenda. Fortunately the documentation is now written in markdown and change is only one pull-request away (for everyone ;-)).

    He could now see that he stood in a wide and lofty entrance-hall, decorated with a profusion of carved woodwork; panels, cornices, and casements, being ornamented with garlands of oaken roses, or quaint heads of animals, stiff as petrifactions, and almost ebon-black with time and rubbing. The furniture consisted of a small table, a cumbrous cabinet, and ponderous, high-backed chairs, of the Elizabethan age, or perhaps earlier, brought from England, as heir-looms, by the first emigrant Bergan. There was also a tall, spectral clock, which, to Bergan's intense astonishment, suddenly began to fill the hall with a loud, monotonous tick, as if the march of time, long ago arrested in the deserted mansion, was now duly resumed:doubtless the rusty wheels had been jarred into spasmodic motion by the violent closing of the door. By way of decoration, there were a few dingy pictures, in dark, carved frames; and in two of the oaken panels hung complete suits of armor,helmets, cuirasses, gorgets, greaves, and gauntlets,memorials, not only of long-buried Bergans, but of long-vanished days.The Comit de salut public was composed of Barre, Carnot, Couthon, Billaud-Varennes, Collot-dHerbois, Robert Lindet, Prieur, Jean-Bon Saint-Andr, Saint-Just, and Maximilian Robespierre; as bloodthirsty a gang of miscreants as ever held an unfortunate country in their grip.Performance has always been high on our list and for every release we spend a lot of time on profiling and optimization. If you suffer from performance problems, first make sure, that you are on the latest version. Performance makes huge steps from release to release.

    {sjtxt}Here is some of the improvements we have been working on lately:

    • Do nothing in UI thread - computations of any UI services have been moved to background jobs, such that nothing blocks the user.
    • Cancel everything - all UI services, such as outline, mark occurences, semantic highlighting, etc. get canceled on change (i.e. as you type). Since the state is outdated we can stop waste CPU cycles on it.
    • Cancelable builds - also incremental builds now get automatically canceled, when another change comes in.
    • Storaged Resources - Xtext can write fully resolved and computed resources to disk in a binary format, so it can later be loaded again quickly
    • Incremental standalone compilation (new in 2.9) - The eclipse builder has always been incremental. Now Xtext also has an incremental standalone compiler, that together with a running demon ensures super slick incremental compilation of changed files.

    {sjtxt}{sjtxt}Of course, improving performance is never done!

    {sjtxt}{sjtxt}Continuous integration with Xtext and Xtext-based languages has traditionally been a bit of a pain. This is mostly because we started out as an Eclipse only project, and building Eclipse plug-ins is "different". The Xtext project has had a continuous integration build for years, but our build infrastructure is not exactly simple. Targeting different platforms requires a bit of a zoo of build technologies on our side, which should not be necessary for clients. Since almost two years now, there is Maven support, including a plug-in to run your language in an arbitrary maven build. The same has been added for Gradle as well.

    {sjtxt}{sjtxt}The next step is to allow for different project layouts, i.e. Eclipse vs. Maven/Gradle layout and allow for developing Xtext languages without any kind of Eclipse dependency. Which brings us to the last theme.

    {sjtxt}{sjtxt}Xtext is a language framework that has significantly lowered the barrier to develop programming languages and external domain-specific languages. One of the sweet things is the cool Eclipse support you get. However even if you only need a compiler for a language without any Eclipse tooling the Xtext framework provides you with rich abstractions for scoping, indexing, incremental compilation and more. With the next release (version 2.9) it should be possible to create a runtime project only, without any Eclipse dependencies and without the necessity to deal with OSGi or eclipse plug-in mechanism. Our goal is to allow for vanilla Java projects with a normal Gradle or Maven build.

    {sjtxt}{sjtxt}For the IDE part, we are working on supporting web editors and IntelliJ IDEA specifically at the moment. But maybe even more important in the long run, is the general extraction of the IDE services from Eclipse dependencies, such that they can be reused on other platforms easily. Tom Schindl for instance already uses Xtext in JavaFX applications and we are in contact with a group that has ported Xtext to Visual Studio through IKVM.

    {sjtxt}{sjtxt}Just to be clear: The Eclipse support stays important and will be a first class citizen for the Xtext framework in the future, too!


    {sjtxt}{sjtxt}As you can see, the direction is a mixture of improving quality and performance, making accessibility easier but also reaching out to new platforms. I hope you find this direction as exciting as we do. We plan to release Xtext 2.9 in the last quarter of 2015. In case you want to try the current state of the web or intelliJ IDEA support, go ahead and download the recently released beta version. More betas will be released in the coming weeks / months.
    So long, have fun and remember your feedback is helpful and very welcome!

    Monday, March 16, 2015

    Xtext moved to Github

    I'm just back from EclipseCon and XtextDay in San Francisco, where we announced the new 2.8.0 release of Xtext and Xtend among some other interesting developments. One of those is our...

    Move to Github

    In order to simplify the contributor's story, Xtext is taking part in the "social coding initiative" of the eclipse foundation, and the primary git repository has been moved over to github. As a consequence we will no longer use gerrit for code reviews but github pull requests. Also it now makes more sense to fork, watch and star our repository.

    Xtext is of course still an Eclipse project!

    Changing documentation in two clicks

    The website has been reimplemented in jekyll and the entire documentation is now written in github-flavored markdown. A link on every page that says 'edit on github' will open up a markdown editor on github, where anybody can do changes and propose them in form of a pull-request with a second click. This allows for wiki-style turnarounds but with a review and CLA check in it.
    Just go try it out :-)

    Automated setup

    While documentation and website improvements can be made in the browser, you usually want to run some of our over 30.000 unit tests when you did code changes, or be able to compile and debug code. With a big project like Xtext that targets multiple platforms, the setup of a workspace and the corresponding tools is unfortunately not exactly simple. But fear not, this is all automated, thanks to an oomph setup. So even here it is only a couple of clicks until you have a fully working setup, that includes an IDE, the workspace, correct target platform, the team's workspace preferences and so on. Just everything you need and everything like we committer have it.

    Code contributions

    The team has many active committers that are very happy to review your high-quality pull-requests. If you want to start working on something it would be best if you pick up one of the bugzillas flagged with 'v2.9' or whatever the upcoming release is in case you read this post at a later point in time. This is how we schedule the things we agreed on working on.


    Copyright © 2015.All rights reserved.More welcome downlaod - Collect from power by 1042501000555666-timeccc.cn english

    Latest article news

    Sep-20 04:53:47mb (2973).txt