Project Status (28 Jun 06): Timers have been added. The Common Lisp server is functional with many widgets implemented. The C client and server are maturing rapidly. There is a QT port of the client which needs work. The Java server is partially functional and is currently looking for a maintainer.

What is NTW?

NTW is a collection of three things:
  1. A protocol used to describe GUI widgets and events.
  2. A client program which displays widgets described by the protocol and sends back events to the server.
  3. A set of server libraries in various languages used to write GUI apps that use the NTW protocol to communicate to a client program.
In short, NTW is useful for the type of web applications that people are trying to write using a web browser with "AJAX" but finding that approach too limited/non-portable/broken/difficult.

What are the benefits of this approach?

  1. Speed -- Remote apps can run at a speed which is nearly indistinguishable from a locally running application. Since the client draws the widgets natively, it's not necessary to transfer graphical data, only widget state data. This can be done asynchronously, so the responsiveness of the UI never suffers.
  2. Persistence -- It's just as easy to write the NTW protocol data to disk as it is to the network, so the state of the entire GUI application can be easily saved. This also happens transparently, so the developer doesn't have to spend any time loading and saving data. Also, if a network connection dies or the client computer loses power, the application can be restarted from the point of failure at the next connection.
  3. Portability -- using the protocol, an NTW server application running on a Unix machine could talk to an NTW client for Windows, and vice versa. So a developer could write a program on Linux that could be run from any OS without any porting necessary. Any language or platform that can read and write data to a network can use the protocol to create GUI apps.
  4. Scalability -- Since the NTW server does not store or draw widget graphics, the memory and computational overhead of running an NTW application is much less than a comparable X Window application. A low end machine could easily serve hundreds of remote clients.
  5. Productivity -- Users can run NTW apps without installing anything but the client. Developers can release new versions of their apps without the users having to do anything, much like a web page.

Are there any drawbacks?

  1. Flexibility -- Developers are limited to the set of widgets that NTW provides. Other than changing the client, there's currently no way to add widgets. However, NTW does provide a full complement of the standard widgets in a toolkit, and we'll continue to add widgets once the API is stabilized.


The author may be contacted via email drblast(at), and any feedback is welcome and appreciated.