What follows is that task list and description of
the work planned for the future  PDL-2.4.x releases.

The main goal we are working towards is to have a
baseline PDL working on *all* PDL OS platforms:
win32/cygwin, macosx, and linux/unix/bsd systems with
support for 2-D graphics (via PLplot) and 3-D graphics
(via OpenGL/TriD).


+-------------------------------------------------------+
|      Candidate Tasks for PDL-2.4.x Development        |
+-------------------------------------------------------+

   This section documents the top level tasks from
   the more detailed list below.  The first column
   of the line indicates the priority of that item
   (and those below it) for the PDL-2.4.x release:

     T -- TBD
     R -- required for release to occur
     N -- nice to have but not mandatory
     no mark means same as super bullet or FYI
     D -- done

  Each item has some task description based on the
  current status.

  Update task list after PDL-2.4.x release.

  

+-------------------------------------------------------+
|                                                       |
|             PDL-2.4.x BULLET TASK LISTING             |
|                   ( BY CATEGORY )                     |
|                                                       |
+-------------------------------------------------------+



+-------------------------------------------------------+
|                       TESTING                         |
+-------------------------------------------------------+


   Refactor these PDL tests to use Test::More:
   * aaa_load.t
   * argtest.t
   * bool.t
   * clump.t
   * croak.t
   * familyfree.t
   * flow.t
   * foo.t
   * gauss.t
   * hdrs.t
   * howbig.t
   * ica.t
   * imagend.t
   * imagergb.t
   * interp.t
   * interp_slatec.t
   * interpol.t
   * limits_normalize_dsets.t
   * linfit.t
   * magic.t
   * matmult.t

   Convert these PDL tests from Test to Test::More:
   * basic.t
   * bess.t
   * callext.t
   * conv.t
   * diskcache.t
   * erf.t
   * erfi.t
   * fft.t
   * func.t
   * hist.t
   * image2d.t
   * iotypes.t
   * lut.t
   * lvalue.t
   * matrix.t
   * matrixops.t
   * misc.t
   * niceslice.t
   * nsdatahandle.t
   * pptest.t
   * requiredmods.t
   * round.t
   * simplex.t
   * transform.t
   * trig.t
   * xvals.t


   Need to test PDL build from scratch both WITH_BADVAL and without
   * Unix/Linux/BSD
   * Windows
     - cygwin
     - activestate perl
     - strawberry perl
   * Mac OS X
   

   Verify dependency detection across all major PDL platforms
   * Unix/Linux/BSD, Windows(ASPerl/Strawberry)/Cygwin, Mac OS X
   * Check completely clean build each platform
   * Confirm that dependencies for each platform
       are correctly detected and reported.
   * Add any issues to Known_problems


   These modules aren't tested by CPAN Testers because of dependencies:
   * PDL::FFTW
     - FFTW2 is out-of-date and not typically installed
     - need to migrate to FFTW3
     - Alien::FFTW
   * PDL::Slatec
   * PDL::Minuit
     - need Fortran compilter and ExtUtils::F77
     - f2c conversion of code
   * PDL::IO::GD
     - needs libgd
     - Alien::GD
   * PDL::IO::HDF
     - based on HDF4
     - need to migrate to allow HDF5
     - Alien::HDF5
     - add binding to libhdf5
   * PDL::GSL::XXX
     - need more complete libgsl bindings
     - Alien::GSL
   * PDL::GIS::Proj
   * PDL::Transform::Proj4
     - Alien::Proj4
   * PDL::Graphics::TriD
     - Alien::OpenGL, GLU, GLEW, GLUT, GLUI...
     - test with pixel buffer context(?)
   * PDL::Graphics::PGPLOT
     - needs portable driver (OpenGL)
     - Alien::PGPLOT
     - apply/update RGB color patches to current
   * PDL::Graphics::PLplot
     - need portable driver (OpenGL)
     - Alien::PLplot
     - need low-level PLplot interface
   * PDL::IO::Browser
     - need curses/ncurses
     - Alien::Curses
     - maybe OpenGL terminal or widget


   Add support for Known_problems to tests
   * Use skip for tests with segfault fails
   * All bug reports should have a test in PDL/t


   Clean up and triage for tickets prior to release.
   * Bugs
   * Feature requests
   * Patches



+-------------------------------------------------------+
|                    DEPENDENCIES                       |
+-------------------------------------------------------+
   
   Alien modules for the external PDL dependencies
   * Alien::PLplot
   * Alien::PROJ4

     This is the first step to get PDL::Graphics::PLplot
     working cross-platform: be able to have the PLplot
     lib checked for or even installed as a dependency.
     Work based on the approach in Alien::SDL might be a
     good starting point.


   Define standard paths for external dependency libraries for PDL
   * Local to PDL (not system-wide)
   * Can skip install if system-wide is available
   * Relocatable with package-config or Alien info
   * Document any PDL-specific install locations
   * This should allow for a devel-PDL install for win32

   
   List and obtain module owners and developers for existing PDL modules
   * Revisit each module's status by platform
     * Regarding portability
     * Review external dependency handling
     * Update plan for development


   Fix/document FORTRAN code requirements
   * Add a USE_FORTRAN option to perldl.conf
   * Add check for ExtUtils:F77
   * Convert PDL::Slatec to use C with f2c of source
   * Convert PDL::Minuit to use C with f2c of source 
   

   P Fix IO/Browser build to properly check for the curses
       library and build if available.


+-------------------------------------------------------+
|                    DOCUMENTATION                      |
+-------------------------------------------------------+
   
   Update PDL web site pages 
   

   Review current documentation (underway)
   * Verify correctness and consistency with PDL-2.4.10
   * Update documentation where needed.
   * Add web searchable versions of the docs.
   * Maybe a wiki format could be used to improve docs 


   Add/update platform install notes to PDL wiki
   * Complete build-from-scratch installs
   * Soup to nuts via the cpan shell
   * Build issues and their fixes
   * How to get needed dependencies
   * Other platform details
     * Mac OS X
     * Linux (by distribution and version)
     * BSD
     * Solaris
     * Windows
     * Cygwin
     * Other 


   Add CPAN shell start-up info to PDL wiki or web page
   * Basic CPAN
   * CPANminus
   * Others

     Recent list queries and new user discussions
     suggest that we need to revisit the beginner
     documentation for how to get started with PDL.
     We definitely need clear instructions for how
     to start from scratch with cpan to install
     PDL (verify on all PDL platforms).


   Add CPAN Testers start up info to PDL wiki
   * Test::Reporter
   * CPAN Testers version 2
   * Easy/basic install and usage

     The new CPAN Testers version 2.0 has been
     released.  It uses a web-based interface to
     send reports rather than email.  As a result
     is is much easier to configure than the old
     interface.  As such, we would get better PDL
     feedback if we have a quick-start for that.

     Add info for PERL_CPAN_REPORTER_DIR variable.


   Document how to set up a local sandbox for PDL build
   * INSTALL_BASE for EU::MM > 6.31 and --install_base for M:B 
   * Build with CPAN shell 
   * Check out brewperl

     A number of PDL users are configuring their
     own local library, perl, and PDL installations.
     It would be nice if clear directions were
     written down so everyone doesn't have to
     reinvent the same wheel.


   Add docs/support for users of other software
   * IDL, Matlab, NumPy
   * Add help for equivalent PDL constructs
   

   Update PDL Book (in progress)
   * Needs updating to match PDL-2.4.10 from PDL-2.4.3
   * make a web version available on-line if possible
   
     Matt Kenworthy has been working on web-izing
     the previous manuscript based on Tex/LaTeX.


   Better document the PDL help system
   * Requirements and usage
   * Quick start
   * Add custom/user key word search support
   * Is there a way to fetch all the functions/keywords
       the PDL help system supports? 
   

   
+-------------------------------------------------------+
|                      USABILITY                        |
+-------------------------------------------------------+
   
   Improve PDL usability for first time users
   * Work out-of-the-box via cpan shell
     * Fully automatic
     * Semi-manual
   * Easy install via 1-click or package managers 
   * PAR for distribution
   * Should be able to upgrade PDL ppd install on win32

     A simple cpan or platform package install should
     work out of the box.  Maybe not all dependencies
     will build but PDL should build with 2D and 3D
     graphics support for most/all platforms.


   Implement "1-click" installs by platform and document in wiki
   * Mac OS X: SciKarl, verify support by OS versions
   * Windows: Strawberry Perl Professional, ActivePerl
   * Unix OSes: Various package managers
   

   
+-------------------------------------------------------+
|                    INSTALLATION                       |
+-------------------------------------------------------+
   
   Switch from ExtUtils::MakeMaker to Module::Build
   * Removes portability problems from shell and make
   * Easier to extend


   Fix the test problems with preexisting PDL installs
   * Develop test methodology
   * Add PDL::Core::Dev utility to perform check
   * Automate detection/test skip if not built logic

   
   Check/set perldl.conf options before the build
   * Add WITH_CORE_ONLY to perldl.conf
   * Add WITH_FORTRAN to perldl.conf
   * Interactive option view prompt() in Makefile.PL
   * GUI version


   
+-------------------------------------------------------+
|                    NEW FEATURES                       |
+-------------------------------------------------------+
   
   Finish PDL::IO::ENVI module
   * Implement basic writeenvi() routine
   * Add tests and reimplement as a module
   * Add to PDL distribution


   Need PLplot and PDL::Graphics::PLplot to build all platforms
   * MS Windows
   * Cygwin/XP
   * Linux/unix
   * Mac OS X 

   
   Complete Perldl2 shell:
   * Implement remaining perldl features for pdl2
   * Fix Ctrl-C handling for win32 systems
   * Update documentation
   * See Perldl2/TODO for the pdl2-specific list.
   * Strip PDL shell prompts from cut-n-pasted lines


   Add support for 64bit data:
   * Add safe pdl allocation option to prevent OOM death
   * Update allocation and types to support 64bit data
   * Add info in PDL::Config for level of 64bit support
     (e.g. STRLEN size vs ptrsize...)
   

   Add support for improved 2-D image display using OpenGL
   * Add threaded 2-D image tiled display to imag2d
   * Enable REPL and GUI simultaneous operations and event loops
     * perldl via ReadLine and FreeGLUT
     * REPL via ReadLine and FreeGLUT 
     * Maybe for wxWidgets for Padre support
   * Implement some tests

   
   New pdl() constructor with matlab [] syntax for string arguments
   * Needs more testing and verification
   * Does it work for MATLAB and PDL users' purposes? 
     * Handle complex numbers (with i,j for sqrt(-1))
     * Handle cut and paste of printed piddles
     * Better error checking for invalid values
   
     Ideally we should be able to cut-n-paste the print
     output of a piddle into the constructor as a
     string and get the piddle back (within float eps).


   Finish spheres3d implementation
   * Add color (RGB+A) support
   * Add per-sphere radius (support threading)
   * Add surface normals for smooth shading
   * Extend to arbitrary objects with constructors
  

  Refactor TriD/PDL for better animation
  * interoperate better with OpenGL display
  * implement pipeline stream to wmpeg
  * stream PDL slice (with no make-physical)
  * add dataflow callback to support display updates

  
  NiceSlice cleanup
  * refactor to use Module::Compile / Filter::Simple
  * implement string processing version for REPL use
  * document nslice
  * implement a niceslice method
  * enhance nslice() to handle CODE refs
    * Done but it doesn't buy much since it only
      works if the CODE ref is a blessed object
      so that a UNIVERSAL::nslice method can be
      called on it.
    * maybe defer/lazy source filtering
    * check if valid subref args good for slicing
    * can use string eval with notrans



+-------------------------------------------------------+
|                        LATER                          |
+-------------------------------------------------------+
   
   PDL::Constants
   * Transition into 'use PDL;'
   * Add other constants of interest
     * Units
     D Complex i,j
     * Inf
     * To import or not to import
   

   PDL::Matlab helper module
   * Implement key set of basic Matlab functions
   * MATLAB "expand" to PDL syntax?
   * Document PDL equivalents
   * Add who/whos refs or links to pdl2 'help vars'

   
   Fix external dependency processing
   * Use Devel::CheckLib to directly detect headers and libraries
   * Remove dependencies on external commands (e.g. clear in Demos)
   * Make missing functionality detectable at run time (a la PGPLOT)
   * Could use warning/error stubs if functionality not available
   * Alien modules for the external PDL dependencies
     * Alien::Curses
     * Alien::FFTW2
     * Alien::FFTW3
     * Alien::GSL
     * Alien::GD
     * Alien::GLUI
     * Alien::HDF
     * Alien::JPEG
     * Alien::NetPBM
     * Alien::OpenGL, Alien::GLUT, Alien::GLX
     * Alien::PGPLOT
     * Alien::PNG
     * Alien::TIFF
   

   Full GSL bindings for PDL
   * Alien::GSL to install and something else to check
   * Prioritize GSL functionality to add
   * Convert GSL documentation to PDL usable form
   * Automate code conversion
     * Can we use Math::GSL as a starting point?
     * What about an PDL::PP version using GSL configure info for thread support? 
   * Slatec compatibility wrappers 
   

   Clean and unify the FFT and FFTW in PDL
   * FFT is the default implementation
     * Add FFTW acceleration for the default FFT
     * Add cleaner use of complex values to FFT routines
   * Make non-inplace versions of FFT
     * Make default FFT library match FFTW calling conventions
     * But, use symmetric scaling (no factors of N) 
   * Document FFT/FFTW
     * The computational algorithms
     * The input/output locations 
   

   Update HDF docs
   * HDF5 and HDF4 are entirely different beasts (and totally incompatible)
   * The PDL::IO::HDF library uses HDF4.
   * Portability issues especially re. Installs 
