rappd 0.2.0 review
Downloadrappd (Remote Applications Daemon) provides the server side of rapp
|
|
rappd (Remote Applications Daemon) provides the server side of rapp. When connected, the server sends out XML descriptions of graphical interfaces (widget hierarchies) which the client renders.
Actions on interfaces are communicated back to the server which then updates the interface.
rapp (Remote APPlications) is a way of doing remote application deployment in a fairly simple way. There are plenty of things in this arena already, but I thought I'd add to it anyway. It's is now in a kinda-working state, but the code that's there needs some tidying up -- something for when there's more time.
Rationale: It's probably worth mentioning a few words about why this exists (for my own justification if no-one elses!). Every time I've written a graphical application, and with little exception, it's been a mess.
Generally speaking, the way in which humans interact with graphical user interfaces is far detached from the logic of the program underneath it. GUIs have a kind of concurrent behaviour; the user can click on any button at any time (more or less), generating actions that the program must respond to.
Object-oriented environments (e.g. Java/Swing and C++/WG) typically tie interface components to "objects" in the program. Lovely abstraction, but the concurrent aspect of interfaces breaks this somewhat. Either it's free-range concurrency (e.g. the "event thread" with Swing), or strict serialisation through an event loop (e.g. what WG and many other toolkits do).
The most fitting language is one that is itself concurrent (e.g. occam-pi), since autonomous "processes" can be used to represent interface components. Simple interfaces are manageable with either technique, to a greater or lesser degree, but things get increasingly less pleaseant as the interface complexity grows.
A typical example might be some kind of control interface, where some data is updated in real-time, the user is interacting (clicking buttons, etc.), and those interactions cause other parts of the interface to change. Altogether, it's not an entirely nice situation for the application program. RAPP is an attempt to make the application/interface bridge a little nicer for the application.
The theory is that if an application and its interface are detached in some way, the scope for what can go wrong in their linkage is limited. It does mean, however, that the interface side needs to be aware of some extra (application related) things, e.g. that clicking a certain button should "suspend" the interface until it is updated (preventing the user from clicking other buttons etc. in the meantime).
Requirements:
Micro Window-Gadgets
rapp
What's New in This Release:
Configuration was improved.
Support was added for users, groups, and public-private key authentication.
Protocol updates and code cleanups were done.
rappd 0.2.0 keywords