Fun with Erlang (was Re: Stand Alone Erlang for Windows. yet again)

Alexander Williams thantos@REDACTED
Fri Mar 16 15:20:26 CET 2001


On Fri, Mar 16, 2001 at 02:44:44PM +0100, Mickael Remond wrote:
> Hey ? You've worked on Poo ?
> This is precisely the Mud that I enjoyed reading and that gave me the
> idea to write an Erlang Mud. 
> I really like the Poo implementation. I found it brilliant. The code is
> extremely compact. Beautiful.

I hacked on it a bit.  Ultimately, I found it personally
unsatisfactory, in part because of the way the database itself is
managed in POO.  Marshalling objects to the store is a great idea in
principle, but the ability to turn around and say "dump this whole
thing to ASCII" never materialized, and doing online inline
modifications of the core server objects was not only possible, but
necessary ... but once committed, never came out again in a way that
let you examine the server as a whole.

One of the things I WOULD like to steal openhandedly from POO is the
way in which objects can be referenced not only be a unique ID (which
we get for free in Erlang), but the way objects could be referenced in
Directory container objects; the "$MajorThing.MinorThing.TargetThing"
concept was a brilliant insight.  It makes accessing a live-object in
a known environment trivial.  Coupling this with an LP-like file-based
object source store would be an excellent move, I think.  Updating
objects, then, wouldn't necessarily involve touching them directly
unless its to set the Thing's local environment.  Modifying code would
involve editing the file, compiling it, then sending a
"{reloadSource}" message to the poor beleagured thing.  Much safer, in
the long run, because no object behaviour is changed until the source
is at least lexically correct.

> I am very eager to implement such a tool in Erlang, using process
> oriented design...

I think it can be done.  One thing I wonder about, however, is whether
a running process can be marshalled out to disk and reloaded.  If so,
we're golden.  If not ... well, then we get into questions about how
to manage state persistantly.  Its far easier to say "dump all child
processes of this Pid to disk" than to say "OK, walk this list of Pids
and query them for state," especially when you go to reload.

-- 
Alexander Williams (thantos@REDACTED)               | In the End,
  "Blue Jester needs food."                             | Oblivion
  "Blue Jester needs fuku-wearing cuties."              | Always
  http://www.chancel.org                                | Wins



More information about the erlang-questions mailing list