The contents of this file have been moved to the PDL wiki on
sourceforge.net for review/update.  Once the list of tasks has
been cleaned up, TODO will be used as a list of current project
action lists rather than old items to be ignored.

See: http://sourceforge.net/apps/mediawiki/pdl/index.php?title=PDL_TODO_List

What follows is that task list and description of the work
planned for the upcoming PDL-2.4.7 release.  The main
goal for this release is to have a baseline PDL that
builds on *all* PDL OS platforms: win32, macosx, linux/unix
and that supports 2D (PLplot) and 3D (TriD)  graphics on
*all* platforms.


+------------------------------------------------------------------------+
|                     PDL-2.4.7 CRITICAL PATH                            |
+------------------------------------------------------------------------+

   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.7 release:

     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.

  
R  Need to test PDL build from scratch
   
     Required

     Needs multiple testers capable of building PDL
     and willing to configure their system for a
     clean room run of the install process(es).

     We need to confirm that PDL-2.4.7 builds completely
     from scratch on all PDL platforms by testing.  This
     includes starting from the vanilla system and getting
     and installing PDL the way a new user would.


R  Verify dependency detection across all major PDL platforms

     Required

     Needs multiple testers willing to check a clean
     build of each dependency on their platform and
     report what happens with and without dependency.

     Confirm that all dependencies for each platform
     are correctly detected and reported.  If there
     are issues, they should be in the Known_problems
     for platform specific information.


R  Clean up and triage for tickets prior to release.

     Required

     Needs volunteers (especially for bugs with special
     platform requirements, such as HDF that some folks
     might not have).

     We're making progress here.  Every little bit helps.


R  Alien modules for the external PDL dependencies
   * Alien::PLplot
   * Alien::PROJ4

     Required

     **** NEEDS VOLUNTEERS TO COMPLETE ****
     **** This is the long pole in the ****
     **** tent for PDL-2.4.7 release.  ****
     **** Having a standard, baseline  ****
     **** 2D graphics modules for PDL  ****
     **** is a primary goal of 2.4.7!  ****

     This is the first stage of getting PDL::Graphics::PLplot
     working cross-platform: be able to have the PLplot lib
     checked for or even installed as a dependency.  Work in
     Alien::SDL would be a good starting point here.


R  Define standard paths for external dependency libraries for PDL

     Required

     This is basically bookkeeping so that as the
     dependency issues are sorted out, we have a
     standard PDL-specific local install location
     for non-system library installs.


R  List and obtain module owners and developers for existing PDL modules

     Required

     Again, this is basically bookkeeping so that
     as the dependency issues are sorted out, we
     have a designated POC/maintainer for each
     PDL component.


R  Update PDL web site pages 

     Required

     This is well underway.


R  Review current documentation (underway)

     Required

     This is well underway.


R  Add/update platform install notes to PDL wiki

     Required

     Recent list queries and new user discussions
     suggest that having


R  Add CPAN shell start-up info to PDL wiki or web page

     Required

     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).


N  Document how to set up a local sandbox for PDL build

     Nice to have

     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.


N  How to install the CPAN Testers reporting packages

     Nice to have

     CHM volunteers to write this up.

     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.


N  Add docs/support for users of other non-PDL software

     Nice to have

     This has already been address.  Of course, further
     improvements are always possible but we're probably
     good for 2.4.7 as we stand.


N  Update PDL Book (in progress)
   
     Nice to have

     Matt Kenworthy has been working on web-izing
     the previous manuscript based on Tex/LaTeX.
     Work continues but the status re a 2.4.7
     release schedule is not known.


R  Improve PDL usability for first time users

     Required

     A simple cpan or platform package install should
     work out of the box.  Maybe not all dependencies
     will be there but PDL should build with 2D and
     3D graphics support if possible.


N  Clean up build output from make process to reduce cruft
     
     Nice to have

     This is a placeholder in case someone gets motivated
     to help.  Not required at all for PDL-2.4.7 release.


N  Fix the test problems with preexisting PDL installs

     Nice to have

     This would involve writing a routine to probe
     @INC for PDL (or maybe an arbitrary module) and
     reporting whether it was already installed.
     You would need to make sure not to pick up
     the blib version from the build process.


N  Check/set perldl.conf options before the PDL build?

     Nice to have

     I think giving users an interactive option to set
     the perldl.conf values would be nice.


R  Need PLplot and PDL::Graphics::PLplot to build all platforms

     Required
     
     Progress has been made by David and Rob on building
     PLplot and/or PDL::Graphics::PLplot for a number of
     platforms.

     This task involves getting the soup-to-nuts install
     of PDL::Graphics::PLplot working starting with the
     installation/configuration of PLplot via Alien::PLplot
     and followed by the configuration and build of the
     PDL::Graphics::PLplot module.  The core work of
     porting has been done.  The remaining work seems to
     be mainly wrapping up the Alien::PLplot and getting
     things to work all together.


R  Complete Perldl2 shell:
R  * Fix demo to work with Perldl2
R  * Fix Ctrl-C handling for win32 systems
N  * Add safe pdl allocation option to prevent OOM death

     Required

     CHM has volunteered for this task.  The basic pdl2
     shell is already working and will run with the new
     features if Devel::REPL is installed.  Otherwise
     it falls back to the perldl shell.

     The remaining work here is cleanup of some minor
     issues, implement remaining perldl features for
     back compatibility and a couple of nice-to-haves
     in better Ctrl-C handling and avoiding fatal OOM
     errors when running interactively in win32.


R  Add support for improved 2D image display using TriD
R  * Move imag2d() into a module form
N  * Enable REPL and GUI simultaneous operations and event loops

     Required

     CHM plans to move imag2d into a module form for the
     PDL-2.4.7 release.  If time permits, it might be
     possible to get the simultaneous REPL and GUI
     operations enabled (at least for Term::ReadLine::Perl).


N  New pdl() constructor with matlab [] syntax for string arguments

     Nice to have

     The new pdl constructor handling of string arguments
     with MATLAB style array syntax is in the git PDL.
     Some additional checks need to be made for edge
     cases and to check that it does what is expected.
     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 (modulo float format).

     NOTE: Need to handle complex numbers a la MATLAB
     as well.  That would mean recognizing [ij] as
     sqrt(-1).  PDL only uses i.


N  Finish spheres3d implementation

     Nice to have

     CHM volunteers to finish color and radius support for
     this routine.


N  PDL::Constants

     Nice to have

     We've had mailing list discussions on this topic.
     All that needs to be done is the implementation.
     The idea is to use Readonly as the basis for the
     constants and, perhaps, have a 'use constant'
     fall back version.
   

N  Finish PDL::IO::ENVI module

     Nice to have

     Needs to be added as an IO module with tests.
     A basic writeenvi routine needs to be completed.



+------------------------------------------------------------------------+
|                              DONE                                      |
+------------------------------------------------------------------------+
   
D  Add support for Known_problems to tests

     Required

     This is basically adding a SKIP section to tests
     that correspond to open sf.net bugs and conditionalize
     on the environment of the build.  Needed by release
     time to support user builds.


D  Fix PDL Config

     Required

     This is a reported bug at sf.net where the
     %PDL::Config hash is not updated from the
     results of the "have PDL check" options in
     the perldl.conf file.



+------------------------------------------------------------------------+
|                                                                        |
|                  PDL-2.4.7 BULLET TASK LISTING                         |
|                         ( BY CATEGORY )                                |
|                                                                        |
+------------------------------------------------------------------------+
   

+------------------------------------------------------------------------+
|                             TESTING                                    |
+------------------------------------------------------------------------+
   
R+ Need to test PDL build from scratch
   * All major platforms (unix/linux, mac os x, windows)
   
R+ Verify dependency detection across all major PDL platforms
   * Unix/Linux
   * Windows
   * Mac OS X 
   
R+ Add support for Known_problems to tests
   * Get from environment or flag or perldl.conf
   * Skips tests flagged as Known_problems for releases
   * All bug reports should have a test in PDL/t if possible
   
R+ Clean up and triage for tickets prior to release.
   * Bugs
   * Feature requests
   * Other?
   
+------------------------------------------------------------------------+
|                           DEPENDENCIES                                 |
+------------------------------------------------------------------------+
   
R+ Alien modules for the external PDL dependencies
R+ * Alien::PLplot (must be rock solid!)
R+ * Alien::PROJ4 
   
R+ Define standard paths for external dependency libraries for PDL
   * Local to PDL not system wide
   * Can skip if system wide is available
   * Relocatable with package-config or Alien dependencies information 
   
R+ List and obtain module owners and developers for existing PDL modules
   * Revisit their module's status by platform:
     * Regarding portability
     * Review external dependency handling
   
   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 
   

+------------------------------------------------------------------------+
|                           DOCUMENTATION                                |
+------------------------------------------------------------------------+
   
R+ Update PDL web site pages 
   
R+ Review current documentation (underway)
   * Verify correctness and consistency with PDL-2.4.6_014+
   * Update documentation where needed.
   * Add web searchable versions of the docs.
   * Maybe a wiki format could be used to improve docs 
   
R+ 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
     * Other 
   
R+ Add CPAN Testers start up info to PDL wiki
   * What you need to start
   * How to configure CPAN
   * Other options 
   
N+ Document how to set up a local sandbox for PDL build
   * PREFIX and LIB for ExtUtils::MakeMaker
   * Build with CPAN shell 

N+ How to install the reporting packages
   * Test::Reporter and others
   * How use CPAN Testers version 2

N+ Add docs/support for users of other software
   * IDL, Matlab, NumPy
   * Add help for equivalent PDL constructs
   
N+ Update PDL Book (in progress)
   * Needs updating to match PDL-2.4.6_xxx from PDL-2.4.3
   * make a web version available on-line if possible
   
   Need better documentation of the PDL help system
   * Is there a way to fetch all the functions/keywords the PDL help system supports? 
   
   
+------------------------------------------------------------------------+
|                             USABILITY                                  |
+------------------------------------------------------------------------+
   
R+ 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
   
   Implement "1-click" installs by platform and document in wiki
   * Mac OS X: SciKarl, verify support by OS versions
   * Windows: Strawberry Perl Professional (TBD)
   * Unix OSes: Various package managers
   
N+ Clean up build output from make process to reduce cruft
   * Maybe collect build output into build log file by
     default so folks wouldn't have to cook it up with
     their shell, just check the pdl-build.log
   
   
+------------------------------------------------------------------------+
|                            INSTALLATION                                |
+------------------------------------------------------------------------+
   
R+ Fix PDL Config
   * Update config with build information
   * Close sf.net ticket for this
   
N+ Fix the test problems with preexisting PDL installs
   * Maybe a function in PDL::Core::Devel to check @INC
   
N+ Check/set perldl.conf options before the PDL build?
   * Use prompt() routine in Makefile.PL

   
+------------------------------------------------------------------------+
|                            NEW FEATURES                                |
+------------------------------------------------------------------------+
   
R+ Need PLplot and PDL::Graphics::PLplot to build all platforms
   * MS Windows
   * Cygwin/XP
   * Linux/unix
   * Mac OS X 
   
R+ Complete Perldl2 shell:
   * Implement remaining perldl features for pdl2
   * Update documentation
   * Update perldl so fallback from pdl2 works cleanly
R+ * Fix demo to work with Perldl2
N+ * Fix Ctrl-C handling for win32 systems
N+ * Add safe pdl allocation option to prevent OOM death
   
R+ Add support for improved 2D image display using TriD
   * imag2d() works ok
   * Next step: move into PDL distribution as a module w tests... 
N+ * 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
   
N+ New pdl() constructor with matlab [] syntax for string arguments
   * Implemented in PDL git
   * 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
   
N+ Finish spheres3d implementation
   * Add color (RGB+A)
   * Add radius
   * Add surface normals for smooth shading
  
  
+------------------------------------------------------------------------+
|                              LATER                                     |
+------------------------------------------------------------------------+
   
N+ PDL::Constants
   * Use Readonly if available
   * Fall back to use constant
   
   PDL::Matlab helper module
   * Implement the main basic Matlab routines
   
   Fix external dependency processing
   * Alien modules for the external PDL dependencies
     * 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
   * 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
   
   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 
