[Coldstuff] ColdRPC draft

Bruce Mitchener bruce@cubik.org
Mon, 07 Jan 2002 23:28:18 -0700


xmath wrote:

> you asked for docs on the rpc protocol I'm designing..
> here is the first draft:
> 
> http://www.nubz.org/coldrpc.txt


Some comments ... I think that overall, you did a good job with this.

However, some thoughts, pointers, questions, etc for you. :)

BEEP is an IETF standard that does much of the same sort of thing. 
Information about it can be found in:

     http://agora.cubik.org/wiki/view/Main/BeepProtocol

The author of the BEEP spec also wrote RFC 3117, On the Design of 
Application Protocol, which contains a lot of solid wisdom earned over 
the years:

     ftp://ftp.rfc-editor.org/in-notes/rfc3117.txt

Also, from reading comments in the scrollback on the Cold Dark (but not 
as closely as I'd have liked due to lack of time), I saw that you were 
aware of MCP, but didn't think it was well suited, despite (to me) 
having somewhat similar goals.  Could you expand on why MCP isn't well 
suited?  If what you're doing is looking to create a rich client/server 
interface, there's been some really good work done in that area over the 
last couple of years.  There's still active development as well.  I've 
spoken with Andrew Wilson (the tkMOO author) about reviving the old 
mcp-dev list to cover topics related to some of the packages currently 
in use and under development.

A fair number of clients exist and some rich packages already do exist, 
including two GUI toolkits.  All of the information that I have on hand 
is already in Agora:

     http://agora.cubik.org/wiki/view/Main/MudClientProtocol

If you haven't looked at TWin, I'd recommend that you do, it really is 
quite cool:

     http://agora.cubik.org/wiki/view/Main/TWinClient

One final comment on that note is that by using a package-based system 
defined by messages that are passed back and forth, you could not just 
harness the existing efforts, but end up with something that is portable 
between mud servers and more broadly useful, rather than only working 
with ColdCore.

(Actually, there is one MCP-supporting client that I know about that 
isn't on those web pages.  It hasn't been released yet, but should be 
open source and is written in ObjC for Cocoa.  It really is quite nice.)

(If there are other MUD client authors on this list, I'd encourage you 
to support MCP/2.1! :) )

(There's also a bunch of other mud networking type protocols or other 
mud client/server things laying about on Agora on:

     http://agora.cubik.org/wiki/view/Main/NetworkingProtocols
)

> PS I'm CCing this to the coldstuff list because other people may be 
> interested too, feedback welcome :)

Definitely.  This is something that interests me a lot and is something 
that I consult with others on during my spare time. :)

Btw, in the webserver, there was support at one point for invoking 
arbitrary methods via the web interface.  This relied upon $dmi_data to 
specify what methods could be called as well as a bunch of metadata 
about the args that a method takes, how to convert them from strings to 
the right datatypes and so on.  I'm not sure how much of that has 
survived in the last 3-4 years of it is still in use at all.  That was 
intended to let some RPC-like stuff happen by way of piggy-packing on 
HTTP as a transport.

Anyway, that's just my set of thoughts at the moment.  I'd love to 
continue to discuss this.

Regards,

  - Bruce