Archive for the ‘itop’ Category

The sessionLink

Wednesday, June 3rd, 2009

The Drupal WebOS provides several services to the Ext Webtop. The structure of these services are well described and they can either be static or dynamic in nature. The difference between static and dynamic services is that the dynamic services can be seem more as a stream of information and they can be used to provide users with (almost) real-time updates. If there is a great number of dynamic services being requested at a given time, however, the performance of the application can suffer substantially. To solve this issue, we present the sessionLink.

The sessionLink is a service that follows the publish/subscribe pattern and provides users and applications with updates for subscribed services. For example, when a chat application is loaded in the Ext Webtop, the Webtop subscribes to the user.im service to be kept aware of any updates.

The following is a simplified description of the user.im service:

{"method": "user.im",
"args": [
{"name": "uid", type: "int", "desc": "User ID", "required": "1"},
{"name": "msg", type: "string", "desc": "Message", "required": "1"}
],
“type”: “data”,
"sessionlink": "payload",
"time": "2000",
"sid": "14"
}

The “sessionlink” can either be set to none, payload or timestamp. Services by default are static and there is no need to define sessionlink. A dynamic service on the other hand must have “sessionlink” set to payload or timestamp. When payload is set, the session.link service will return the payload for the subscribed method. Otherwise, if timestamp is set, it will only return a (unix) timestamp, thus requiring the Webtop to make an additional call to receive the update. For applications like chat, where speed is essential and the content is small, it’s recommended to set sessionlink to payload.

The time can also be set. This will help determine how often the Webtop will have to poll the session.link service. The lowest time of the current set of subscribed services is used. For example, if the Webtop is calling session.link every 30 seconds and the user loads the chat application, then the Webtop will start polling session.link every 2 seconds (2000 milliseconds).

The subscriptions are managed automatically by the Webtop by calling the session.subscribe service:

http://webos.iss.im/services/json

method=session.subscribe
sid=14

The user.im service has a sid (Service ID) of 14. The session.subscribe service actually handles sid as a string, thus enabling the Webtop to subscribe to several services at the same time (just use a comma to separate the sids).

To unsubscribe, there is the session.unsubscribe service that works the same way. If the user closes the chat application and he or she is not talking to anyone else, the Webtop can unsubscribe from the user.im service:

http://webos.iss.im/services/json

method=session.unsubscribe
sid=14

In conclusion, the sessionLink is a key component that helps the Webtop to be kept aware of any updates in an easy and straight-forward way. This component will help developers create applications that provide real-time collaboration and offer users a more seamless experience.

Ext Webtop Overview

Wednesday, March 25th, 2009

The Ext Webtop offers a familiar desktop environment that allows users to access services and applications over the Web. The interconnected nature of the Web has inspired the creation of a  distributed desktop, where users can easily share data and services with their contacts. The figure below is a screenshot taken from this environment.

The Drupal WebOS serving the Ext Webtop

The Drupal WebOS serving the Ext Webtop.

The Ext Webtop provides the following features:

  • Browse & Scroll: Browse linked services. Go back and forth. Fetch live data as you scroll;
  • Search & Filter: Search as you type. Show extra fields inline. Rank and filter large data sets;
  • View & Open: Select multiple items and perform actions. View media. Open new instances;
  • Contacts: List contacts. View profiles. Keep aware of updates. Share and interact with users;
  • Channels: Discover and subscribe to channels. Syndicate new entries or recommend others;
  • Networks: Access a new set of services by connecting to different networks securely;
  • Search: Search for both structured and unstructured data in multiple networks;
  • Sessions: Save sessions for later. Handle saved, recorded and instant sessions.

Ext Webtop and Drupal WebOS

Monday, March 23rd, 2009

The Web is evolving rapidly and Web applications are starting to reach the same level of functionality of desktop applications. Perhaps we can even risk to say that Web applications will soon surpass desktop applications in functionality given the interconnected and ubiquitous nature of the Web. Despite the differences among Web browsers, there has been an increasing convergence of standards and practices, mostly promoted by the W3C (World Wide Web Consortium) and the Ecma International. The emergence of powerful JavaScript frameworks has also tremendously helped developers to abstract beyond these differences and create rich internet applications easier and faster. Soon, users will be able to access Web applications much like they access desktop applications by using a Webtop, i.e. a desktop that runs on top of the Web browser.

In the server-side, we have seen a consolidation of the LAMP stack and its derivatives, which consists of an Operating System, a Web Server, a Scripting Language and a Database. On top of this stack we have seen the emergence of Web frameworks for managing content, users, applications and services. Notice that traditionally the management of these has been the responsibility of Operating Systems. However, this responsibility is being delegated up the stack so that it can benefit from the key aspects of the Web. This trend will ultimately lead to a WebOS, i.e. an Operating System that runs on top of the Web server.

The figure below illustrates this evolving architecture. The main goal of this publication is to explain how to develop Web services and applications following this architectural design. More specifically, the objective of this publication is to to explain how to develop Web services and applications using the ExtJS framework as a Webtop and the Drupal framework as a WebOS.

Web Architecture - towards the Webtop ad WebOS.

Web Architecture - towards the Webtop and WebOS.

Web Desktop with Drupal and Ext

Wednesday, November 28th, 2007

There has been some interesting developments combining Drupal and Flex. Drupal is an excellent CMS (Content Management System), while Flex is a great technology for building RIA (Rich Internet Applications). Using Drupal as a backend and Flex as a frontend, it’s possible to achieve outstanding results.

An alternative to Flex is AJAX. JavaScript libraries are becoming mature, and since JavaScript interpretation is native to browsers, the use of AJAX is an attractive solution. One fine example of what can be accomplished with AJAX is the Ext JS library. With Ext, it’s possible to emulate quite nicely a Desktop on the Web.

To create a Web Desktop using Drupal as a backend and Ext as a frontend, we need to use the Services module. The Services module allows a Drupal site to provide Web services via multiple interfaces while using the same callback code. The AMFPHP module may be used by Flex applications, while the JSON server module may be used by Ext applications.

Web Desktop Shared Session

Tuesday, November 20th, 2007

I’ve been working at UFRGS building the next generation Web Desktop to help chemical engineers work collaboratively.

During my research, it was a pleasant surprise for me to stumble upon Ext from Jack Slocum, and notably the work done by Todd Murdock concerning the Start Menu.

Another remarkable work is from my friend Massimiliano Mirra called SamePlace, and notably the concept of XML Sync Islands created by Domenico De Felice.

Currently, the concept of XML Sync Islands has been developed to work over XMPP, but the same concept may work over the Web with the help of AJAX. What this means is that all the cool stuff being built by Massimiliano may find their way into the Web.

I’m building the idea of “Shared Session” into the system. From Todd’s menu I’m calling different services. Each service is loaded in a window. A user may save a session for later retrieval or he might share a session with another user. When a user shares a session, this is what happens: he closes a window, his colleague sees the window being closed. His colleague opens a service, he sees the window being opened. And using the concept of XML Sync Islands, the interaction between the users are even richer. In fact, they are the same ones experienced by users using SamePlace.

Of course SamePlace makes everything just more beautiful and responsive since it brings XMPP to the Firefox browser. It would be neat if browsers had native support for XMPP. Perhaps some day the Mozilla Foundation will recognize Massimilano’s work and other browsers will follow.