TYPO3 v5, FLOW3 and Unicase

I had the pleasure of attending two interesting presentations at our university yesterday. I am a bit biased here, because one was held by myself, for a few students participating in the current “Softwareentwicklungswerkzeuge” (software development tools) lecture. The other one was a presentation by Sebastian Kurfürst, one of the core developers of TYPO3 (and a “former student of mine”), for the T3 User Group Dresden, about the upcoming TYPO3 v5 and its application framework FLOW3.
flow3 bannerEven if you’re not interested in TYPO3 or CMS development, I recommend reading the [very fancy] slides (if you understand German). They have a rather large user base, still they decided to throw away the current code base and design the new release from scratch – using ‘modern paradigms’ such as strict Test Driven Development, Dependency Injection, Aspect Oriented Programming, Domain Driven Design and MVC. Sebastian accomplished to explain these concepts clearly, so if you want to refresh your knowledge about any of these techniques, [url=http://www.slideshare.net/skurfuerst/flow3-der-aktuelle-stand-typo3-usergroup-dresden-presentation]take a look at the slides[/url]. According to him, TYPO3’s new base level application framework is the first framework to introduce AOP to the PHP world, and is ‘ahead’ of the current PHP development (they require PHP 5.3, which is not even in beta yet).
I’m really looking forward to the new TYPO3, which hopefully might be one of the first web application frameworks and CMS that doesn’t suck completely.

unicase logo[url=http://moblog.wiredwings.com/index.php?/plugin/dlfile_2]My own presentation[/url] (not very fancy slides…) was about a MetaCASE tool called “unicase”, suitable for smaller collaborative projects and especially targeting research projects with special needs such as a new methodology, or other individual model requirements. It is being developed at the TU München by a team around a good friend of mine, Maximilian Kögel. Its main features are model generation from an ECORE meta model (it’s Eclipse based), so you can easily introduce new model elements and regenerate your client. The central repository with similar concepts as Subversion (checkout, commit, update) is able to work with any meta model compliant models, and the client tracks any changes to the model and the client usage, which is especially useful for research projects interested in how their application is being used.
Unfortunately, the most important part of the presentation was a live demo, where I showed how you can easily generate a “new client” by small changes to the meta model. The [url=http://www.unicase.org/]unicase website[/url] has [url=http://teambruegge.informatik.tu-muenchen.de/groups/unicase/wiki/a3773/Video_Tutorials.html]screencasts of most features[/url] though, so if you’re interested, you can watch it there.
If you want to try it out, I’ll explain the few steps required to get your own local server and clients to run. If you just want to try the client, they have an update site you can easy add to your current Eclipse installation, and a standalone download. Unfortunately, the link to the relevant [url=http://teambruegge.informatik.tu-muenchen.de/groups/unicase/wiki/b5627/Documentation.html]unicase documentation[/url] is “hidden” in the right sidebar, whereas the main documentation link in the center of the page currently leads to a mostly empty wiki page.

There’s another screencast on the project website about checking out the project from its SVN repository, but I’m not a big fan of screencasts. Besides, there are a few steps missing from the video tutorial.
1. Open Eclipse including Subclipse (its SVN plugin), and import all projects from the unicase repository. To do that, you can go to “File -> New -> Other… -> SVN -> Checkout Projects from SVN”, and point it to http://svnbruegge.informatik.tu-muenchen.de/repos/unicase-readonly . You can either decide to check out the latest releases from the trunk, or (which is what I did) go for the latest tagged release. Important: select all projects in one branch to check out all projects individually, not the whole branch into one large project.
2. Copy unicaseClient.keystore from org.unicase.developer/keystore to <home>/.unicase/ , and unicaseServer.keystore to <home>/.unicase/emfstore .
I also had to create a file called es.properties in <home>/.unicase/emfstore/conf with the line emfstore.acceptedversion = any to make it work, but you might not have to do this.
3. Now you can run org.unicase.emfstore to start the server and org.unicase.ui.navigator to start a client instance. To change the meta model, go to org.unicase.model. For more details, check out the (mislabeled) [url=http://www1.in.tum.de/static/shared/unicase/VideoTutorials/developer/unicaseMDD.mov]screencast “Model-driven development Tutorial”[/url].
4. To log in to the server using the default keystore, use “super” as both username and password. You can then add more user accounts within the GUI, or generate your own keystores.