Thursday, February 09, 2006

The Most Compelling Web 2.0 Application :: Zimbra

Without exaggeration in my mind, Zimbra is a company that is at least 2 years ahead of the game in terms of rich, browser-based application development. Two years is light years when it comes to software development. From a developer's perspective, this is the most compelling application I have seen on the internet, given it's rich, deep, browser based interfaces, and unparalleled functionality. They simply "got it right" and have set a high-water mark for others to set their sights on, while seemingly just beginning to push forward. With tremendous respect to Google, I would put this application above Google Maps in terms of technical accomplishment on the client-side UI design and execution. I say this especially given the fact that they did it when very few, if any, AJAX frameworks were in existence, let alone organized. Even today many of us are eagerly awaiting Open AJAX (which, not coincidentally, Zimbra is active as a collaborator).

Zimbra has targeted a ubiquitous application realm -- email, messaging, rss, net phone, calendar, contact managing, all integrated into one "business collaboration" app. (demo) It's a tall order to capture market share in the area of email clients, with so many players in the market, but if you take a look at the design and execution of this browser-based application in the demos of the product, it's very tight, feature rich, while also being completely intuitive and familiar looking to its PC-based ancestor. It's more than all of that though. It's absolutely inspiring in the manner in which they have innovated with AJAX interfaces and web-services to deliver a seamless integration between mail, news feeds, emerging mapping applications, and even internet telephony. It doesn't feel at all like a traditional web application, yet it is seamlessly integrated into the web. Examples that I particularly like include: within the body of an email hovering your mouse over phone number text gives you the option to directly call this person using your preferred VOIP service, like Skype or Google Talk, with the click of the link; hovering over a name automatically generates that contact's information; mouse over a date and it will pull up your appointments for that day; hover over a web-link and it shows a thumbnailed screenshot of that webpage as a preview; tag based searching, and even searching within attachments, search for Amazon books within the email client... What I find paradigm-shattering is the manner in which it is all accomplished -- it is all built using web standards, AJAX, plus server and web-service (SOAP) calls.

Zimbra and their touchstone app, "Collaboration Server", more than any one existing application I've seen, is the first to demonstrate clearly that the 'game' has changed, from a pc-based paradigm to a web-based one. I say this with knowledge and respect for the level of progression and proficiency from cornerstone browser-based applications Gmail, Google Maps, Google Suggest, Yahoo Maps. This feels just a cut above because of the rich and complete functionality and apparent maturity of their implementation and the fact that they have pioneered the use of the technologies here, many of which are captured in their free, open-source Ajax Toolkit that they openly share with the community: AJAXTK.

The company is also directed by some of the web-digital elite, as can be seen by those on their Board, with seminal figures from Netscape, BEA and guiding presences from those involved with NetFlix, RedHat and open-source stalwarts like mySQL. This is also clearly evidenced in small part by the open, coooperative communication they offer regarding their strategy and philosophy. They are openly engaging the community for ideas, concepts, along with technology partners for 'Zimlits', while giving us individual developers an AJAX Toolkit (AJAXTK) so that we can utilize some of the same libraries and high level function calls they have used in construction this remarkable application.

If you are a developer, or just someone interested in technology, you have to check out the hosted demo to see for yourself what is the present and near-future cutting edge of interface design and execution on the web. This is a great inspiration on many levels to me.

Our software worlds are inching their way towards the rich interface, and browser-based paradigm, but this Zimbra team appears to already be there.

-Mark Holton

Tuesday, February 07, 2006

Flex is not AJAX

In my experimentation with the Flex 2.0 builder BETA, I'm excited. Flex is already a very rich interface creation tool. I've barely scratched the surface in my experimentation the last couple of months, but it makes my head spin with the possibilities for rich interfaces. When the opportunity presents itself, it's going to be great to develop in Flex, and leverage the work Macromedia/Adobe is continuing to put into that. Adobe continues to innovate with ColdFusion, and the Flash Platform with Flex, and have released the ColdFusion/Flex connectivity BETA.

That being said, Flex is not AJAX -- according to Jesse James Garrett in an AJAXIAN podcast, the AJAX realm is characterized by using free and open web standards (CSS, DOM, javascript...and XMLHttpRequest / XHR object, even though it isn't a W3C standard) to communicate with the server asynchronously. This distinction makes sense after developing a bit using both Flex and AJAX. Yes, Flex and Flash have the capability to communicate between the browser and the server asynchronously, without page refreshes, as does AJAX. But Flex is a rich, proprietary tool that enables much more than what AJAX does. The statement that "Flex is not AJAX" is in no way a knock on Flex, but rather it's a qualification that Flex is a rich, proprietary tool, and therefore requires knowledge of proprietary standard based languages such as MXML and Actionscript in order to fully realize the potential of a Flex RIA.

Aside from capable, yet independent efforts like CFAjax, and AJAXcfc, Macromedia/Adobe does not have a committed company effort (that I know of) to integrating open source, client-side technologies that make up AJAX with server-side ColdFusion. I bring this up because of the tight integration between Prototype and Ruby on Rails that has seen some significant growth and high-profile applications like those pioneered by 37 signals. While ColdFusion developers can work to integrate javascript libraries like Prototype (its subset, DOJO, etc... there doesn't seem to be a move from Adobe (yet) to tightly integrate with AJAX. It is my hope that something comes out from Adobe's camp that changes this perception.

From my perspective in development, AJAX will become ubiquitous in high quality "web 2.0" applications. There will be many instances of AJAX that become commonplace in these apps that deliver a clean, rich, efficient user-experience. Supporting ColdFusion developers in giving us tightly integrated toolsets for asyncrhonous client-server features would be very helpful and help grow the user-base of the language. In no way would supplying this tight ColdFusion/AJAX integration undermine the efforts of Adobe with the Flash Platform and Flex, as that group of applications appears to be set for a different market, given the features of a Flex RIA and likewise the requirements to become proficient in the languages required to develop an RIA in Flex. However, one way or another, if web application developers who primarily develop in ColdFusion do not get on board developing AJAX applications, they will no doubt be behind the curve. It is my hope that Adobe and the ColdFusion group help us out in this regard. Perhaps their answer is related to the recently announced Eclipse AJAX Toolkit Framework.

Saturday, February 04, 2006

Eclipse :: AJAX Toolkit Framework

The world of AJAX is getting much more defined, and much more exciting.

Though DHTML was around since like 1999, AJAX has been exploding in the past 2 years (since Jesse james Garret of Adaptive Path coined the term AJAX when presenting a high-level explanation to a large customer trying to effectively communicate the Javascript, DOM, xhtml, CSS, etc combination of effects he was planning to implement for them. See interview with JJG here) Already in 1-2 years, there are many frameworks for AJAX (prototype, DOJO, moo.fx, scriptaculous is a subset of prototype, RICO… the list goes on and on and on, and it grows all the time). As a developer, what do you choose? You’re not going to write your own, that would be very inefficient. There are so many choices, how do you know what
works/ best fit for your app?

You need some framework because you don’t want to develop all the main function calls, all of the effects, testing methodologies, etc. yourself. Plus, What do you use to test all your code? There are a variety of these springing up as well.

What is in the process of doing is bringing together many of the main players who (are mostly already open source themselves) want to contribute to a large robust “AJAX toolkit framework” that includes standards for plugins, real testing, syntax validation, previewing in the browser (Mozilla is involved), debugger, WSIWYG editing, etc.

It is exciting news as it will make AJAX development much more efficient and robust as this evolves. It’s going to make AJAX a “first world” ‘technology’ rather than searching through a variety of independent, sometimes adhoc, efforts.

The part in the articles linked below about “adaptors for J2EE/ JSP” leads me to believe that there will be tight integration between languages like Coldfusion and this toolkit, similar to how there is tight integration between Ruby on Rails and Prototype. (I am very hopeful for this).

I also notice that that Prototype is left out of this collaboration, despite it being perhaps the most popular AJAX framework at present.

Eclipse AJAX Toolkit Framework:

Portions I (Mark Holton) found very intriguing and exciting:

"Main plug-ins:
Enhanced JavaScript Editing features – providing edit-time and batch syntax checking of JavaScript code.
Embedded Mozilla Browser – provides cross-platform preview of AJAX application, plus DOM inspector function via XPCOM bridge.
Embedded JavaScript Debugger – takes advantage of the Mozilla / XPCOM bridgeto provide an Eclipse-style debugging experience for JavaScript code.Personality Builder – Wizard-driven functions that allow for the easyadaptation of arbitrary AJAX runtimes into the Eclipse / AJAX Toolkit Framework."
Adapters for J2EE / JSP and Apache / PHP

" Support has been expressed by:
  • BEA
  • IBM
  • Laszlo
  • Oracle
  • RedHat
  • Genuitec
  • Yahoo
  • Zend
  • Zimbra"