Pokazywanie postów oznaczonych etykietą dsl. Pokaż wszystkie posty
Pokazywanie postów oznaczonych etykietą dsl. Pokaż wszystkie posty

Tekstowe języki specjalizowane – prezentacja

Od pewnego czasu staram się promować na blogu idee tekstowych języków specjalizowanych a dokładnie technologię xText. Nie mogę więc nie wspomnieć o bardzo ciekawej webowej prezentacji jaka zakończyła się dosłownie kilka minut temu. Polecam ją każdemu, niezależnie od tego czy zajmuje się technologiami modelowania czy dopiero planuje się nimi zainteresować.



Podczas prezentacji oprócz naprawdę fajnego demka z szachami wyjaśniona została także architektura samego projektu. Przyznam że bardzo podoba mi się zastosowanie Google Guice jako sposobu na kastomizację generatów. Łączenie kodu generowanego z ręcznie pisanym zawsze stanowiło duży problem w projektach o większym stopniu złożoności niezależnie od zastosowanego podejścia. Zwykle kończyło się to albo dziesiątkami metod 'generated NOT' albo było skrajnie niewygodne jak modyfikacje w 'GMFGen' lub 'zastępowanie szablonów'. Szczególnie problem widoczny jest właśnie w przypadku biblioteki GMF która generuje naprawdę złożony kod który należy w dużej mierze zmodyfikować. Zastosowanie technologii Guice pozwala na znaczne rozluźnienie relacji pomiędzy poszczególnymi fragmentami budowanego edytora co znacznie upraszcza proces jego kastomizacji.

Bardzo ciekawy jest także dalszy kierunek rozwoju. Tematem przewodnim jest budowanie złożonych projektów opartych o wiele współpracujących modeli czyli koncepcja budowy indeksu modeli (instancji) w ramach środowiska. Rejestr modeli to jedno z pierwszych zadań jakie musi wykonać każdy projektant tworzący IDE. Ponieważ użytkownicy będą tworzyli dziesiątki lub setki instancji modeli w ramach projektu indeksowanie jest konieczne by wzajemnie się one widziały i możliwe były akcje typu wyszukanie czy refaktoring. Ustandaryzowanie tego typu mechanizmów może być kamieniem milowym w kierunku uniwersalnych mechanizmów refaktoringu (połączenie koncepcji index + compare)

Drugim tematem jest budowa tzw. języka bazowego dla reprezentacji wyrażeń. W każdym środowisku tworzymy lub wykorzystujemy jakiś istniejący język wyrażeń by wiązać poszczególne elementy modelu, reprezentować warunki etc. Czy jest to popularny XPATH, kolejna mutacja OCL czy cokolwiek innego mocno zależy to od wymagań tworzonego środowiska. Uproszczenie tego tematu wydaje się być atrakcyjne ale nie jestem pewien czy jest ono konieczne. Mamy już kilka modeli wyrażeń a pomimo tego każdy i tak tworzy własny by najlepiej odpowiadał potrzebom danego systemu. Nie do końca jestem przekonany czy powstanie kolejnego języka (bazowego?) cokolwiek wniesie do tematu. Przyznam że bardziej wolałbym gdyby połączono i dopracowano istniejące języki tak by powstała jedna składnia OCL’a, pojedyncza wersja XPAND’a etc. Możliwe jednak że źle rozumiem kierunek tego podprojektu. Czas więc poszukać dodatkowych informacji co i jak.

XText bez wątpienia wprowadza do środowiska Eclipse co najmniej tak dużo nowych możliwości jak kilka lat temu zrobił to GMF. Gdy tylko skończę czytać kupioną niedawno książkę o GMF biorę się za naukę. Mam nadzieję że analiza tego projektu pozwoli mi rozwiązać także problemy w moim własnym projekcie (koncepcja zastosowania Guice etc.)

Eclipse w bankowości - podsumowanie

Trzy tygodnie temu odbyło się w Londynie spotkanie Eclipse Banking Day. Miało ono na celu zebranie ludzi z firm deweloperskich, banków oraz innych instytucji finasowych tak by rozpocząć otwartą dyskusję na temat przyszłości rozwiązań budowanych na platformie Eclipse. Myślę że inicjatywa zakończyła się sukcesem.

A jak to wyglądało? Spotkanie rozpoczęło się od prezentacji koncepcji E4 czyli stworzenia Eclipse IDE jako aplikacji WWW. Raczej jestem sceptycznie nastawiony do idei tworzenia aplikacji WWW z tak złożonym interfejsem użytkownika. Bardzo podoba mi się za to idea włączenia biblioteki EMF jako składnika bazowego na poziom platformy oraz utworzenie modeli dla każdego aspektu budowy aplikacji. Application.ecore, Workbench.ecore... to będzie coś naprawdę wielkiego :)

Następnie Neil Bartlett przedstawił wykład na temat warstwy usług deklaratywnych z OSGi. Podczas wykładu Neil wyjaśnił szczegółowo zagadnienia podziału OSGi na warstwy oraz opowiedział o wadach, zaletach poszczególnych implementacji Equinox DS, Spring DM, iPojo etc.
Technologia OSGi w ostatnich latach coraz bardziej się popularyzuje. I powinna! Choć od ponad pięciu lat tworzę rozwiązania bazowane na środowisku Eclipse przyznam że tylko w ostatnim projekcie (ostatnie trzy lata) staram się świadomie wykorzystywać możliwości modularyzacji. Wiem teraz że nic tak dobrze nie sprząta architektury aplikacji jak dobrze zaplanowana modularyzacja. Trzymam kciuki za sukces tematu także w świecie aplikacji JEE. Jeżeli ktoś jednak nie zetknął się jeszcze z tą tematyką koniecznie powinien przeczytać tutorial przygotowany właśnie przez Neila lub aktualny szkic jego książki.

Kolejny wykład poprowadził Sven Efftinge, lider projektu Eclipse TMF (Textual Modeling Framework, xText) o którym wspominałem w poprzednim wpisie. To było to na co tak naprawdę czekałem. Możliwość zadania setki pytań na temat projektu, oraz innych zagadnień z dziedziny MDE to właśnie główny powód, dla którego warto uczestniczyć w tego typu spotkaniach nawet jeżeli odbywają się one na drugim końcu europy.

Pozostałe wykłady dotyczyły specyficznych produktów dla sektora bankowego. Co dużo mówić królowały tutaj dwa tematy: raportowanie czyli BIRT oraz modelowanie procesów bankowych na wszystkie możliwe sposoby. Przedstawiona została także koncepcja wspólnej platformy dla sektora bankowego, która to właśnie dyskutowana była do późnego wieczora. To bez wątpienia projekt, którym muszę się zainteresować. Spotkanie skończyło się późnym wieczorem przy winie :) To była doskonała okazja by poznać kilka ciekawych osób.

A sam Londyn? Przepiękne miasto. Zrobiłem setkę zdjęć choć miałem na zwiedzanie zaledwie kilka godzin. Wybrałem kilka zdjęć i wrzuciłem na www.

Tekstowe języki specjalizowane

Przez kilka ostatnich miesięcy nie miałem czasu by zaktualizować bloga. Ciągły brak czasu związany z pracą oraz planowaniem pewnej dalekiej wyprawy etc. (która niestety została odwołana). W tym czasie w świecie modelowania wydarzyło się naprawdę sporo. Gdyby to wszystko chcieć tutaj opisać to pewnie mój blog zmieniłby się w wielki spis treści z listą odnośników. Kilka jednak elementów zasługuje na wyróżnienie/przypomnienie.

Bez wątpienia jednym z nich jest prezentacja 'Przyszłość języków programowania' z konferencji JAOO która odbyła się kilka miesięcy temu. Andres Hejlsberg, architekt z Microsoftu prezentuje jak języki zmieniały się w ostatnich latach oraz jakie stoją przed nimi kolejne wyzwania. Polecam prezentację ogląda się jak dobry film. Oczywiście szczególną uwagę warto zwrócić na zalety/cechy języków deklaratywnych/specjalizowanych :)



Skoro już jestem w klimatach MS nie mogę pominąć platformy Oslo zaprezentowanej na PDC2008. Poniższe linki prowadzą do poszczególnych fragmentów prezentacji. Na mnie największe wrażenie zrobiła interaktywność narzędzia do tworzenia gramatyk, taki xText na sterydach. Trzeba jednak pamiętać że to tylko prezentacja wersji alfa i sporo czasu upłynie zanim rozwiązanie ujrzy światło dzienne. Pewnie także niektóre elementy ulegną zmianie inne pewnie zostaną dodane (brak mechanizmu generacji kodu).



Technologie te nie są oczywiście czymś zupełnie nowym. To raczej odpowiedź na dynamicznie rozwijający się rynek rozwiązań DSL bazowanych na platformie Eclipse Modeling. Większość elementów to wprost odpowiedniki technologii ze świata Eclipse: EMF Ecore, xText etc. Nie zmniejsza to jednak wartości jaką wnosi tutaj Microsoft zarówno w warstwie technicznej (narzędzia interpretujące gramatykę w locie) jak i czysto marketingowej (szansa na większą popularyzację tematu).

Przykładowo bezpośrednim odpowiednikiem MGrammar jest xText. Technologia ta powstała jako składnik oAW jednak w grudniu ubiegłego roku dostała oficjalnie włączona do platformy Eclipse Modeling jako baza dla modułu TMF (razem z TCS). Poniżej link do prezentacji xText z ubiegłorocznej konferencji QCon2008



No i na zakończenie w formie podsumowania wspólna dyskusja twórców obu rozwiązań. Czyli kolejny odcinek podcastu dla programistów SE-Radio

Episode 123: Microsoft OSLO with Don Box and Doug Purdy

Rok 2009 zapowiada się naprawdę interesująco!

Wstęp do DSL

Po przeczytaniu komentarza Jacka Laskowskiego na temat sposobów popularyzacji zadadnień tworzenia narzędzi eclipsowych, koncepcji MDD (Model Driven Development) czy DSM/DSL (Domain Specific Modeling) postanowiłem coś zrobić w tym temacie. Myślę że dobrym początkiem może być prosty tutorial.

Co jednak zaprezentować by jednocześnie wytłumaczyć podstawy zagadnienia a przy okazji wzbudzić zainteresowanie tematem? Jedno jest pewne - nie może to być generacja pustych interfejsów :) W internecie można znaleźć setki prostych kursów jak wygenerować schemat klas, bazy danych z modelu etc. Nuda. Postanowiłem pokazać coś innego, co moim zdaniem pozwoli lepiej reprezentować powyższe koncepcje. Zamiast modelować kod strukturalny stwórzmy kod logiki. Naszym zadaniem będzie utworzenie miniaturowego systemu który biznesowy opis (reguły rozsyłania wiadomości) przekształci w działający kod.

Wymagania dla zadania wyglądają następująco. Musimy utworzyć narzędzie pracujące na poziomie problemu (biznesowy opis zachowania) które będzie potrafiło generować coś zrozumiałego dla maszyny (kod wykonywalny). Czy to możliwe? Zobaczymy...

Jako platformę docelową wybrałem prosty silnik świadczący usługę rozsyłania wiadomości pomiędzy nazwanymi kolekcjami (taki uproszczony wzorzec rozsyłania wiadomości z EAI). Nasz silnik oczekuje jako swojej konfiguracji klas reprezentujących zasady działania (interfejs IRule). Reguły te modelowane będą za pomocą edytora pracującego według zasad opisanych poprzez pewien model (meta-model). Żeby nie komplikować wykorzystamy dynamiczny edytor Ecore. Nie jest to oczywiście rozwiązanie produkcyjne jednak na potrzeby prostego tutoriala wystarczy. Osoby zainteresowane tematem budowy własnych edytorów DSL odsyłam do swojej prezentacji z EclipseCamp 2008 (trzeba jakoś reklamować swojego bloga).

Przykładowy meta-model naszego języka zawiera zaledwie dwie proste reguły:
- skopiuj wszystko z kolekcji źródłowej do kolekcji docelowej
- rozbij kolekcję źródłową na podzbiory na podstawie wartości parametru.



Jak widać model nie jest zbyt zaawansowany. Fragment opisujący wyrażenie można nazwać co najwyżej "edukacyjnym", całość pozbawiona jest też nadrzędnego kontekstu. Podział oraz integracja modeli to temat złożony, wykraczający poza ramy tego kursu. Myślę jednak że na nasze potrzeby prosty meta-model w zupełności wystarczy.

Korzystając z edytora dynamicznego (opcja "Create Dynamic Instance") tworzymy dwie proste reguły:
- pobierz listę z kolekcji 'src' do kolekcji 'dst'
- pobierz listę klientów z kolekcji 'customers' i dorosłych umieść na 'adults', dzieci na 'children', nieprawidłowe elementy na 'unknown'



W trybie tekstowym utworzona instancja modelu powinna wyglądać następująco:



Ostatni krok to utworzenie szablonu generacji kodu. Nie jest to trudne. Kod który zostanie wygenerowany musi wykonywać operacje opisane przez meta-model. Utworzona instancja zawiera przykładowe wartości parametrów których użyjemy podczas testów. W naszym przypadku musimy zaimplementować prosty interfejs reguły (IRule) naszego silnika.



Pisanie szablonu rozpoczynamy od utworzenia testów. Ważne jest by nie starały się one weryfikować formatowania generowanego kodu ale logikę jego wykonania. Kod ten wielokrotnie może ulegać zmianom (optymalizacja etc.) jednak kontrakt z pozostałymi elementami systemu powinien być zachowany. W związku z tym w testach opisujemy tylko zasady interakcji z otoczeniem (nie tworzymy implementacji silnika etc.) Przykładowy test wygląda następująco:



Tworzenie testów pomaga nam lepiej zrozumieć problem jaki staramy się rozwiązać. Są one także niezmiernie pomocne w tropieniu literówek etc. Mając testy oraz przykładową instancję modelu bez trudu tworzymy prosty szablon kodu.



Testy zadziałały - zadanie zakończone ;D

Bardziej szczegółowe informacje znaleźć można na stronach www.eclipse.org/modeling. Jeżeli temat kogoś zainteresował fajnie byłoby gdyby dodał jakiś komentarz, będę wiedział czy warto go kontynuować (polecam także tutorial z AST jako wstęp do zagadnienie budowy notacji tekstowej dla modeli).

Eclipse DemoCamps 2008 - podsumowanie

Pod koniec czerwca odbyły się dwa spotkania fanów środowiska Eclipse z cyklu EclipseCamp 2008. Szczęśliwie udało mi się uczestniczyć w obu dzięki czemu miałem unikalną okazję zamienić kilka słów z innymi osobami zainteresowanymi rozwojem produktów bazowanych na Eclipse.

Szczególne brawa należą się moim zdaniem organizatorom tych spotkań:
  • Jackowi Pospychale (Poznań)
  • Kasi Bylec (Poznań)
  • Grzegorzowi Dudzie (Kraków)
  • Szymonowi Brandysowi (Kraków)
Mam nadzieję że następnym razem uda mi się zorganizować z ich pomocą edycję wrocławską. Wszystko jednak zależy od zainteresowania tematem.

A tak to wszystko wyglądało (miniatury wskazują na galerie zdjęć):

Poznań:Kraków:


Kilka wybranych prezentacji:
  • Szymon Brandys, Tomasz Żarna
    Razem w Eclipse (Together in Eclipse) - wszystko co powinien wiedzieć programista starający się zaangażować w prace nad środowiskiem Eclipse

    ABC of Platform Workspace - tej prezentacji niestety nie było jednak można było wypytać jej autorów o szczegóły zagadnień



  • Mateusz Matela, Aleksandra Woźniak, Marek Zawirski
    GSoC project - prezentacja projektów uczestniczących w tegorocznym Google Summer of Code



  • Grzegorz Białek - uwaga kryptoreklama ;)
    DSL w środowisku Eclipse (DSL in Eclipse) - modelowanie procesów biznesowych z wykorzystaniem języków wysokiego poziomu... cokolwiek to znaczy ;)



Pozostałe prezentacje znajdują się (lub zostaną z czasem uzupełnione) na stronach poszczególnych imprez. Zapraszam!

Eclipse DemoCamps 2008 - Kraków

W najbliższą sobotę tj. 28.06.2008 w Krakowie w klubie RE odbędzie się Eclipse DemoCamp 2008.

Jeżeli jesteś zainteresowany platformą Eclipse, chciałbyś poznać inne osoby związane z tym tematem to jest to wydarzenie którego nie możesz opuścić ;D

  • 12.30 – 12.50 Wprowadzenie do Ganymede
    Grzegorz Duda, Sabre Polska, Polish Java User Group leader

  • 12.50 - 13.10 Mylyn - Eclipse zorientowany na zadania
    Grzegorz Duda, Sabre Polska, Polish Java User Group leader

  • 13.20 – 14.00 Wprowadzenie do BIRT
    Krzysztof Daniel, Eclipse enthusiast, engineer in Eclipse Support Center at Politechnika Poznanska

  • 14.10 – 14.50 DSL w srodowisku Eclipse
    Grzegorz Bialek, Sygnity

  • 15.00 – 15.40 Razem w Eclipse
    Szymon Brandys, Eclipse Platform committer, engineer in IBM Poland

  • 15.40 – 16.00 Q&A



Inne przydatne linki:
Rejestracja
Polish Java User Group
Eclipse DemoCamps 2008 - Kraków

DSLs: Martin Fowler, Marcus Völter

Przez ostatnie dwa miesiące nie miałem zbyt dużo czasu na prowadzenie bloga. Powinienem to jakoś naprawić... tym razem jednak znów pójdę na łatwiznę i wykorzystam "gotowca" ;)

Wczoraj udało mi się odnaleźć kolejny wywiad na temat DSL'i. Tym razem oprócz Markusa współuczestniczy w nim żywa legenda jaką jest niewątpliwie Martin Fowler. Myślę że nie trzeba go nikomu przedstawiać, podobnie jak książek które napisał lub promował swoim nazwiskiem a które stały się fundamentem dla wielu rewelacyjnych projektów (PoEAA -> Hibernate, EIP Hoppe/Woolf -> Apache Camel etc.)

Wideo to może być dobrym uzupełnieniem poprzedniego które zamieściłem w jednym z wcześniejszych postów. Pomimo że jest to dosyć krótka rozmowa poruszonych jest kilka ciekawych aspektów (integracja wielu języków w spójne IDE, xtext/antlr etc.). Polecam każdemu kto ma trochę wolnego czasu.

Wywiad przeprowadzony został podczas JAOO Conference i udostępnia do servis Blip.TV:

Eclipse Modeling jako DSL Toolkit

Kilkanaście minut temu zakończyła się wirtualna konferencja (Webinar) prezentująca projekt Eclipse Modeling jako środowisko do tworzenia DSL'i - Eclipse Modeling Project as a DSL Toolkit

W pierwszej części prezentacji Richard Gronback (prowadzący projekt GMF) opisuje w kilku słowach większość projektów składowych, druga jest jednak sporym zaskoczeniem. Zamiast klasycznej demonstracji EMF/GMF jest ona praktycznie w całości poświęcona koncepcji transformacji modeli z naciskiem na QVT. Do tej pory myślałem że biblioteki M2M są dopiero we wczesnych testach, wygląda jednak że się myliłem.

Czas chyba bliżej zainteresować się tematem no i w końcu nauczyć OCL'a ;D

DSL na OOPSLA 2007

W ostatnim poście wspomniałem o jednym z liderów podejścia MDSD którym niewątpliwie jest Markus Völter. Pomyślałem że warto bliżej przedstawić jego osobę, idee etc. przeszukałem więc internet i znalazłem w miarę nowy wywiad na temat DSL'i przeprowadzony podczas tegorocznej edycji konferencji OOPSLA (2007).

Markus w kilka minut przedstawia czym jest DSL oraz zarysowuje zalety oraz trudności związane z tym podejściem, wspomina także o różnicach w wymaganiach stawianych językowi w zależności od docelowego klienta (developer, analityk). Co bardzo mnie ucieszyło w wywiadzie znaleźć można także potwierdzenie moich odczuć na temat zastosowania UML'a jako nośnika opisu procesu biznesowego o którym wspominałem w jednym z wcześniejszych postów (złożoność etc.)

Wywiad zamieścił serwis DomainDrivenDesign.org, poniżej link do prezentacji:

Architektura jako język...

W poprzednim poście zrobiłem taki "mały" wstęp do DSL w kontekście MDD (Model Driven Development). Jak pisałem temat w ciągu ostatnich 2-3 lat rozwija się naprawdę wyjątkowo dynamicznie na co dowód odnalazłem już następnego dnia (choć zapomniałem napisać).

Na łamach serwisu InfoQ pojawił się bardzo ciekawy artykuł autorstwa Markusa Völtera pod tytułem 'Architektura jako język'. Markus przedstawia w prosty i opisowy sposób zastosowanie DSL'a w podejściu AC-MDSD. Biorąc pod uwagę nazwisko autora myślę że nie muszę nikomu lektury dłużej reklamować ;D

Architecture as Language: A story

DSL IDE czyli MDD w środowisku Eclipse

Postanowiłem napisać kilka słów o czymś czemu poświęciłem ostatnich kilka lat mojego życia czyli o językach DSL (Domain Specific Language - języki ukierunkowane na biznes). Ponieważ temat jest dosyć rozległy ograniczę się tylko do wprowadzenia mam jednak nadzieję że to wystarczy by kogoś nim zainteresować.

Głównym celem inżynierii oprogramowania jest przeniesienie pewnych wymagań stawianych przez biznes do postaci zrozumiałej przez maszyny. Nie jest to zadanie proste ponieważ język opisu problemów biznesowych jest zupełnie odmienny od języka używanego przez procesory, infrastrukturę sieciową etc. Zlecenia typu 'w tym momencie powinien pojawić się formularz A' lub 'podłącz Jana Kowalskiego do sieci' są zupełnie niezrozumiałe. Od wielu lat wprowadzone są więc kolejne etapy podniesienia poziomu abstrakcji języka rozumianego przez system uruchomieniowy. Powszechnym dzisiaj rozwiązaniem jest wielostopniowa kompilacja języków ogólnego zastosowania (Java, C# czy C++) a każdego dnia pojawiają się kolejne języki, warstwy kompilacji, interpretatory etc. Praktycznie każdą interakcję z systemem operacyjnym, infrastrukturą sieciową, serwerem aplikacyjnym, frameworkiem czy biblioteką użytkową możemy opisać serią reguł na bazie których możemy utworzyć kolejny język. Patrząc w ten sposób zauważamy że pisząc najprostsze pliki konfiguracyjne w rzeczywistości posługujemy się językiem zdefiniowanym przez daną bibliotekę.

Bardzo szybko zauważono możliwość dalszej abstrakcji algorytmów, potrzebny był jednak język wysokiego poziomu. W 2001 roku organizacja OMG zaproponowała podejście projektowe nazwane MDA. Zakładało ono użycie UML jako języka definicji problemu biznesowego a następnie przekształcenie tak powstałego modelu do postaci definiowanej przez platformę docelową. Użycie UML'a okazało się jednak wyjątkowo trudne w praktyce ponieważ notacja ta projektowana była w latach 90-tych z myślą o statycznej dokumentacji nie jako fragment kodu źródłowego. Narzędzia dostępne w tamtym okresie nie wyglądały wcale lepiej (profile zaimplementowano znacznie później).

Sam najlepiej przekonałem się o tym budując swój pierwszy system modelowania procesów biznesowych w którym zdecydowałem się użyć koncepcję wykonywalnego UML'a (xUML). Pomimo niewątpliwego uproszenia tworzenia/modyfikacji procesów podejście to praktycznie od razu ujawniło wszystkie swoje wady. Brak wsparcia w trakcie modelowania logiki wyższego poziomu niż dostarczana przez język UML, brak możliwości odwzorowania dodatkowych walidacji bezpośrednio w edytorze etc. Może nie wygląda to na poważne problemy jednak daje porządnie w kość już przy kilkudziesięciu złożonych procesach a przy kilkuset staje się prawdziwym piekłem.

Na szczęście w tym samym czasie (początek 2004r) IBM opublikował rewelacyjna książka 'Eclipse Development using the Graphical Editing Framework and the Eclipse Modeling Framework' prezentująca technikę budowania specjalizowanych edytorów graficznych w środowisku Eclipse. Przyznam że koncepcja ta całkowicie mnie pochłonęła i w kolejnej wersji systemu mogłem zrezygnować całkowicie z UML'a pozbywając się związanych z tym podejściem problemów. Dzięki budowie własnych narzędzi (DSL IDE) mogłem zapewnić nie tylko walidację w tle ale także wsparcie w tworzeniu wyrażeń a nawet dosyć zaawansowane opcje analityczne. Umożliwiło to wystarczające uproszczenie obsługi by pomoc programisty nie była już konieczna w trakcie składania nowych procesów.

Wspomniana książka okazała się jednak znacznie większym sukcesem niż mogłem to sobie wtedy wyobrazić. Nie tylko wyjaśniła każdemu jak poprawnie i szybko budować edytory graficzne ale także stała się podstawą do dalszej standaryzacji i rozwoju MDD w środowisku Eclipse. Na bazie jej wytycznych powstał wkrótce projekt Merlin Generator który stał się podstawą biblioteki GMF debiutującej w release Callisto (2006r). Tworzenie prostych diagramów zamiast tygodni skróciło się do kilku godzin/dni co oczywiście spowodowało dalszą popularyzację tematu MDD. W ubiegłym roku wydzielona została specjalna kategoria poświęcona zagadnieniu modelowania 'Eclipse modeling'. W jej ramach znajdują sie projekty odpowiedzialne za budowę struktury (EMF, EMFT), tworzenie notacji graficznych (GEF, GMF), notacji tekstowych TMF (xText, IMP), transformacji modeli M2M (ATL, QTV) oraz generatorów M2T (Xpand/Xtend, stary JET).

Jest tego naprawdę dużo i pomimo że poświeciłem tematowi DSL blisko pięć lat a powyższych bibliotek używam na co dzień od czterech przyznam że wciąż trudno mi to wszystko opanować. Praktycznie co kilka dni pojawiają się ciekawe prace lub projekty. O części z nich postaram się tutaj czasami wspomnieć...