McGee's
Manifesto
Rough
Draft, for comments only. Please do not distribute in any form.
Manifesto
1) Never delete anything
created by a human being.
2) Never change anything
created by a human being.
3) Never paste anything
created by a human being.
4) Never forget the origin
of anything created by a human being.
5) Never forget the uses
of anything created by a human being.
Commentary:
Motivation
Human beings, when considered
as information processors, can output up to 100 bits per second. Any representation
of human information output that consumes more bits than that can be encoded
and compressed. This is left as an exercise to the reader.
(Please note the weasel
words: "considered as information processors". I fully acknowledge
that humans also output artistic information, which cannot be so concisely
encoded. But, I have faith that people will eventually figure out how
to encode this into smaller spaces, possibly as little as 1000 bits per
second. At that time, the temporary exemptions for artistic output will
expire. In the meantime, tape record everything. We'll figure out later
how to deal with it.)
At 100 bits per second,
the maximum output of a human being is less than a megabype per day. (This
assumes the person sleeps for only 4 hours per night.) At that rate, a
human could fill a 60 Gb disk drive in 182 years. We already have ample
storage space for everything that every human on the planet could produce
for the next 10 years. So, we already have the storage resources necessary
to accomplish this manifesto. What remains is a business decision; it
is worth it?
I take it as an article
of faith that everything any human being does is worth saving.
No doubt there is much
that almost everyone will say is not worth saving. But, I believe that
we will change those decisions over time, and what we decide today to
throw away, in 10 years we'll wish we had kept. Or 100 years. Look at
how little archeologists have to work with now, and how much they learn
from it.
Rules
OK, now that we know it
is worth doing, why these specific rules? Mostly, they are the result
of accumulated frustrations I have encountered over the past many years.
If I had appliances around me that that obeyed this manifesto, I would
be much happier today.
Rule 1: Never delete anything.
Why not delete anything?
Mostly because, sometime, somehow, I'll want it later. I may want it only
as a bad example. I may want it because I suddenly found a use for it.
I may have decided that I was ashamed of it when I wrote it, but that
sometime later, it was instrumental in creating something good. Or, I
was convinced that it could have, if only I could remember it.
Instead of deleting something,
add a tag that says it is obsolete, and why.
Rule 2: Never change anything.
There is no reality in
a computer. Nothing stored on a computer has a one-to-one correspondence
with any physical reality. What we store is models. Like every model,
it is our best guess - at that specific instant in time - of what is true
in reality.
As we learn more, our
view of reality changes. So, our models should change. But that doesn't
mean we should throw out the old models. We might decide later that there
was more truth to them. We might also learn a lot from looking at the
changes in our models.
Why not change anything?
If something is wrong, why not delete the old and leave the new? Because,
at one time, I believed the old to be true. I may have been wrong then.
Or, I may have been wrong when I decided it was wrong. I may have even
accidentally changed something that I didn't mean to change.
Instead of changing something,
add a new version of the thing. Timestamp it with the time you made the
change. Then, you can ask for various versions of the thing.
Any document is a model
of something else. It might be an essay, in which case what I'm modeling
is the idea behind the essay. It might be an accounting report, in which
case what I'm modeling is the business transactions. It might be a sound
recording, in which case what I'm trying to model is the emotional enjoyment
of experiencing those sounds.
Any model I make has elements
of truth in it. But, it is only my best guess at that time of what I was
trying to model. Human beings are fallible. It is not given to us to know
the absolute truth. So, if I keep everything in the model, I can look
at various versions of the truth and try to gain a better understanding.
For a more mundane example,
I use QuickBooks to do bookkeeping for a non-profit. I might write a check
to Colleen Spence in 1998, then a check to Colleen Reed in 1999, There
is no way to tell QuickBooks that these are different names for the same
person. Or, say I enter that the deposit of $180 on 22 February 1999 was
for membership. Then, later I find that it was really for selling CDs,
and correct the transaction. But, I've printed a report in between those
times. After I correct the transaction, someone asked me why membership
income was so high. Well, now when I run that same report, I get a different
number. I can't answer the question. (All of these are real examples.)
If I had an appliance
that kept all the changes, I find out when I changed things, and why I
changed them. I can't do that if the appliance forgets that I made a change.
Rule 3: Don't paste anything.
Copy and paste has caused
more grief than anything else. Once I paste something to another place,
I have a maintenance nightmare. If I change the original that I copied,
should the appliance change the places where I pasted it? Sometimes, the
right answer is yes, sometimes it is no.
I'm convinced that copy-and-paste
is a crude attempt to implement something I call pattern-and-variation.
Copy-and-paste wasn't too bad when computers were small and we couldn't
do big projects with them. But, now our scales have expanded, and we do
larger projects. And, we can't keep track in our heads of when we apply
patterns.
Instead of pasting, define
a pattern, then define a use of that pattern. When you define a use, you
can define any variations on the pattern. Say you want to create <make
up a better example than the test program>.
Rule 4: Never forget the
origin.
Rule 5: Never forget the
uses.
Notes:
When a programmer types
"make" to create a 200 Mb executable, don't save the entire
executable. All you need to save is the invocation of the make command,
because that's all that the human created. Everything else is 'just' a
configuration management problem.
If we do save everything,
we will create a new profession: data archeologist. Given this massive
amount of data, we'll have to spend a lot more effort developing tools
to search for it, to find interesting correlations.
(This notion comes from
Vernor Vinge's book <insert title here>.)
(The idea of extreme compression
came to me from <insert name here>, who pointed out that, in theory,
any image could be compressed to 80 bits. Of course, the compression method
was completely impractical, but that didn't keep us from disucssing it
as an interesting theoretical idea. And, see where it led me!)
Exceptions:
Because of current economics
of technology, artists who work in audio media are granted a temporary
exemption on practice sessions until 2005. This exemption does not apply
to studio work or to public performances.
Because of current economics
of technology, artists who work in performance arts are granted a temporary
exemption on practice sessions until 2010. This exemption does not apply
to studio work or to public performances.
Until such time as we
have developed much better haptic and tactile input devices, artists who
work in various other media (e.g., paint, sculpture.) are considered to
work in performance art. In other words, videotape everything.
|