SourceForge.net Logo
Home Project Documentation Download News Contact Us

Q: What is OpenXUP for?
OpenXUP is a framework for developing rich and highly interactive web applications. OpenXUP makes the rich UI capability found in desktop environment available to web applications, while maintaining the zero client-side administration advantage.

OpenXUP is a thin client based framework. That is, no application code is installed or downloaded to the client side - only UI is processed at the client side; all application logic is processed at the server side.

Q: Why yet another web application development framework?
There are quite a few existing frameworks for developing rich web applications, but they all have problems.

First, you can use "downloaded code" to create rich client-side UI, e.g. Java Applet, ActiveX, etc. With this approach, security is the major concern. As a result, many end users refuse to install downloaded code, even though it may be signed by a public CA. In addition, many organizations disallow the installation of downloaded code, with only a few exceptions for well-known programs such as Flash and Acrobat PDF Reader.

Second, there are many AJAX-based frameworks and IDEs. They provide package JavaScript components and hide browser incompatibilities to some degree. However, they have a weak foundation: browser's JavaScript engine. Every time a new version of a browser is released, not only the AJAX frameworks and IDEs must to be retested, the applications built on top of them also need to be retested again to ensure compatibility. In addition, similar to Applet and ActiveX, AJAX is also a fat client approach. With AJAX, rather than binary code, a large amount of application logic in JavaScript is downloaded and execute on the client side. Therefore, applications that heavily rely on JavaScript are subject to numerous security attacks, such as cross-side scripting and script injection.

Q: Why is there a need for a new protocol?
The existing web application protocol - form submission protocol ("application/form-url-encoded") is very primitive. The request consists of a list of URL-encoded name / value string pairs, and the response is always a full page of markup.

Most developers are already used to this now - encoding application data in name / value pairs in forms. But this is really pretty awkward. Wouldn't it be nicer to just send UI events and structured data to the server? This is exactly what XUP does: the client sends UI events (e.g. mouse click, menu selection) to the server. This allows for the event-driven style programming found in desktop GUI toolkits - applications handle UI events rather than name / value strings.

In addition, the response from the form submission protocol is a full page. This results in frequent page refreshes even though only a small corner of the page needs to be updated. Frequent page refreshes are very annoying for end users. In addition, frequent page refresh also wastes network bandwidth.

With AJAX, you can updates portions of a page by walk through and manipulate the HTML DOM. However, you have to write code yourself to do that. What XUP offers is an incremental UI updating capability within the protocol. Essentially, an XUP protocol response specifies a list of additions, removals, and updates of UI elements (e.g. button, label) and attributes (e.g. color, size). Therefore, the protocol takes care of incremental UI updates, and you do not need to write any code.

Q: How extensible is OpenXUP and what UI languages does it support?
OpenXUP is very extensible and it can support any XML-based UI languages. Currently it supports the Simple User Interface Language (SUL) and XHTML. In addition, you can mix SUL and XHTML by embedding XHTML markups in a SUL UI tree.

There are two ways to extend OpenXUP. First, you can easily extend an existing UI language (e.g. SUL) by adding new UI components and events. Second, you can add support for additional UI languages such as XAML and XUL via plug-in modules.

Q: What are the supported server-side platforms?
Currently we support ASP.NET 2.0 running on Windows 2000 and beyond. We are actively testing with Mono, which will enable OpenXUP to run on Linux, Unix, and Mac OS X. We are also considering a port of the framework to Java; i.e. running the OpenXUP server in any Java servlet container - therefore offering a Java API for developing highly interactive web applications.

Q: What are the supported client-side platforms?
Currently we support Windows 2000 and beyond, with .NET Framework 2.0 installed. We also plan to support Pocket PC and Smartphone devices running Windows Mobile 2003 and beyond, with .NET Compact Framework 2.0 installed. Other platforms can be supported when Mono's GUI capability matures.

Q: Do I need to install software on the client side?
Yes and no. If you access an XUP application directly from the browser, the OpenXUP client will be automatically deployed as a .NET smart client. This only happens the first time you access an XUP application; the client will not be re-downloaded when you access additional XUP applications. In addition, the OpenXUP client has a very small footprint, currently about 500K.

For best experience, you should install the OpenXUP client as a standalone program. In this way, the client will display an icon in the system tray and you can run multiple XUP applications at the same time.

Q: How does the client integrate with the browser and desktop environment?
Since each XUP application is identified by an URL (xup://... or xups://...), you can type the URL into your browser's (e.g. IE or FireFox) address bar, and the OpenXUP client will be automatically launched to access the XUP application identified by the URL.

In addition, when you double click on a .xup shortcut file, the OpenXUP client will be automatically launched to access the corresponding XUP application specified in the shortcut file.

Q: There are numerous attacks based on downloaded code or scripts. Is my desktop PC secure with OpenXUP?
Yes, since the OpenXUP client is a true thin client, it will not download and execute any application code. Therefore, your desktop PC is not subject to any of the security attacks resulting from downloaded binary code or scripts.

Q: What are the license terms?
OpenXUP uses GNU General Public License (GPL). That means you can use and modify it inside your organization, for both commercial and non-commercial environments. If you want to redistribute it, you must make your derived work (your application built upon OpenXUP) open source as well. If want to resell it without making your derived work open source, you need to contact us for a commercial reseller license.


Copyright 2005-2006, OpenXUP.org. All rights reserved.