Second Coming of Technology
BgJonson79 writes "A Yale computer scientist has published his views on what will be the next 15 years of computing. He says the last breakthrough operating system was for the Mac and that Linux is obsolete. He also says the present file system is obsolete, as are some filenames." Many good points in this one. great discussion fodder: talks about how we just sort accept flaws in the systems we use. Also talks about how in the future the net will be less about computers and more about the net (eg astronomy isn't about telescopes) Definitely worth a read.
6,006,227 Document stream operating system
Just FYI
I consider something "pointless fluff" when everything in it provokes one of two responses: "of course, that's obvious" and "of course not, that's absurd". This article neither provokes thought nor predicts with any accuracy, just annoys and confuses.
There will be no real revolutions in interface because we've already found the only two possible interfaces:
-language (CLI)
-(usu. simulated) physical device manipulation (GUI)
That's it. Those are your only choices: tell the computer to do it, or work the buttons and levers on the machine that does it.
Yes, these will evolve. We will teach computers to speak with us more naturally (natural language capability), and we will make more intuitive and useable device simulations (virtual reality). These are not revolutionary changes, just natural and predictable evolutionary changes.
To call either obsolete is foolish, absurd. With the limited capacities of current computers, the language interface is more efficient (for most tasks) for those who work with computers enough to make learning the language worthwhile, and the direct manipulation of simulated machines is easier for those who don't use computers as much (and for those tasks which involve manipulations of simulated physical objects: like drawing and 3D modelling).
Okay, there's one more: direct subconscious control. The computer reads your mind, knows what you want, and gets it for you without you having to consciously communicate with it or even consciously understand what you want. This will happen, but not soon, and likely it will be a failure. People like conscious control, and don't trust computers. At any rate, this more properly considered a form of mind-enhancement than communication.
Similarly, the relationship between computers and networks isn't going to undergo any dramatic revolutionary change. We'll continue to tweak what should be served and what should be processed by the client based on costs and capacities of processing, storing, and transmitting data. The baseline of things that can't be trusted to the network will also be preserved.
And, of course, we'll continue to improve methods of data storage and retrieval. Hierarchical data storage won't go away; it's the natural system for us programmers to work in, it's very useful to have things like file paths and URLs. There'll just be more databases on file contents and better search features.
Timestreams, on the other hand, are just a bad guess. Linear organization? It has its place, but I don't see it gaining any special prominence in the future. Computer use is more timeless than focused on time.
Revolutions will take place in task-areas which do not yet exist, to solve problems we don't yet recognize as problems.
Some good cyberpoints, but I can't help but cyberreact dubiously to a cyberbody so cyberattached to cyber-buzzwords in the cyberyear 2000.
That's no prediction. The net is already all about pornography, gambling, and copyright violations.
Information wants to be anthropomorphized.
However, that does not mean we should give up trying to innovate at the "lower levels." What if car manufacturers quit making better engines and only focused on making more comfortable seats and installing better stereos?
There is always room for innovation and improvement. Linux is proving that against Micro$oft right now. Let's not believe there will be an "end" to change - technology does not encourage entropy.
What's that smell? Ah, that's my karma burning...
This article may purposefully be controversial or not, likely it is. Things that make people think and re-examine current ideas usually are quite controversial.
However, your proposition that a computer is a "device that runs programs" is incorrect, perhaps subtely, but the mistake is very important and the reason the rest of your reasoning is also incorrect. Let's look at this a bit more closely.
First, your statement. At the core, a computer does not run "programs". It executes code, which in turn manipulates data in some fashion (whether moving it to the screen or to a disk, it's data). What's the difference, you ask?
Saying that a computer runs programs presupposes an organizational model, a split between data and functionality. However, a computer doesn't presuppose this at all, as we can see if we examine it at a lower level. "Modern" operating systems, of course, make this supposition, and their underlying model is what "forces" higher levels of activity (developers and users) to also operate under this supposition. In fact, we've been using operating systems that function in this manner for so long that for the most part we all merely assume that the computer itself imposes this model on us. This isn't so! Why is this important?
When someone suggests another model, our assumption that the computer forces us to our current model blinds us to the possibilities, and even the very nature, of the newly-suggested system. As developers we no longer even take the time to consider a better way of doing things. If something needs done, we write as program, because it's programs that get things done! Or so we're lead to believe. So we continue to believe, as we wander further and further down an increasingly difficult path of programs, applications, and files. What's wrong with this path, though?
After all, we've been using programs to do things for us for the most part sice the first computer was built. Old doesn't imply that this is bad, so what's the problem? Computers are a tool. They are meant to be used to aid in whatever we're trying to accomplish, like any other tool, whether this is to write a book, or simply relax to a nice game of Quake 3. Just like any other tool, though, the closer they fit the problem, the better off they are. You want a hammer for a nail, after all. Programs, however, come in two varieties: applications, and utilities. Applications simply don't scale. They grow into larger and larger monstrosities of code, adding whatever new "feature of the week" seems cool to the developer or marketing department, and only interact through kludgery and hacks (such as OLE and related mechanisms). Applications aim "shotgun-style" to hit a broad segment of functionality, and if it doesn't do what you want, you're out of luck. Unix-style utilities on the other hand do a single thing very well, and are typically built to be useful in a chain of interaction (such as a pipe or other redirection). These have problems to, but different ones. Typically they require knowledge of how to get from what you've got to where you're going, that is, which commands will get your data, modify it in the way that you wish, and then output it to where you want. Often they require "data frobbing" along the way to make the next utility understand what the last one said, since the stream of data has no meaning outside what each utility gives it. So what would be better?
An object-oriented (OO) system, as many people have suggested, is really the next step (no pun intended) above a utility-centric system. As I'm sure you know, an OO model reorganizes ("encapsulates") code and data into units ("objects") that, because of the encapsulation, have the implicit meaning which our streams lacked. (They also add a lot of other things I won't go into, because I'm sure you know, and it's not necessary here.) This is not fundamentally different from how a computer works. It is merely a more useful reorganization of what a computer already does, namely, executing code (object methods) and manipulating data (object properties). How is this more useful?
Objects can interact without the problems encountered with utilities, but retain all the advantages. There is no need to worry about how data is formatted so that something else may parse it, but rather each property can be queried directly upon request, when necessary, if necessary. Objects remain independent, focused only on what they do, without growing features out of control to handle every case under the sun. We can use these objects as building blocks to form what we're after: they model every situation we can come across with a great degree of accuracy. How can I make such a broad statement? Look around where you're sitting right now. Your desk, you monitor, keyboard, pens, paper, books, etc. They're all objects. Everything we use and work with is an object already: it's natural. This is another major advantage (and also for some, a disadvantage): we're used to objects. People already know how to work with them. Unfortunately (and here's the disadvantage), we've all been conditioned to working with programs so long, that using objects on the computer seems unnatural. We can't think of any other way of doing things than opening up an application and saving that file. Here's the test though: what happens when you sit someone down who has never used a computer before?
Usually, they want to start typing, or start drawing, or immediately attack their problem at hand. Instead, they have to go through a set of unnatural and unusual steps, like starting up the word processor or drawing program, making a new file (of what type?), and any other number of things, before they can start writing or drawing. And once they've done that, they're not done! They have to save it, which is quite a foreign concept to most (after writing on that piece of paper, do you have to tell it to remember what you just did? I don't think so.) So, how would these common actions work in a totally object-oriented environment?
Instead of starting a program, and making a new document, you might simply grab a piece of paper, and start typing onto it. Or, pick up your tablet (or grab your mouse), and start drawing onto it. The code to decide what tools to present is trivial - if you don't believe me, look at GIMP or any other device-context-aware program. Pick up a tablet stylus and it'll switch properly to the last tool you were using. Same with the mouse, etc. Once you're done? You're done. You wrote that chapter or drew that picture, just put it away. Objects are persistant, and this is natural. But how to restore that change you didn't want to make? Or revert? Undo, and version control. Already been proven to work. But how would "other" things, like Quake, work, in such an environment?
Same way. Each quake level is still composed of objects that do things, have certain methods. Quake levels themselves are "containers" for these objects. Internal representation is up to the implementation of the object. Fast 3D display is for an interface object (a "View") which determines how to display these. (A level editor would be much the same, use the same objects, but present a different view.) Simple, see?
This is important. Hopefully this will cause those of you who chance to read this to stop for a moment and think of the possibilities, and a better way of doing things, and maybe someday we'll even see a system like this.
Don't think of it as a flame---it's more like an argument that does 3d6 fire damage
On my desk, right now, I have a dozen "Untitled Soda"s
The excuses that we as developers, designers and implementers use to perpetuate these anomalies are poor.
"The user isnt computer literate"
"That a training issue"
"You arent supposed to do it like THAT"
15 yr olds aren't "driving literate". 5 yr olds aren't "money literate" (the nickle is bigger, but worth less?). We live in an integration of disparate systems. We need to learn how to use (or be used by!) said systems. Cars, money, public transport... computers are no different. By and large, for joe end user they are only marginally more difficult than driving.
normal people dont want to be "computer literate", no more than we want to be "Accounting Literate".
Programmers, sysadmins etc. are the "Accounting Literate" people. End users only need to know how to recognize various denominations, write a cheque and use their bank card.
All they want to do is do their term paper, and not muck about in computer hell for hours.
May I suggest a pen? To write a term paper you need to know several systems. /. posters don't grok this system yet :) Estimated learning time: 3 yrs basics. University for advanced.
1. language. Can you speak it? Understand it? Learning time: 4 years.
2. writing. "joiny up" writing optional. A big system with lots of tricks. 'Its' versus 'It's'. 'i before e except after c' (except for science and heinous and... 40 others). Most
3. typing. Almost mandatory since the 30's. Learning time: 2 yrs
Figguring out that the icon of the document that says "document" on it is your (wait for it...) document can't be that tough after all that.... can it?
2 1337 4 u!
talks about how in the future the net will be less about computers and more about the net (eg astronomy isn't about telescopes)
This analogy is flawed. The network is to computers what empty space is to astronomy. Light is to a telescope as information is to a computer. Information traverses the network just as light traverses empty space (although not quite so efficiently).
The statement is also flawed. Who really cares about the network, other than those who maintain it? The only time I ever think about the network is when it goes down. What I care about is the stuff that's on the network. I want to get stuff from the network that makes the PC better.
This is not to say that the network is not important, only that it is a means to an end, not the end itself.
For all intensive purposes, "whom" is no longer a word. That begs the question, "who cares"?
Back when "automatic programming" was invented, it was assumed that programmers would become obsolete. Computing would be forever changed. The Users would be able to program for themselves. There was one problem with that. Automatic programming was a term for compiling code written in a higher level language. It didn't eliminate programming. All it did was redefine the skill set required by inroducing a level of abstraction. The processor is still there and so is the object code.
A couple of decades later, fourth generation languages were once again going to make programmers obsolete. Once again, The User would be able to program for himself. It didn't quite work out that way. It seems that the Users still enjoy the leverage of having specialists make their tools for them.
As for not mattering what operating system you are running, well if all the interfaces are the same, no it doesn't. That's the benefit of RFCs, POSIX, etc. But Gelernter neatly inverted the bits versus paper dichotomy that is well dealt with in The Unix Philosophy. Data shouldn't be printed to be used. It is printed as a fixed record of its state at a point in time. Paper data is dead. The power of the Unix model is the power of treating all of your files as streams of bytes and having a set of powerful tools for manipulating those bytes.
As for his point about files having no name, one name, many names, being in no directory, one or many, and a directory having one or many files. He said that three of these were currently legal and the other five not. That shows a clear lack of knowledge of the Unix separation of inodes and directory entries.
The net will not be what we demand, but what we make it. Build it well.
JHK
Why ask why? Just go try.
No... but the clerk does. Ever try to get credit without supplying your SSN? You literally need to fight with the clerk/management about why you value your privacy and why they don't need that info?
If I am drinking a can of soda, and I set it down, I dont need to save it as "mysoda7-7-00.pop"
Ever have concussion with short term memory loss? I have. It was more than a month before I could remember where I set down a can of pop a few minutes before. I frequently had to write notes to remind myself to do certain things or remind me where I set stuff. Ever set a can of pop down and have someone set an identical can down next to it and you were perplexed as to which was which? Ever label a styrofoam cup so you knew it was your drink?
Soda Cans dont need names.
Then why do they have brand names and flavors on them? For identification obviously. Isn't that the point of naming a file rather than just storing it as a raw block on the drive?
Neither do term papers
They do (as to magazines, journals, articles, etc) if you plan on sharing them with people. We have a hard enough time evaulating data based on what it claims to be; Can you imagine if we had to absorb every bit of random information given to us and then figure out what it was that we wanted without any identification?
The excuses that we as developers, designers and implementers use to perpetuate these anomalies are poor. "The user isnt computer literate" "That a training issue" "You arent supposed to do it like THAT"
Why is it that we expect people to learn how to address an envelope, drive a car, or use a stove but we can't expect them to learn how to use a computer? Why is only the computer expected to know exactly what you want to do? "Envelope, send yourself to Bob." "Car, go to the store." "Stove, cook me some soup." Wait, cars, envelopes, stoves, food, stores, etc don't need names either.
Writing a term paper should not involve fiddling with operating systems, playing with the file system, launching applications, saving and storing copies of the "document".
Neither then should it involve finding the properly ruled paper, an appropriate pen, putting it in a folder where you can find it to turn it in, putting your name on it so the grader knows who it belongs to, etc.
Don't leave your mind so open that your brain falls out. Don't close it so much that you cut off the blood.
Most people who wish to point out the future of computers seem to imply that we need some sort of major revolution- why? Computers work wonderfully as is.
People could say the same thing about the telephone.. this could have changed drastically over the years, but it works very well, and so why change it? Sure, everything is cordless, yadda yadda blah blah, but all in all, you still pick up the phone and punch in those numbers that you've been doing for a really long time. There could be technology to pick up the phone and say "Call bob", and there is, but people don't use it.. because the telephone is fine as is.
In my opinion, the future of computing will at some point move away from the computer.. it's headed towards pdas and cell phone etc. But the computer as is works fine as is, with it's filenames, windows, and basic directory structure similar to the way it was years ago. Sure, computers look different, pcs, server racks, laptops, etc., but all in all it's the same idea.. same with the phone. And while things will move forward (since when do they stand still), I don't think things will evolve much for computers.. I think they will be a persistant piece of technology that stays alongside of tomorrow's technology. People are for the most part comfortable with them and their interfaces (or are at least getting there.. my Grandfather knows how to use a mouse.. that says a lot).. so while they can be changed.. why would you want to?
But I'll bite. That's an interesting concept of interacting with information - but a horrible concept of interacting with a computer. Why? A computer is not an object-centered idea. Remember the big push a while ago for "OLE" and "Objectification"-style ideas, where everything turned into an object? Note where they are today - nowhere, and here's why:
A computer is a device that runs programs.
That's an important axiom. It doesn't modify documents, etc. It runs programs. And there's currently no way to create such a document-centered beast out of modern computer technology, because the computer is (at its core) still a device that runs programs. And folders, names, alphabetical orderings, etc. are a perfect metaphor for programming. He states that the current idea is great for programmers - well, that's because the programs they write need to interact with a system - and through our carefully-designed structure, they do it.
It's impossible to throw out the current orginizational concept of computers because any new concept of computing will still function in the same way. It may have abstraction layers hiding the functionality, but it will still function in the same way. What you end up with if you try to create a document-centered model is a system that falls apart, programmaticaly. It doesn't work, because it leaves no room to run the programs. Where do I put Quake III in the document-centered model? It's fine for one application, but what about when I've got fifty, all with their own data files?
When Be, Inc. first started to design their system, they had a flat filesystem, almost exactly as described. No folders. Instead, everything lived in the database. They abandoned that approach because it's almost impossible to build a large-scale device that way. (My Palm Pilot, however, works fine). Instead, they came up with a database system for the filesystem that doesn't throw out the approaches that have been carefully designed to deal with running programs. I can build a query and store it on the desktop that lists all of my BeOS-related bookmarks, and another that lists my Linux-related bookmarks. But they still exist on the filesystem as an item.
Of course it's obsolete and based on a 30-year-old system. The point is that the innovations in that 30-year-old system were largely being bypassed by the industry and we needed to fix that problem first.
The GUI itself is not an end-point of our work, and I believe that the verbal user interface will become the dominant way that people deal with computers in the future, at least until and unless there are really science-fictional things like direct neural interface.
Verbal user interface computing will use kernels and filesystems, but the user won't care about that. The paradigm is the computer as your invisible friend. The user will ask the computer for things like "Find me the hotel in Indiana that Joe emailed me about", and will be told about matches or asked questions that refine the query. The GUI will become almost output-only, with pointing done with the finger or eyes and the word "that" replacing the mouse-click. For example, the user points at something on the screen and says "magnify that".
Bruce
Bruce Perens.
POersonally, about halfway through, and witnessing about the 20th noun with the word 'cyber' prefixed to it, the paper became more interested and self-involved with the words it was creating ("Cybersphere", etc) and finding metaphors for the situations.
Like a Bruckheimer movie, I started to be able to pick the plot points and figure what coined term was going to appear next ("Cyberbody?" Cyberbody: Check.)
So while he does raise some interesting points, is it all that new, or is it merely someone wanting to bullshit their profs by writing a paper that appears "deep" and "Visionary"?
Moreover, is it someone like our esteemed Mr Katz who wishes to help shape the lexicon for the new age because they realzie they lack the ability to actually work with the technology itself.
Just some 1st impressions...
--sugarman--
His tired old "Linux is like Unix, which is 30 years old, so it must be obsolete"
He fails to understand that what is "new" about Linux isn't the software technology -- it's the development, licensing, and distribution models.
Linux development is driven by the people who use it, not by the people who market it. That's a huge difference that filters out a lot of the unfortunate crap that winds up in market-driven operating system design.
Linux licensing places the source code to the operating system in what could best be described as very close to a "copyright-enforced public domain." by guaranteeing you not only the right, but also the ability to control your software by guaranteeing you access to the source code. Traditional licensing keeps the source code to the operating system as far away from the public domain -- and the public -- as copyright and trade secret laws allow. This is another huge difference.
Linux distribution removes the single point of failure created by the proprietary ownership and distribution model. Traditional software distribution funnels all distribution through a single distributor, who charges monopoly prices, and can remove the product from the market at any time. If RedHat, Caldera, and all the other Linux distributors were to go out of business, or dump the Linux kernel in favor of a new kernel design, Linux would survive. I'd like a new release of the Lisa operating system. When can I expect it? This is a huge difference.
Linux will evolve, just as the Mac OS and Windows will evolve. The difference is that Linux is picking up features like journelled filesystems, while Windows is picking up features like talking paperclips and desktops that blink with advertisements.
That's a huge difference.
The innovation of Linux is that is has created a functional replacement for a Public Domain in software that has never existed due to overly restrictive copyright laws and overly long copyright durations, and like the public domain, has the potential to become ubiquitous.
NOT the fact that it is largely an implementation of a traditional Unix kernel, which, as the article points out, is not a new achievement.
This works great if you want your folders created by date recieved, length, or sender, but what happens when you want to sort your messages based on things that are not (or can't be) stored in the DB? How would you automatically create different folders based on subject matter, or importance?
If you want to do something like that, won't you be back to put everthing into a folder manually? If you carry the idea to files on your system, it scales poorly. Sure, you can sort files by what type they are, who made them, size, etc.. but how do I sort my English assignments from my Lit assignments, from CS Project proposals? Do we really want/need an AI to handle file-system accesses?
my sig's at the bottom of the page.
Second: The instant you see words like 'lifestreams' be well aware that Gelernter is SELLING this. It was the same for Mirror Worlds- the whole thing was an advertisement for the commercial software project he was selling. I have not seen any evidence that Gelernter understands sharing and the free software approach- I daresay it seems terribly quaint to him.
As such, it can be interesting to scan over Gelernter-handwaving for practicable ideas, such as long-skinny icons like book spines (hey, how about horizontally so you can read them- hey, what about making them a stack so the most recently used ones go to the top and stay there?). However, I would be very cautious about this because of the risk that Gelernter is busily filing patents on all of it and will attack anyone who tries to make his handwaving practical. Actually, I haven't seen evidence one way or the other, but based on his history of producing handwavey 'white papers' that are actually referring to proprietary technology that he is SELLING, I would be moderately surprised if Gelernter wasn't busily patenting up everything he could patent- which of course translates to 'everything'.
Can you tell I'm not utterly thrilled with this fellow? ;P If it turns out he's not seizing huge swathes of IP with patents on handwaving-derived general notions, I will be considerably more friendly- but in the final analysis there needs to be more implementation and less imagination for his ideas to go anywhere. There needs to be a lot more gritty detail in how these things are to be actually DONE. One thing you can say for the Linux approach- it's all gritty detail, rarely much in the way of sweeping imagination- but stuff GETS DONE. At the end of the day, Linux stuff got done and an awful lot of grand breathtaking visions remained just grand breathtaking visions...
Timeline:
1991 - Dr. G. publishes first manifesto.
1992 - Commercialization of the internet allowed.
1993 - Overnight, 5000 ISP's, webhosting companies and online shopping malls spring up all with the word "Cyber" in their names - cybermall.com, cybernet.net, etc.
1993 - Dr. Gelertner is injured by bomb. Out of the picture for some time. Cannot use a computer, visit the Internet or read Wired. Instead, he watches "I Love Lucy" and "Good Times" reruns.
2000 - Gelertner back. Writes manifesto. Uses the word cyber 400 times in a paragraph thinking he is cutting edge. Next manifesto subjects:
* how bad is Windows 3.1.
* when is the new version of Procomm coming out?
* "I just read a book called 'Snowcrash'. Here is a review".
* "10 things I like aboutOS/2"
* RFC2213666 - Why pay for Internet Access? Get paid to surf cyberspace!
People with advanced degrees aren't as smart as they think they are. If you'd had any brains you would have realized that there are a lot of people out there who resent bitterly the way techno-nerds like you are changing the world. In the epilog of your book, "Mirror Worlds," you tried to justify your research by claiming that the developments you describe are inevitable,and that any college person can learn enough about computers to compete in a computer-dominated world. Apparently, people without a college degree don't count. In any case, being informed about computers won't enable anyone to preventinvasion of privacy (through computers), genetic engineering (towhich computers make an important contribution), environmental degradation through excessive economic growth (computers make an important contribution to economic growth) and so forth.
If tits were wings it'd be flying around.
Of course, it sounds pretty wonky, although there are some precedents. For instance, that new Gnome mailing agent (can't think of the name offhand) doesn't have actual folders for your emails. Rather, all emails are stored in a single monolithic database, and virtual folders are constructed using queries. Even if you just wanted "Unread mail" and "Already read mail", you could construct that with queries.
Done properly, this behaves EXACTLY as he was saying -- the "folders" automatically "pull emails" into themselves. At least, that's how it might look to a user. Particularly if the user changes their folder parameters and all of the emails automatically appear where they need to be. The physical layout doesn't require the emails to actually move. Rather, the database merely processes the query when the virtual folder is opened.
It's a very powerful model, and a data-store structured in this manner would be very useful. I stopped short of saying filesystem, because I still feel a filesystem, at least in the sense we have today, should not be that heavily abstracted. Rather, if the filesystem is not an appropriate level of abstraction for a user's data, then a coherent software layer should construct one above that. Sorta like how your accelerator pedal and shifter on an automatic don't directly move the throttle or shift gears -- they state the intentions of the driver and the car does what's required.
--Joe--
Program Intellivision!