Phantom OS, the 21st Century OS?
jonr writes "Phantom OS doesn't have files. Well, there are no files in the sense that a developer opens a file handle, writes to it, and closes the file handle. From the user's perspective, things still look familiar — a desktop, directories, and file icons. But a file in Phantom is simply an object whose state is persisted. You don't have to explicitly open it. As long as your program has some kind of reference to that object, all you need to do is call methods on it, and the data is there as you would expect."
Yes, yes, very interesting.
Is it volatile? If it is, then no thanks. If it isn't then it must be written to disk, in which case it's simply a regular file with a spiffy interface. Does that interface take up memory? How does it handle locking conflicts? How does it handle paging?
FTFA it's more like a virtualization system that takes constant snapshots of the system states, and reverts to them if there is a power loss or a shutdown or whatever. Fine. Cool.
But TFA skips over (in true Register style) any possible downsides to that. I'm a typical geek. I have 20 things running at any given time. Over time, with a traditional software system, there are enough page faults that when I roll back around to something I opened yesterday, the performance is extremely slow while all the states are being loaded back into active memory (and the states of something I'll need in 5 more hours are being written to disk).
If I'm persisting my whole filesystem in that fashion, there are quickly going to be issues. If I'm not, then there is some bullshit in there somewhere. They may have a fancy file allocation table, they may have some fancy I/O tricks, but their stated abilities are frankly contradictory, because the state is not being maintained, it is simply being preserved, and the difference is only subtle linguistically.
In short, the Phantom OS sounds more like the Phantom game console than anything I'd want to run on my computer.
ad logicam Claiming a proposition is false because it was presented as the conclusion of a fallacious argument.
I can't wait to handle the consistently changing data in my DB applications.
Two questions:
I skipped the Register article and went to the Phantom site, and I'm still puzzled. Somehow I get the idea that somebody's trying to snow somebody.
Q: [does phantom have] separate address spaces?
A: No. No! At this point you thought to yourself something like "than Phantom can not protect one application from another", and were wrong. Phantom is one big address space. But, nevertheless, everything inside is protected. Protection is based on a simple idea. Phantom is a big virtual machine. And this VM has no means to convert integer to pointer - due to this it is impossible to scan through address space and gain access to anything you have no pointer to. That's simple. And - yes, due to the absence of separate address spaces IPCs are really cheap in Phantom. And there are no context switches, which add effectiveness to the system. One can argue that VM makes system run slowly, but nowadays this problem is solved with effective JIT compilers, so we don't expect real degradation due to the VM. Moreover, the result of JIT compilation can be stored so usual Java-like startup penalty won't exist in Phantom either.
Memory in all computers is mapped to address space. I get the idea that these guys are programmers who don't really understand how the hardware works.
Q: File system?
A: Nope. Sorry. Nobody needs files in Phantom. All the operating system state is saved across shutdowns. Phantom is the only global persistent OS in the world, AFAIK. All the state of all the objects is saved. Even power failure is not a problem, because of the unique Phantom's ability to store frequently its complete state on the disk. The most unusual Phantom property is its hybrid paging/persistence system. All the userland memory is mapped to disk and is frequently snapped. Snapshot logic is tied with the common paging logis so that snapshots are done cheap way. From the application point of view it means that all the user documents or any other program state doesn't have to be squished into the linear filespace with the help of the serialization code, as it is in classic operating systems. Anything is kept in its internal, "graph of objects" form. This means that Phantom programs are much simpler and more efficient also. Opening text document in classic OS means reading file (transferring its data to specific place in process memory) and then converting its contents to program internal form (decoding and once more moving data), and just then - showing it to a user. Opening text document in Phantom means just executing some object's printMe() method - all the data is ready and available directly without conversion.
Nobody needs files? How, exactly, can I retrieve a document then? This FA is damned short on details.
Q: OS is based on VM - does it mean that not all the possible programming languages will be supported?
A: Yes. Say goodbye to C and Assembler. On the other side, everything is in Java or C# now, or even in some even more dynamic language, such as Javascript or even PHP. All these languages will be supported.
I really don't think I'm interested in this OS. TFA didn't point to a single thing about it that would lead me to want it, except for the state saving on shutdown, and I doubt seriously that's going to work. If your data are in memory and not the hard drive when it quits, you'll lose your data. If data are all written instantly to the HD, your PC will be slower than molasses in january.
Free Martian Whores!
SASOS's have been doing this for decades (AS/400).
Comment removed based on user account deletion
The S/38 and AS/400 have done this since like 1980 in COMMERCIALLY PRODUCED systems.
Article fails to distinguish between a reference and a file handle. Instead of opening a file handle, you can just use the object reference! But wait... how do you GET an object reference? Can anyone elucidate?
Oh wait, I think that's The Shadow. When does that OS come out?
More specifically, this sounds just like a Canon Cat.
My Other Computer Is A Data General Nova III.
So, what's the basic difference between what we have in phantom and what can already be done with a library/framework in, say, linux?
Save your wrists today - switch to Dvorak
Or it didn't happen.
"And then I visited Wikipedia
Oops. And now all Slashdot knows what typos lurk in my hastily-typing fingers.
(Yes, bad form, I know...)
Cue the Soviet Russia jokes...
Umm...this isn't a summary of the article...it's copied directly from the article. I'd prefer a summary that explains what the article is about, why I might be interested in reading it etc. Not just some regurgitated crap...
Isn't this what Microsoft wanted to do with WinFS? Bold idea, but little difficult to implement?
Freedom of speech doesn't come with bandwidth.
AP5
The file system sounds like the one promised for Microsoft's Cairo version of Windows - and XP and Vista.
Very often, people confuse simple with simplistic. The nuance is lost on most. - Clement Mok
Yeah, I think the development will go something along those lines.
Besides the fact that this is vaporware, it simply sounds like a high-end RTOS running on a PC desktop... which isn't really a great place for it.
Call me conservative, but I am a bit skeptical about this.
But a file in Phantom is simply an object whose state is persisted.
Persisted to a file?
You don't have to explicitly open it. As long as your program has some kind of reference to that object, all you need to do is call methods on it, and the data is there as you would expect.
I've written countless classes that work the same way. When I want to read the settings file for my app for example, I just instantiate my settings object and start reading the settings, the object handles actually opening the file (creating it if necessary), opening it if necessary, etc. If I set new settings, the object handles persisting them.
So all they've done is taken my (and anyone else who does any OO programming) model, and moved it into the OS API?
I'm not usually one to say, "no big deal, this has been done before" but seriously... this time it really is no big deal, its been done before. Hell, lots of API's for this sort of stuff even already exist, some of them even come with OSes.
The only thing that might be novel is if this phatomOS goes whole hog, and forces you to use that api and actually denies you all access directly to files using more traditional methods. But I have my doubts... that would make it needlessly incompatible with a lot of existing software.
M'thinks it shares much in common with its gaming namesake, the Phantom Console.
Oh boy, I can't wait for every application to have to invent it's own directory system to store saved state in, since it can't just use the filesystem to save the file to like in the old days. I bet it will be all kinds of fun to try to get your data from one application into another, especially competitors applications. Not to mention the pure joy that making an incremental backup on this system must be.
This seems like a throwback to old IBM mainframes and PalmOS. It's fine if your users don't mind being more or less locked into their applications and don't want to move data around very much, but it's crappy when they want to do more sophisticated things like compressing and emailing the document they're working on.
In short: This is a compatibility nightmare. There is a good reason full fledged systems don't use it.
I read the internet for the articles.
In AS/400. Dr. Frank Soltis, you are the original god. The whole OS runs in a virtual layer. That way, they were able to host legacy System/36 stuff up along side more "modern" OS/400. Everything is an object... yep..
This is my sig.
Anything is kept in its internal, "graph of objects" form. This means that Phantom programs are much simpler and more efficient also.
In many languages, you can easily serialize objects or trees of objects. I'm not sure how this differs much in the Phantom OS except that it is choosing when to serialize out to disc for you, but I don't really see that as being much simpler.
What happens when a Phantom user runs out of disc space? What if they attach an eternal disc and want some things there, or in both places for safe-keeping? All of the sudden you find you need something that looks and awful lot like Finder or Explorer to manage graph persistence locations...
And what happens when you have one file, er, object you may want to open with multiple apps? It didn't seem from the description like it would attach a single object to multiple app object graphs, just that it had easy IPC. So what happens when I want to open a JPG in my photo management app and then Photoshop?
"There is more worth loving than we have strength to love." - Brian Jay Stanley
Sounds lucrative.. not!
At first, when I read the OP's post, I thought he was being harsh. Then I actually read TFA, and here are some highlights:
Then it also has a special ASM language called "Phantasm". Looking over the example code, the question "Why?" kept flashing in my brain.
Ah, then we come to Why a new os?:
Okay, so according to the guy who created it, OS's should be simple, oo-friendly (my mom always says "Hey, stinky, why isn't my computer more object oriented?" (wtf?no), and future friendly? The guy must be just another cracked out developer..
Thanks but no.
Censorship is obscene. Patriotism is bigotry. Faith is a vice. Slashdot 2.0 sucks.
This is an old idea and it has been done before.
http://www.eros-os.org/
From what I read, these "objects" are nothing but a fancy new name for files. For instance, if you are writing a program in Python you don't save a file, you pickle an object. Oh, wait, that's exactly what Python is able to do right now, in any OS that implements Python! Doh....
FTFA:
Think of that: you cannot program in C, but you can write programs in PHP or Javascript. How cute! I suppose it supports Logo, right?
About face is a very old book written by Alan Cooper. And in the book he was very critical of things that have been completely ignored by the computing mainstream.
One of the things he critiques is the notion of files that need to read and written. That is not how people expect things to happen.
I actually think this guy is not a crackpot, but understands completely what is going on. What I think bothers people is that he is not following current dogma.
Having the OS as a virtual machine sounds very attractive because as we all know now, the virtual machine can do things that C, C++, assembler cannot.
For example with a virtual machine you have all of the metadata that you need to serialize, and transport data. With C, C++, and assembler you must explicitly say I have four bytes that need to go to point a. A big big difference in my mind.
We are already writing this code today, and it is called ORM, persistance frameworks, etc... He is just saying why not make this an operating that is part of the operating system?
"You can't make a race horse of a pig"
"No," said Samuel, "but you can make very fast pig"
...now, if they gave me a desktop that no longer had files, file directories, links, and other archaic throwbacks that map directly (in a fashion) to the hardware, then I'd be impressed. Give me a "semantic" desktop like my desktop at home: The ability to quickly, and visually, rifle through documents stacked on my desk so I can find that recent copy of my dissertation I made. I don't need a filename -- just give me the document based upon some quantifiable characteristic about the document, such as keywords, format, or even the visual layout. Folders? I don't keep the stuff on my real desktop in a file cabinet, so why the hell would I want to use folders on my virtual desktop?
This all sounds like what Smalltalk was trying to do. Basically there are no files, just one big VM where everything resides.
Believe me the absence of the file notion is a pain in the butt, since it is not clear where one thing starts and stops, and by the time you have tried making things clear to people, you are probably best representing a file.
Jumpstart the tartan drive.
Once upon a time, in the 1960s, in the dawn of the multitasking OS concept, there was Multics. It had no distinction between files and data; after all, a file is just a backing store for a piece of data currently mapped into RAM. Since RAM was expensive and small, and paging had to handle everything anyway, the data object that we think of as a file just gets paged in as it is accessed.
Unix was inspired by Multics.
As for eliminating languages to prevent bad code, it's been done too - by Pr1mos, on Pr1me Computers, which you may notice doesn't exist any more. So it's not so much "we prevent you from doing bad things" as "we make it hard for you to describe bad things to do so we don't have to work hard to prevent you."
Those who will not learn from history have to make their own mistakes at their own cost. History matters.
I don't think we will be quite ready for such an advanced OS until the 26th century
Oh gee, look... Someone has changed the description of something and now it's completely new. It's not a file anymore, it's a persistent object. You know, I remember the day when they just called them files. Nice, simple. You could almost visualize it in your head. Files, you know, like what you put in cabinets. And there were folders too, and it made sense. Then Macintosh came along and, in order to make their mark in the world, we stopped talking about files and started talking about Resources. Well, they've added four more letters, bit harder to understand, a few more tech support calls to explain it. And then along comes the next iteration of this naming game, a persistent object. Now we're at five constants, we've added seven more letters, tech support can't explain it, and although everything looks the same, by golly it isn't. Next they'll be calling it a post-operation management data structure.
See, here's a problem in our community in plain sight but nobody's going to talk about it, and it's this: We make things unnecessarily complicated. And we buy into these complications, because we want to impress our other geek friends and cohorts with our impressive cutting-edge knowledge. So companies sell us an ever-enlarging and increasingly dense lexicon to obscure what are really simple, fundamental concepts. You know, it has taken me decades to learn even a tenth of what computers can really do. It's what has drawn me to them my whole life -- they are based on such amazingly simple principles but yet can so such incredibly complex things. Learning information technology is like peeling an onion. I never finish. And you know, truth be told I like the challenge.
But what I don't like is having to learn an ever-changing lexicon just to have a conversation with someone, when we both understand the concepts and principles already. Why should we, as a community, constantly have to re-learn the same things over and over and over again? We need to stop doing this. We are wasting more and more of our time just trying to keep up with the language, instead of actually working the problems. And before I get the petty intellectuals to jump on my case for "dumbing things down", I'd just like to say anyone can make things more complicated but it takes true genius to make things simple. So there, I've said my peace. Bring on the rebuttals.
#fuckbeta #iamslashdot #dicemustdie
Smalltalk did this in the '70s, and the idea goes back to APL in the early '60s.
I could speculate about the reasons this never seems to become mainstream, but instead I'll just point that out and let other people do that... :)
Sounds like this would be easily adapted so that you can't access a file if you don't have permission due to DRM restrictions (you have paid your monthly access fee!).
Expect to see this on set-top boxes and as a feature of Microsoft Media * (or just Windows generally) as soon as the MPAA/RIAA get wind of it.
These guys'll make a fortune licensing to those asshats.
Multics had segments - not files. Segments moved between main memory and disk, but they were always just segments.
I'm inclined to agree.
Linux is, indeed, based on what is now a very old paradigm - approaching half a century. Concepts have advanced since, and much of what we do is just to retain that backwards compatability.
Windows, is, well, Windows. This being /., no more be said of that.
Grokking object-oriented programming, and users' mindsets as well, I agree that it would be worth at least examining the concept of a "file-less OS", one that simply keeps a live OO system persistent. I'd like to write software knowing that when an object is instantiated, it persists until explicitly deleted - without having to awkwardly save state to something as non-orthoganal as a file. I want to be able to manipulate & transport objects as such, not as files. Obviously the prime issues are performance (storage vs. RAM consistency) and recovering from shutdown; resolving these is simply a geeky engineering challenge, not an impossibility. The concept of "files" is archaic. Storing/transferring what we call a "file" would be better served by persistence & portability of objects.
A prime example is the notion of "restarting" a computer. Why, these days, should a computer startup time be so long? it should simply resume, but more robustly than "sleep" or "hibernate" - restoring the state of objects as they were, not restarting from practically scratch every time.
Could be that the OS ultimately does store data as "files", but that is an implementation abstraction, not a core of the paradigm. Users do not intuitively think of "files", and programmers should not force them to due to ancient rock-and-chisel backwards compatability.
"Those who say it cannot be done should not interrupt the person doing it."
- Chinese proverb
Can we get a "-1 Wrong" moderation option?
Is this the OS that the Phantom console is coming with?
I can't wait to play Duke Nukem Forever!
Soylens viridis homines es
Word has it that Duke Nukem Forever is being ported to run on Phantom OS.
Disclaimer: The opinions and actions of the US Gov't are in no way representative of those held by this author or its ci
Right. "Persistent object store" machines have been around for years. In addition to the ones listed above, the Go Computer (the first tablet machine) had a persistent object system.
There are some good points and some bad points to this. On the plus side, one of the big problems today is that support for "big objects", things one calls across a protection boundary, is lacking in many operating systems. There's no standard way to talk to protected middleware, like a database. (Notably UNIX/Linux, which still has at best mediocre interprocess communication.) This problem has been addressed many times, usually badly. OLE, CORBA, etc. are attempts in that direction, as are the ways the DLL concept is abused to create "big objects" with some autonomy. Many middleware apps have their own custom approach to talking across a protection boundary; MySQL is an example. Phantom at least is trying.
Major downsides are 1) it's weird, 2) you have to trust the compiler and storage manager to manage pointers properly, 3) it can lead to excessive paging I/O, and 4) if anything gets screwed up in a persistent-state machine, it's hard to unscramble the mess.
The last item is important. Databases, with all their elaborate interlinking and indexing, have the same problem, and database developers put vast effort into maintaining the integrity of the database even when applications go bad. Phantom has to do that too, at a finer-grained level. To some extent, so do applications. Memory leaks or uncontrolled object growth in persistent object systems are, well, persistent. Restarting doesn't help.
It's not a stupid idea; good systems have been built on this approach.
Smalltalk did this in the '70s, and the idea goes back to APL in the early '60s.
And, perhaps more to the point, Multics, also in the '60s.
What does this model say for Memory Leaks? If the state is persisted... rebooting won't clear the memory. I imagine there must be a "reset state" mechanism. Perhaps this can be done without actually rebooting. I dunno.
I commend their bravado in creating an OS from scratch, but can't see what need is addressed by this endeavor. Just how often does a truly novel OS gain a significant foothold in the desktop/server market? It took Linux many years, and its feet were firmly planted in Unix tradition. If nothing else, it's an effective way of generating traffic to their consulting site.
IBM also took the approach of ditching files, and just having persistence of objects (which yes, presumably somewhere in the bowels of the OS got written to disk). It was efficient enough to run on 1980s hardware, so I don't see a reason it couldn't be done today.
From Wikipedia:
10 PRINT CHR$(205.5+RND(1)); : GOTO 10
Does it run on the Phantom Console yet?
This Phantom OS is just that. I suspect it's just a Ninnle post taken too far.
So my system is running a dinosaur?
Sorry, no.
Also, i don't really think this will work good.
Im not an computer expert or anything, but copying everything from RAM to HD could hurt performence and stuff.
I hate how he clearly targets linux here
I think linux is way better then any windows (Thats what I think). Also his stuff is still vaporware and he is talking like he owns the OS market...
I would like this (concept) if it where open source...
Many devs = Succes and a better(?) linux.
By reading this you agree to give me (Noxn) 1 dollar.
From the faq:
"The most unusual Phantom property is its hybrid paging/persistence system. All the userland memory is mapped to disk and is frequently snapped. Snapshot logic is tied with the common paging logis so that snapshots are done cheap way."
From that, it sounds like it constantly snaps what's in RAM to something like a pagefile?
That's got to affect HD performance if it's basically always writing to the disk.
It's nice for powering down your machine, but honestly I'd rather have a "hibernate" button that makes me wait five seconds than making my machine drag while I'm actively using it.
It is possible to do something like they are saying, by using mmap() to map the whole address space onto disk, with the ability to grow when more objets are created. They could then use COW to ensure that state is not lost during a power failure.
Basially its just a VM (aka: JVM/.NET/python) without the expliit ability to call open()/write().
Files or "persistent objects", it doesn't make any difference since things are ultimately serialized to streams. In fact, the whole thing sounds pretty clumsy to me.
It's nine degrees Fahrenheit in Moscow right now. That's the kind of cold that makes a man concentrate on his work so he can keep from remembering that the tears the wind blows out of his eyes will freeze on the side of his face before they hit the ground.
I've walked to campus several times at 9 Fahrenheit or lower and have yet to see tears (or spit) freeze before they hit the ground.
The only way to tell the difference between a hamster and a gerbil is that the hamster has more white meat.
...to run the Phantom OS on the Phantom console?
I'm sure it will be just as successful as object-oriented databases and database-based operating systems!
It's a virtual machine that runs PHP. It's a kind of a PHP-OS, I call it POS for short.
Persistent data objects require non-volatile persistent data storage, i.e., disk. But access times for disk are dismal; that's why every general-purpose computer and most of the specific-purpose computers since UNIVAC have used some form of volatile, but much faster, form of memory to store working data. This working copy by necessity has to be synchronized with the persistent copy periodically.
The benefit of Phantom OS, the not-yet-developers of Phantom OS argue, is that this synchronization is done for you automatically; the programmer does not need to think about it. I argue the programmer knows (or SHOULD know) the synchronization needs of the data better than the OS ever will.
Say there's an object in Phantom memory representing the textarea control I'm currently typing this comment into in my browser. How often is it going to save the changes I'm making to its contents back to disk? Once per minute? Once per second? After every single character I type? Even though this is just a couple kilobytes of plain text, if the VM has to re-write it to disk 300 times a second, it's going to be painful.
I suppose Phantom programs could give hints to the OS recommending a sync schedule for each object type it uses -- but at that point, why not just make it the program's responsibility to synchronize? And most programs already do just that, whether it takes the form of flushing a data buffer or auto-saving a draft of a word processing document.
The OS really doesn't (or at least shouldn't need to) know enough about how the application behaves to know what the best strategy is for flushing data to persistent storage. Maybe it needs to be flushed after each line, maybe it should accumulate data until there is idle time, maybe it should wait until some application specific atom of data is received, or maybe it should wait until the user explicitly commits it to disk.
This isn't just a performance concern, its a data integrity concern. If it lacks support for control of how data is written to disk it is a useless OS... but if its required than what is that fat abstraction layer buying you?
I have an interest in J2ME programming so I know a little bit about devices that support it and immediately came to think of one thing: Some low-end phones don't have any physical equivalent of RAM but instead only one persistent memory in which both files are stored and which is used as "RAM" (so an app you write might no longer be able to start all of a sudden just because the user added a new mp3 ringing tone but I digress). Now on such a device, it is actually pretty retarded to save data to a file (a RecordStore, to be precise) when you close an app and then read it again when you start it if you could just as well just have it and the app in memory all the time. It wouldn't need any more memory either because you'd only need the running instance of the app in memory and instead of launching and stopping it, you'd simply switch to it when you use it.
So on a device with such a physical implementation, Phantom would probably be the best OS. At least for certain types of apps - the concept of files is fundamental for a word processor but a chart plotter might work better considering what it does with its data (plots trails and updates the chart data whenever possible).
"We have persistent objects, they're called files." -- kt
Hilary Rosen's speech was about her love of money and her desire to roll around naked in a pile of money.
There seems to be a lot of this type of thing around at the moment. But compare with IBM's AS400's single level storage (is it not the same - or so similar as makes no difference). Same with virtual machines - VM on the Mainframe anyone was there years before. Most of the new things seem to be old big iron software working on new chips. As someone who started on microprocessors then went to big iron (360), minis (AS400) back to pc and now back into unix big iron and now visualization is the big thing. It makes me laugh, - but then again as an on the ground techy no one listens and to change from centralized to decentralized and back again works wonders for consultants revenues. Where I work we have huge mainframes but no one thinks of putting "new stuff on them". We also have huge numbers of unix boxes with huge updating problems and so on and so on. What annoys me is so called "old tech" is rejected when it may be the best as what it can do is not understood management, also old tech is stuck to as management are unwilling to change. It's a lose, lose situation for business but a win, win situation for consultants. As most consultants maximize there revenue with partnership deals and generally rely on graduates that do not understand the capabilities of in place systems.
Things I like:
Things I don't like:
People: Technology is not magic; newer is not better; and we have something that works, works well, and makes sense to humans and computers. Relational databases make sense for structured data store; files make sense for abstract data store. A file is an abstract stream of bits, and attempting to replace it with "something else" will lead you to rename the "file name" with something fuzzy and abstract.
Support my political activism on Patreon.
If you think solely in terms of undo histories then yes, getting back to a previous state can be time consuming, take up large amounts of memory and/or cause RSI. But If you think in terms of auto-revisioning then a scheme like this could make more sense.
Cat jumps on your keyboard? No problem, switch to an earlier revision
Accidentally delete the doc? No problem
Go back too far? Just spin forward a couple of revision
Admittedly it could be hard for the average user, and it will remember the almost all of the complete historical state of the document (including any insulting things you've written: why would you do that?!), but I'd consider it quite a benefit to be able to roll back time on all docs, not just the ones in a git/svn/hg repository.
Hmmm, maybe a time machine would be handy?
If not, i don't see it being 21st century. more like 20th, with a gimmick.
---- Booth was a patriot ----
If their idea has value, they should be able to implement it as a library on an existing OS, or at worst a VFS driver, and demonstrate it.
An OS has absolutely nothing to do with whether you access your files through a POSIX API or not.
System operates YOU!
Yeah, old Lisp Machines were what popped into my head when I read the headline - it would be interesting to see a more modern OS with a lisp core and an advanced CLOS-like interface to everything.
The never-saving paradigm of the PalmOS was one of its brilliant features.
Newton OS had the same thing. It caused me to lose data twice when I accidentally deleted a large part of a Newton Works document and then did something else. Undo only undid the something else; the deletion became permanent as soon as it passed out of the one-step undo buffer. With a traditional load/save system like that of a PC, on the other hand, I can commit an object to the file system (Ctrl+S) or roll it back to the last commit (Ctrl+W Alt+D) when I know the object is in a known good state.
If people think that Linux is an obscure operating system that "nobody" uses, certainly less than nobody will use the Phantom pipe dream.
Reading Dmitry's website www.dz.ru left me with mixed taste, and NOT because of his less than desired English skills, but rather because the concepts he is trying to outline and the FAQ do not rest well with my understanding of the problems todays OS's deal with. He just jumps to the other end of the computer science concepts scale, the one that has been collecting dust ever since the concept of computer 'files' has made it as far as Hollywood, and the other end is just as lonely as the one Linux and Windows sit at. Everything-is-objects is an overhead we can live without, because frankly it is debatable if everything is. An 'object' introduces a whole layer of functionality which some pieces of data just might never need or would want to circumvent, and in that sense it will suffer the same fate as everything-is-a-file concept in Unix, which we inherited from stone age of computing. Albeit a file being a simpler construct than an object, the performance issues he will encounter will be substantially higher than with files where files are not applicable. I wish him well, and especially so that he realizes what the true challenges of computer systems are today, which he sort of tries to address. The website is worth a read though, I guess, even though the concepts he tries to explain on his pages appear to be either at planning/infant stage or are just somewhat messily designed.
Files are added as a concept because it is a hack and makes it easier for the programmer. A user in fact does not want to have say, "oh I have to save this?"
On the contrary, a "file" provides a convenient checkpoint for when one wants to roll back recent changes to a document. Do you really want to create a new revision of the document every time you type or delete one character in a text editor, or for every stroke in a paint program? Or what checkpoint method that happens more often than load/save but less often than individual unit changes would you recommend?
And whatever changes you make are immediately persisted. This is what users expect.
So how does the user "unpersist" a mistaken change?
The real problem I ran into when working on a basically the same idea was how to maintain a population of millions of objects (most small, some large) and keep performance at a decent level. Most of the criticisms in the various replies can be answered by bringing more object classes into the mix. Careful algorithm design is required to avoid touching every object in the system unless there is a specific reason to do so. When the total set of objects will fit in memory it isn't much of a problem. When the object population starts swapping to disk, though, and you try to send a message to each one, then performance goes down the tubes. The project seems eminently doable and I encourage them to keep going.
Now we know what Putin was talking about when he mentioned "Russia has the best programmers in the world".
What happened with Hurd by the way ?
How about using version control?
And every time you commit a revision to your local object store, that's called a "Save".
Who said there's no "current version of document" operation? It could even be named "Prepare for public consumption", in the File menu.
"Prepare for public consumption" is just "Save As" expressed using big words. So now we're right back to files. Or can you show that your distinction has a noticeable difference?
Linux, being inspired from the most stable, tried and tested operating system in history - Unix - isn't a bad thing. Hey, it works, right? And it has a GUI too!
"Using Unix is the computing equivalent of listening only to music by David Cassidy."
Rob Pike
I should learn to stop being amazed when people say "I don't understand it, so it (not me) must be stupid". Slashdot has really gone down hill in the last few years...
There have been breathtaking departures from the ubiquitous file-->I/O-->Object-->variables-->Registers-->CPU juggling act. Some like the IBM 38 said fuck all that, the CPU works on data objects directly, with no registers, variables, or I/O.
Problem is you have to get everybody to drink this Kool-Aid, from the compiler writers, DB implementors, OS designers, programmers, and end users. IBM was a big enough gorilla to try to force this, but in todays world that's not likely to happen.
ANd for the first few generations performance will be an issue. One will always be able to point to some other system that runs faster cause it does not have some of the overhead that the general object system has.
... it'll be a closed ecosystem: an OS that cannot run the a lot of the presently popular, mainstream programming languages. C/C++ - no, obviously (they say as much) - this means that vast majority of existing apps go right out of the window. Great already. Java? That should run, but how many good Java desktop apps you know? Now forget about those that use JNI in any way - now what? About 5-10 - The rest will have to be written from scratch. C#? Nope (no pointers), though a limited subset might be possible. Perl, Python, Ruby? Sure, all will work, but have fun rewriting the interpreters themselves in Java! And despite the claims that "JITs are fast enough", for stuff like that they aren't - you really need dirty tricks such as computed goto and jump tables to code fast bytecode interpreters.
So, in the end, this is going to suffer the same fate as all OSes that came bundled with their own language - death and extinction. Remember Lisp machines? Or, say, Oberon-3? Yes, that's how it usually ends...
Isn't this the whole point of the AS/400?
ie the name Phantom...
geez, don't you people get it, no where to download and look at it... from some obscure company in Russia... gimme a break.
On a different note, I have a car company in Detroit doing quite well, great profits, and for sale, any takers?
You don't do pointer math or any of that shit.
int myArray[ROWS][COLS]; int buf+len *void; int *ptrInt; int intOffset; { - lpAddrStart = addr - sizeof(DWORD); /* Find block LISP container */
+ lpAddrStart = (char*)addr - sizeof(DWORD); /* Find block evaluator */
dwBlockUsed = ((BYTE*)lpAddrStart - (BYTE*)lpMemArea)/dwBlockSize;
(if ptrInt[3]
(list 1 2 "foo")
(list 3 4 "bar"))
len = 1> ++ | more > stdio
There are two ways to store persistent objects, as files or in a database. But the boundaries between the two are starting to blur. Bragging that your OS doesn't have files just doesn't make sense. I bet recovery is a bitch on Phantom OS.
Don't blame me, I didn't vote for either of them!
well ok i think i can imagine a big big class with more and more classes in... and all this as an oporating system. this is what we are all talking about, isn't?????????
Besides the parallel to IBM systems, this kind of behaviour is seen in the Oberon Project.
http://www.oberon.ethz.ch/
Object state can be persisted to disk, and the whole system is snapshotted regularly with a journal. Pull the power plug, and you are back ( well almost ) to where you were.
In Soviet Russia, Phantom files open you!
Files, processes, sockets, ports, handles, open, close, double click, save...dinosaur computing systems indeed.
I support this guy's ideas to the fullest. It's hard to do, but it has been done before (see AS/400). It's time we get this technology to consumer level.
Oh come on, it's not even April Fool's Day!
One commonly rediscovered wheel is the idea that the compartments and engineered abstraction layers of modern systems are wasteful and we'd be better off with a single deeply-integrated language runtime where all facilities were on an equal level and could be interactively mungled. This being opposite to a layered system of kernel, services, applications, scripts, etc.
There are terrible engineering quagmires introduced when the entire system is a monolithic hackjob subject to runtime adjustment. You reach a limit of how much complexity one brain can hold, surpass the limit, and end up with an irreproducibly broken system. Rigid interface abstractions and modular decomposition are one of the trusted engineering shortcuts to reduce this complexity.
At present, state management is one of the things that needs to be rigidly simplified to provide reliable systems. We need human-visible transaction boundaries and snapshots like "save file" so that state can be safely exported, recovered, and exchanged. With all of the online presence of the modern web world, no evidence exists to suggest this problem is being solved any better than it was twenty years ago when distributed applications were starting to spread widely.
Am I the only one who thinks this sounds a lot like Singularity OS from Microsoft Research?
There is a good reason for the standard:
User: "Well, my computer seems to.."
Support: "Reboot your computer"
"When the going gets weird, the weird turn pro" -- HST
I was thinking a bit about this, if on Linux you could "suspend" individual programs, it could write the state of the program to disk, and then later on possibly even after a reboot you could reenter that saved state with the application looking just the way it did when you suspended it, it could be like somewhere between exiting the program and just minimizing it. Could be cool.
It's called a 'single level store'. These existed decades ago.
Keep in mind, the whole OS is designed this way, including all programs.
Let me give you an example of what happens when it's implemented as a library: GNOME and KDE sessions. At least in KDE, it's possible to save a session, or even to have it autosave when you logout. It will remember all open programs, and the geometry of their windows. It will even query the programs, asking them to save their state.
Now, this would be awesome, wouldn't it? It'd be a lot more efficient than hibernate/resume, if it worked -- for example, an ODF (plus some simple geometry and state) is much smaller than the entire virtual image of OpenOffice. If the programs were written well, to load only what they need on demand (and thus start much faster), the whole system would shut down and wake faster.
You could even start to have multiple sessions, maybe mapped to virtual desktops, maybe not, so that when you boot, you could choose whether to have it launch your web browser, text editor, and terminals, or have it launch your mail client, IM client, and softphone, or maybe have one that just launches whatever movie you were playing (which would resume from the exact moment it was at when you shut down)...
Problem is, too many programs don't support this. Some, like Firefox, seem to supply their own session management. Some don't even try, and thus, when the DE tries to resume them, it ends up launching a fresh instance. Some can't be persisted, due to their fundamental architecture -- how would you propose to save the state of a running terminal?
So, doing it as a library doesn't work, unless everything's using that library. If everything's using that library, that's pretty much what you get.
And sometimes, you do have to enforce sometimes performance-decreasing features in order to provide a better user experience. Imagine if filesystem access was just a library, and programs had access to the entire disk. It might be interesting to build an OS that way, but even if you did, I imagine you'd want to restrict most user-level programs to dealing with the POSIX API, and being bound by Unix permissions and POSIX ACLs.
Don't thank God, thank a doctor!
I have a book here that talks about C++. It says something like this: don't think a file as just a series of data. Think of a file as the variable data in a serialized object that happens to be saved on disk for later retrieval. Basically the book goes (deep) into the algorithms of saving files for your program and what all you have to think of to save a file as an object (the book is from the early 90's with the examples on a 5.14" floppy for DOS). It shows you how to make your program portable to both DOS and Unix and makes it object oriented (to support multiple processes etc.) by basically writing your own database filesystem.
Custom electronics and digital signage for your business: www.evcircuits.com
It's called the Phantom OS for a reason, because it's an OS that doesn't exist. Nothing to see here, move along people.
I am sooo gonna use this when it's better than everything else out there!
but the fact that the state of an application is NOT persisted enables you to reboot. what this phantom os can (or will be able to) do we already can do, with every programming language, but in RAM. the "added value" is just that RAM==persistent state. but we actually want RAM!=persistent state. oh, and not only real files are modeled like files, message pipes, io channels and lots more uses the file abstraction. just take a look at the world you are getting your ideas from: the java world for example wouldn't work without clear boundaries (tiers) where you know something is persisted or not.
On second thought, let's not go to Camelot. It is a silly place.
I want to know which kind of drug this guy take. He have some kind of Linus complex, thinking he can rewrite the history or something. For what i know, most computation intensive clusters are running on some flavor of *nix system, and i don't feel like flying thousands of kilometers to go type my command on a local terminal. I prefer to stay at home and use a nice ssh to do this. Call me when windows have a native ssh daemon.
From the website
Q: Is Phantom a POSIX-compliant system?
A: No. It is possible to layer POSIX subsystem above the Phantom native environment, but it is not an idea per se.
Q: OS is based on VM â" does it mean that not all the possible programming languages will be supported?
A: Yes. Say goodbye to C and Assembler. On the other side, everything is in Java or C# now, or even in some even more dynamic language, such as Javascript or even PHP. All these languages will be supported.
So, no POSIX, no C, everything in slower, scripted languages...
Is this guy for real ?
EULA : By reading the above message, you agree that I now own your soul.
if you plan to pirate anything on this system remember that all you need to do is to overwrite the "intellectual property" with the following string: 09-f9-11-02-9d-74-e3-5b-d8-41-56-c5-63-56-88-c0
I've scrolled through the comments, and find a lot of meaningful commentary, insightful comments, some trolling, etc. WHAT I WANT TO KNOW IS, where can I download it? I visited the Digital Zone site, but see no links to download. I'll reserve judgement on something new, until I can test drive it......
"Windows is like the faint smell of piss in a subway: it's there, and there's nothing you can do about it." - Charlie Br
There's little or nothing original that's being presented here. The Phantom people claim originality to the idea of orthogonal persistence, but they are flat-out wrong:
To illustrate the utility and awesomeness of persistence, there's a famous story about KeyKOS, an earlier OS that embraced this notion:
The notion of a language-based OS exploiting the semantics of pointerless/"safe" programming languages in order to isolate processes, rather than the norm of executing untrusted native machine code in different address spaces, is nothing new either.
If these ideas shift your bits, take a look at some real, interesting work done by real people that have more clue than fashion:
During the first year of my Phd (1996?) I worked on the networking stack of a Persisent Operating System called Grasshopper.
They throw up a lot of interesting problems from a research point of view, but I'm not sure they're ready for prime time... (and yes I realise the intervening years have started to add up!)
Pushing boundaries is good in research of course, and lots of things do end up appearing in real products even if not the in the form originally imagined.
--Q
It would be even sweeter if every every object can have its own URL (a system-provided one and an optional user-provided one).
Can this be a single OS spanning multiple machines?
Also, I note the FAQ says network connections will die across reboots. This needs to be fixed.
If fixed, this can become a true cross-machine OS where you can store objects on other physical machines across a network and still treat them as part of your OS.
In other words, the OS needs to include RMI and a concept of resources being temporarily unavailable / latency / real time-ness at a deeper level. And its frequent snapshots should be handled by the nearest trusted disk resource.
It is also unclear how a media stream is stored. Presumably it is made of a stream of frames or the like. Considering this with a network spanning architecture, I believe it is likely that copying or publishing could be based on a scheme similar to BitTorrent, in which slices are distributed to maximize efficient resource usage. Since there is no real limit then perhaps 64 bits might not be enough.
FWIW I like it and vote Phantom as the next Parrot target!
Bingo. This project's stated goal is as STUPID AS DIRT. A file based OS already supports any damn weirdass thing you want to do with your apps. All we should be talking about here is some off the wall, ill conceived, Messianic development framework.
How should I put it? I know: Legacy code.
When you have a new OS most applications will support the new features and only a few ported applications won't.
If you have an old OS with a new lib then most applications have been written before the lib was introduced and therefore just ignore the new functionality.
Need an example? Well extended attributes. How many Linux applications do you know which make good use of then? I know only one SAMBA - but you have to switch support explicitly on as it is off by default. Ahh, and if you are lucky you have an Apache witch supports "user.mime_type".
But how many applications set "user.mime_type" on Linux - as they should do. None, Zero, NIL.
That was different in OS/2 where extended attributes have been build in almost from day 1 and the ".TYPE" and ".ICON" where universally put to good use.
Martin
but... for a tech news site, you guys are a bunch of luddites
Linus Torvald NEVER claimed to have created the best thing since sliced bread. He was modest and didn't shout from the roof tops that everything everyone else had been doing was wrong and that this was the next big thing.
Modesty goes a long way into getting people to listen to your ideas because you give them room to adjust their own views without having to get defensive.
MMO Quests are like orgasms:
You may solo them, I prefer them in a group.
Here's what it is:
1. A VM based system, doesn't actually execute native code.
2. Has only one address space for some bizarre reason.
3. Persists everything in ram to disk...
So... your programs will run super slow because every memory write is written to disk, it you can't really run it on 32 bit hardware, and it doesn't run programs written in any existing programming languages.
So what is actually good about this operating system? Oh, it's super object oriented *rolls eyes*. As if that were a goal in and of itself.
This looks like another solution in search of a problem. Someone thought "wouldn't it be cool if" but didn't think about why anyone would care.
Multics.
Watch this Heartland Institute video
Sounds like what LINQ has done for databases, where the db query is just the business of deserializing objects from persistent storage.
Its not a silver bullet but it could have its uses.
In soviet OS, everything is a persistant object.
Kidding aside, I see several major issues with this concept: the increased risk of losing valuable data, the slowness, the very low interoperability (how do you exchange data with other OS's?), the whole span of programming languages that are not supported (I don't want to be coerced into using Java or C#, what's that about?)
Another issue is that I think the "object oriented" paradigms that are in use today are flawed in some aspects, and instead of basing everything computing-related on that, maybe we need to work on the concepts first.
Guys, thanx for an interesting comments. I wrote some short doc about Phantom's ideas, here: http://dz.ru/en/documents/dz_phantom_whitepaper_06Feb2009_00.doc Still a brief sketch, but it can narrow the discussion a bit. :)
Not only did the Newton have persistent objects, but it merged in objects on external cards automatically. Unlike PalmOS, which treated removable memory in an extremely stupid way.
In the Intel world, we had read only code segments. But there were alias selectors used by the OS to load code into read only code segments. I suspect there will be a way eventually to get a rogue pointer when a user program pretends to be a system routine, then it is over. All it takes is one vulnerability and the entire system architecture is compromised.
Also the lack of C is troubling. Java and C# are not enough for me. Maybe this is a good OS for after I am dead.
it would seem that they have a jvm-like interpreter(bootstrap) with a "OS" object that they serialize to disk at shutdown and de-serialize on startup. no biggie. it's the interpreter that sets permissions and the like, the "OS" is neutered. who needs files when an entire "OS" has containers like arraylists as filesystems and filenames as indexes? they write one HUGE file to disk and load up one HUGE file on startup. if they wrote the interpreter correctly, it performs a neutered IO. this is android that is serialized to disk instead of loading a fresh copy. personally, i love the idea of loading up a fresh OS. clears out whatever errors were formed instead of having them persist like cancer. it can't run c because that would defeat the purpose of objects instantiating objects. it's like trying to compile and run c inside of a java VM.
BeOs is probably what you wanted then. Its files could be tagged and accessed through a relational database. That means the files could be sorted and displayed based on any criteria you wanted.
http://en.wikipedia.org/wiki/IBM_System_i#Summary/ "While in Unix-like systems everything is a file, on the System i everything is an object, with built-in persistence and garbage collection." In the 1980's, the IBM System i machines were known as AS/400 machines.
So, being a clone of OS/400, is Phantom OS conceptually a dinosaur?
Of course, unlike Phantom OS, OS/400 does support pretty much every programming language http://en.wikipedia.org/wiki/IBM_System_i#Programming including C.
"in 1993, when IBM looked likely to be split up, Bill Gates commented that the only part of IBM that Microsoft would be interested in was the AS/400 division. (At the time, many of Microsoft's internal systems ran on the AS/400 platform."
Hey! I've seen some comments about Alan Cooper's book (which I have not read), about SmallTalk and other stuff.
But I haven't seen any comparison between this Phantom OS idea and the Newton OS.
From TFA, I understand that the notion of files -- from the developer point of view -- would be replaced by the notion of a pool of objects which would represent documents, network connections, peripheral devices and other data.
This seems like the Newton "soup" on steroids, which looks like a good idea for me. No matter what the application is going to read or write, it would be invoking methods in an object that implements a standardized interface. A text document would be accessed in the same way as a network connection, a barcode reader or a printer.
... and it's still not finished.
... until it's feature-complete and fully implemented, that is. ;-)
My concept goes far beyond Phantom, however. But it's vaporware too
The mathematics of objects are poorly formalized. The mathematics of relations, on the other hand, are inherent in the very idea of formal language, subsuming functional as well as object oriented programming. Object orientation is being brought into philosophical question by advances in Structural Realism. I suspect something like Informational Realism will be a more appropriate approach for a mathematically strong culture like Russia to use for setting up an OS for the 21st century.
Seastead this.
I really don't think I'm interested in this OS. TFA didn't point to a single thing about it that would lead me to want it, except for the state saving on shutdown, and I doubt seriously that's going to work. If your data are in memory and not the hard drive when it quits, you'll lose your data. If data are all written instantly to the HD, your PC will be slower than molasses in january.
If there ever was such an OS as Phantom, I would prefer that it didn't have programs in the standard sense but the OS is in-fact a virtual optimizing compiler that would reverse-engineer perl scripted-programs into the more easily readable morphological kind of optimized native assembly-language that throttles itself and unsharable to peers; this preserves the wildly sought Digital Rights Management quality without the remote exploits and constant surveilance of an interested or undisclosed 3rd party from interrupting the transparent grant of licenture. What I would love for such a non-POSIX non-Unix-licked operating system to implement a Jack Thompson protocol to combine all streams similar to Unix boxen's "char" and "block" and "FIFO" devices as just a series of visualized pseudocode "tubes" on the desktop to access through an API model system of object classes that a program can interface onto similar to IBM's data visualization and interpretation programs I've known for so long...
What have. I. don...
It was a dark and stormy night while I wrote a journal.
:-) thanks. -Kohan
After so many revisions directly etched onto my medium of record, I learned that the pages grew while the meaning and capacity decreased.
In the end, all I had to say was what everyone else did on such a dark and stormy night.
I didn't need to try to write about my interpretation of those dark and stormy events as though I thought I were more special than anyone else in such quarterly or yearly predicaments as this dark and stormy night.
So I decided not to journal the Phantom of my mind in this, and regard the saviour of my writing implement, with wit, and capacity to do for other days to reflect on a journal for a special event to the expanse of man-kind in a science of my collective.
I started anew, disregarded the old journal, and penned forever more:
"It was a dark and stormy night like all others but unique to itself; went to bed until the day waft it away and anew."
But what ist mein! What hast I wrot in this Slashdot to pfosten mannen all this journal when all I needed was to write as above! The Phantom hath menaced me, oh tree of knowledge of Good and Evil: nay, cast my soul into the wayfarer of fragmentation o' God of my salvation to beseech mein only to reprove the ill of others to consult such a dead tree in those protocol of folly I hath wrought! Give me plenty of 'pussy on me way out though
http://www.youtube.com/watch?v=nw8NcUKTZXY
I must admit i didn't understand EVERYTHING...
But i understood enough to say that you have a good point.
BUT, as long (like you said) we don't have anything better, i will stick to Linux.
Also, many Linux users (Damnit, i mean GNU/linux) are happy with it.
But yeah, its aaaalll the same...
But nobody can give you a guarantee that phanton will work great. MAYBE they screw it (or maybe not).
PS:(that-kind-of-advanced-stuff-that-you-said)Pro VS (that-kind-of-advanced-stuff-that-you-said)newbie (-me)
By reading this you agree to give me (Noxn) 1 dollar.
In Soviet Union, the system operates YOU.
I am a programmer... the summary makes me collapse in tears of amusement. This wins:
"But a file in Phantom is simply an object whose state is persisted"
Persisted WHERE? In memory. Possibly in virtual memory, which is likely if this Phantom OS keeps everything in memory (if there are no files, that's the only other place to store information). So, once you put something in virtual memory, guess what? It's a file, buried in a file. Why not call the whole thing off and just leave files as files, because you can't get away from disk storage by filling up memory? Some really newbie devs here or what? :P