diff PROJECTS @ 2330:12ff450cbb1f

[project @ 1996-07-19 01:39:22 by jwe] Initial revision
author jwe
date Fri, 19 Jul 1996 01:49:31 +0000 (1996-07-19)
parents
children 6bea009cdae2
line wrap: on
line diff
new file mode 100644
--- /dev/null
+++ b/PROJECTS
@@ -0,0 +1,540 @@
+Octave PROJECTS                                          -*- text -*-
+===============
+
+Check with bug-octave@bevo.che.wisc.edu for a possibly more current
+copy.  Also, if you start working steadily on a project, please let
+bug-octave@bevo.che.wisc.edu know.  We might have information that
+could help you; we'd also like to send you the GNU coding standards.
+
+This list is not exclusive -- there are many other things that might
+be good projects, but it might instead be something we already have,
+so check with bug-octave@bevo.che.wisc.edu before you start.
+
+---------
+Numerical:
+---------
+
+  * Merge control stuff.
+
+  * Improve logm, and sqrtm.
+
+  * Improve complex mapper functions.
+
+  * Make functions like gamma() return the right IEEE Inf or NaN
+    values for extreme args or other undefined cases.
+
+  * Handle complex values in fread and fwrite.
+
+  * Support for lp_solve for linear programming problems.
+
+  * Free QP solver.
+
+  * Free NLP solver.
+
+  * Support for sparse matrices.
+
+  * Fix CollocWt to handle Laguerre polynomials.  Make it easy to
+    extend it to other polynomial types.
+
+  * Add optional arguments to colloc so that it's not restricted to
+    Legendre polynomials.
+
+  * Fix eig to also be able to solve the generalized eigenvalue
+    problem, and to solve for eigenvalues and eigenvectors without
+    performing a balancing step first.
+
+  * Move rand, eye, xpow, xdiv, etc., functions to the matrix classes.
+
+  * Implement the following functions:
+    -- ppval    -- cross    -- dot
+
+  * Allow user-supplied gradient information to be passed to NPSOL.
+
+  * Support for FSQP.
+
+  * Convert FSQP style NLP statement to NPSOL style.
+
+  * Convert NPSOL style NLP statement to FSQP style.
+    - Look for linear equality constraints, extract corresponding rows
+	of C.  The rest are inequality constraints.
+    - Look for Nonlinear equality constraints and set up a vector of
+	pointers for shuffling.
+    - Transform lb <= C*x <= ub, lb != ub, to C*x - ub <= 0 and
+	lb - C*x <= 0.  Likewise for lb <= g(x) <= ub.
+    - Call FSQP.
+
+  * Optional inputs for fsqp.
+
+  * If possible, make economy QR factorization actually take advantage
+    of the form of the result instead of just dropping columns.
+    Lapack doesn't appear to do this yet.
+
+  * Check matrix classes for proper handling of empty matrices.
+
+  * Improve design of ODE, DAE, classes.
+
+  * Extend meaning of .* to include v .* M or M .* v (where v is a
+    column vector with the same number of rows as M) to scale rows of
+    M by elements of v.  Similarly, if w is a row vector with as many
+    columns as M, then either w .* M or M .* w scales the columns of
+    M.
+
+--------
+Graphics:
+--------
+
+  * Make plotting with plplot work.
+
+  * Fix interface with gnuplot to wait for gnuplot to output any text
+    before octave returns a prompt.  Possible by implementing two
+    way communication between gnuplot and Octave.
+
+  * Make gsave (and possibly gload) work.  Implement gsave by having it
+    also alter the plot command to not use temporary files (perhaps
+    with some user-specified template for naming them) and then
+    sending a `save' command to gnuplot.
+
+  * It would be nice to be able to check that a plot is currently
+    being displayed.
+
+  * Implement figure, clf, gcf, get, set, orient, print, close,
+    etc. in Matlab-compatible ways.
+
+  * Make it possible to check the current graphics terminal type.
+
+  * Merge patch that allows more than one gnuplot window to be open.
+
+-------
+Strings:
+-------
+
+  * Convert string functions to work on string arrays.
+
+  * Make find work for strings.
+
+----------------
+Other Data Types:
+----------------
+
+  * New types (char, short, etc.).
+
+  * 3d matrix stuff.
+
+  * Template functions for mixed-type ops.
+
+  * Stuff for arithmetic using charMatrix, intMatrix, etc.
+
+------------------------
+Graphical User Interface:
+------------------------
+
+  * In an X11 or other windowing environment, allow the user to pop up
+    windows for menus and other purposes.  A good place to start might
+    be Tk, as long as Tcl is avoided.
+
+  * Add a way to handle events, like alarms, mouse clicks, etc.
+
+------------
+Input/Output:
+------------
+
+  * Make fread and fwrite work for complex data.  Iostreams based
+    versions of these functions would also be nice, and if you are
+    working on them, it would be good to support other size
+    specifications (integer*2, etc.).
+
+  * Make load work to read files that contain numbers only, and put
+    the values in a matrix named after the file.
+
+  * Make load and save work for structures.
+
+  * Make load and save look for <file>.mat if only given <file>.
+
+  * Move some pr-output stuff to liboctave.
+
+  * Make the cutoff point for changing to packed storage a
+    user-preference variable with default value 8192.
+
+  * Save image data in binary format to save space.
+
+  * Use HDF for binary data.
+
+  * Make ascii load and save work for Inf and NaN.
+
+  * Complain if there is not enough disk space available (I think
+    there is simply not enough error checking in the code that handles
+    writing data).
+
+  * Make it possible to tie arbitrary input and output streams
+    together, similar to the way iostreams can be tied together.
+
+-----------
+Interpreter:
+-----------
+
+  * Consider grouping all preference variables in a structure instead
+    of further polluting the namespace.  Maybe `Octave_options.xxx'?
+
+  * Rewrite functions in input.cc to do the right thing in all cases
+    of using readline, forced interactive behavior, echoing of input,
+    etc.
+
+  * Make it possible to redefine built-in variables and functions.
+    (Fix whatever it is that is happening with clear for built-in
+    variables.)
+
+  * Make it possible to check if a variable is complex.
+
+  * Consider making linspace() and logspace() return the value
+    corresponding to the first argument if the number of requested
+    points is 1.
+
+  * Make it possible to get the names of the arguments that are passed
+    to functions, at least if simple variables are passed.
+
+  * Fix name of text-style functions (or at least explain it in the
+    manual).
+
+  * Consider allowing an arbitrary property list to be attached to any
+    variable.  This could be a more general way to handle the help
+    string that can currently be added with `document'.
+
+  * Allow more command line options to be accessible as built-in
+    variables (--echo-commands, etc.).
+
+  * Allow `octave -c STRING' to execute commands from STRING then
+    exit.
+
+  * Handle DOS style CRLFs in M files.  This should probably be
+    optional.
+
+  * Make the interpreter run faster.
+
+  * Make it possible to disable or enable all warnings on an
+    individual basis from the command line or via some built-in
+    structure variable.
+
+  * Consider making it possible to have arrays of structures, and some
+    way of indexing them.
+
+  * Allow arbitrary lower bounds for array indexing.  (Watch out for
+    the additional conflict with zero-one style indexing.)
+
+  * Recursive problems.
+
+  * Improve the way ignore_function_time_stamp works to allow
+    selecting by individual directories or functions.  Also,
+    optionally allow checking only once between each prompt instead of
+    every time the function is called.
+
+  * Make it possible to ask exist() to only look for certain classes
+   of variables, functions, files, etc. rather than always looking for
+   everything.
+
+  * Add a command-line option to tell Octave to just do syntax
+    checking and not execute statements.
+
+  * Is it necessary for do_binary_op and do_unary_op to be friends of
+    the tree_constant class.
+
+  * Clean up symtab and variable stuff.
+
+  * Input stream class for parser files -- must manage buffers for
+    flex and context for global variable settings.
+
+  * Make LEXICAL_ERROR have a value that is the error message for
+    parse_error() to print?
+
+  * Make it possible to clear dynamically loaded functions.
+
+  * Add a run-time alias mechanism that would allow things like
+
+      alias fun function_with_a_very_long_name 
+
+    so that `function_with_a_very_long_name' could be invoked as
+    `fun'.
+
+  * What should is_global() return when called for built-in variables?
+
+  * Make it possible to have `static' variables inside functions that
+    retain their values across calls.
+
+  * Allow local changes to variables to be written more compactly than
+    is currently possible with unwind_protect.  For example,
+
+      function f ()
+	local prefer_column_vectors = something;
+	...
+      endfunction
+
+    would be equivalent to
+
+      function f ()
+	unwind_protect
+	  save_prefer_column_vectors = prefer_column_vectors;
+	  prefer_column_vectors = something;
+	  ...
+	unwind_protect_cleanup
+	  prefer_column_vectors = save_prefer_column_vectors;
+	end_unwind_protect
+      endfunction
+
+  * Fix all function files to check for bogus inputs (wrong number or
+    types of input arguments, wrong number of output arguments).
+
+  * Handle options for built-in functions more consistently.
+
+  * Too much time is spent allocating and freeing memory.  What can be
+    done to improve performance?
+
+  * Error output from Fortran code is ugly.  Something should be done to
+    make it look better.
+
+  * It would be nice if output from the Fortran routines could be
+    passed through the pager.
+
+  * Attempt to recognize common subexpressions in the parser.
+
+  * Remove the buffer size limit in octave_read() in input.cc.
+
+  * Handle arrays with more than two dimensions.
+
+  * Consider making assignment statements like
+
+      M (i_idx, j_idx) = RHS
+
+    produce the value of RHS instead of the value of M.
+
+  * Consider making it possible to specify an empty matrix with a
+    syntax like [](e1, e2).  Of course at least one of the expressions
+    must be zero...
+
+  * Eliminate force_numeric and make_numeric functions.
+
+  * Is Matrix::fortran_vec() really necessary?
+
+  * print_usage() should set error_state in most cases?
+
+  * Add an option to make Octave quit executing a script when error() is
+    called.  Also make it possible for `return' or `break' to exit a
+    script.
+
+  * Make statements like this
+
+      foo bar baz
+
+    turn into function calls like this:
+
+      foo ("bar", "baz")
+
+    This is pretty ugly and introduces some conflicts.
+
+  * Make it possible to use text-style function names as variables.
+
+  * Add a command that works like bash's `builtin' command.
+
+  * Handle comments in parse trees for use with the type command.
+
+  * Clean up eye, eval, feval, keyboard, input, ones, zeros.
+
+  * It would be nice to have an interactive debugger.
+
+-------
+History:
+-------
+
+  * Add an option to allow saving input from script files in the
+    history list.
+
+  * Fix history problems -- core dump if multiple processes are
+    writing to the same history file?
+
+------------------------------
+Configuration and Installation:
+------------------------------
+
+  * Handle USE_READLINE.
+
+  * Make Octave as independent of the particular readline version as
+    possible.
+
+  * Should --enable-lite-kernel imply --enable-shared?
+
+  * Make it possible to configure without readline.
+
+  * Make it possible to configure without kpathsea.
+
+  * Makefile changes:
+      -- eliminate for loops
+      -- define shell commands or eliminate them
+      -- verify distclean
+      -- consolidate targets
+
+  * Make it possible to configure so that installed binaries and
+    shared libraries are stripped.
+
+  * Make installation of the static libraries optional.
+
+------------------------------
+Documentation and On-Line Help:
+------------------------------
+
+  * Document new features.
+      -- history-search-{back,for}ward.
+      -- try/catch.
+      -- Other stuff mentioned in the NEWS file.
+
+  * Improve the Texinfo Documentation for the interpreter.  It would
+    be useful to have lots more examples, to not have so many forward
+    references, and to not have very many simple lists of functions.
+
+  * The docs should mention something about efficiency and that using
+    array operations is almost always a good idea for speed.
+
+  * Texinfo documentation for the C++ classes.
+
+  * Support multiple info files, perhaps allowing one or more in each
+    directory in the LOADPATH, so that local collections of M-files
+    could be documented with Info.
+
+  * Figure out a good way to have functions and variables documented
+    in only one place.
+
+  * Improve help messages for operators and keywords in help.cc.
+
+  * Make index entries more consistent to improve behavior of `help -i'.
+
+  * Make `help -i' try to find a whole word match first.
+
+  * Allow help for local additions to be accessible with help -i.
+
+  * Make the arrow keys work in the info reader.
+
+  * Update Info to be based on the current Texinfo release.
+
+  * Clean up help stuff.
+
+  * Demo files.
+
+  * As the number of m-files with octave grows perhaps a 'Contents.m'
+    file for each toolbox (directory) would be appropriate so one
+    knows exactly what functions are in a toolbox with a quick look.
+    It would be best to generate information for each function directly
+    from the M-files, so that the information doesn't have to be
+    duplicated, and will remain current if the M-files change.  It
+    would also be best to do as much of this as possible in an M-file,
+    though I wouldn't mind adding some basic support for listing the
+    names of all the directories in the LOADPATH, and the names of all
+    the M-files in a given directory if that is needed.
+
+  * Some sort of blurb (2-3 pages) describing Octave in a reasonably
+    coherent way, where to get it etc., perhaps formatted pretty,
+    i.e. not just text.  Maybe start with the latest Announce file.
+
+-----
+Tests:
+-----
+
+  * Improved set of tests:
+
+      -- Tests for various functions.  Would be nice to have a test file
+	 corresponding to every function.
+
+      -- Tests for element by element operators:
+	   +  -  .*  ./  .\  .^  |  &  <  <=  ==  >=  >  !=  ! 
+
+      -- Tests for boolean operators:  &&  ||
+
+      -- Tests for other operators:  *  /  \  '  .'
+
+      -- Tests from bug reports.
+
+      -- Tests for indexed assignment.  Need to consider the following:
+	   o fortran-style indexing
+	   o zero-one indexing
+	   o assignment of empty matrix as well as values
+	   o resizing
+
+  * Tests for all internal functions.
+
+-----------
+Programming:
+-----------
+
+  * Move toward using more stuff from standard C++ library.
+
+  * More C++/Fortran cleanups.
+
+  * It is likely that there are still some memory leaks.  Hunt then down
+    and plug them. 
+
+  * Only include config.h in files that actually need it, instead of
+    including it in every .cc file.  Unfortunately, this might not be
+    so easy to figure out.
+
+  * GNU coding standards:
+
+    -- Add a `Makefile' target to the Makefiles.
+    -- Comments on #else and #endif preprocessor commands.
+    -- Change error message format to match standards everywhere.
+
+  * Use STL stuff instead of libg++ lists, maps, and stacks.
+
+  * Eliminate more global variables.
+
+  * Encapsulate readline in a class.  Include interface to stuff like
+    blink_matching_paren. 
+
+  * Encapsulate resource stuff in a class.
+
+  * Move procstream to liboctave.
+
+  * Replace more C-style vectors with Array<T> stuff.
+
+  * Use references and classes in more places.
+
+  * Share more code among the various *_options functions.
+
+-------------
+Miscellaneous:
+-------------
+
+  * Implement some functions for interprocess communication:  bind,
+    accept, connect, gethostbyname, etc.
+
+  * The ability to transparently handle very large files:
+
+    Juhana K Kouhia <kouhia@nic.funet.fi> wrote:
+
+      If I have a one-dimensional signal data with the size 400
+      Mbytes, then what are my choices to operate with it:
+
+       * I have to split the data
+       * Octave has a virtual memory on its own and I don't have to
+         worry about the splitting.
+
+      If I split the data, then my easily programmed processing
+      programs will become hard to program.
+
+      If possible, I would like to have the virtual memory system in
+      Octave i.e. the all big files, the user see as one big array or
+      such.  There could be several user selectable models to do the
+      virtual memory depending on what kind of data the user have (1d,
+      2d) and in what order they are processed (stream or random
+      access).
+
+    Perhaps this can be done entirely with a library of M-files.
+
+  * Add a function like strptime() which is the opposite of
+    strftime().  A C version is apparently in recent releases of the
+    Linux C library.
+
+  * Merge OS/2 changes.
+
+------
+Always:
+------
+
+  * Squash bugs.
+
+				--30--