Category Archives: Everything

Portals Track at ApacheCon

This morning we had our nice little portals track here at ApacheCon – which was well received and attended by several people. First was Ate with a great presentation about the upcoming JSR 286 specification (portlet api 2.0) and then we had our portals panel. Together with Ate and David Sean Taylor we gave an overview about the portals project, standards and related stuff. Befor we started we were unsure if there is high interest and if people have questions at all. But in the end we were surprised in a positive sense that very soon a lifely discussion started and it continued through out the session. In the end we had to cut off discussions as we were pretty soon over time. So I think this was a big success and I’m a little bit unhappy that we didn’t propose the panel for Amsterdam.
The portals track was finished by a session from Ate and David about the Jetspeed enterprise portal solution. In fact the session gave me some ideas about how to merge the Cocoon portal with Jetspeed. I have to dig into the details first, but perhaps it’s possible. Especially as Jetspeed is planning to have a “lightweight” version sometime next year.

Apache iBatis and Apache Sanselan Session

Today was a much better day with respect to my presentations 🙂 Both, the Sanselan and the iBatis, session went from my point of view very well and I think I could get the point about these cool projects across. Unfortunately the attendance in the fast feather track is not that high, but fortunately there were several people in the iBatis talk.

Btw, you can find all session slides here.

JCR in Action Session

Yesterday I gave my new JCR in Action talk together with Bertrand for the first time. The room was fully packed but to be honest, I’m not that happy about how it went – I think it was my worst presentation ever. But I hope I could at least give an impression of what JCR is and how you could benefit from it.
The good thing about it is that I have now a very clear picture of how the session should have been 🙂 So, if I ever get the chance to talk about JCR again, it will be much better. Promised!

Creating OSGi Services with the Apache Felix SCR Plugin

There are many ways to create/register services when using OSGi. The most straight forward is to add a bundle activator to your bundle and this activator then registers your services. The disadvantage of this approach is of course that you have to write Java code to register your services. Especially if your service requires other services, you have to write a lot of code.
There is also the Declarative Services Specification of OSGi which allows you to define your services in an XML configuration file stored in your bundle. You can specify dependencies of your service to others and the service component runtime (SCR) takes care of providing the dependencies and managing them. So in addition to write your Java service you have to come up with this XML configuration file.
Fortunately, there is a cool Maven plugin at Apache Felix: the SCR plugin which simplifies providing services for OSGi tremendously. (For a complete picture of these issues see the SCR Plugin documentation)
The basic idea of this plugin is to use annotations stored in your Java implementation. For instance if you just specify the

@scr.component

in a Java class, the plugin will automatically generate the XML configuration for you. There are more tags allowing you to handle references to other services, configuration properties etc. We even added some cool byte code generation which reduces the amout of code you have to write even more. I don’t want to go into the details here, as there is of course some documentation.
So, if you’re using OSGi, you should definitly check out the SCR plugin!

The Musical Box Live in Hamburg

On friday the 2nd of November we went for another convert of The Musical Box in Hamburg. The venue, the congress center, is really great and the organization was excellent as well. The concert room was rather small, sitting in the 16th row, we just sat some meters away from the stage and could see every detail of the musicians – which was very interesting to see. So it was nice and cosy 🙂
The Musical Box were performing the Genesis Selling England by the Pound Tour (The Black Show) and once more this was amazing. You can’t spot any real difference between this concert and the original ones! Unfortunately this seems to be the real last tour of them for this era of Genesis 🙁
Next year they will perform the Trick of the Tail tour – of course putting a Collins “clone” as the singer. I’m still not decided if I want to see this as for me the Gabriel era is much more interesting.

Arrived in Atlanta for ApacheCon

Yesterday we arrived in Atlanta for the great ApacheCon US 2007. The flights went without major problems but I’m still wondering about the security checks. This time was no extra US security check at Frankfurt airport so we could enter the boarding area directly. The last times there used to be an extra check which did take some always some hours to get through. So this seems to be an improvement 🙂 But when leaving the airport in Atlanta you have to go through a security check again. I still don’t know what’s the purpose of this is. You already have been checked when entering the departure airport, so how could you have dangerous goods when leaving the arrival airport? Together with the nice immigration queuing it took us nearly 90mins to get out of the airport 🙁
Anyway, the hotel is very nice and I’, cirrently enjoying the hackathon 🙂
Starting tomorrow I’ll have a session each day (about JCR, iBatis and Apache Portals).

Garbage Collection in Objective-C

I briefly looked at an article about Objective-C 2.0 and I’m totally disappointed. I learned the language in 1994 and I still think that it’s a really great language and much superior to others like Java, C or C++.
One of the fun parts was memory management. Former versions of Objective-C did not have garbage collection – but they provided some support through manual reference counting. There were some basic rules you had to follow as a developer and obeying to this rules meant to call the famous release/retain methods at appropriate places to increase/decrease the reference counters of objects. There were also things like auto pooling etc. For beginners of the language this usually was a nightmare and lead to memory leaks or unpredicated behaviour (as objects were released to soon).
But on the other hand if you followed strictly the rules (which were I think three simple rules) all this reference handling stuff was actually very easy and you did not have memory leaks – everything was working fine – we developed huge applications without any problems. Even using the distributed objects (sending and calling objects over the network to other applications) worked fine (although this was a little bit more tricky).
I guess most developers are happy with the changes but I think that no garbage collection was not a weakness of Objective-C. Actually I think its a strength as you as a developer had to think about what you were doing and you had to show some discipline while programming.
With Objective-C 2.0 this is gone and you have boring and automatic garbage collection, so developers can be lazy again and don’t care about memory management anymore. That’s a sad day…

New Projects: Apache Sling and Apache Sanselan

Still, there are more and moe projects getting into the Apache incubator – I’m currently involved into two of them: Sling and Sanselan.

Sanselan is a pure-Java image library for reading and writing a variety of image formats. It has been started by Charles M. Chen some years ago and is imho a great open source java image library. There are so many of them out there and most of them are either outdated or unusable. But Sanselan is different, it has a simple api, the right license 🙂 and supports many things. I’m happy that I could convince Charles to move Sanselan to Apache.

The other project I’m involved with nowadays is the Apache Sling project – we currently call it web framework for content-oriented applications. So guess, what, it makes the development of JCR based applications much easier. Sling is meant to run in an OSGi environment, so we enjoy all the great dynamics and modularization of OSGi through Apache Felix. We have also contribed some stuff to Apache Felix – most notably the maven SCR plugin – which makes developing services for OSGi much easier.

If you attend ApacheCon US, you have the chance to hear some fast feather talks about these projects! And hopefully we’ll have some “real” session at ApacheCon EU in 2008 🙂

Cocoon GetTogether 2007 in Rome

On wednesday I’ll fly over to Rome to attend the next edition of the famous Cocoon GetTogether – with two days of Hackathon and one day of presentations this is a nice mix I’m really looking forward to. On Friday, it’s Bertrand and me, talking a little bit about the past (Avalon) and the future (OSGi) of web applications 🙂

It seems that I was too dumb to publish this entry weeks ago. 🙁
But as you’ve most likely seen from other blog entries the Cocoon GetTogether was a success and fun at the same time. Thanks to Daniel I could see the Spring OSGi stuff (Spring Dynamic Modules for OSGi) in action and I must say that I think its a configuration nightmare. Apart from your usual Spring bean configurations you have to additionally define which beans to export and what to import etc. I think this can be easily automated – I hope to have some time to look into this in December.

And as everyone else, I’m looking forward to the Cocoon GetTogether 2008 🙂

Maven Release Plugin Removes Headers

In the past weeks I did several releases using the great maven 2 release plugin. And each time I got annoyed that it removes the license headers (or every header) from the pom. According to the issue tracker this has been fixed in beta-5, but actually it hasn’t (see this bug).
After being effected by this bug for far too long, I tried to find the problem. It started out, that there are poms where the license is not removed. So I tried to find the differences and then looked at the code of the maven release plugin (or precisly the underlying release manager doing the work). The current approach is very problematic as it tries to get around several known issues with the used xml implementation – this will lead to problems as soon as implementation details change and as apparent has already problems: for example it depends on the way you specify the namespace and the schema!
Fortunately there is a workaround (I mention it in the bug), but I really hope that this approach will be replaced with a more robust solution very soon!