Virtual System Emulator for Linux and Why NOT to Use Them

Now that I have LINUX installed on a machine, the question becomes
what can I do with it?

I've heard there is an application that will allow me to run my standard
windows programs (office, etc), anyone know anything about that?

Jeff

There are several efforts to provide this sort of thing.
Page down to the end to see some notes about those. Meanwhile
here's a rambling rant:

Installing Linux in the hopes of running your Windows/Office
programs is certainly misguided if you intend to get any
"normal" work done.

What you do with any OS is run programs. When selecting which
OS(es) to install and use your chief consideration is: what
programs do I want to run?

Thus, if you wanted to run WordPerfect, or Mathematica, or
Applixware (an applications suite which is available on
several forms of Unix, and in a Windows version as well) ---
you'd then have choices. These applications are available
under a few operating systems.

However, with Microsoft Office you only have two (real)
choices: MS Windows, or MacOS.

As noted below many people have attempted to expand your
choices (by allowing you to run Windows programs under various
forms of emulation and capability interfaces).

I personally think it's silly to install an OS and then ask
"now what do I do with it?" It seems analagous to ripping the
powertrain out of a car, fitting it with a "formula 1" engine,
blowers, and a custom tranny and asking: "Now what do I do
with it? Can I use this for my daily commute and grocery
shopping?"

(The answer, in this hypothetical case is, "Maybe, but why? A
racing car is for racing, it makes a poor choice for more
general use").

Of course my analogy breaks down at this point since Linux is
not so specialized. I don't want to perpetuate the notion that
Linux is a "server" OS. That's just where it's currently popular.

There are general applications for Linux --- they just aren't
the same brands that you're used to seeing for Windows
software. There are more office applications suites for Linux
than there are for Windows. This is nice from the point of
view of the consumer that wants choices; but crippling from a
"big business" perspective.

Under Windows there is essentially one dominant office
suite. (A couple of others exist, like Lotus Smartsuite, and
Corel's Office, and Applixware --- but they get essentially no
press coverage and have just about nil "mindshare"). It is
almost certainly no accident that the company that controls
this proprietary OS also dominates the applications that are
available for it. That is a major point in this DoJ
investigation of Microsoft's business practices.

Other companies have dominated other fledgling industries
in our nation's history. At least three of them were subject
to "consent decrees" (agreements with our federal government
regarding their responsibilities as recognized monopolies)
--- I'm referring to IBM,
Xerox, and
AT&T. However this
is not a history lesson --- which is good since I don't
have textbook summaries of those cases handy.

So, under Linux you can run Applixware, WordPerfect,
StarOffice, Cliq (a character based suite) and various
freeware packages like LyX, SIAG (Scheme in a Grid ---
a spreadsheet package), and Maxwell (a word processor) and
others (like 'sc' or 'slsc' the "spreadsheet calculator"
and the "SLang version of 'sc'").

A more popular way for many Linux users to work is with text
editors (rather than word processors) --- and using markup and
typesetting languages. These are whole different approaches
to the situation. Instead of using some proprietary word
processor interface and document/file format I use simple text
like:

I can use this template for all of my personal letters and a
similar one (with spacing set aside for a letterhead --- or
even with letterhead macros --- etc) for business.

With that I can simply run a command like:

latex myletter.tex

... to typeset it and either print the resulting "dvi" file or
run the 'dvips' command to convert it to PostScript and print
that (even on non-PostScript printers).

Note that the letters are typeset --- with kerning,
leading, etc. I don't have to concern myself with the details
about line length, pagination, etc. The \vfill commands
(macros) are hints about how I want the portions the first and
last pages filled (providing visual separation between the
addressing and salutation, and between the text and the
signature/closing).

I can create my own "styles" and "document classes" and I can
create my own abbreviations and macros for doing things my
way. For example a friend of mine has a couple of macros for
his resume (which can be easily rendered with a properly
accented 'e' under LaTeX) which allow him to put in a line
like:

... and have each element of that (company, title, date range)
typeset in a particular fashion (such as "Large bold" for the
company, "large italics" for the title and "small caps" for
the dates, with "\hfill" to fill these lines).

If he decides that he doesn't like the look of one resume ---
he can redefine his "job" macro and all of the jobs will be
consistently rendered the new way. He and I don't have hand
edit all of the jobs on the list --- just the definition of
\job.

As another example; there are many things that Windows users
put in spreadsheets (Excel) that are more like databases or
tables (that is tabular data without any computations
involved). They use Excel (or other spreadsheets) for this
because the things are already available and they know how to
use them. In some cases this is a reasonable choice. In
others they make more work for themselves than they would by
using a database, or using a "big text file" (say, tab and
line delimited).

Under Unix it is more common to put these sorts of things in a
text file and use the many text processing tools (sort, diff,
cut, paste, join, grep, awk,
perl, ... ) to work with them.

As the Windows user continues to use a spreadsheet (especially
for tracking lots of data and importing long tables) he or she
hits the capacity limits imposed by their memory and
applications. Spreadsheets programs typically have to load
whole spreadsheets into RAM. I don't know of any of them that
can "page through" a large spreadsheet effectively.

The Unix user's capacity is typically limited by diskspace. In
other words the text processing approaches usually scale well.
Things like awk, grep, join, etc just filter through the
file(s) and don't have to load any more than a small buffer's
worth at any given time. Even 'sort' --- which necessarily
must go through whole files --- scales pretty well (I've
sorted files that were hundreds of megabytes --- it takes a
while and plenty of temporary disk space --- but GNU sort will
do it).

As a side note most programs under Linux/Unix are "toolkits"
or "little languages." For example you can simply "sort" a
list by "ASCII collating sequence" by just using a command
like:

sort file > file.sorted

... which is the simple case. But you can also deal with more
complex cases like this: let's say I have a list of
appointments of the form: MMM, DD, YYYY Notes (three letter
abbreviation for the month, on or two digit date, four digit
year followed by some text).

I can sort that with a command like:

sort +2n +0M +1n

... note that I sort first, numerically by year (+2 columns
from the start of each line), secondarily by the first column
by "Month" (a special sorting key per your locale), and
tertiarily by date (also numerically).

It's the same sort utility --- and it has lots of other
options (about things like "folding/ignoring the case"
specifying field separators, using an offset within the
column/field, counting consecutive blanks as singular or
multiple field seperators, and things like that).

Under Unix it's also easy to use programs with one another.
This is obvious when by pipe the output of one filter into
another (also available under DOS --- but much less widely
used due to the relative obscurity/unavailability of good
filters to use, and crippled by the implementation of pipes
--- which is basically a set of "anonymous tempfiles" with
"transparent redirection" --- as opposed to Unix pipes in
which the processes are running concurrently).

It is less well known but equally handy to see how the
dominant Unix/Linux editors ('vi' and 'emacs') allow one to
interface with "standard" Unix commands and filters.

Under 'vi' I can mark a line in my text ("[Esc]ma"
to set the "a" mark) search for an arbitrary regular expression
("/regex[Enter]") and then I can filter that block of text
(from my cursor to the mark) through an arbitrary Unix command
(such as 'sort') using just 3 or 4 keystrokes (plus the
command's name). (In my example that would be "!'a" followed
by "sort." All of the lines of text would be fed to the
filter, and anything returned by the filter would replace them
in my text). To read the output of some simple command under
'vi' I just type "[Esc]:r!" followed by the command. Any
output from such a command is inserted into my text.

There are similar features in 'emacs' (just use C-u,
M-|[That's C for "ctrl" key, M for "Meta" usually meaning the Alt key,
in case yo're not familiar with Emacs documentation -- Heather] to
pipe a block through a filter, and C-u, M-! to read input
from a command --- I have those bound to simpler commands like
"[F3]!" in my startup files).

Those examples are "power users tricks" --- but the point out
something more important. Many Unix/Linux commands
autommatically and transparently use other programs in their
normal operation. Thus you can type the command:

tar -tzf foo.tar.gz

... and the "tar" (tape archiver) will transparently
decompress the .gz file using 'gzip -d' while it extracts the
"table of contents" (-t) from it. Similarly I can type a
command like:

tar cf otherhost:/home/myhome/new.tar ./*

... to create a "new.tar" file on a different system
(tar will transparently call the 'rsh' command to let me do
that --- assuming that I have set up the permissions and security to
allow it --- in other words, assuming that my security if very lax).

More obvious examples show up in most mail programs and
newsreaders under Unix. Most of them (elm, pine, tin, trn)
don't implement text editing functions. They pass your
replies, compositions, and other texts to your preferred
editor.

Under DOS/Windows every mail package, newsreader and many
other applications implement some cheesy little "editing mode"
(or screen/dialog) -- each with its own quirks and none with
as much power or flexibility as the old 'ed' (Unix line
editor).

If you installed Linux to learn about it --- then get out
there and learn about the commands you've installed. Try this
series of commands:

cd /usr/bin/; man *

--- that will bring up most of the man pages for most of the
commands on your system (one at a time --- hit "q" then
"Ctrl-C" to break out). Many of them are little tools,
intended to be use for a small part of your overall work.

On a couple of my systems I have over 2200 commands available.
(From bash you can quickly find out how many commands are on
your PATH by just tapping on the [Tab] key a couple of quick
times to get a warning message like: "Display all 2209
possibilities? (y or n)").

Some are as simple as 'cat' (concatenate one or more file
streams into standard output) and 'echo' (print a bit of text
on "stdout").

Others are as complex as Perl, C, and emacs. GNU emacs and
Xemacs are complete programming and applications environments
--- with hundreds of packages and about 1800 user accessible
commands (a quick way to find this is to type "M-x" and then
use the same double-tap on the [Tab] key, switch buffers and
count the number of entries in the "Completions" buffer that
pops up --- which is easier if you have your status line
displaying the line count).

I think there are about 1000 functions (system calls, stdio
and stdlib, etc) in a standard C programming package, and
there are several hundred in Perl and maybe one or two hundred
in awk. Then there's othe programming languages like TCL,
expect, Python, etc). Luckily many of these overlap and are
essentially "dialects" of a common set of "Unix conventions"
There's also quite a bit of overlap and duplication among
these.

> You can get the DosEmu program, it emulates dos and can even run
> windows 3.11(unofficially) so theoretically you could run office 4.2
> or less on it but that's a stretch. However it is still in
> development(just like linux) and eventually may officially run
> win3.11. There is no support for win95/98 apps that I know of, do to
> the structure of the OS it would require alot of time to emulate
> it in all of its instability and glory. Hope that helped. reds

If you really want to do it, look for an app called BOSCH (I think).
With it you can run WIndows 95 (Probably 98 too) from Linux. I know
that they have the opposite too. A version to run Linux from a
Windows 95 box (I wouldn't recommend it).

This implements a virtual PC under Linux or other
forms of Unix (it's shareware distributed sources).
There is also, as Raul says, a port to Win32S that allows
one to run Linux under Win '95 or NT!

I've never run it --- but I've heard that it is pretty
slow.

dosemu purportedly works for some Windows 3.1 programs
--- and I know it works find with many DOS programs
(use the "alphas" --- the betas are old and less functional).

There's also WABI, a commercial package developed by
Sun and licensed to Caldera;
(the sole distributor of the Linux port). This is also limited to Windows 3.1.
Search around at http://www.caldera.com
for details on that. (It, like Bochs and dosemu, requires that you install
the copy of Windows that you intended to run

Finally there's WINE (Wine Is Not an Emulator, or WINdows
emulator --- depending on who you ask). WINE is an ongoing
attempt to implement a full set of the MS Windows API's libraries
and DLL's sufficient to run a typical Windows application
without requiring any Microsoft code on the system.
You can read more about it at:
http://www.winehq.com.

Another approach that might be amusing is to buy a copy
of Executor (a Mac emulator for Linux) and try to run
the Mac version of MS Office under that.

I personally these these approaches are silly and worthless
except for the most casual use and (for the amusement and
research value of those that enjoy that sort of thing).