Extremely easy-to-read guide to the reasons why you should use Tornado to
write your desktop apps with.

by N. Douglas.

Introduction
-=-=-=-=-=-=
   As anyone who knows me will testify, I don't particularly like RO3.1 or
anything of that thereafter. There's a simple reason to this: I think RO2 was
the last great update to RISC-OS, and since then there's been nothing added
to the OS.
   That's why I came up with Tornado. About 80% IMHO of programs written for
RISC-OS are written for the desktop environment, and yet the method of using
the desktop and writing for it are arcane and haven't changed greatly since
RISC-OS 2.
   The entire philosophy of writing for Tornado is different. You no longer
write applications in their own right. You write code which defines your
program as what you want it to be. You don't write code to redraw windows,
you don't write code to open menus, you don't write code to load or save
files. You don't even write code to manage memory. You don't write code to
recognise the difference a double click from a triple click. You don't even
write code to load in your user-defined configuration.
   The whole thing about Tornado that will scare most programmers is how
little you /do/ do. And the great advantage of that is that Tornado suddenly
has a lot of power over every app using it. Which allows applications to
function as a single unit in a fashion never before seen on ANY platform.
   And despite all this automation, Tornado increases the power available to
a task by incredible amounts. Suddenly, things like printing no longer take
over the desktop. Tornado applications can just as easily print five files,
while recalculating a spreadsheet and converting a set of files from GIF to
JPEG *on* *a* *1Mb* *machine* (it uses virtual memory). And this BTW,
_doesn't_ require any applications loaded in other than a single spreadsheet.
   Tornado offers processing occurring on a task at multiple levels, via its
TAOS-like subtask facilites. Files loaded into one application can appear in
another application's window without consuming any extra memory, and any
operations performed on one 'view' affect all other 'views', as actually
they are all multiple views of the same file. Files can be OLEd and RAM
transferred to and from any app, including non-Tornado one's (although OLEing
between Tornado apps is _much_ more pleasant and convenient).

   The foremost objective of Tornado /is/ /to/ /increase/ /productivity/.
Above all else, it will do this to its fullest extent. The second objective
is to be frugal with resources ie; be quick & responsive, not consume vast
amounts of memory to do simple operations (like certain PC GUIs), and not to
take up vast stretches of disc space. The tertiary objective is to remove as
much programming time from the programmer as possible, and to make life on
him/her as easy as possible.




Index
-=-=-
1: Continous polling, I/O, OLE and hotlinking
2: Memory management
3: Subtasks
4: Renderers
5: Crash protection
6: The shell itself
7: Misc




Well, unfortunately, as always, here's the copyright notice:
-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
(Note, you don't /have/ to read it, but not reading it means you are still
usually under its influence - read it to find out!)

   Copyright for absolutely everything described, implicated or inferred to
(ideas included), whether intentionally or not, within the data as contained
within the unaltered copy of this archive remains with me Niall Douglas, if
so granted by the laws of the country in which you are reading this;
otherwise, copyright remains with me for the same as aforementioned above up
to and including that which is deemed maximum by the laws of the country in
which you are reading this.
   The reader is permitted to distribute this archive wherever he/she
chooses, so long as it remains unaltered and its archived state. Any
recipient of this archive is also bound by these copyright restrictions from
the moment of posessing a copy of the archive whether he/she has read these
restrictions or not, unless this statement and the statement previous to that
cannot be upheld by the laws of the country in which the copy of this archive
is being held, in which case the aforementioned statements as written above
in this paragraph are stated to be in force up to and including that which is
deemed maximum by the laws of the country in which the copy of this archive
is residing.
   I take this opportunity to declare no responsibility for any inaccuracies,
misleading statements (whether intentional or otherwise) or any other liable
information or statements, unless this resolution cannot be upheld by the
laws of the country in which this archive is being held, in which case the
aforementioned statements as written above in this paragraph are stated to be
in force up to and including that which is deemed maximum by the laws of the
country in which this archive is residing.
  By reading these restrictions, or having the ability to read them (whether
it be direct or indirect), you are agreeing to be bound by them. Again, this
is unless this statement cannot be upheld by the laws of the country in which
the copy of this archive is being held.

(C) Niall Douglas 1995
