The day that everything went wrong!!!
I Have a Dream Revisted
Originally presented as part of "The Rennaisance of VB" Keynote at Visual
Basic Insider's Summit, February 14, 2000
Copyright 2000, Don Box (with apologies to Martin Luther King Jr.)
A half-score years ago, a great Programmer, in whose symbolic shadow we stand
invented Visual Basic. This momentous decree came as a great beacon-light
of hope to millions of Programmers who had been seared in the flames of withering
detail. It came as a joyous daybreak to end the long night of manual memory
But ten years later, we must face the tragic fact that the Programmer is
still not free to VB. Ten years later, the life of the Programmer is still
sadly crippled by the manacles of dangling pointers and the chains of heap
corruption. Ten years later, the Programmer lives on a lonely island of tedium
in the midst of a vast ocean of potential productivity. Ten years later,
the Programmer is still languishing in the corners of component development
and finds himself an exile in his own object model. So we have come here
today to dramatize an appalling condition.
In a sense we've come to this conference to cash a check. When the architects
of our platform wrote the magnificent words of the Platform SDK and the COM
Specification, they were signing a promissory note to which every Programmer
was to fall heir. This note was a promise that all Programmers - yes, casual
scripters as well as free-threaded marshaled GUID-heads - would be guaranteed
the unalienable rights of robust error handling, uniform typing, and the
pursuit of component interoperation.
It is obvious today that Microsoft has defaulted on this promissory note
insofar as the users of VB are concerned. Instead of honoring this sacred
obligation, Microsoft has given the VB programmer a bad check, a check that
has come back marked "Inheritance Not Supported"
But we refuse to believe that the bank of functionality is bankrupt. We refuse
to believe that there are no exceptions to be thrown from the great vaults
of potential for this language. And so we've come to cash this check, a check
that will give us upon demand the riches of elegance and security of type
safety. We have also come to his hallowed spot to remind Microsoft of the
fierce urgency of now. This is no time to engage in the luxury of Resource
Kits or to take the tranquilizing drug of incremental service packs. Now
is the time to make real the promises of functionality. Now is the time to
rise from the dark and desolate valley of "non-creatable classes" to the
sunlit path of interface-based programming. Now is the time to lift our platform
from the quicksands of IDispatch and type libraries to the solid rock of
Java-style reflection. Now is the time to make high-fidelity componentware
a reality for all of Windows' programmers.
It would be fatal for the VB Programmer to overlook the urgency of the moment.
This eternal winter of the VB Programmer's legitimate discontent will not
pass until there is an invigorating autumn of faster data-access and thread-neutrality.
The year 2000 is not an end but a beginning. Those who hoped that the VB
Programmer simply needed to blow off steam and will now be content with a
new version of ADO have a rude awakening if the industry returns to business
as usual. There will be neither rest nor tranquility in Redmond until the
VB Programmer is granted his inaliable rights. The whirlwinds of revolt will
continue to shake the foundations of our platform until the new version of
However, we cannot walk alone. And as we walk, we must make the pledge that
we shall always march ahead. We cannot turn back. There are those who are
asking the devotees of Visual Basic, "When will you be satisfied?" We can
never be satisfied as long as the VB Programmer is the victim of the unspeakable
horrors of Dim WithEvents. We can never be satisfied as long as our components,
heavy with the bloat of a runtime we did not create, cannot gain entrance
in the thread-neutral apartment or the COM+ object pool. We cannot be satisfied
as long as the VB Programmer's career mobility is from form designer to Excel
macro jockey. We can never be satisfied as long as our programs are stripped
of their selfhood and robbed of their dignity by signs stating "automation
type not supported." We cannot be satisfied as long as a Programmer in Visual
Basic cannot pass constructor arguments and a Programmer in VBA believes
he has nothing worth constructing. No, no we are not satisfied and we will
not be satisfied until elegance rolls down like waters and functionality
like a mighty stream.
I am not unmindful that some of you have come here out of great trials and
tribulations. Some of you have come fresh from narrow cubicles. Some of you
have come from areas where your quest for a simpler programming model left
you battered by storms of persecution and staggered by the winds of C++-inspired
brutality. You have been the veterans of creative suffering. Continue to
work with the faith that unearned suffering is redemptive.
Go back to the start-ups, go back to the financial firms, go back to the
IT departments, go back to the three-man consulting shops, go back to the
web development houses, go back to the programming slums and ghettos of our
data entry systems, knowing that somehow this situation can and will be changed.
Let us not wallow in the valley of despair. I say to you today my friends
- so even though we face the difficulties of today and tomorrow, I still
have a dream. It is a dream deeply rooted in the dream of a computer on every
desktop and information at your fingertips.
I have a dream that one day this language will rise up and live out the true
meaning of component software: "We hold these truths to be self-evident,
that all objects are created equal."
I have a dream today.
I have a dream that one day on the green hills of Redmond the sons of former
journalists and the sons of former computer scientists will be able to sit
down together at a table of component interoperation.
I have a dream that one day even the platform of Linux, a desert platform,
sweltering from the lack of development tools and decent debuggers, will
be transformed into an oasis of productivity and utility.
I have a dream that my two children will one day program in a world where
they will not be judged by the lack of semi-colons but by the content of
I have a dream today.
I have a dream that one day the Free Software Foundation, whose leader's
lips are presently dripping with the words of interposition and nullification,
will be transformed into an situation where little VB modules and classes
will be able to link against little GNU programs and execute together as
I have a dream today.
I have a dream that one day every variable shall be Dim'ed, every Sub and
Function shall be made fast, the tedious tasks will be made effortless, and
the DLL will be made COM, and the glory of the Code shall be revealed, and
all watch windows shall see it together.
This is our hope. This is the faith with which I return to the Tool. With
this faith, we will be able to hew out of the mountain of drudgery a stone
of programming pleasure. With this faith we will be able to transform the
dangling references of our objects into a beautiful symphony of execution.
With this faith we will be able to work together, to code together, to struggle
together, to go to PDC together, to stand up for Option Explicit together,
knowing that we will proudly use VB one day.
This will be the day when all of God's children will be able to sing with
a new meaning, "My language, 'tis of thee, sweet grammar of simplicity, of
thee I sing. Language where new things are tried, Language of Alan Cooper's
pride, from every mountainside, let VB ring."
And if Programming is to be a humane profession this must become true. So
let VB ring from the prodigious hallways of Xerox PARC. Let VB ring from
the mighty programming houses of India and Asia. Let VB ring from the heightening
financial firms of Wall Street!
Let VB ring from the snowcapped research labs of MIT!
Let VB ring from the compact platform of PalmOS!
But not only that; let VB ring from all open source and GPL'ed software!
Let VB ring from the flourishing Apache web server!
Let VB ring from every window manager and every widget set of GNOME. From
KDE, let VB ring.
When we let VB ring, when we let it ring from every platform and every problem
domain, from every CPU and every OS, we will be able to speed up that day
when all of God's children, rich men and poor men, Lawyers and Housewives,
Accountants and Flight Attendants, will be able to import component libraries
and sing in the words of the old Programmer spiritual, "VB at last! VB at
last! thank God Almighty, we have VB at last!"