
Policies and Conventions of Iode
 Iode is free software, covered by the GNU General Public License.
Mathematical modules should work with both Matlab and
Octave (see Compatibility FAQ), while the user interfaces
can be specific to Matlab or Octave.
Ideally, though, the functionality should be roughly the same
under both Matlab and Octave.
 The supporting materials of Iode are free as well, covered
by the GNU Free Documentation License. In
particular, LaTeX sources and such will be available; documents in
closed, proprietary formats are not acceptable. Plain ASCII, LaTeX
or HTML is recommended.
 The user interface is merely the icing on the cake. The main
point of Iode is to have clean, lean, and legible mathematical
modules that encourage students to understand and extend them.
 The user interface is fairly robust, but it is not designed to
catch every possible mistake the user might make. There are three
main reasons for this: (a) Foolproofing takes too much time and is
usually futile, (b) you may have thought of some creative way of
(ab)using our code that we didn't envisage but fully approve of,
and (c) if you wish to shoot yourself in the foot, that's your
prerogative. ^{1}
 When an exception occurs in a mathematical module (e.g., due to
bad input), the menu modules display the error message as generated
by Octave or Matlab. This doesn't look pretty, but it's crucial
feedback when developing new modules, which everybody is encouraged
to do.
 Iode avoids global variables as much as possible. Currently, there
are no global variables, only three global constants. The
global constants are
isoctave , ismatlab ,
and numtol .
The startup scripts of Iode initialize isoctave
to 1 (true) if Iode is being run under Octave, and to 0 (false)
otherwise, and they initialize ismatlab analogously.
They are meant to facilitate (but
not encourage!) the implementation of routines specific to Octave
or Matlab. The constant numtol is the numerical tolerance
(10^12 by default). Numerical values whose absolute value is less
than numtol will be treated as zero.
 All functions, file names, etc., are all lower case, e.g.,
iode, matlab, export2eps, etc. Moreover, when typesetting documents
with LaTeX, please stick to the following convention:
 Use $...$ for mathematical concepts.
 Use {\tt ...} for anything involving file names, keyboard
input, etc.
 Use \lstinline!...! for any Octave code. The command \lstinline
is defined in the LaTeX package
listings.sty .
Example: In the file {\tt rk.m}, the expression
\lstinline!t0:hh:tmax! creates a vector of $t$values.
 When referring to software by name, capitalize the first
letter, e.g., Iode, Octave, Matlab, etc.
 We manage the Iode web site with Genpage  Version: 1.0.7. Genpage
allows us to separate formatting information from content, and it creates HTML
code from content files of the following form:
%title%
Put title here
%keywords%
<meta name="Keywords" content="Put keywords here.">
<meta name="Description" content="Page template for Iode.">
%body%
<h2>Page template for Iode</h2>
<p>Put text here.</p>

The page template.html
was generated from this data.
 When there are subtle differences between the behavior of
Octave and that of Matlab, Iode should cover it up by introducing
functions that provide uniform behavior regardless of the platform.
For example, the module
fixaxes covers up the
differences between the behavior of the axis
command.
^{1}This is the Unix way: If you wish
to shoot
yourself in the foot, then it is the duty of the operating
system to provide the gun as well as the bullet.
