Wayne Lee On jPolite : Lightweight jQuery Based Portal Framework

jPolite Portal Framework
With the proliferation of widgets and web page layouts based on user preferences, having a solid framework to push the work of managing these customized, content based and dynamically driven interfaced to the browser will certainly make for a richer user experience as well as less calls to the server. Having a framework such as this based on the hugely successful jQuery library would simply be perfect. Well, today we are joined by Wayne Lee creator of the lightweight jQuery portal framework, jPolite.
Schalk Neethling: Welcome to Open Voice Wayne. To kick things off, please tell us a little more about yourself.
Wayne Lee: My name’s Wayne Lee, and I’m working for a multi-national IT company now in Beijing, China
Neethling: Please give us some background information on the project and how it came to be.
Lee: Actually JPolite V1 was the “remains” of a large client proposal, the client had nearly a dozen customer facing web portals which were designed and built by different vendors at different times, so the user experience was a mess which made it hard to find the desired info. So the proposal was to integrate the content of many portals into ONE, with a Netvibes like experiences. Behind the scene, various approaches are used to integrate different portals, e.g., direct DB access, API, or the worst case, IFrame. The prototype was successfully demonstrated to the client, but was cancelled due to some merge-acquisition process. So the entire proposal was closed for almost a year with no signs of reopening, I then decided to reclaim the useful parts from it and donate it to the open source community. So JPolite V1 was based on an engagement prototype, with client-specific stuff removed.
The name JPolite is an acronym derived from Jquery POrtal LITE, which stands for a lightweight Ajax portal solution.
After release early this year I got lots of questions regarding various customization approaches, this made me realize that the code structure is kinda hard for people to customize and expand on so, I decided to re-engineer it from the ground up. JPolite V2 is then a complete re-design from the ground up with nothing from V1 except for the look & feel. The code structure is much clearer which makes it easier for customization, as well as integration with other jQuery plugins.
A new feature that is now being tested with JPolite is called XDO (XML Data Object), which currently supports JSON objects only. The whole idea is based on some discussion around “Thin Server Architecture” and REST architecture style, that a browser client first construct the foundation of a web app with STATIC content (HTML, CSS and JavaScript) from a web server, and then exchange only DATA (XML, JSON, TXT) with the application server, which relieves the server from the burden of generating HTML markup. This feature is still experimental with lots enhancements expected.
Neethling: How is jPolite different from other front end portlet frameworks? Come to think of it, are there other such frameworks?
Lee: To my knowledge there’s no similar frameworks. I’ve seen some jQuery or Mootools tutorials with a simple portlet demo, but to me that’s far from a working solution.
Neethling: Can you show us some code samples to demonstrate how a developer would go about using jPolite?
Lee: To customize JPolite, you can start by simply replacing the content of the various module HTML files. And then you can change the module layout and title in modules.js, with inline examples easy to understand. Further enhancements can be made in jpolite.ext.js, where you can customize the look and feel of the tabs and include various jQuery plugins as you wish. One thing to note is that you need to register the plugins with JPolite if associated HTML elements are to be included in multiple modules. You can also change the overall look and feel by modifying the sample theme files included.
Actually the online demo is basically live documentation which covers almost anything you can do with JPolite.
Neethling: Thank you for joining me here at Open Voice. With version 2.0 released what can past users of the framework expect. In closing, what are the future plans for jPolite and in what aspects can the community get involved.
Lee: JPolite is designed to be a simple yet powerful foundation for an Ajax web portal/application, and Version 2.0 includes lots more customization features based on a more modularized code architecture. I believe it has the potential to build user experiences more advanced than that of Netvibes.
About future plan, I’d like to enhance XDO to better support RESTful web apps, with optimized browser performance. For the performance on IE seems very poor compared with Firefox, Chrome & Safari. And XDO uses of chain.js as content render engine which runs cool in most cases but somehow conflicts with my own code should both sides try to apply event handlers on a same DOM node. There are work-around solutions but I’d like to solve the problem, either by working with chain.js, or build a new render engine. So I’d like those who are specialized in REST, HTML render engine as well as web-based integration (WOA or so) to join and enhance the code base to make it more suitable for consumer as well as corporate portals.
And I’d like to include better theme support to make JPolite more appealing to end users. For current customization must be done manually with poor documentation. But I have little experience in theme/skin system design, so I look forward to working with guys more experienced in theming support to make JPolite theme work better.
Last not least, I’d like to support those who want to port it to Mootools or other frameworks, since I myself only specialize in jQuery.
Hi, my K-meleon browser is rendering your site weirdly just thought you might want to know.
Interesting, first time I read about K-meleon. Wonder if the rendering engine is a older version then the one in Firefox. I will have a look, thanks!
Keep up the great work on JPolite! v2 is a huge improvement over v1. Makes me very anxious for v3.