“Imagine if you will, a world where your ideas and perhaps, even your own creative works became part of the OS of tomorrow. Consider the obvious advantages to an operating system that actually adapted to the needs of the users instead of the other way around. Not only is there no such OS like this, the very idea goes against much of what we are currently seeing in the current OS options in the market.”
Well the article had a really great opening, but then it just kind of…stopped. It had potential but instead turned into:
1. Wouldn’t it be great if a computer could adapt to the user?
2. …but wait there could be consequences
3. The End
And all in under 725 words!
Stayed tuned for more adventures in mindless fluff IT “journalism”.
Edited 2006-08-28 09:34
Yes, it is short, but I think it is enough to start a discussion: “Is there something wrong with the ideas that have given us the operating systems that we use today?”
I think people keep confusing an operating system with “bundled applications”. Media players, browsers, even a file manager are applications not OS components.
Yup. Not sure why this was written or why it was linked.
Gotta love those under-developed, ultra-short yet multi-paged osweekly “articles”.
As users become more advanced with understanding Operating System’s, computer technology and information access what will be implemented on the functionality end will increase as well. We all live in a world that travels fairly quickly within 6 months, we have to produce the things which lay dormant in the mind.
Things are just getting started — remember the BBS days when less than a few were even interested much less knowledgeable…now everyone is almost an expert at the concept of accessing information abstractly using devices. Would prob say that majority have just learned to balance on the bike without falling over but much more to learn ahead for these.
Any which way we haven’t seen anything yet.
the real point is IMHO, why would we want something like that? I think you should never let the machine do what you can do yourself, otherwise it’s like never getting out of your parents home, we already depend enough on these machines.
every application or OS needs some time to get used to it, after some time you begin to learn how to cope and create yourself a workflow of some kind… some interfaces give you more or less tools and are more or less customizable to your needs.
that’s it… we just need flexible and modular OS not software that thinks for us!
If I can have a toolbox where I can put all the tools I need and a second one where I can put the ones I don’t need so often… what’s the point of having someone else doing it… probably it would just end up into not finding anything anymore…
agreed, you hit the point right on, maybe it’s more meanful to ordinary users who’re quite comfortable with bells and whistles like skinnable style, dockable widget etc, however, it’ll be a disaster to developers, os should never be a toy, you work on it not play with it
however, it’ll be a disaster to developers, os should never be a toy, you work on it not play with it
Actually it would be easier for developers, because the system would take care of persistence of data, update of code, versioning of code/data, universal type system, ABI compatibility etc.
Edited 2006-08-28 21:25
…to get rid of the concept of processes/filesystems/etc and instead focus on ‘information’ and ways that information can be manipulated.
I imagine an operating system where the 4 foundamental actions are:
1) define a new type / input a new computation.
2) create a new value / apply a computation.
3) search for values.
4) delete one or more values.
Initially the user has the capability of doing one or more of the above, as well as creating new computations that consist of these actions.
The user interface presents the available values as the results of computations, as well as a set of actions/computations that can be done over the information.
Each action opens a new window/screen. The previous actions are available, of course, unless the user can’t go back.
In this type of O/S, there is no concept of ‘program’ and ‘filesystem’.
Information is stored internally without hierrarchy, in tables. The system builds association of information depending on the queries the user does. Information is persistent, but it is thrown out if the system detects that it is no longer referenced by any computation.
Computations can be arranged by the system to run in sequence or in parallel, depending on their dependencies.
The user interface is uniform, i.e. some part of the screen shows the information, and some part of the screen shows the available actions, including commands for visiting other parallely executing computations.
The system shall also offer a ‘screen-builder’, i.e. visual way to construct new screens, visualise information in different ways and arrange actions in other formats. The screen-builder data are also information handled in the same way.(i.e. typed, inserted into a table, queried etc).
Device drivers would be a series of computations/screens packaged together. Same goes for ‘programs’.
The binary interface of all this shall be consistent from architecture to architecture, and pieces of code/data would be distributed as bytecode.
The kernel shall have the task of translating the bytecode to native code, store the native code and reuse it once the same computation is run.
The kernel shall also see the network as a potential target for distributing computations.
Under all this, a powerful lisp-like programming language shall be the medium where all this is realized.
I would have much more respect for big companies like Microsoft and Sun if they pursued something like this, instead of seeing the same old unix/C-based stuff over and over.
the big problem remains that most users tend to be pretty conservative on their habits… it’s very difficult to get them to change, to try someting new…
notheless I think there absolutely must be some projects that try to make something radically different, of course with the aim to create a better solution.
what modern Operating Systems are is perfectly represented by windows… started out as a command line Unix rip.off… and now it’s a huge and bloated os with graphical interface… but the whole thing is crumbling iside beacuse it’s like building a skyscraper on top of a public toilet… it lacks a strong foundation.
sure windows got rid of ms-dos some time ago… and still there is some left… not in the code… but in the ideas, in the concept of it all.
so… I’m looking fordward in seeing something new, someting revolutionary… I wonder why there are so many OS projects, some even experimental ones, but none really tried to redefine the man-machine interaction from the ground up.
EDIT: I forgot to say… your idea is not bad… could be a starting point… although it’s still pretty abstract to me…
Edited 2006-08-28 13:23
> …to get rid of the concept of processes/filesystems/etc and instead focus on
> ‘information’ and ways that information can be manipulated.
The main problem is that people don’t think in terms of information. They think in terms of language and structure. That’s what processes, filesystems, etc are.
Let me put it to you this way. If I throw a gig of data at you, you have information, but you don’t have knowledge. Sure you can enter it, as prolog-type statements, that you can create queries for, but you’d have no intuitive understanding of what the information is so you wouldn’t know what to ask it. If, OTOH, I organize my data in different directories with different names indicating what sorts of information is in each, and I create spread sheets and graphs and org chart-type hierarchies and flows, you’ll have a better idea of what you’re dealing with.
What I’m saying is that the idea system would be organized as it is now (since that’s more or less how people think) but queriable in an infinite number of ways. It’s a very *hard* problem, but it is doable. After all, we do it every time we need to translate a concept to someone who has a completely different mindset than we do.
“After all, we do it every time we need to translate a concept to someone who has a completely different mindset than we do.”
That’s what its all about, isn’t it. Translate what I mean into actions that the computer can do. So we’ve made some progress, but not a whole lot.
If I call for a “recordset” in Access’s VBA, I’m going to get a definition from three different reference sets. If I “apt-get epiphany”, I don’t get a nice lightweight web browser, I get some game. The namespaces don’t match what I mean.
It won’t improve until the maps between words and meanings and actions are more localized. geek vs. luser; general company vs. vertical market; Downeast accent vs. Valley Speak –too many dialects even the within American market to have one size fits all.
By luser, do you mean the people who use “take” to mean “accept, work, function, process” and who “call up” Internet sites because they were once on dial-up?
The main problem is that people don’t think in terms of information. They think in terms of language and structure. That’s what processes, filesystems, etc are.
Let me put it to you this way … If, OTOH, I organize my data in different directories with different names indicating what sorts of information is in each, and I create spread sheets and graphs and org chart-type hierarchies and flows, you’ll have a better idea of what you’re dealing with.
The proposal allows the user to browse the information and see what it is about. Since everything is typed, the user can see the type of data, and therefore know what it is about.
It’s a very *hard* problem, but it is doable.
I do not think it is very hard. All it requires is a database, a virtual machine, an online JIT compiler. All these technologies exist today, and they are mature.
If you like the idea of an operating system like this then you should either implement it yourself. Our, if you are unable, document the whole idea and everything that is involved and then see if some else will develop it with you.
Some of it just seems like redefinition:
Process == computation
File type == type
If not sure how you could remove the concept of a program, as a program is the applying of instructions to data, which is all computers are useful for.
If you like the idea of an operating system like this then you should either implement it yourself.
Thanks, but I don’t have the time.
Some of it just seems like redefinition:
Process == computation
File type == type
Not really:
A computation is a function: it has input parameters and returns a value. It is not like a process where the process is an opaque box.
A type is not a file type: a type concerns the type of data and it is the same for all computations, whereas a file type concerns the type of data only known to the application that produced the data.
If not sure how you could remove the concept of a program, as a program is the applying of instructions to data, which is all computers are useful for.
The concept of the program is not removed, but the idea of a hardcoded process which is responsible for managing a blob of bytes is gone.
Actually what I proposed is like the original unix philosophy (small programs doing one thing only and communicating through pipes), but elevated to its next logical level: a online typed programming language.
A computation is a function: it has input parameters and returns a value. It is not like a process where the process is an opaque box.
A type is not a file type: a type concerns the type of data and it is the same for all computations, whereas a file type concerns the type of data only known to the application that produced the data.
The concept of the program is not removed, but the idea of a hardcoded process which is responsible for managing a blob of bytes is gone.
Actually what I proposed is like the original unix philosophy (small programs doing one thing only and communicating through pipes), but elevated to its next logical level: a online typed programming language.
I have to agree with these statements, and actually parallel some of the design concepts above, which I hope to realise in my operating system project.
Of course, my ideal world is one without C for user apps / libraries, or even the kernel & device drivers 😉 It wouldn’t be too hard to create DSLs that the OS could compile to efficient native code where it matters. Or just use an efficient JIT compiler from the get-go.
Before we decide to make computers choose what tools we use, and what emails we need to read, we better be damned sure the computer will actually KNOW and never mess up. Zero tolerance for failure.
In short, I agree with the second half of the article.
I think everything we’d need to fix with computing has already been mentioned by someone (or will be, very soon).
What the article describes is an interface which could be implemented on top of current OS abstractions. Current OSes abstract the hardware. The author is probably not a programmer.
Over the years I have made changes to the OSes I have used. All of the changes seemed like a good idea when I started them, almost all of them were dumped within a week, very few stood the test of use.
First, one that was never on my non-MS OS machines. Adaptive menus. I hated it the first time I saw, my mom loves it because it narrows down the things she has to read. But!!! Everytime she asks me to do something for her that she does not know how to do the menus start adapting to my use and afterwards she ends up complaining I messed up her computer. Even if she was the only user the problem remains, the OS enviroment changes itself everytime you do something new. This does not encourage users like my mom to explore the possibilities of thier OS.
On my Amigas it was possible to have live icons of running programs, this made it possible to monitor the progress of multiple programs at a glance, I always wanted that feature on BeOS. But lately on thinking about it I realize that the nature of multi-tasking has changed for me. On my old 7/14/28 Mhz machines if I set-up 5-8 programs to do a number of tasks it could take minutes if not longer for even the fastest program to be done. I needed to monitor all the programs because I was looking for which tasked ended to go onto the next step. Today on a dual cpu machine running at 550 Mhz half the tasks I started will be done by the time I have finished starting up the last program. Something that was a need for my old Amiga is unneed on my BeOS machine.
Another idea I thought would be good is more State-Based-Icons. Your trash can on any GUI is a good example, it’s appearance changes based on if it’s state is empty or not. Thinking this was a great idea I wrote a program to change the icons on text files to show if they had beeen read on not. Great idea, worked fine on a few icons in a directory – was a total mess any directory with a hundred or more (sometimes thousands) text files – scrolling looking for an icon shape is a pain compare to going in list mode and sorting the attributes.
Audio-feedback. Does not really matter which on I tried keyclicks to hear if a key did not register, sounds for programs reaching certain states, clocks for timing. It turns out I just don’t want a noisy computer.
There have been other changes too, but most of them have come to the same point, dump before the week is out. It is easy to come up with ideas that sound like they can improve how an OS can be used, it is darn hard to come up with an idea that one want to keep on using.
in fact the way the OS behaves for the user is usually a matter of interface design. I know this is a simplistic way to see the thing… but IMHO that’s how most users see it. The OS is the mother of all programs and the aim of programs is get things done, to get things done right a program needs a good interface.
you need to do some extensive research to renew an interface, and it sure is no easy thing to do, takes time, and every step has to be tested on the user.
the idea alone is not always the answer to the problem…
I must say what novell did on suse somehow is the right way… despite the fact that they just adapted an already established interface and just changed some things here and there. the right thing is that they did a lot of testing on people, to see how they react to the UI (has MS ever done that? I guess they did… but I wonder what they did with the data they collected…).
now imagine if somebody started to build a UI from the ground up, afer a lot of testing, with a clear concept in mind, building a stong OS underneath it that would be built with the precise focus to provide the user certain tools and a certain kind of interaction… an OS that is built according to a man-machine interaction concept.
The problem with asking users who are not also developers is that they often don’t know what they want. And when they are given what they thought they wanted, they discover it doesn’t really work for them. Most people are conditioned by what they already know, so they can not imagine anything very different. For all the effort that is put into usability and “asking users”, in the end the greatest ideas will be those of individuals who through ingenuity or a spark of genius discover a new way of doing things or new way of thinking.
/
Since it’s smart enough to understand what you’re doing and tailor itself to your tasks why not just let it keep going and do the job so you can go to the beach instead?
The problem with asking users who are not also developers is that they often don’t know what they want
yes… but the problem with asking developers is that they often don’t know how the “real” user will react to things…
the right way lays in between… probably, let developers develop and users test, so developers know if what they did was right or not… which probably is already how things mostly work, but maybe this process could be improved.
Why they invented the use case.
…had no filesystem in the traditional sense. It’s worthy of a look.