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. rapp 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).
· Micro Window-Gadgets
What's New in This Release:
· Session handling was improved.
· A client-side explorer was added to browse server files and sessions.