[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Fwd: From Love To Hate
This is long, folks -- but I don't have a URL for the piece,
and I thought it nicely written.
Sorry.
------------
From Love to Hate: Fifteen Years of Microsoft Products
by Daniel Brandt
January 1998
I bought my first computer in 1982, a machine with built-in BASIC
that could fit in an overcoat pocket. The batteries last a couple
of years, and the programs I've written for it are still quite
useful. Today you can't buy anything like it. You might find
something about the same size and weight, but it would have
icon-like menus pointing to various canned applications, many of
questionable utility. It would use about 100 times the memory I
have in order to do this, and needs to run much faster just to get
anything done at all. Battery life suffers accordingly.
While it's true that most consumers aren't programmers, this is one
example of what has happened in microcomputing. Most BASICs in the
early 1980s were licensed by Microsoft, and probably written by
Bill Gates himself. This was fine for amateur programmers, which
early computer users had to be. At least Bill's BASIC had "garbage
collection" -- a type of internal memory management that
automatically handles the messy chores that languages often
require. And it took minimal effort to get the same BASIC programs
working on different platforms, or to convert from one flavor of
BASIC to another.
This "garbage collection" made it easier to do "NameBase," a
database I began developing in 1982. One of the subroutines still
used today was written on that pocket computer, while I was
teaching myself BASIC. But I needed floppy disk drives and
print-outs, so within a few months I bought a CP/M machine, which
came bundled with Microsoft BASIC. Nine months later, NameBase had
grown sufficiently so that Bill's "garbage collection" took too
long. At that point I purchased the Microsoft BASIC compiler for
CP/M ($300). It solved my problem for two additional years of
development under CP/M, by collecting garbage so fast that I barely
noticed it. I had nothing but praise for Microsoft.
The IBM-compatible PC largely replaced CP/M during those years, and
by 1986-1987, Microsoft was enhancing their BASIC. QuickBASIC for
MS-DOS appeared, and even a version for Macintosh was produced (it
has never been updated, and won't work on today's Macs). Although
a compiler for Microsoft's BASIC was already available from IBM,
QuickBASIC did its own compilation. It was also a bargain compared
to IBM's price. I retired my CP/M machine, which by then I had
hacked to support five extra floppy drives, and started using an XT
running MS-DOS 2.1. That left only two major problems: the 20-meg
hard disks common in those days cost $400 and kept crashing, and
Microsoft began spitting out numerous upgrades to QuickBASIC.
Each upgrade had new capabilities and commands, many of which were
useful, but each also had some bugs that weren't in previous
versions. The upgrade prices seemed reasonable at the time, so I
went through QuickBASIC 2.0, 3.0, 4.0, and 4.5 in about eighteen
months. In 1990 I coughed up $300 for Professional BASIC 7.0, which
was nearly the last non-Windows BASIC produced by Microsoft.
Then in 1991, it became clear that Microsoft had to do something to
survive. This was the time of DR DOS (a replacement for MS-DOS with
some add-ons that Microsoft should have thought of long ago),
WordPerfect for DOS (perhaps the best word processor ever
produced), and Lotus 123 for DOS. In other words, the office
applications that put microcomputing on the map were happily
running on top of DOS, and none of them came from Microsoft. This
DOS could be MS-DOS, DR DOS, IBM's PC-DOS, or any other DOS that
came along. MS-DOS itself wasn't a big deal; in fact, a number of
little companies produced programs that hid DOS applications under
a menu, or did DOS functions through a better interface, or managed
memory or hard disks better than DOS itself.
Who needed Microsoft? The current version of MS-DOS was then 3.3,
and it was stable. Once you had it or a close cousin on your hard
drive, there was no need for Microsoft. They have never been
innovative with their software, with the possible exception of the
garbage collector in BASIC. But they had one advantage: through
licensing agreements, they monopolized the bundling of MS-DOS with
new PC hardware. That's all there's to it -- the beginning and the
end of the story. In fact, those who have any experience with CP/M
and Unix have long known where MS-DOS comes from. In college they
called it plagiarism and flunked you for it.
First Microsoft outmaneuvered IBM with the fine print in their
agreement. Then they won the "look and feel" lawsuit filed by
Apple. Their strategy was becoming obvious: leverage the Microsoft
bundling monopoly to shift from MS-DOS to Windows. This alone would
zap the Macs, and then they could gradually expand Windows by
bundling major applications with it. After all, there are only a
few things you can do on a personal computer: word processing,
databases, spreadsheets, accounting, games, and now the Internet.
Merely move Windows into each of these areas, and edge out the
competition (if you can't beat them, buy them). Since anything
Microsoft produced could be bundled with most of the new hardware
being sold, they had sufficient instant market share to eclipse any
competitor. When an upstart like Netscape makes headway with
something new, just clone the upstart's product, bundle it, and
drive them out of existence. It matters little if you have to give
it away -- if you grab for position now, you can grab for big money
later.
This is a strategy of raw power that's disguised as "giving the
users the integration and ease of use that they want." It works,
but not because users want it. I'm certain they don't want bloated,
buggy releases that include dozens of bells and whistles they will
never use, only to become obsolete within a year. It works for one
reason only: those exclusive bundling agreements that Microsoft
finagled with hardware manufacturers.
All this is driven by the fact that ever since Microsoft started,
hardware has doubled in speed and storage capacity about every two
years. At the same time, the price for a new system has decreased
-- my CP/M computer cost the same in 1983 as my XT did in 1986,
while my 486 cost less, and so would a new computer. For serious
users, it makes little sense to use the same machine for five
years; in less time than this, a faster machine pays for itself by
increasing productivity. Sensational improvements in hardware are
behind Microsoft's success, not innovations in software. This
curious fact may someday change for one reason or another, but
that's the way it's been for the last 15 years.
When you buy a new machine, you aren't asked whether you prefer DR
DOS or MS-DOS 6.22, or Windows 3.1 rather than Windows 95. You get
what Microsoft wants you to get, even if earlier packages would be
more efficient for your computing requirements. When I decided to
upgrade from a 286 to a 486 computer in 1994, I did it because I
needed the speed, but also because if I delayed much longer, my new
machine would be bundled with the much-hyped Windows 95. I already
knew that Windows 3.1 and MS-DOS were better for me. Based on the
stories I've heard about problems with early Windows 95, that was a
smart move. If I were to buy a new machine today, I'd reformat the
disk and install all of my old software.
I first felt that trouble was brewing in 1993, when Microsoft's
development tools for MS-DOS became extinct. I believe I bought one
of the last Microsoft C compilers for MS-DOS that summer ($300).
I'm glad I did: soon all that Microsoft offered was Visual This and
Visual That -- pig packages that required better hardware than mine
just to install. I'm even happier that I took the time to learn the
C programming language in 1993. Two years later, when Microsoft
finally realized that the Internet existed, Unix was already
running almost every server out there. Unix is multiuser, which is
necessary for servers, and it was built with the C language. While
it's text-based and command-line driven like MS-DOS (as opposed to
the graphical interface of Windows), Unix is infinitely more
powerful and also faster than MS-DOS, and uses a fraction of the
system resources required by today's bloated versions of Windows.
It's the same story as my 1982 pocket computer, writ large.
In 1994, a public-domain version of Unix became available that can
be installed on your hard disk without erasing MS-DOS or Windows.
This free version of Unix (called Linux), along with free web
server software (Apache), are still widely used on the Internet
today. Many experts consider them superior in performance to
Microsoft's Windows NT server software, which Microsoft has been
developing for years in an attempt to come up with a "Unix killer."
Nevertheless, corporations are going with Microsoft, perhaps
because NT is priced lower than commercial Unix, and the promise of
"consolidation" under Windows appears attractive to buzzword-hungry
bosses. No network manager at any corporation would dare suggest
using Linux; he'd be laughed out of his job. (In the corporate
world, anything that's free is also something that legal and
accounting departments can't handle. By definition these
departments cannot possibly be worthless, so therefore the item
that's free must be worthless.)
Now that I have my Linux, my MS-DOS 6.22, and my Windows 3.1 (when
there's no way to avoid Windows altogether), and old applications
such as dBase 3+ (which existed until Microsoft purchased FoxPro, a
dBase clone), Clipper, Lotus 123, WordPerfect 5.1, and BASIC and C
compilers for MS-DOS, and the free C compiler for Linux, I'm
feeling quite lucky.
But I don't feel lucky when I scan the "Help Wanted" ads for a job.
My skills are utterly obsolete for the job market in
microcomputing. Those who might once have hired me, have been
furiously converting to Windows for everything. To become
marketable again, I'd have to send Microsoft more money. I'm
looking at a brochure that they recently sent me. For mere hundreds
of dollars I can get a "Visual Studio 97" suite of development
tools, including Visual Basic, Visual C++, Visual J++, Visual
FoxPro, and more.
Of course I'd need a new computer with tons of memory and a huge
hard drive, and I'd have to spend many months learning one or two
of these systems. At that point I could put it on my resume, and
the number of programming "Help Wanted" ads I could answer would
increase about 20 times. But what if I learn the wrong package, and
it's obsolete by the time I'm ready to send out my revised resume?
And even if I'm eventually able to earn a paycheck by writing
programs using one of these development systems, doesn't that make
me part of the problem? Can I, in good conscience, support
Microsoft's monopoly?
Hell no, I won't play ball with Bill this time. I'm also not
willing to spend big bucks getting Microsoft-certified in network
administration or whatever, only to have the certification soon
become worthless. (Sometimes college also turns out to be useless,
but no one ever expects you to delist your degree due to
obsolescence.) Between Microsoft and those prospective employers
that buy into everything Microsoft does, I'm getting mad.
Fortunately, I've had more electronic hardware jobs than software
jobs, so I'm hoping that I can stick to hardware for the paycheck,
and save my antiquated software skills for things that matter more
to me.
Fifteen years ago I felt that I owed something to Bill Gates, and I
was grateful. I still feel that he's a major influence in my life.
But now I have an intense dislike for his methods, and I just wish
he'd stop doing it to me.
Bending Over for Bill, Part II
by Daniel Brandt
November 1998
It's ten months later, and the Microsoft anti-trust trial is in
full swing. Much information has found its way into the public
record about the long history of anti-competitive practices at
Microsoft. A couple of exhaustive internal memos were recently
leaked that had Microsoft worrying about the superiority of Linux,
which is free, over their own NT server software. There is also a
growing awareness, among networking professionals generally, that
NT is unstable and should not be used for mission-critical server
applications.
The newest NT, recently renamed Windows 2000, is scheduled for
release in 1999. It will probably be delayed, because the problem
of Microsoft bloat, and the bugs that invariably accompany bloat,
may finally be catching up with them. The current version of NT has
more than 35 million lines of code, while the Linux kernel is under
1 million lines, with a huge variety of server add-ons that might
scale this up to something like 10 million. With Linux, you can
install just what you need for a specialized server, disconnect the
keyboard and monitor, and stuff the box into a closet. Typically it
will run for months without crashing, and like all flavors of Unix,
it can be administered 100 percent remotely.
With NT, on the other hand, you get a fancy visual interface
instead of a command-line interface, which also means that remote
administration is more difficult. And NT's scaleability is poor,
which is another way of saying that it tends to be an
all-or-nothing package, lacking the add-on modularity of Unix
servers. Many administrators report that their NT installations
crash frequently.
There seems to be little excuse for NT bloat -- even the newest
Solaris Unix from Sun Microsystems will have about one-third the
amount of code as NT. At the level of the desktop, Microsoft has
the advantage over Unix because the Windows interface is used on 90
percent of personal computers, and is perceived to be easy to use.
But on servers, other considerations are much more important. This
is where NT is having problems.
These and other issues about Microsoft have dovetailed with my
personal experiences over the last two months, as I began the huge
project of porting the DOS version of NameBase to Windows.
I've thoroughly enjoyed the last seven years of bragging that I
don't do Windows. But sales of DOS NameBase were down dramatically
during that period, and income from the NameBase website has failed
to take up the slack. Furthermore, the word on the street is that
Windows 2000 will not support DOS programs at all, which means that
users will have to install a third-party add-on just to be able to
use a DOS program. It was time to bend over for Bill again.
I'm getting really sore from the experience. In the first place, it
was clear that I should start with 16-bit Windows programming. An
estimated 50 percent of Windows users are still using 3.1, and
Windows 95 reportedly runs the old 16-bit programs just fine.
Moreover, while the learning curve from DOS to Windows API
programming is steep, the curve from 16-bit Windows API to 32-bit
Windows API is trivial by comparison. In fact, memory management is
much easier with 32-bit Windows.
But the deciding factor was that my four-year-old 486 computer
doesn't have enough disk space to install Windows 95, not to
mention the bloated 32-bit C/C++ compiler that would also be
needed. I certainly wouldn't want to trade the DOS 6.22, Linux, and
Windows 3.1, all of which are productive and stable (apart from
occasional weirdness in Windows 3.1), just to make room for Bill's
latest buggy outrage. No, the 32-bit version of NameBase for
Windows will have to wait until I can afford a new computer. I'm
not fixing the software on my 486, because it ain't broke.
Where does one get a 16-bit compiler that will do Windows, when
Microsoft has deemed 16-bits obsolete for the past four years? I
was very lucky, because in early 1998, an old version of Borland
3.1 for C/C++ on a CD was included with one of those $49 "Teach
Yourself C++ in 21 Days" programming books. Then I got lucky a
second time: I needed about seven additional fat books on Windows
programming, and found several of these in a used bookstore for
under $10 each. Included were Microsoft's own Windows 3.1
programming reference books, which cost $40 each before they became
extinct.
I finally had everything I needed, but was not prepared for the
changes in software design that were required by Windows. They call
this sort of programming "event-driven" or "interrupt-driven,"
while my DOS version of NameBase is "procedural." I had to chop up
my DOS program into dozens of little pieces, and execute them one
at a time from a central "dispatch" function that managed these
pieces. The reason for this is that all external events, such as a
key being pressed on the keyboard, a mouse click, or blanking the
screen after it has been resized or moved, are administered by the
Windows API (application programming interface). I have to keep
"checking back with Bill" to see if the API has a message for me.
This "dispatch" function is the place in my program where I can
relinquish control to Bill, and then continue where I left off
after Bill's API has no more messages that need attention.
For example, if I am waiting for input, I have to essentially leave
my program and pass control back to the API, which will send a
message to my program when a key is pressed. Or if someone moves my
program's window or resizes it, the API wipes it clean and sends me
a message, at which point I have to reconstruct the display with no
help from the API, which doesn't remember or care what was on it.
This arrangement allows several programs to share the computer
screen, and allows multitasking. But it's different from the way
that Unix does multitasking. In Unix, the kernel handles
multitasking by assigning a slice of time to each process. For the
application programmer in Unix, this is invisible. To him it
appears as if his program is the only program running, and he has
complete control. The old, easy "procedural" approach is all that's
required.
By not administering the multitasking at the level of the kernel,
Windows makes it necessary for applications programmers to give up
control constantly in their programs. It becomes approximately
three times more complex to conceptualize and design a program for
Windows than it is for DOS or Unix. Of course, Microsoft has
additional pig packages (with many shelves of expensive
documentation) that are designed to mask this complexity. These are
called "visual development tools" and are another way that
Microsoft is leveraging their bloat into a fatter bottom line.
There are visual tools for various languages, as well as massive
systems that essentially disguise Microsoft's hundreds of API
functions by overlaying them with macros and additional functions.
While I have only a modest amount of experience with Unix and
Windows programming, already I find myself asking whether Microsoft
merely evolved into their clumsy approach to Windows application
development, or whether there is something more sinister going on.
Why wouldn't it be possible to design Windows so that the
time-sharing of processor power and peripheral resources is
invisible to the applications programmer? Why does it have to be so
difficult (and expensive) to write a Windows application? Is it
possible that there are slicker ways to write Windows applications,
but that Microsoft has reserved these for in-house programmers,
with the intention that they will be able to outperform
competitors? In other words, was Windows programming made
intentionally difficult? Is Microsoft evil, or just plain lazy, or
are they stupid?
The social effects of raising the bar to applications development
are rarely considered. Gone are the days when a kid with a crude
computer could write his own programs in BASIC and discover the
magic for himself. The bar to programming is quite high now,
because of the learning curve before one becomes productive, as
well as the cost of software that must be constantly updated, and
the books that must be bought to keep up with the latest software.
Although hardware has become much more powerful and less expensive,
the Microsoft monopoly has meant that even as we spend more time
and money, we're getting less back than we used to. A significant
portion of the difference has ended up in Bill's pocket.
It's all become so inelegant, overhyped, and corrupted by greed.
On my desk next to my 486 is an old ham radio transmitter and
shortwave receiver. I got my license when I was 14; I remember
reading a book then titled "So You Want to Become a Ham?" In those
days, a 14-year-old could ride his bicycle down the street, stop at
the first house with a ham antenna, and get hobby help from the
stranger inside. There was a sense of community, and the bar was
kept low for each new generation. But by now the problem with ham
radio is that it's so much less powerful and less interesting than
computers and the Internet, that I'm never tempted to get on the air.
Microsoft is exactly the opposite of the friendly ham down the
street. Bill Gates keeps leveraging his advantage, keeps raising
the price of admission, and keeps lowering the productivity of
computer users everywhere, while contributing little or nothing
that's innovative or educational. If we downsize this blight on our
future, someday 14-year-olds around the world may thank us once
again.
----------------------------------------------------------------------
Public Information Research, Inc.,
PO Box 680635, San Antonio TX 78268
Tel:210-509-3160 Fax:210-509-3161
Nonprofit publisher of NameBase
http://www.pir.org/ dbrandt@crl.com
----------------------------------------------------------------------
-John Bryan
johnb@austin.rr.com