Friday, December 11, 2009

Some Thoughts on Cathedrals and Software Architectures

While preparing a talk on module systems and architectures I remembered some old talks I listened to talking about architectures and arguing why an explicit software architect is necessary within professional projects. Many of them used the analogy of building a dog-house versus building a cathedral. For a small dog house, you don't need an architecture. But for the cathedral you do. Hm, agree, but where is the point?

I think the world has changed. Today for most software systems the analogy of building something like a cathedral is no longer a good choice. And I hope that people no longer have a cathedral in mind when designing software. We have learned that building software is a learning process, that requirements change all the time, that we need a short time-to-market, and most of all that we need feedback all the time - and react to this feedback quickly. Agile methods reflect this and allows us to move forward to modern ways of software development.

But our view on architectures need to reflect this. Modern software architectures need to be build for flexibility, for changing requirements all the time, for changing even fundamental layers of our software in a flexible way without causing tremendous costs. Having a cathedral in mind don't help you here. But if you still like the analogy of building real buildings (even though I think this is not always a good analogy to building software at all), you should take a look at some modern office buildings. Maybe they are not as beautiful as some of the old cathedrals, but they are built for flexibility.

But building flexible architectures is not an easy task. We need to build a flexible architecture and at the same time just what we need without designing all possible stuff upfront. Sounds like contradictory goals, eh? Hm, in some way, they are. I think modularity can help you to solve this conflict. Modularity (and I mean modularity on a higher level than individual classes or packages, but more something like Bundles in OSGi) helps you to think about dependencies, coupling, cohesion, and many of these nice design principles. And I think we all agree on having a good, decoupled design makes life easier when things change - and they will change.

Slides from Meet-The-Experts on Architecture

Last friday I was invited to give a talk at the Meet-the-Experts event in Solingen. I talked about my view on architectures in an agile world and how module systems drive those architectures for a flexible future. Here are the slides:

Thursday, December 10, 2009

2nd Eclipse DemoCamp Hamburg in 2009

I organized a number of demo camps over the past years (always together with my colleague and friend Peter Friese), but the last one was different. I was overwhelmed by the huge number of registered attendees for the 2nd Eclipse Demo Camp in Hamburg this year. We had over 110 people registered on the wiki - around twice as much as for the other camps in the past. And nearly all of them showed up at the event. This was absolutely amazing! Thanks again to all of you making this event such a big success!!!

Peter posted some notes on the program and what happened during the demo camp, so I don't repeat all this and instead direct you to his nice summary of the event. And I have to say many many thanks to all the wonderful speakers who all gave funny and entertaining talks and made the evening not just full-packed with information and details on Eclipse stuff, but also a fun event. I enjoyed it very very much!

Looking forward to organizing the next demo camps and hoping to see you all there!!!

Monday, November 16, 2009

OSGi for Eclipse Developers Webinar

Today I gave an Eclipse webinar on "OSGi for Eclipse Developers" together with Chris Aniszczyk and Bernd Kolb. We talked about various OSGi things that might sound strange and/or unfamiliar to you if you come from the Eclipse way of developing applications. We talked about the relationship of Eclipse and OSGi, dependency management and why you should use Import-Package instead of Require-Bundle, dynamics with OSGi, services vs. extensions, versioning, some compendium services and tooling for OSGi. If you missed the live broadcast, you can watch the entire webinar from here again. Enjoy!

Friday, November 13, 2009

Coming Up: Eclipse Demo Camp in Hamburg at December, 4th

The Eclipse Demo Camp in Hamburg is coming up on 4th of December (its a Friday) from 6:30pm - 10pm at the stylish EAST hotel (like the past demo camps in Hamburg). And I am pretty impressed about the number of participants: We already have more than 70 people registered for the event. Wow... Maybe one of the reasons is the exciting program we put together... :-)
  • Tom Schindl will talk about Eclipse e4
  • Jan Köhnlein talks about building graphical and textual editors for your domain-specific language.
  • Jochen Krause will showcase Eclipse RAP and how you can build your rich AJAX apps using the Eclipse UI metaphors.
  • Nils Hartmann and Gerd Wütherich will share some insights into the various ways of how to realize an automated build process for OSGi and Eclipse applications.
  • And Ekkehard Gentz will show us "redview", a technology to build dynamic views for enterprise applications based on Riena, EMF and CDO.
Thanks to all the speakers who have agreed to join us in Hamburg to give demos on cool technologies - some of them travelling to Hamburg especially for the camp. Thank you all very very very much!!!

If you haven't registered yet, go to the wiki page and put your name on the list (if you have no account for the wiki, just create one or send me an email and I will put you on the list). There is no fee or ticket you need to pay for, itemis and it-agile will sponsor the event. Thank you guys for that!!!

Its a great opportunity to see the technology in action, meet with the guys building that stuff and have a chat. See you at the Demo Camp in Hamburg. Don't miss it!

Slides from WJAX Talk on Building Web-Apps with OSGi

I uploaded the slides of my talk on building web applications on top of OSGi that I gave yesterday at WJAX 2009 together with Gerd Wütherich and Peter Roßbach:
The slides are German only. Sorry about that... Hope you enjoy it anyway... :-)

Wednesday, November 11, 2009

Slides from OSGi Best Practices and OSGi Performance Bloopers talks at WJAX 2009

Here are the slides of my two talks that I gave today at the WJAX conference in Munich:

Wednesday, October 28, 2009

Slides from Eclipse Summit Europe 2009

Today I gave two talks at the Eclipse Summit Europe 2009 in Ludwigsburg. Here are the slides:

Monday, October 26, 2009

Ready for Eclipse Summit Europe 2009

Tomorrow I will travel to the Eclipse Summit Europe 2009 (Ludwigsburg, Germany) to meet great people, see interesting talks and participate in two session on stage: I am happy to present together with Jeff McAffer from EclipseSource our experiences using OSGi in various settings and the "best practices" that we extracted from that. So if you are interested in avoiding the faults and mistakes I did during the past years, join our talk (OSGi Best Practices) and see me talking about my own failures... :-) Its Wednesday at 1:30pm.

In the second talk I will give a short overview of the Equinox Weaving project (formerly known as Equinox Aspects), what's new and what's coming up in the future (Equinox Weaving: Bytecode Weaving in OSGi). So if you would like to hear more about bytecode weaving classes in an OSGi environment, don't miss these 20 minutes at Wednesday at 3:30pm.

See you all in Ludwigsburg!

Thursday, October 08, 2009

Slides from JAOO: OSGi on the Server

It was my first time being at JAOO in Aarhus, Denmark, and it was absolutely great. Lots of interesting talks and discussions and I enjoyed a lot to talk in this fantastic cinema-like room:

I talked about the different settings how you can use OSGi on the server-side and about the dynamics of OSGi applications:
And you can find most of the slides of the other talks at the schedule pages of the conference. Enjoy!

Saturday, October 03, 2009

JAOO is coming...

I will leave Hamburg this Sunday to travel to Aarhus, Denmark, for this years JAOO conference. It's my first JAOO and I heart so many good things about it. :-) And I have the great opportunity to give a talk on "OSGi on the Server". Eberhard Wolff is organizing the "Java Now" track and invited me to this. Thank you very very much for that, Eberhard!!!

Saturday, September 19, 2009

Eclipse 3.6 M2 is out - and includes Equinox Weaving

The second milestone of Eclipse 3.6 is available for download - and its the first milestone build that includes the Equinox Weaving feature as part of the Equinox 3.6 M2 downloads.

After graduating the Equinox Aspects work we renamed it to Equinox Weaving. The reason for this is: The design separates between the base mechanism of modifying bytecode at class loading time and the actual bytecode modification. The AspectJ-based aspect weaving for bundles is just one of many possible bytecode modifiers you can think of. Another one that we implemented (but is not yet part of the Equinox Weaving project) allows you to use Springs load-time weaving infrastructure on top of a OSGi runtime together with Spring Dynamic Modules. And the nice thing about it is: While you are free to choose whatever weaver you like, the caching mechanism of Equinox Weaving works independent from all those weavers.

We still need to update the Equinox web to reflect the graduation and design changes of Equinox Weaving, but please feel free to take a look at it. We are happy to answer questions on the newsgroup and the mailing list.


Saturday, September 05, 2009

Eclipse Summit Europe 2009 Program Online

The technical program for Eclipse Summit Europe 2009 is now online and I am pretty happy to be part of it with two sessions:
  • Equinox Aspects - Bytecode Weaving for OSGi: This is some kind of an update talk on the Equinox Aspects (or better: Equinox Weaving) project. Will give some insights what has happened and what is planned for the future.
  • OSGi Best Practices: This is a joint talk with Jeff McAffer, Paul Vanderlei and Simon Archer where we will throw together our experiences from building apps on top of OSGi over the past years.
Don't forget to register for the event. Looking forward to seeing you all there!!!

Thursday, July 02, 2009

Slides from Talk at Java-Forum-Stuttgart 2009

Today I gave a talk on building dynamic applications with OSGi at the Java-Forum-Stuttgart 2009. This was mostly the talk I gave (and prepared) together with Kai Tödter and Gerd Wütherich for previous conferences. Here are the slides:
The talk were in the main hall of the conference center and it was fun standing on that huge stage... :-) And of course I got completely confused during the talk while switching between the demo application and a slide showing a screenshot of that demo app - picking up every possible embarrassment... ;-)

Friday, June 26, 2009

ObjektSpektrum-Article on Agility & Architecture

Together with my colleague Stefan Roock I wrote an article on building architectures in an agile way for the current issue of the German ObjektSpektrum magazine. The article is part of a controversy with Thomas Lieder about how to incrementally build architectures in agile projects.

In the introductory part of the controversy we talk about the basics of agile methods and the goal of keeping a flat cost curve for features over a long period of time. To achieve this goal we need to change and refactor the software all the time. This is an integral part of agile software development. We learned that its not possible to foresee the future and therefore decided to design only the next steps - and refactor, if we learn over time and find better designs if new requirements appear. This is quite clear on the low-level of individual classes and nicely supported by test-driven development and refactoring tools.

If we use the same argumentation for the architecture of a project, the discussions get a lot more controversy. People don't believe that it is easy to change and refactor the architecture of a system incrementally and flexible over time. We found this discussion often times quite unstructured and using the term architecture in various flavors and meanings. To ease the discussion about agile architectures we divide between the basic architectural style and the concrete architecture of a concrete system. Our opinion is that the basic architectural style is hard to change over time (for example changing a system from a standalone-rich-client application into a multi-user app-server-based system could be quite hard). In contrast to this we believe that changing the concrete architecture and structure of a system could be done incrementally and agile over time. This is obviously not true for every application. They need to be build from ground-up for flexibility and change. But how to build a system that is easier to change over time, even on the architectural level?

From our point of view, there are three fundamental characteristics of design you need to remember every day to build flexible architectures: understandable, loosely coupled and free of redundance. There are many well-known design principles that helps you to build such systems. Keep them in mind, build loosely coupled components, think about good APIs between them - and you are on the right track to build flexible applications and flexible architectures.

Incremental Design at SEACON 2009

A few days ago I gave a short talk on Incremental Design at SEACON 2009, a new buzzword-free conference in Hamburg, Germany. Aside of the fact that this was the first conference in my beautiful home town (and only 15min away from home), I enjoyed to meet a lot of people there. I also made up a few slides for my talk, which you can now download as PDF (in German):
And last but not least I used my new presentation tool called Session Five for the first time. Was absolutely great!

Friday, June 12, 2009

"OSGi on the Server"-Talk at JAOO 2009 in Aarhus

I am invited to the JAOO 2009 conference in Aarhus, Denmark, to talk in the “Java-Now” track about “OSGi on the Server”. I am pretty excited to join the folks at JAOO since I heard a lot of good things about this conference and the program already sounds quite interesting. Hope to meet a lot of interesting people there!

Friday, May 29, 2009

Slides from the OSGi Talks at Java User Group Essen

Already two weeks ago I gave two talks together with Gerd Wütherich at the Java User Group Essen meeting at May 14th. We talked about OSGi in general and building web applications on top of OSGi in specific. We had a room full of interested people and I enjoyed a lot talking there. If you are interested in the slides, here they are:

Thursday, May 07, 2009

OSGi Talks at Java User Group Essen

I will be at the Java User Group Essen meeting next week to talk about OSGi together with my colleague Gerd Wütherich. We will talk about the basic ideas behind OSGi as well as building web applications on top of OSGi. Take a look at the announcement for more details (in German).

Monday, May 04, 2009

Coming up: Eclipse Demo Camp in Hamburg

The tradition of the Eclipse Demo Camps in Hamburg (Germany) will continue with its next edition on Monday, May 25. We will, again, be at the scenic EAST design hotel and have great demos, drinks and, and, and... So don't forget to register yourself by adding your name to the Galileo Demo Camp Hamburg wiki page. This time, we had the idea to continue with a Stammtisch right after the Demo Camp (please don't forget to add your name to that list as well), so even more drinks can follow... ;-)

Sunday, May 03, 2009

Equinox Aspects 1.0 M7a available for download

Because of a stupid bug in the caching area I put a fixed build of the milestone online. So if you tried M7 and observed performance problems with the caching, you should try this fixed milestone build instead from the Equinox Aspects download area.

Friday, May 01, 2009

Equinox Aspects 1.0 M7 available for download

The seventh milestone of Equinox Aspects is available for download from the Equinox Aspects download page. This milestone contains quite a large improvement for controlling the weaving of bundles. More details can be found in this comment on bug 255682. Take also a look at the New & Noteworthy list for 1.0M7 on the web to find out more.

Tuesday, April 28, 2009

Building a Lego Castle Incrementally and Interatively

My colleagues Henning Wolf and Arne Roock had a great idea for our company booth at the last JAX conference: Every attendee got a single LEGO brick in his conference pocket. The goal was to jointly build a LEGO castle at the booth, piece by piece, with a huge crowd of developers. So every attendee got a time slot of 30 seconds (a single iteration) to place one or more bricks and/or to refactor the existing building. And we had (and I think the builders, too) a lot of fun with that! Its always fun to work with these creative guys!

Arne and Marcel recorded a stop-motion-movie from the building process, taking a picture after each 30-seconds iteration. The final movie is published at the companies website:
Have fun watching the movie!

JAX 2009 Revisited

My colleague and friend Matthias Lübken wrote with me a short blog-kind-of-a review, reflecting the JAX conference in Mainz last week. Just some thoughts and impressions on OSGi, Scala, Pecha Kucha (and more...) for the next Eclipse-Magazin. The online version is already available here:
But take care, its German... ;-)

Sunday, April 26, 2009

Load-Time Weaving for Spring-DM

Load-time weaving in an OSGi environment is different than in single-classpath-settings like you often have in Java. There you typically use a JVM agent or a specialized classloader that gets ClassFileTransformer components injected from your application. Those ClassFileTransformer components then to the real job of modifying bytecode at load-time. This is also used in the Spring framework to enable aspect weaving or JPA bytecode enhancements.
This gets different when you are working in an OSGi environment. Within OSGi you no longer have a single classpath application, you cannot (or at least should not) create specialized classloaders for yourself to do the magic, maybe the weaving should happen specifically for each bundle or the woven code gets additional dependencies woven into it. Using Spring in an OSGi environment doesn't make things easier. You can use Spring Dynamic Modules to implement really cool OSGi applications, but your Spring load-time weaving support remains broken to some degree (see all the related questions in the Spring-DM forum).
I often thought about using Equinox Aspects to solve these problems. Since Equinox Aspects is not tightly bound to AspectJ weaving only, you could re-use the base infrastructure to hook any kind of bytecode modifier into the Equinox runtime - and reuse the caching of Equinox Aspects at the same time.

Now I have a first sketch implemented that bridges between Spring-LTW and Equinox Aspects. The EquinoxAspectsLoadTimeWeaver class implements the LoadTimeWeaver interface of Spring and can therefore be used in your spring context as the load-time weaver component:


If you define this load-time weaver your bundle need to define an Import-Package on "org.eclipse.equinox.weaving.springweaver", of course.

To use this kind of load-time weaver definition to need to add "org.eclipse.equinox.weaving.hook" (from Equinox Aspects) to your target platform as well as "org.eclipse.equinox.weaving.springweaver":

When you launch your OSGi runtime you need to set the system property: (osgi.framework.extensions=org.eclipse.equinox.weaving.hook) and start the springweaver bundle right at startup. You can do this by adding it to the config.ini file (org.eclipse.equinox.weaving.springweaver@4:start). This is basically the same when using Equinox Aspects, except that you no longer start org.eclipse.equinox.weaving.aspectj but instead the springweaver bundle.

There are still some issues that need to be solved (see this comment in the spring forum for details), but I hope to can try it out and tell me what works fine and what needs some more work.

Feedback always welcome! Enjoy!

Friday, April 24, 2009

JAX 2009: Patterns and Best Practices for Dynamic OSGi Applications

Right after the talk on my lessons learned I had the pleasure to talk together with Kai Tödter and Gerd Wütherich about examples, patterns and some best practices to build real dynamic OSGi applications. Here are the slides:
Kai put together a really nice example for using different ways on how to build dynamics into OSGi apps. It demonstrates all the cool ways of dealing with OSGi services in a declarative way, like Declarative Services, iPojo, Spring Dynamic Modules and Guice/Peaberry. The URL to the example project is on slide 7, if you would like to take a closer look at it.

JAX 2009: Lessons Learned from 5 Years of Building Enterprise OSGi Applications

Yesterday I gave a talk at JAX 2009 about my experiences from using OSGi for enterprise application development over the past 5 years. I tried to sum up my experiences and most of all the mistakes I made during the past years using OSGi. If you are interested, take a look at the slides:
Enjoy - and try to not make the same mistakes than I... ;-)

Wednesday, April 22, 2009

JAX 2009: What's Possible for Web-Apps and OSGi

Today I gave a presentation together with Gerd Wütherich and Peter Roßbach about the difficulties and options you have if you want to adopt OSGi for building web applications. The room was pretty crowded (more than 220 people) and I enjoyed the talk a lot. If you would like to take a look at the slides, you can find them here (unfortunately in German):

Tuesday, April 21, 2009

JAX 2009: What's New in Equinox Aspects

Today I gave an updated version of my EclipseCon short talk on What's New In Equinox Aspects at the Eclipse Forum Europe 2009, here in Mainz. Here are the slides:

Thursday, April 16, 2009

Next version of Scala IDE for Eclipse uses Equinox Aspects

Today Miles Sabin posted details on the upcoming 2.7.4 release of the Scala IDE for Eclipse. I am pretty excited about the fact that it uses Equinox Aspects to implement deeper integration with JDT. It uses the same aspect bundle as AJDT called JDT weaving. Andrew Eisenberg gave a great talk on JDT weaving at EclipseCon 2009. Take a look at the slides if you would like to read more about JDT weaving using Equinox Aspects.

Wednesday, March 25, 2009

EclipseCon 2009: OSGi for Eclipse Developers

It was fun giving the talk on "OSGi for Eclipse Developers" at EclipseCon 2009 together with Chris Aniszczyk and Bernd Kolb. At the end we had plenty of time for some interesting questions. Luckily we had BJ Hargrave and Peter Kriens sitting in the first row to answer the really hard ones... :-)

Here are the slides of the talk:

Tuesday, March 24, 2009

EclipseCon 2009: What's New in Equinox Aspects

Just a few minutes ago I finished my short talk on "What's New in Equinox Aspects" at EclipseCon 2009. The slides are online:
I am now looking forward to my talk tomorrow on "OSGi for Eclipse Developers" together with Chris and Bernd. Stay tuned!

Tuesday, March 10, 2009

Exciting OSGi-Experts-Day at JAX 2009

Just a few weeks after the upcoming EclipseCon the next conference opens the doors. The JAX conference (which also includes the Eclipse Forum Europe) in Germany takes place in Mainz, Germany, from April 20th to 24th. While the conference is fully packed with a lot of interesting stuff, I had the honor to organize the OSGi Experts Day, a one-day mini conference inside JAX. The goal of this extra day at the end of the JAX week is to have advanved topics only and nothing for OSGi newbies.

Of course I had more ideas how to fill this day that slots available, but I think we will have a quite interesting day. These six talks will be presented:
At the end all speakers will participate in a panel to answer questions from the audience. And I am sure that we will have a lot of interesting discussions during the breaks as well. So join us for this cool day on advanced OSGi topics!

Monday, February 02, 2009

Slides from OOP talk on dynamics with OSGi available

As Kai Tödter already pointed out in his blog entry, our session on dynamics for OSGi applications at the OOP conference last week was a lot of fun. I enjoyed this session with Kai and Gerd a lot. Thanks, guys!

Equinox Aspects 1.0 M5 available for download

The fifth milestone of Equinox Aspects is available for download from the Equinox Aspects download area. There are no new features, just a few bug fixes included in this milestone build.
Aside of that we discussed a few changes to the way Equinox Aspects can be used and are going to include some changes for the next milestone. The feedback from the AJDT team and their users is really useful to further improve the stability of Equinox Aspects and to ease the installation process. Special thanks to Andrew Eisenberg and Andy Clement for the feedback, discussions and contributions!

Wednesday, January 28, 2009

Short Talk on Using Equinox Aspects to Provide Language Developers with Deep Eclipse Integration

As you might now, the new version of AJDT uses Equinox Aspects to allow deeper integration of some AJDT features into the JDT. Andrew Eisenberg (from the AJDT team) will give a short talk about this at this years EclipseCon: "Aspects Everywhere: Using Equinox Aspects to Provide Language Developers with Deep Eclipse Integration". Aside of the fact that I am fascinated to see this usage of Equinox Aspects for AJDT (some kind of "eat your own dogfood"), I am excited about the design of this part of AJDT. It allows other language developers to reuse this part to achieve the same level of integration into JDT. Very cool stuff. I will definitely go to see Andrews talk to hear more about this!

Monday, January 26, 2009

Equinox Aspects and OSGi for Eclipse Developers at EclipseCon 2009

Just a few weeks from now the doors will open to a new EclipseCon in Santa Clara. I am very happy that I got a short and a long talk accepted this year!

The short talk "What's new in Equinox Aspects" will be an update on the Equinox Aspects project. We will briefly talk on the improvements and challenges during the past milestone builds.

The long talk "OSGi for Eclipse Developers" is an overview of those OSGi techniques and facets that are typically not very well known by people coming from the Eclipse world to OSGi. So obviously we will talk about using ImportPackage instead of RequireBundle, the concept of OSGi services and why they are extremely useful, and some more fun stuff.

I am looking forward to seeing you at EclipseCon!!!

Refactoring book review by Ralph Johnson

Wow, what a great feedback! In this blog posting Ralph Johnson reviews two books on emergent design and refactoring. I had to look twice, but the book on large refactorings that he reviewed was the one that my colleague Stefan Roock wrote together with me some time ago. I was so excited about this positive review from the father of so many work on refactoring that I completely forgot to refer to this from my blog... Now, a few weeks later, my brain is back to normal state (or worse, who knows) and I am happy to post this here... :-)