[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[minion-cvs] Checkpoint documentation status



Update of /home/minion/cvsroot/src/minion
In directory moria.mit.edu:/tmp/cvs-serv6221

Modified Files:
	TODO HACKING README 
Log Message:
Checkpoint documentation status

Index: TODO
===================================================================
RCS file: /home/minion/cvsroot/src/minion/TODO,v
retrieving revision 1.40
retrieving revision 1.41
diff -u -d -r1.40 -r1.41
--- TODO	15 Dec 2002 05:55:29 -0000	1.40
+++ TODO	16 Dec 2002 01:37:52 -0000	1.41
@@ -9,37 +9,6 @@
 
 NEEDS TO BE WRITTEN
 
-FOR 0.0.1: (The first alpha)
-	[Requirements: hackers can use this system to try sending messages
-         around.  At least one delivery method works.  The code may be
-         DOS'able, but must not have remote exploits.  Dirservers need not
-         work.  There need not be an interface for replies.  Key rotation
-         need not be automated.]
-
-	o Build
-		o Marginal 'make install'
-		o Marginal 'make dist'
-	o Stability:
-		o Do some basic locking to keep other processes from
-		  using same queue set.
-		o Make startup not spew to stderr when we request it
- 	  	  not to.
-		o Really daemonize ourselves.
-		o Take it easy with the fork calls!
-	. Integration testing
-		- Automated tests for several servers running on one machine.
-		- Tests for servers on several different machines.
-	- Documentation
-		- Contributor's guide
-		o Basic HOWTO
-		- Difference between XXXX FFFF ????
-		- Overall design
-		- More readable mixminiond.conf
-	- Patch specification:
-	  	- SPEC comments from code
-		o Incorporate e2e mixminin design
-		- Rename stateful, stateless SURBs
-
 Required for "1.0":
 	 [These features must be in place before we can take the system out
           of alpha.  We'll do a series of point releases between 0.0.1 and
@@ -149,6 +118,11 @@
 SPEC		o Patch to address George's 15August attack
 	- Testing
 		- Test on other (non-redhat, non-linux) systems
+		- Integration tests
+			- Automated tests for several servers running
+		          on one machine.  
+			- Tests for servers on several different
+		          machines.
 		- Repeatable CLI tests.
 		        - For client
 			- For server

Index: HACKING
===================================================================
RCS file: /home/minion/cvsroot/src/minion/HACKING,v
retrieving revision 1.9
retrieving revision 1.10
diff -u -d -r1.9 -r1.10
--- HACKING	7 Dec 2002 03:53:01 -0000	1.9
+++ HACKING	16 Dec 2002 01:37:52 -0000	1.10
@@ -1,25 +1,14 @@
-Hacking Mixminion
+Hacking Mixminion                                  -*- Text -*-
 
 Requirements:
 	Python 2.0-2.2  (see PORTING NOTES below)
 
 	OpenSSL 0.9.7 (You'll need to download a beta. As of 1 December 2002,
-           that's http//www.openssl.org/source/openssl-0.9.7-beta4.tar.gz)
+           that's http//www.openssl.org/source/openssl-0.9.7-beta4.tar.gz).
+	   Don't worry; the makefile knows how to download it for you.
 
 	A working /dev/urandom (see PORTING NOTES below)
 
-Setting up:
-	1) Get python 2.2.  You can download RPMS from www.python.org.
-	2) Get the mixminion source.
-	3) EITHER Unpack openssl 0.9.7 into minion/contrib/openssl
-	          cd minion/contrib/openssl; ./config; make
-           OR make download-openssl; make build-openssl
-
-Things to try:
-	make
-	make test
-	make time
-
 Things to hack:
 	See the TODO list.
 
@@ -30,34 +19,17 @@
       operations you need.
     - "Premature optimization is the route of all evil." -Knuth
       Resist the temptation to optimize until it becomes a necessity.
-      
-    - Here's the conceptual layout. XXXX EXPLAIN MORE
-
-       -------------
-       I User code I
-       -------------
-             I
-             V 
-             -----------------------------------------
-             I            MM library code            I
-             -----------------------------------------
-               I             I                 ^
-               V             I                 I
-       ------------------    I                 I
-     ..| Network client |    V                 I
-    .  ------------------<==---------       ----------
- net                        | Queue |<=====>| Engine |
-    .  ------------------==>---------       ----------
-     ..| Network server |
-       ------------------
 
 CODING STYLE:
     - See PEP-0008: "Style Guide For Python Code".  I believe in most of it.
       (http://www.python.org/peps/pep-0008.html)
     - Also see PEP-0257 for documentation; we're not there yet, but it's
       happening. (http://www.python.org/peps/pep-0257.html)
-    - The magic string "XXXX" indicates a defect in the code. "FFFF" indicates
-      a missing feature, and "????" indicates an untested or iffy block.
+    - Magic strings:
+         "XXXX" indicates a defect in the code. 
+         "FFFF" indicates a missing feature.
+	 "????" indicates an untested or iffy block.
+	 "DOCDOC" indicates missing documentation.
 
 PORTABILITY NOTES:
     - I've already backported to Python 2.0.  (I refuse to backport to 1.5 or
@@ -82,13 +54,40 @@
 PORTING TO NON-LINUX PLATFORMS:
     - If you need to run on a system without an acceptable /dev/*random, 
       you'll need to write an acceptable fallback for mixminion.Crypto.trng() 
-      to use.  
-    - We assume the existence of a /usr/bin/shred to securely delete
-      files.  This is now configurable, but I'd like to know a few other
-      alternatives.
+      to use.
 
 CAVEATS:
     - If I haven't got a test for it in tests.py, assume it doesn't work.
     - The code isn't threadsafe.  It will become so only if it must.
+
+FINDING YOUR WAY AROUND THE CODE.
+    - All the C code is in src/.  Right now, this is just a set of thin
+      Python wrappers for the OpenSSL functionality we use.
+    - The Python code lives in lib/mixminion (for client and shared code)
+      and lib/mixminion/server (for server code only).  The main loop is
+      in lib/mixminion/server/ServerMain; the asynchronous server code is
+      in lib/mixminion/server/MMMTPServer.
+    - A message coming in to a Mixminion server takes the following path:
+
+        Received in MMTPServer;
+              V
+         Stored in an 'Incoming' queue, implemented in ServerMain and Queue.
+              V
+        Validated, decrypted, padded by code in PacketHandler.
+              V
+         Stored in a 'Mix' pool, implemented in ServerMain and Queue.
+             V
+        A batch of messages is selected by the 'Mix pool' for delivery.
+             V
+             ---Some are placed in an 'Outgoing' queue...
+	     I       V
+             I   ... and delivered to other Mixminion servers via MMTPServer
+             V
+             ---Others are queued and delivered by other exit methods, 
+	        implemented and selected by ModuleManager.
+
+CONTRIBUTING PATCHES:
+    - Send them to the list mixminion-dev@freehaven.net, or to me
+      (nickm@freehaven.net).
 
 --Nick

Index: README
===================================================================
RCS file: /home/minion/cvsroot/src/minion/README,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -d -r1.1 -r1.2
--- README	15 Dec 2002 03:47:26 -0000	1.1
+++ README	16 Dec 2002 01:37:52 -0000	1.2
@@ -1,8 +1,11 @@
 This is Mixminion version 0.0.1.
 
-XXXX More Flavor text here.
+Mixminion is the standard implementation for the Type-III anonymous Mix
+protocol, which lets you send very anonymous email.
 
-IN THIS VERSION: (XXXX Be more verbose)
+XXXX MORE TEXT HERE!
+
+IN THIS VERSION: 
    - You can run a rudimentary server that uses Mixmaster to deliver SMTP, or
      that sends SMTP directly to a preconfigured set of addresses.
    - You can send anonymous email.
@@ -18,16 +21,23 @@
    - No automatic key generation.
    - No automatic path selection.
    - MMTP is not exactly as specified.
+   - Cottrell batching is disabled; the mix interval is set to a ridiculously
+     low 5 minutes for testing.
 
 HOW TO BUILD, TEST, AND INSTALL MIXMINION: The quick version.
+  <download and unpack http://www.mixminion.net/dist/Mixminion-0.0.1.tar.gz>
+
   % cd Mixminion-0.0.1
   % make download-openssl
   % make build-openssl
   % make
   % make test
-  % su
-  Password:
-  # make install
+ EITHER:
+    % su
+    Password:
+    # make install
+ OR:
+    % make install PREFIX=~
 
 HOW TO BUILD, TEST, AND INSTALL MIXMINION: The verbose version.
   1) You must have Python version 2.0 or later installed on your system.  The
@@ -80,7 +90,7 @@
 	      -i <filename to send, or - to read from stdin>.
 
       Example:
-         mixminion client -t nosuchuser@mixminion.org --path1=server1,server9 \
+         mixminion client -t nosuchuser@mixminion.net --path1=server1,server9 \
               --path2=server5,server10 -i /etc/motd
 
 HOW TO RUN YOUR OWN MIXMINION SERVER:
@@ -103,8 +113,4 @@
       in their "~/.mixminion/servers" directory.
 
       To get your server advertised to the rest of the world, please
-      send it to XXXXemail.
-
-   5) OPTIONAL. XXXXHow to set up MBOX
-
-   6) OPTIONAL. XXXXHow to set up SMTP-via-Mixmaster.
+      send the file to XXXXemail.