I normally don’t do all that much work-related traveling. A couple of trips to Oracle HQ every year. A conference here and there. Manageable.
The last two months have been quite a break from my typical travel pace. I have attended four conferences in three countries in order to present seven times (plus a BOF and a panel) on four different topics with three different co-presenters. What could possibly make me abandon my co-workers, friends and especially my wife for such an extended period of time you ask? Why, JSF 2 of course!
Heh. Not sure whether that came across in quite the right spirit. I can imagine the tweets now:
JSF EG member admits that JSF 2 causes you to neglect all of your worldly responsibilities. #jsf #fail.
Perhaps I should clarify.
The arrival of the JSF 2.0 specification back in June was a huge step forward for the world of JSF. However, the specification is only a starting point. We won’t get very far without an implementation of the spec. (Mojarra shipped its production release in October. MyFaces 2.0 work is underway.) We also need compliant versions of widely used component sets/extensions. (All of the major component/extension vendors are already focused on this and committed to supporting JSF 2.) And finally, we need to spread the word: JSF 2 is here!
Which brings me to the subject matter of this blog: my recent travels!
As just about everyone in the Oracle universe knows, October is OpenWorld season. Somehow after 16 years at Oracle I still had not attended this conference. As luck would have it, this year my opportunity to attend finally arose. Jim Driscoll and I secured a spot for a joint presentation on JSF 2. Jim and I had worked together on JSF 2′s Ajax support, but only over email and conference calls, so I was happy to finally have a chance to spend some time together in real life. Or, as close to “real life” as Moscone during OOW can be considered anyway.
Our Complete Tour of the JavaServer Faces 2.0 Platform session (slides) was inspired by a webinar that JSF 2 co-spec lead Ed Burns gave back in May. Of course, with so many new features in JSF 2, a truly “complete” tour is a challenge. Jim and I hit the highlights, covering Facelets, composite components, Ajax, view parameters, system events, resource loading, partial state saving, etc… (If these topics aren’t ringing any bells for you, you might want to check out What’s New In JSF 2?.)
In spite of some pre-talk nervousness (me, not Jim), the talk went smoothly. The audience seemed engaged and asked good questions (component compatibility, session state footprint, view actions). Sitting front and center: Cay Horstmann, prolific author and blogger. How exciting to have the author of both Core Java and Core JavaServer Faces (JSF 2 edition coming soon) sitting in on your JSF talk! Cay even included some nice comments on our talk in his write up of OOW Day 1.
Unfortunately I didn’t get to spend as much time as I would have liked at Moscone. However, I did have the pleasure of seeing my Oracle colleagues Matthias Wessendorf and Frank Nimphius present on our project, ADF Faces. Matthias and Frank had an excellent rapport and presented the subject matter in a fun, compelling manner. The audience was clearly intrigued. The demos of the ADF Faces table component (which supports data virtualization and Ajax-based scrolling) and active data (our Comet/push solution) were particularly well received.
We capped off my OOW experience off with a visit to the Howard Street tents followed by dinner with my Oracle cohorts plus Jim. All in all, a great start to my JSF 2 tour!
After a couple of weeks of down time (and by “down time”, I mean madly working around the clock in a desperate attempt to finish preparation of three presentations that I would be giving at upcoming conferences), I was off to Munich for W-JAX.
My W-JAX plans had taken shape months before, roughly around JavaOne 2009. Both Matthias and I were in attendance and took advantage of the lovely Bay Area weather for a side trip down to Santa Cruz. Along the way I described some presentation ideas to Matthias.
As luck would have it, Matthias was looking for speakers for the W-JAX JSF Experts Day. After some discussion between Matthias and the conference organizers, we had two session slots lined up for my first ever European conference.
First up was a web framework comparison talk titled “Component Framework Primer for JSF Users” (slides). I decided to focus on three web frameworks: JSF, Wicket and Tapestry, as these frameworks share characteristics (server-centric, component-based) that make for interesting comparisons. I provided a quick introduction to each framework and then compared key functionality including: page definition, binding, event handling, Ajax, navigation, input processing and custom component development. The presentation contained code snippets for each topic as well as commentary on the solutions provided by each framework.
An obvious difficulty when performing any sort of comparison that involves competing technologies is doing so in an objective manner. This is especially true when the person doing the comparing is an advocate for one of the technologies being compared! It would have been easy to use this time to promote JSF by fixating on negative aspects of the other frameworks. (All frameworks have flaws of course.) However, this approach didn’t feel compelling to me. Instead I decided early on to use this as an opportunity to understand the strengths of each framework. Admittedly, my reasons for doing this were selfish. I was hoping that by looking at what Wicket and Tapestry do well rather than where they fall short, I might take away some ideas for ways in which we can further improve JSF in the future.
Forcing myself to learn two other web frameworks turned out to be a great experience and, well, fun. I found it fascinating to see how the frameworks approached problems from different angles. (I’ll save more detailed thoughts on this for another blog post.) I am not sure whether everyone in attendance found this topic quite as fascinating as I did (I am a framework geek after all), but my audience did seem to enjoy the quick tour of these three frameworks.
My second W-JAX presentation, “JSF Component Behaviors – Deep Dive” (slides) was on a more inward looking topic. The JSF 2 component Behavior API grew out of our effort to integrate Ajax into the JSF 2 specification. The Behavior contract provides the mechanism by which Ajax “behaviors” are attached to JSF components. By generalizing this contract we hoped to facilitate attaching other types of client-side behaviors and as such not limit our solution specifically to Ajax. This talk explained the Behavior model in detail and walked through the steps/code involved in implementing Google auto suggest-style functionality on top of the new JSF Behavior contract.
I thoroughly enjoyed researching/giving this talk as well. I felt like it had a good mixture of commentary, code and, a first for my talks: a demo! Fortunately the demo gods smiled on me: my auto suggest implementation was working in fine form.
Outside of my talks, I had a wonderful time at the W-JAX conference and even made it out of the conference hotel once or twice to experience a bit of Munich. See What Do JSF Guys Do In Munich? for details.
I always enjoy spending time with Matthias, but it was especially fun to hang out together in Germany, as all of our past adventures together had been in the US. It was also a chance to reunite with my fellow EG member Kito Mann, who I have had the pleasure of meeting at past conferences. I was particularly excited to finally meet EG member Martin Marinschek. Martin and I had worked closely on a number of issues during my tenure on the EG, and I am always impressed by Martin’s technical prowess, API design skills and contributions to the spec. I was thrilled that we were able to spend time together in Munich and feel like I have found a kindred spirit and friend.
When Dan and I first discussed the idea of a joint, cross-company presentation on JSF 2, Dan proposed that we go for a (3 hour) university session. 3 hours?! Yikes! As anyone who knows Dan knows, when Dan is passionate about an idea, his enthusiasm can quickly become contagious. I reluctantly agreed, but soon found myself excited by the prospect of an extended session. In the end, the university session approach worked out perfectly. Or, I should say almost perfectly: we ran out of time for questions! My guess is that we could have filled a four hour session. Fortunately, we had a follow up BOF scheduled for the same evening.
One reason that Dan pushed for the university session is that it would give us time to cover JSF 2 functionality in more detail than past JSF 2 overview presentations (including the one that Jim and I gave at OOW). However, there was another opportunity that the three hour session would provide. Dan, Pete and I agreed early on that we wanted to use this time not just to inform the community of new features, but also to accomplish two other goals:
- We wanted to use the (big) stage at Devoxx to engage the community and encourage community participation in JSF.
- We wanted to not just look back at the problems solved by JSF 2, but also look forward and see how we can build on top of the progress provided by JSF 2 to further improve the platform.
To get a jump start on our goal of getting the community involved in shaping the future of JSF, we decided to take advantage of a tool that would allow for some immediate interaction: Twitter! At the start of our presentation we encouraged our audience members to tweet any thoughts/questions that they might have on our presentation or more generally on the future of JSF. We recommended that tweets on this topic include the “#jsf2next” tag to make it easy to track these down. While we were first inspired to adopt this convention for our presentation, we quickly realized that this solution had utility beyond the scope of any one presentation or conference. Tweets on #jsf2next are still coming in weeks after our talk. Keep the tweets coming!
We ended up splitting our content into three major sections, in the spirit of MVC. First, I covered the “view” portion of the stack, including discussion of Facelets, component development, Ajax support, Behaviors and state saving. Dan then covered “controller” topics: navigation handler enhancements, improved GET support, view parameters, bookmarkable URLs, resource handling. Pete covered the “model”. As the project lead for Weld, the reference implementation for JSR-299 (Contexts and Dependency Injection for JEE), Pete had quite a lot to say on component models. This turned out to be a very timely topic, as the JSR-299 final ballot was underway (now approved!) as we were speaking.
For each section, we examined historical difficulties, looked at how JSF 2 and related JEE specifications (JSR-299, JSR-303) have helped to solve these problems and also discussed our thoughts on areas that could use additional attention in the future.
Dan wrapped up our talk with a section on community. Increased inclusion of the community in the development on JSF is a cause that Dan has championed for at least as long as we have known each other. Of course, a pre-requisite for increased involvement is that people need to know how they can participate. Dan tackled this topic, describing our goal of using the infrastructure (forums, wikis) provided by the (recently overhauled) JCP site for EG/community interaction. I was proud to share the stage as Dan sincerely encouraged our audience to get involved!
Our talk flew by. Aside from running out of time for questions (sorry), I was happy with how smoothly the talk went. We did end up with good attendance/participation and plenty of time for questions at our BOF that night, which also included JSF co-spec lead Roger Kitain.
As it turns out, we received some good feedback/coverage of our talk, including the first ever French-language review of any talk that I have been involved in (as far as I know anyway):
Some more comments here:
Dan shares some thoughts here:
And some additional comments here:
The money quote:
The presentation given by Peter Muir was the best of the 3.
Ha. I thought Pete did a great job too!
Seriously though, I was excited just to be speaking on the same stage as such talented and accomplished speakers as Dan and Pete. If only Pete had been a bit more clear about expressing his enthusiasm for CDI over managed beans. Hopefully we did both Red Hat and Oracle proud and provided some new insight into JSF 2 features, future and community to Devoxx.
While speaking at Devoxx may feel like playing on Super Bowl Sunday, the Devoxx conference itself still has a down to earth, grassroots feeling. I suspect that this is in large part due to the passion and vision of Stephan Janssen. Despite having to run a conference of thousands of attendees, Stephan was one of the very first people that I met as I walked through to doors of the Metropolis. Stephan took a moment to make me feel both welcome and also excited about the upcoming event. What a great way to get things started.
There were too many Devoxx moments to describe them all in detail here, but a few highlights:
- Getting to meet and hang out with my Oracle colleagues Maiko Rocha and George Maggessy.
- Watching Steve Harris give his keynote, demoing WebLogic while wearing a Glassfish shirt.
- Attending the speaker dinner at a churrascaria in downtown Antwerp. What an excellent (and delicious) event! Though, a lesson that we learned that evening: Dan and I probably should not be allowed to sit at the same table, unless, of course, you want to talk JSF/JCP!
- Meeting up with David and Jevgeni from ZeroTurnaround to discuss JRebel support for JSF. (Which somehow lead to a brief discussion of Operation Ivy. How cool is that?)
- Catching up with ex-Oracle colleagues Peter Lubbers and Jonas Jacobi who are now doing their own real time streaming thing at Kaazing.
- Bumping into Sebastian Hennebrueder, author of JSF 2 – evaluation and test followed by an impromptu meeting with Sebastian, Dan, Pete and Roger to discuss ways to address issues raised in Sebastian’s article.
- Taking a few minutes here and there to be mesmerized by the #devoxx twitter stream display. (C’mon, you know you did it too.)
- Sitting down at a table to catch up on email and looking up to see that I am sitting directly across from James Gosling.
Which, btw, presents an interesting dilemma not untypical of Devoxx… If you sit down across from James Gosling as he is typing away on his laptop, do you interrupt him to say hi, or leave James alone to his thoughts? In the 30 minutes that I sat there, at least 6 people decided on the former course. In every case, James was exceedingly friendly, attentive and gracious. Wow. Okay, so, yes, I eventually did introduce myself to James. I did my best to keep it short and avoid reverting into Chris Farley interviewing Paul McCartney form. (Andy: “And remember when you invented Java? That was AWESOME!”. James: “Umm… who are you again?”.)
On my last evening in Antwerp, I tagged along with the JBoss crew (and I mean crew – there must have been 30 people!) to dinner and drinks in Antwerp center.
Yes, there was more JSF/JCP talk between Dan and myself, but I also got to spend time with other JBoss team members, including Manik Surtani, Max Anderson, Emmanuel Bernard and Rodney Russ. It was a memorable evening and a great way to bring my Devoxx experience to a close. (Thanks for dinner JBoss!)
After a quick but much needed break for Thanksgiving, I was back on the road again. My next stop was the JSF Summit and Rich Web Experience in Orlando. While JSF Summit was the smallest conference of the four that I attended, it held an excitement for me that was different from any of the other conferences. This was the first JSF-focused conference that I had ever attended!
I had the honor of presenting three times to the JSF Summit audience. Dan and I gave an abbreviated version of our “JSF 2 and beyond” talk in one of the opening time slots. Once again we covered view, controller, model and community. Later that day I presented an extended version of my “Component Framework Primer” talk. While I appreciated having an extra 30 minutes (90 minute sessions), I also realized that perhaps two hours would have been more appropriate for this topic. On day two I gave an extended version of my “Behaviors Deep Dive” talk.
The JSF Summit experience was, in short, amazing. There was not a session that I didn’t want to see. Just about every session that I attended was packed with members of the EG and other recognizable faces from the JSF community. At OOW I had the honor of presenting with Cay Horstmann present. At JSF Summit I presented to his partner in crime/co-author, David “Mr. Harrison Ford of JSF” Geary. And not just David… Looking around in the presentations that I attended/gave, I would find familiar faces like Ed Burns, Kito Mann, Andy Bosch, Lincoln Baxter III (PrettyFaces), Cagatay Civici (PrimeFaces), Martin Marinschek (MyFaces), Jay Balunas (JBoss/RichFaces), Max Katz (Exadel/RichFaces), Ted Goddard (ICEfaces), Jim Driscoll (Mojarra) and Neil Griffin (Liferay).
But it wasn’t so much the presence of EG members and colleagues that made this conference special. The conference’s explicit focus on JSF lead to a unique interaction between speakers and attendees. Kito summed it up perfectly with the following tweet:
It’s so satisfying to see the speakers and audience interacting at #jsfsummit. Excellent sessions!
7:09 AM Dec 4th from TweetDeck
I couldn’t agree more.
Of the talks that I attended, it is hard to pick a favorite, but two talks that stand out in my mind are Cagatay’s Rapid RIA Development with PrimeFaces talk and Lincoln’s PrettyFaces – Harness SEO, Improve User Experience, Ease Development talk. These talks both covered exciting new additions to the JSF ecosystem. It was fun to watch the audience’s extremely positive reaction to Cagatay’s impressive demos, especially considering that the audience contained several members of competing component vendors. Lincoln also did a great job presenting, and it was a joy to see JSF and pretty URLs together at last.
One of the highlights of the conference for me was sitting in on a JSF expert panel. The panel demonstrated something that gets to the heart of what makes me proud to be part of the world of JSF. Sitting on the panel with me were members of competing frameworks, heck, competing companies, yet any dissension that might exist between the various representatives was left behind. It’s not every day that you see a meeting of the minds between members of the JBoss Seam (Dan Allen) and Spring (Jeremy Grelle) teams. It is certainly unusual to see these two organizations sharing a panel in support of the same technology! In a similar vein, the panel had representatives from ICEfaces (Ted Goddard), RichFaces (Jay Balunas) and Trinidad/ADF Faces (me). Again we see members of competing technologies putting aside differences in order to focus on a common goal. I have seen this sort of thing again and again over my time on the JSF 2 expert group. JSF Summit exemplified this spirit.
There were too many great moments at JSF Summit to document them all, but a few other quick recollections:
- Taking a tour of JSF Around the World featuring tour guide Ed Burns.
- Sitting in on an excellent face to face “extended” EG meeting (agenda), with discussion of community, cross component set compatibility, performance and jsf2next.
- Finally meeting my Oracle/JSF 2 EG colleague Michael Freedman and getting a crash course in JSF/portlet integration from the master of this topic.
- Witnessing Rickrolling in action, as Lincoln demonstrated the need for user-understandable URLs while simultaneously showing off his best Rick Astley-inspired dance moves. Go Lincoln!!
- Seeing some new faces, making new connections and having good talks with the likes of Steven Boscarine, Matt Drees, Micha Kiener, and Ian Hlavats.
- Monitoring Dan’s progress as he navigated his way through 8 talks in 3 days. Somehow Dan never seemed to lose any steam! (And I thought that my 3 talks in two days was a feat.)
- A couple of late nights at the Thirsty Fish with the JSF crew. (Next time somebody really needs to take a picture or two!)
- Watching my Oracle colleague and long time friend Max Starets hang out with the JSF gang, seemingly very much at home in this group.
Dan has captured many more thoughts on JSF Summit here:
Jay posted some interesting thoughts too:
Lincoln’s JSF Summit story is here:
One last, but very important highlight for me… JSF Summit saw the introduction of a new community hub for JSF users: www.javaserverfaces.org. This site is the work of JSF community activists Lincoln Baxter III, Dan Allen and Kito Mann. Well, I helped a bit too, but mostly just by providing words of encouragement. Lincoln explains to purpose of this site more clearly than I can:
I am already a javaserverfaces.org user. Been hitting it on a daily basis for easy access to the JSF 2 doc set. I am very much looking forward to watching (and hopefully helping) this site grow!
Okay, so, yes, I consider myself amazingly lucky that I was able to attend/speak at so many conferences in such a short period of time. Each conference was special in its own way, and I would love to attend any of these conferences again in the future.
While the conferences may be over, the spirit of these conferences is still going strong. The JSF expert group mailing list has seen a tremendous spike in traffic as EG members start hashing out jsf2next ideas. If you’ve been waiting for an opportunity to make an impact on the future of JSF, there is no time like the present. Check out the www.javaserverfaces.org for tips on how to get involved!
If you attended any of my talks along the way, thanks for coming! I thoroughly enjoyed presenting to you. I hope you found something useful in what I had to say.
If on the other hand, you are my manager, co-worker, family member, friend or, most-importantly, wife: Thank you for your support and patience.