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:
A protocol used to describe GUI widgets and events.
A client program which displays widgets described by the protocol and sends back events to the server.
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?
- 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.
- 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.
- 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.
- 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.
-- 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?
- 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
The author may be contacted via email drblast(at)users.sourceforge.net, and any feedback is welcome and appreciated.