Hi,

Is there any easy-to-use middleware out there for creating programs that
communicate over the network? For example, having an audio-out
daemon running on the computer with speakers and then streaming
audio there from your desktop computer and the media server in the
closet using your PDA to run the controller app.

Reason I ask is because I remembered I had some old middleware
code on top of DRb+Rinda lying around, and wondered if there are
better ways, or if I should package and release the code instead..

Features that would be nice:
  * automatic peer and service discovery
  * asking peers to start services not running
  * message multicast and anycast
  * easy API
  * peer-to-peer messages
  * works in Ruby
(---- I got this far feature-wise in my code ----)
  * proxied messages
  * authentication
    * preferably using some commonly available
      method (like ssh)
  * encryption
  * portable
  * popular

What I got now works like this:

% cat my_service.rb

# Service
require 'msglayer'
s = "MyService"
s.extend MsgLayer
s.export :upcase, :reverse!, :downcase
s.listen_at :MyService
DRb.thread.join


% cat my_client.rb

# Client
require 'msglayer'
puts MD.MyService.upcase
MD.MyService.reverse!
puts MD.MyService.downcase


% ruby my_service.rb
String: Listening at :MyService

% ruby my_client.rb
MYSERVICE
ecivresym


Good things: easy to use? automates a bunch of hard stuff?
Bad things: no authentication, no encryption, not very portable, isn't
used by millions of gnome and kde apps out there.

Opinions? Is there something like this already?
Should it use something else than DRb? How?
What color are my black socks when it's sunny?


Ubiquitously yours,
Ilmari