WHAT’S OLD (VISUAL JSF DESIGN) IS NEW AGAIN WITH XPAGES

Four years ago, I wrote this essay lamenting the lack of modern visual tools that can at least somewhat mimic the Notes design paradigm. Not much has changed. In fact, things have gotten considerably worse in the arena of visual forms-like tools to create workflow apps. (CAVEAT: I am not discussing the Microsoft space for myriad reasons.) To bring you up to speed: Sun’s Java Studio Creator was eventually folded into the Netbeans project as Visual Web Pack. This solution showed some promise and it looked like the JSF third-party component market was gathering steam. Everyone talks today about the need for an “app store” for their ecosystems (iPhone, Android Phones, Notes Widgets, Adobe AIR…) to saturate and it was obvious back when the JSF spec was implemented that a vibrant third party ecosystem was the cornerstone of the effort. Sadly, this never really panned out. Yes, there are JSF component makers, but for the most part, individual vendors silo’ed their JSF stacks (Oracle and IBM, to mention a few). Visual Web Pack’s open source JSF components (Project Woodstock) were EOL’ed to be replaced by the capable but not as well integrated ICEfaces set. Netbeans seems to be deemphasizing its web tools and itself has an uncertain future. So what is the state of the union (so to speak) of “Notes, Act 2?” Interestingly enough, it’s Notes! If you want to use a modern, extensible framework that combined a visual-ish design paradigm and all of the inherent security functionality of Notes, use XPages. As a design element, XPages is Java Server Faces. The cutting edge of the web development community at large has moved decisively away from even attempting anything other than code-centric development, but the visual paradigm is alive and well in XPages (and in Oracle’s JDeveloper). You get the full benefit of the Notes object model you know and love (objectively, it is that good) with modern MVC techniques and some future-proofing thrown in. As with standard Notes development for the web, you’ll need to switch in and out of the visual paradigm a great deal to accomplish anything productive, but the JSF foundations of XPapges means you’re not going to do it in a “hackey” way. “Legacy” Notes developers have the advantage over JSF programming minions of intrinsic knowledge of what I term “the zen of Notes” and have the exciting opportunity to the first truly new way of doing things since LotusScript debuted in R4 about thirteen years ago. My recommendations for Notes devs?

  1. Read Declan Lynch’s intro to XPages blog series.
  2. Read a good book on Java Server Pages (I read Kito Mann’s JavaServerFaces in Action about five years ago and remember liking it) to understand what’s really happening behind the curtain in xpages
  3. Get comfy with the c-syntax languages (Java, Javascript) -you’re gonna need to do lots of that.
  4. Get comfy with CSS. In particular, learn how to override and subclass element designs. Tip: the “C” in CSS is for “Cascading.”

You may ask yourself, why bother reading up on Java Server Pages? Isn’t the complexity hidden behind Domino Designer? And the answer is yes, to an extant, but then you’re faced with not understanding such JSF fundamentals as the difference between JSF’s session scope and a Notes Session.  (This was an actual question at Dec’s presentation at the Tristate LUG meeting Tuesday night.)  Knowing the JSF lifecyle will also come in handy when designing your app and trying to determine why and when things happen. As a rule, understanding the foundations of the technology makes the application of said technology that much easier. If this isn’t obvious to you, you’ll have to trust me on this or find a different profession.

An informal observation of Notes developers leads me to believe that there has been considerable complacency in learning web development technologies outside of Notes and a great opportunity for a deep dive seminar into the philosophy of JSF and XPages may exist. I dusted off a three-year old proposal for a JSF seminar for transitioning Notes developers that I never followed through on and wonder, with some tweaking, whether this idea is relevant to today’s Notes developer’s looking to make the transition (cough, cough, blatant solicitation for feedback in comments section) In particular, learning XPages may be a good stepping stone to being able to broaden your skill set to (gasp!) non-Notes technologies.

Just my $0.02. Let me know how you really feel.