#*************************************************************#
#
#   Ensemble, (Version 0.40)
#   Copyright 1997 Cornell University
#   All rights reserved.
#
#   See ensemble/doc/license.txt for further information.
#
#*************************************************************#
==============================================================
Adding a new layer
------------------
* Add to mk/main
* If your layer is in a new directory, add your direcrory to SRCDIRS.

Using other protocol stacks
--------------------------
% mtalk -protocol <NewStack>


==============================================================
debugging environment
---------------------
(1) Layers - Delay, Chk_causal, Chk_evs.
(2) ttalk = user.c
==============================================================

Debugging TCAUSAL
-----------------
(1) Checking simple scenarions - 
  A1
    \
     B1
       \
	C1

A1   B1
  \ /
   C1

A1
|
A2 - missing
|
A3

A1 - mis  C1
  \      /
   \    /
    \  /
     B1

(1a) Running on a few machines.
(2) Garbage collection.
(3) Automatic checking - chk_causal.ml + rand program. 

Future
------
(3) Nack. - Check performance, and Nacking strategy with failed processes.
(4) Performance - [TCL/TK::TAL] Console. 
==============================================================
DONE
----
Safe  layer.
Agree layer.

the EVS stack works. Assumes no bypasses, checks only application
	messages, for EVS ordering. 

files I modified:
	Top      - Slight change, to work with EVS.
	Heal     - Removed UpStable dependency.
	Leave    - Removed the UpStable dependency.
	Sync     - Added UpStable dependency.
	Top_appl - simple update - DnBlock
	Bottom   - Fail when DnDump
	Event    - Additions

Files to keep seperate -	
	Sync, Tsync

Files that stay unchanged -
	Evs 

Proposed Standards - 
  xxx_unreliable
  xxx_no_total

=============================================================

TODO
----

BUGS 
----
(-1) Unserstand the Virtual synchrony problem.
(0) Plug in flow control, and improve handling of pending
messages (Tcausal runs out of memory).
(2) Commonize Frag - send safe/total fragments ,causally.
(3) Commonize the debugging layers.
(4) A simple, platform independent method to initialize rand's random
    number generator (without prompting the user for a seed) ?

Partitions
----------
(1) Debug Agree/Safe. 
(2) Find a way to debug Safe. 

==============================================================

Debugging layers
----------------
(1) The chk_causal layer checks correctness of Tcausal.
    It still does not check livness. The only thinkable test is 
    a self-delivery check.
(2) chk_sync should not be working so well! This is possible, only
    if the system almosts supports EVS! What is needed, is
    mutual failure detection. 

	A's state =(my_cast,my_failed)
	B->A       (rmt_cast,rmt_failed)

    A must check that it is not in B's failure list. I'm not
    sure that this cannot happen.
(3) Chk_hi_causal checks that the hi level layers don't destroy
    causallity.

==============================================================

Session Service
---------------
 ~gadish/proj/integrated6/transis/TransisClient.java

==============================================================
