General Plan for 2003
=====================
RMA
    Operation aggregation
    Paper to journal (JPDC?)
    Short paper to conference (mid year)

Dynamic Processes
    PM/PMI generalization for spawn/connect/accept
    Fault tolerance implementation

I/O
    Use generalized requests
    Integrate MPICH2 error reporting
    External 32
    
Datatypes
    Remaining functions (mostly MPI-2)
    Performance tuning
    Paper on the approach and results.  Target PVMMPI 03 (~April) (done!)

C++ binding
    Complete for MPI 1 and MPI 2
	     Done 7/03
    Tool to create application-specific subsets of the binding (e.g., without
    methods not needed by the app) 
    Short note (PVMMPI'03?) (not done)

Fortran 90 binding
     Move from MPICH1
     Improve tool to create application-specific subsets of the binding
     Short note (PVMMPI'03?), perhaps combined with C++

	   The "nochoice" version of the Fortran 90 module is supported 
	   (8/11/03)

Cluster Support
    TCP + shared memory implementation (e.g., a channel method that supports
    these two but is not a general multi-method device) 
    Flow control
    Paper on ADI3 and the new channel implementation (Parallel Computing)
    Short paper to conference

Scalability
    Sparse arrays for all parts that currently use arrays (e.g., arrays of all
    processes, rather than just the ones involving communication) 
    (This is in support of BG/L)
    Paper (probably in 2004)    

Performance
    SMP-only device used to hunt microseconds in the code implementation
    Part of this may provide a suitable basis for a Cray X1 device

Thread-safety
    Alternate TCP and TCP+shared memory implementation that provides support
    for MPI_THREAD_MULTIPLE 
    Paper on the costs of thread-safety

Documentation
    Man pages (in Man, LaTeX, and HTML form)
    User and Installation manuals
    ADI manual
    
Miscellaneous Issues
====================

MPI Profiling interface
   If weak symbols are not present, you must use

     -lmpich -lpmpich -lmpich

   to link programs.  This is due to the fact that some of the helper functions
   for the MPI calls are defined only for the pmpi versions (as they should
   be) but some of the ADI routines are only in the mpich library.  

   The LIBS variable is correctly set by the top level configure to include
   the necessary libraries.

It would be nice if the top-level configure echoed its arguments as the
first line of output like some of the subdirectory configures do.
   Done - wdg, 9/15/02

Finalize steps:
   Invoke the attribute delete functions on 
   MPI_COMM_SELF (see MPI-2 standard).  Perhaps use a function within 
   a finalize callback registered as part of the keyval finalize handler
   or the comm self handler.

   If a group is created by MPI_Comm_group on a predefined communicator,
   we need to free the group during MPI_Finalize.  

make distclean should remove the files in <BUILDDIR>/bin.  This is not
completely straight forward since the PM files are installed into the build
tree by src/pm/Makefile using "cd <PM> ; make prefix=<BUILDDIR> install".

Fortran Issues:
Check Fortran MPI_Type_get_contents, Type_create_hindexed, Type_create_struct,
that args 6, 3, and 3 resp are pointers to the correct type (pointers to int
but should be pointer to long)?
    Yes, uses INTEGER(KIND=MPI_ADDRESS_KIND) for those args.  Not fixed.
