Archive for March, 2007

Moving Wicket through the Apache incubator

Friday, March 30th, 2007

The Wicket project is undergoing incubation at Apache and we have entered the next stage. The last couple of agonizing weeks we have tried to mold our project and maven build to behave to our expectations.

The title ‘incubator’ is very fitting as I think the hours of missed sleep while nursing our project and taking care of our build seem similar to a new born child (don’t have one yet, but I notice the dark edges around the eyes of new fathers often enough).

We managed to get our release wrapped and vetted by our community. Just a hour ago I submitted our incubator release to the Incubator PMC and try to get it approved. Note that this release is not for the general public, and I won’t provide a link to it (the code base itself is already 2 weeks old, so you’d better build from our development stream anyway).

When this release gets approved by the IPMC, we will have solved our legal issues, and we can then ask for graduation, provided we match the other exit criteria.

IBM Support for Wicket, contracts signed

Monday, March 26th, 2007

Just for the record: this is an early april’s fools joke, expanding on what Francis Amanfo sent to the user list. Thanks for this one Francis!

I’m quite disappointed that Francis Amanfo leaked the IBM internal memo that they will use, promote and support Wicket as their web development platform of choice. I am suprised that he got hands on the memo, and I hope that this will not in any way hinder my negotiations on my planned move to IBM. Now that it is out in the open, I think my NDA no longer holds, and I can speak freely.

Francis writes:

An IBM internal memo, written and signed by product manager, Tim O’Malley, has been leaked. Well, to be more direct, a friend of my working with IBM leaked this to me. In it, IBM praised Wicket as an innovative and state of the art web framework that stands up tall against all its competitors including JSF, Struts 2 and Tapestry.

In the memo, IBM mentions some of it’s frustrations with JSF and
about Sun not listening to them during the creation of the JSF specification. In the memo, IBM also praises the Wicket team as very hardworking and dedicated guys and is in negotiations to employ them into IBM and make them work on Wicket
and sell support under the umbrella of IBM.

The memo also goes further to announce IBM’s plans to integrate Wicket into it’s JEE offerings. To be more specific, Wicket would be Integrated into RAD 8 as the default Web framework, which it plans to release in the fourth quater of this year.
The memo also states IBM’s plans to create widgets, which it plans to market under the label WICKED Widgets, of all the standard Wicket components and enable drag and drop development in RAD 8. It would also make WICKED© widgets standalone for separate downloads.

My contract starts next sunday, so I’ll be packing my stuff into moving boxes. Being able to work on Wicket during office hours will make my life so much easier. Thanks IBM!

Bonaire diving pictures

Thursday, March 15th, 2007

I overheard that one of our core committers is going on a holiday to the Maldives for diving, surfing and swimming. I know that we have another avid diver in our Wicket core team, and that he also makes underwater pictures (I just haven’t seen them yet). I’ve uploaded some of my diving pictures to my flickr account.

Moray eel looking for a fightWe had a small discussion on how to make underwater photographs, and having minor experience myself with some equipment I told them that you need:

  • an external underwater flash
  • a digital camera with a underwater house

The external flash is necessary because you loose a lot of light when you are already 3 feet under water. In crystal clear water that is not necessarily a problem, but when you are diving at 12 meters (40 feet), the light conditions are not favorable. Of course you could use your own internal flash, but then most photos will look like you’re in a blizzard instead. This has to do with the directionality of your flash light in relation to your photo. Head on flash will illuminate all particles between you and the subject. When you flash from a 45 degree angle, the particles most likely not be present as much.

FirewormThe digital camera is necessary to get instant feedback. You will be underwater for at most 30 minutes or so, and have at most 2-3 dives per day. When you use an analog camera, your learning curve will be severely low. Missing fishes, wrong light, half fishes, too far away fishes etc. All these things can be prevented mostly by the direct, instant feedback digital camera’s provide.

As an example I uploaded my second diving trip photo’s taken on the fabulous island of Bonaire, using a Canon A-75 digital camera with an external flash. I’ll spare you the pictures we took the holiday before in Florida with an analog camera without external flash. Those were pretty pathetic.

I am not an authority on photography, but if you want to take pictures while diving, you’d better buy this minimum equipment.

Curtain closes for wicked constructor change

Thursday, March 15th, 2007

The vote is running, and things are looking bleak for the wicked Wicket 2.0 constructor change.

What is that constructor change you might ask? Well, currently you construct your component hierarchy using an add method as can be seen in the next example:

public class MyPage extends Page {
    public MyPage() {
        add(new Label("label", "Hello, World!"));
        Form form = new Form("form", ...);
        form.add(new TextField("field", ...));
        add(form);
    }
}

As you can see, you can construct components and add them to the component hierarchy at will. This has advantages and disadvantages. One disadvantage is that you don’t know the component hierarchy until render time. This puts extra burden on building Ajax components that require to know the markup id to do some JavaScript magic.

You can’t use some functions in your component constructors, such as getPage (the component isn’t added to the page yet), getMarkupAttributes (you don’t know where to look for the tag of the component, it is not added to the page).

There are more motivations to embark on the quest for the Holy Grail, and we went for it. The previous example looks like the following in the post constructor change (SWT style component wiring)

public class MyPage extends Page {
    public MyPage() {
        new Label(this, "label", "Hello, World!"));
        Form form = new Form(this, "form", ...);
        new TextField(this, "field", ...));
    }
}

As you can see, we now provide the component constructor with the parent, solving the previous gripes. After working about a year on it and with it, we found that the grass actually isn’t greener on the other side. Going back and forth, we now have a vote on the future of the constructor change:

When What
Now Backport the Model refactor and other remaining non-JDK-5 features from 2.0 to the 1.3.x branch.
Soon Release a 1.3.0-beta to the community.
Soon Release a 1.3.0-rc1. [2, 3, etc. if required]
A bit later Release a 1.3.0 final.
Fork a 1.4.x branch from the 1.3.0 release.
Apply generics and other JDK-5 features to 1.4.x branch.
This will make 1.4.x look just like 2.0, but with the same
constructor/add logic as 1.2.x/1.3.x currently have.
  • “now” ~= right now.
  • “soon” ~= within a couple of weeks.
  • “A bit later” ~= within a month or so.

We will discontinue support for 2.0 once we have branched 1.4.x and
added generics support into it, at which point the 2.0 branch will be
renamed in subversion and left to stagnate.

As already thrashed out in various discussions, this will achieve the
following:

  • Provide a migration path for 2.0 users within a month or so, so they
    are not left high and dry. 1.4.x will be basically the same as 2.0
    currently is, only with the constructor change backed out.
  • Give us two branches that will be very similar apart from JDK 5
    features, and thus make it easy to back-port fixes/features from
    the 1.4 branch to the 1.3 branch.
  • Give us a 1.3.0 beta that is feature-complete, and thus make
    upgrading from beta >> RC >>final releases trivial.

I voted +1 for this, because I think the API break creates a too big chasm in our community, which would force us to fork our effort or to abandon (the larger) part of our community. Both are things I don’t like. The upgrade path seems reasonable and will not let our early adaptors out to dry. Yes you have to do some effort to revert the constructor change, but we will do our best to get the other features as quickly available in the current and next Wicket version as possible.

Google Mail hates and loves

Saturday, March 10th, 2007

I’m an avid user of gmail and since I have started using it I think it is the best thing since sliced bread. As with all webbased mail services the best part is also its weakest part: the mail is always available, provided that you are online. Last week I had to stay in a holiday vilage without internet access inside the appartment, and that made reading and sending mail quite troublesome, not to mention it showed how much dependent we (I?) have gotten on being online.

IMAP is a much better protocol, but the problem is that I find email clients quirky at best compared to the gmail reader where you can read a discussion (which happen a lot on the @wicket-user and @wicket-dev lists) in one go. The Google mail interface shows the whole discussion without threading. It took a while to get used to, but when I noticed that keeping up with the mailinglists was considerable less effort than before (somewhere around one quarter of the effort and time before gmail), I was hooked.

The likes of gmail:

  • always available - just start up any browser and voila
  • zero configuration - no need to do any configuration of mail clients
  • quick - depends on the internet connection and browser (safari load times can be long)
  • reading discussions - read all 19 messages in a dicsussion in one go, no clicks required
  • massive storage - 2.5Gig’s of mail storage is a lot

Dislikes of gmail:

  • not available offline - you can’t respond to messages in your inbox without being online
  • claiming of browser tab - when you open gmail and other tabs to start your online day, gmail focusses its browser tab

What is scary but often also very funny are the google ads displayed next to heated discussions on developer forums. I often saw ads for communication consultancy firms, process improvement etc.

GMail is probably the biggest reason why Wicket’s user and development list is highly regarded as fast, quick and friendly. The core developers are able to keep responding to the onslaught of messages by using this web mail service.