Avalon is the J2EE of GUI APIs.
Miguel’s post originated from a conversation I had with him yesterday at the Lang.NET Symposium. It seems weird to see the remnants of that conversation immortalized on the web. (I also feel bad for Sun that the term for their technology, J2EE, has acquired an unflattering second meaning; even the Sun rep at the symposium, humorously remarked that he actually worked for J2SE, not J2EE.)
I had watched Miguel’s talk on Tuesday on the “Mono” project. He’s an entertaining speaker, who detail the history and purpose of the Mono mission (which, by the way, includes taking over the world.)
I introduced myself to Miguel, telling him, “oh, I wanted to meet with you.” I then reminded him of our brief prior intercourse in cyberspace. He seemed confused. I pointed to his critique of Longhorn changes, especially involving complexities found within Avalon. The post made Slashdot and instantly brought traffic by way of Chris Anderson to my blog post on XAML and Standards. I followed up with a blog post “Avalon Throwaway” to which Miguel responded in a comment.
I brought up the question of frameworks. I used to be an admirer of Java’s framework, particularly with the collection classes, which seemingly was better designed the the original v1.0 collections namespace in .NET. Maybe I had an inherent biased towards APIs that originate from academic circles. I, however, lost any admiration after the birth of J2EE when Java went enterprise. Miguel didn’t think much of J2EE either.
I did mention my disenchantment with the MVC paradigm, and my movement to a more persistent framework. Miguel said that he wasn’t familiar enough with functional programming to provide an answer.
I asked him then about his opinions on various frameworks, first with Avalon, since our past communication was linked together by posts we had each written about Avalon.
ME: What do you think about Avalon?
MIGUEL: It’s the same thing. It’s the J2EE of GUI APIs.
I was taken aback. I remarked well there were two versions of Avalon, and I agree the first one was absolutely complex, but that I thought Avalon was headed in the right direction. The model was more declarative and include markup support; it was relatively simple and easy to construct a user interface.
Miguel then came up with a counterexample. He talked about the lengthy inheritance chain. Despite that complexity, Avalon doesn’t have a tree control; one has to fake a tree view through a list control. My unstated opinion on the matter is resource constraints. There is only a limited amount of work that can go into version 1, but future versions will probably make that a priority.
I asked him about future support for Avalon in Mono. Unfortunately, Miguel said no way; he just wasn’t ready to waste time on an overcomplicated user interface framework. I asked him if he had seen any Avalon demos; he indicated he had seen many, but he didn’t seem impressed.
I went through various frameworks in the Macintosh and UNIX world like NextStep, Cocoa, and Motif. It just seemed like he didn’t like any framework. Now, what about WinForms, which is currently being implemented in the Mono project. Obviously, it’s worthy for his consideration; he doesn’t consider WinForms a framework, merely just a “wrapper” for a Win32 API.
“Well, Is there a framework that you do like?” I asked. “No, not yet,” he replies. I pretty sure that he wasn’t actually including the user-interface toolkit GTK, because he touted some of its benefits over WinForms such as dialog layout.
Throughout the Mono presentation, I was dazzled by the animations and 3D effects of his desktop environment with the realization that both the Linux and the Mac world had left Windows behind with Vista struggling just to catch up. [Here are sample videos of all 3 OSes in actions.] I asked him what desktop environment he was using in the presentation. He said Gnome, and that he heads the Gnome Project. It was like a double whammy. First, the environment is so cool, and, second, that I am talking to its creator.
It was wonderful to meet and talk with him. It’s nice to meet a celebrity.
I did meet about four people who wanted to greet me in the conference. One time, I was busy typing away at my computer. A guy jumps into the seat in front of my view, who wanted to meet me. I don’t know why; what have I actually done in my life?
GUY: Oh, I wanted to meet you (just as I had greeted Miguel.) I am Stephen Lees. I commented in your blog once.
GUY: It was about LINQ.
ME: I don’t really recall your name. Who are you?
GUY: I am the Group Program Manager of the VB team.
My memory started to rejiggle a bit. I did recall a PM from the VB team, asking for my thoughts… and I actually referred to him by name in my blog post “Late Binding Suggestions for VB 9.”
Sometimes, I think no one reads my blogs, based on the number of comments I get compared to what Jeff Atwood or Rory Blythe achieve on a regular basis, but then their posts are also more approachable than mine. Then, I surprised whenever I go to a conference, I find that people staring at my name badge and responding, “oh, I read your blog.”