
Inferno Plugin for IE - An OS In Your Browser 167
anothy writes: "Vita Nuova has released a preliminary version of their Inferno plug-in for Internet Explorer (other browsers and OSs pending). this embeds Inferno, a small OS built around good security, a virtual machine, and an extention of the Unix "everything is a file" model, right into your browser. The plugin itself is 719Kb (smaller than Flash or RealPlayer) and provides most general OS services, including I/O, text manipulation, floating point functions, and graphics, including a Tk (no, it's not Tcl/Tk) implementation. These are the exact same Dis files that run on native Inferno (on raw hardware) or emulated on various other OSs. They also provide additional info on the plugin, including a little info on writing Inferno applications. Inferno's originally from the same lab at Bell Labs that gave us Unix, C, and Plan 9." See our previous article.
Re:WTF? (Score:1)
The point is perfectly valid, and your stupid kneejerk respons perfectly annoying.
Inferno is the OS, Limbo the language (Score:3)
Inferno is an OS which can be gleaned by checking the Overview papers on Inferno [vitanuova.com], Limbo is the scripting/programming language for the inferno OS. The plugin merely allows you to run Limbo programs in a browser which is exactly what Java plugins enable one to do with applets.
Grabel's Law
Re:Is that me in the mirror in the mirror in the.. (Score:2)
Why in HEAVENS name would they do sucha thing? (Score:1)
Why create a VM then tie a single language to it? (Score:1)
Re:What chance has this got - remember Tclets? (Score:1)
I repeat Inferno started out as a Java competitor. Dennis Ritchie and co were pulled out of Plan 9 to immediately work on Inferno.
What's Wrong With This? (Score:2)
1. Everytime you hit backspace, it sends you back to the last page. I don't think I really want to train my fingers to forget what backspace does in a normal shell.
2. It looks like a good flash alternative except... The traditional flash developer uses flash because it has decent development tools that a graphic arts person can understand. Are these people going to drop everything to learn Tk?
3. Number 2 might not be a problem if it ran on Linux and was under an OSI certified license. At least the geeks who like programming, graphics, and Linux might use it. But NO, they targeted IE, and the license has some issues. Aren't the X fonts free?
My recommendations: 1. come out with a Linux version. 2. work out the license issues to the point where it is MPL / LGPL compatable so that it can be plugged into Mozilla. 3. Offer secured EiC [vrml3d.com] as an alternative to that other funky language.
Shoot! If they followed my recommendations, it'd be Scrubbed C [vrml3d.com] (I wrote that before I knew what a VM was. If I were to write that today, I would forget about preprocessing the language and propose a sandbox instead)
Re:What chance has this got - remember Tclets? (Score:1)
Inferno and Java comparison [bell-labs.com] from your favorite Bell labs.
A news item [emedia.com.au] that I got by just searching for inferno and java on google. I suggest you do the same.
How about this link [njit.edu]? That URL comes incorrect when I post with Dec 7 nightly build of Mozilla. Remove the garbase after .html.
Re:What's Wrong With This? (Score:2)
Re:it's all you say and more (Score:1)
Rather than being interpreted, as Java applets normally are, Juice always compiles each applet into the native code of the target machine before it begins execution.
Java hasn't been "normally interpreted" for several years now.
Re:no free lunch / Personal Java Plugin (Score:1)
Limbo offers a different approach to programming than Java. The intrinsics are immediately useful rather than just providing faciltiies to allow the construction of useful facilities. You save a layer immediately. Also Limbo's syntax, once you get accustomed to it, is refreshing. It took me, a long time C (and everything else) programmer only a few hours to feel quite comfortable. The implicit typing saves so much...typing :) You get a lot of the ease of use of dynamically or un-typed languages whilst retaining strong type checking. And then there's the CSP support which is handy for today's more complex interactive programs and may be simpler to use than the Java concurrency model (I've done a lot of occam, I'm biased, and yeah I know there's channel classes for Java).
Re:Because (Score:1)
Fire. Cool. (Score:1)
Re:What chance has this got - remember Tclets? (Score:1)
How do you know, were you there?
I work with someone who was there. Someone who has been closely involved with the Labs from the earliest days of Plan9 and Inferno. Your version of events certainly doesn't correlate with his!
Re:Who cares? (Score:1)
Re:Why create a VM then tie a single language to i (Score:1)
Re:WTF? (Score:1)
Re:What's Wrong With This? (Score:2)
It went back a page. Working as designed, IE captured the backspace, it went back. Loaded up a java plugin with text input, hit backspace, and it backspaced. Loaded up a flash page with text entry, hit backspace and surprise surprise, it backspaced. Now what were you saying?
--
Re:Who cares? (Score:1)
Re:it's all you say and more (Score:2)
In college, we used to spy on the other lab using this sort of audio trick on some SunOS sparcstations. Until someone got pissed and pulled all the microphones.
rsh otherlab "/bin/catThanks to the "everything is a file" philosophy, it was amazingly simple to do. But the problems start to crop up. Security is workable (set the file permissions on /dev/audio to only read/write for the console user like Solaris later did). But if I wanted to change the sample rate, I had to go use a non-file interface.
Re:Hmm... (Score:2)
--
Obfuscated e-mail addresses won't stop sadistic 12-year-old ACs.
Re:Why? (Score:1)
So now... (Score:1)
So now instead of mailing you a click-to-run Virus Bearing Script, the 44x0r k1ddi35 will mail you an entire click-to-run operating system to work their evil wills on you.
Could you sucker someone into launching this and hide the fact that it was running? Might make it easy for your team to move to the front of the pack at distributed.net, if honesty wasn't one of your big priorities.
--
Re:Because (Score:1)
I am saying this because it's not nearly as general purpose a solution as Java since it is a IE plugin and, well, why should we all learn another web language...
So, anyway, I'm seeing a cross between java and ssl only it only works on IE >5.0. Sound right? Oh well, who knows, it's late and I haven't slept for days. Damn college finals.
Justin Dubs
This is very fast (Score:1)
Re:been there, done that (Score:2)
My oh my aren't we in a bad mood today.. I did read the article but I was commenting on how a "os environment hosted in a browser" sounds exactly like the idea that Java has, with a sandbox etc.. You know how Sun wants you to think of it as a PLATFORM and not a language. The basic idea is the same.
Maybe you should lighten up a little. This is just Slashdot; a web site. It's not worth getting a heart attack over.
move along now, there's nothing to see here (Score:2)
And why does your dis file need to be signed in order for you to do communication back to the originating server? Even the Java sandbox allows you this luxury.
We've already got the wheel, folks. Haven't you worked out what color to paint it yet?
Not an OS... its an emulator (Score:1)
This is not complicated. Running Limbo binaries under x86 is called emulation. There is no "limbo os" its a language. The source doesn't (to my knowledge) compile under x86 (yet?). However it does compile on limbo machines (obviously).
This is not neat, new or very interesting. Its something that has been done many many times.
Re:WTF? (Score:1)
(not sarcasm) Fool.
-CoG
"And with HIS stripes we are healed"
Re:been there, done that (Score:1)
Re:Why create a VM then tie a single language to i (Score:1)
Java bytecode, for instance, is significantly tied to the Java language specification. Go browse The Java VM Specification [sun.com] if you like -- classes fields, members, construction, interfaces, and garbage collection are built into the VM.
Admittedly, I am ignorant of Dis code, but when I see "Inferno applications are written in Limbo" in the Inferno FAQ [vitanuova.com], my confidence in a language independent Inferno VM is shaken.
Re:There is a point, but this isn't the solution.. (Score:1)
Why is it a big deal? (Score:2)
Re:Is that me in the mirror in the mirror in the.. (Score:1)
inferno is good if.. (Score:1)
Re:Doesn't look like an OS in a browser (Score:4)
been there, done that (Score:2)
Inferno switch and firewall (Score:1)
See also info about Lucent VPN Firewall products, which also run on top of Inferno: Google-search [google.com]
Re:What chance has this got - remember Tclets? (Score:1)
Why? (Score:1)
Justin Dubs
btw, fp?
The Styx Architecture for Distributed Systems (Score:1)
The Styx Architecture for Distributed Systems [vitanuova.com]
write once run anywhere... (Score:1)
unless you believe the browser war is over and ie won, hm...
but there has to be an easier way than to run an os in your browser, right?
--
Peace,
Lord Omlette
ICQ# 77863057
Re:it's all you say and more (Score:1)
On inferno...
echo rate 22050 > /dev/audioctl
changing volume, encoding and all the usual audio parameters is done in the same way.
As for security. Inferno allows you to authenticate connections to your machine. You can choose the namespace (and hence devices) visibile to clients on a per connection basis, optionally authenticated, digested and/or encrypted.
Re:Call me back.... (Score:3)
With it you can mount the file server from Inferno and read and write to ODBC databases. The file server presents a name space that looks like this:
Each open of the `new' file results in a new conversation with the server. You can send management commands to the `ctl' file, SQL commands to the `cmd' file, read the format of results from the `format' file and the actual result data from the `data' file. You can manipulate the database through the namespace, from a Limbo program, or even from the shell like so:
mount -A tcp!localhost!6700 /n/remote
{
d=/n/remote/db/`{cat}
echo 'connect cellar' >$d/ctl
echo 'select name from wine' >$d/cmd
cat $d/data
}</n/remote/db/new
Through the namespace you can control the format of the returned results, control transactions, connect to new databases, execute commands, and of course read the results.
The server runs under Windows on a remote machine and connects to its local ODBC service. In common with all Inferno servers it then exports those services over a network (not just TCP/IP) to other Inferno systems using the Styx [vitanuova.com] protocol.
Its easy to write servers for other databases, and indeed other kinds of service. One of the nice things about such servers is that they can be explored using common commands like: ls, cat, awk, pwd, cp, echo, acme and even perl, i.e. without specialised interfaces in each program.
Re:Doesn't look like an OS in a browser (Score:2)
Re:write once run anywhere... (Score:1)
OK, only 80%+ of all desktops.
unless you believe the browser war is over and ie won, hm...
please don't force me to make a lame Al Gore crack.
but there has to be an easier way than to run an os in your browser, right?
Considering the fact that the all you have to do is click a link, answer Yes to the question with the effect of: "Do you want to install this?", I would guess not. Installing Windows software outside of IE requires at least twice as many clicks...
Great... (Score:1)
Re:write once run anywhere... (Score:1)
yes, please make the al gore crack
point
nice =)
--
Peace,
Lord Omlette
ICQ# 77863057
hehehe (Score:1)
-CoG
"And with HIS stripes we are healed"
Re:WTF? (Score:1)
Who cares? (Score:4)
I bet Inferno doesn't have any games, either.
Damn you, AT&T, and your Unix heritage. MacOS X will never have any good games. You're not going to take away my web browser too!
---
pb Reply or e-mail; don't vaguely moderate [ncsu.edu].
Re:WTF? (Score:1)
If you actually have a point in implying that Inferno can do oh so much more, come forth and tell us about it instead of attacking people for failing to do something you apparently haven't done yourself.
Moron.
it's all you say and more (Score:5)
The point really is that you get the write once use anywhere philosophy. Ok so java has been there before but surely that fact doesn'e preclude someone else trying it out.
The plan9, Inferno system of distributed computing through namespace binding is the true gift of this project. Although I did notice some of the Styx functionality has been removed for security (Styx is the network).
You implement services by mounting your service as a file system. You can then execute all of your machines capabilities through echo & cat!!
"So what!" I here the unimaginative cry well you can bind services from remote computers and use their capabilities in exactly the same way.
want to play audio on MY computer
roughly
bind MyComputer\audio \hisaudio
cat music.pcm \hisaudio
and the audio plays out on my machine
You imagination should take you from there.
Look on the bright side... (Score:4)
Oh dearie me.
Yu Suzuki
The *true* reason why they did this. (Score:2)
Re:move along now, there's nothing to see here (Score:2)
Re:hehehe (Score:1)
Re:Issues (Score:2)
Re:What's Wrong With This? (Score:2)
Yet another programming language (Score:2)
One thing I am missing is support for their target devices, like the Palm
BTW: It is not Open Soruce, it is $300 for a source license.
What chance has this got - remember Tclets? (Score:4)
What many folks may not realise is that Inferno was in fact written in answer to Java. Development started more than 6 years back when the first Netscape browsers were released with Java support. Java uses a stack based VM, Inferno used a register based VM.
I remember me and my friends being pretty excited about Inferno (we were doing our post graduation). We thought Java really sucked. At that time everything was touted up as a Java alternative, including Perl (someone wrote a sandbox for Perl and was quite vociferous about it).
Now six years later, I use the web with Java completely disabled and I really don't want a client side execution environment on my browser. Maybe javascript has it's uses (which was originally Livescript and Netscape changed it's name to hook on to the Java hype), but all these "execution environments" are simply browser bloat that I can live without.
That is not to say Inferno is useless. I still think it's great stuff, just that I see no point in having it as a browser plugin.
Re:WTF? (Score:2)
Limbo is a truly elegant and wonderfully concieved language. It would be silly to start arguing right now whether it's better or worse than your favorite language- as I'm sure many people are prone to fall into. Who knows? It's just really neat.
Re:Hmm... (Score:2)
There's certainly no reason to do such a thing, but I did see it running... The person who did it has since graduated from college (a couple years ago along with myself), so he no longer has the screenshots up on his campus-connected box. I'll see what I can do about getting him to show that, or have him send me the shots and I'll host them myself...
--
Re:What's Wrong With This? (Score:2)
It works fine with every other plugin I've ever run on IE, from Flash to the Sun Java Plugin to tclets. How is IE the problem?
--
Re:Is that me in the mirror in the mirror in the.. (Score:2)
Re:write once run anywhere... (Score:2)
IE is just the latest addition to the current set of Inferno platforms.
at the moment, it runs on:
ok, so that's not run everywhere, but we're doing our best :-). i've probably forgotten a few.
and you could take any inferno program and run it without change on any of the above platforms.(memory requirements permitting - keeping a 1MB web image is difficult on a device with only 512K of RAM!)
ports to Netscape, MacOS X, and others should be forthcoming. happy? :-)
Re:write once run anywhere... (Score:2)
oh yes, i forgot:
Re:write once run anywhere... (Score:2)
Backspace? (Score:2)
I don't know enough about IE plugin design but is it possible to capture the Backspace event?
Re:Doesn't look like an OS in a browser (Score:3)
2) Inferno is an OS
3) Limbo apps run on Inferno
If, indeed, Limbo apps need services from Inferno to run, and the Browser Plug-in can do this as well, then it would follow that....
4) The web browser plug-in is an OS for the same reasons that Inferno is.
Apparently those required services are called "Dis". I catch the reference, but it's been a while since I read up on Inferno.
In any case, it's definitely blurring the line for what an OS is and isn't. It's pretty far away from the hardware, in any case.
But wasn't that what people were predicting? Wasn't that why Microsoft was afraid of Netscape, and then Java? "The browser is the OS"?
That's right, folks. It's not just emacs anymore.
---
pb Reply or e-mail; don't vaguely moderate [ncsu.edu].
There is a point, but this isn't the solution... (Score:3)
The concept is pretty powerful, but nobody has actually turned around and asked why we would want to do this. In fact, nobody has really defined what it is we want to do. Because of that, we end up with a mish-mash of solutions, none of which quite hit the spot. At the moment Java is taking the lead because it has the largest user and developer base out of all of them. But I'm sat here, still thinking to myself whatever happened to "push" technology that was being touted 4 or 5 years ago?
I can see the "point" to Inferno, as I can see the point to many projects like it, however I just don't think it will succeed. Looking at the page, it appears to be designed to handle embedded systems programs in a distributed manner. I'm kind of curious as to why I would want to do this in a browser. Nice idea, but as many people have pointed out, wrong application of the priniciple IMHO.
Re:Doesn't look like an OS in a browser (Score:2)
The plugin allows you to run applications written in a specific language(Limbo) for the Inferno OS on your browser but isn't an OS in your browser from what I can see.
depends what you want to call an OS! of course, from the host OS point of view, it's just another user-level program (or plug-in, for IE), but...
the environment provided to programs running inside Inferno is indistinguishable from the environment that they'd see if Inferno was running as a genuine OS on bare hardware (as it does, on several architectures, in as little as 512K of RAM).
moreover, at the OS source code level, the great majority of the code is identical from platform to platform (no ifdefs - this is genuinely portable C written by gurus of the language)
so, given that programs inside it can't tell the difference, i'd say there was a very strong case for saying it's an OS inside a browser. (even if the entire OS is booted just to run one program - boot time in 0.5 seconds, not too bad...)
Re:There is a point, but this isn't the solution.. (Score:2)
Re:Is that me in the mirror in the mirror in the.. (Score:2)
Re:sheesh... (Score:2)
no free lunch / Personal Java Plugin (Score:3)
Java itself offers several levels of tradeoff between functionality and size. To me, the most logical choice for a browser plugin wouldn't be an entirely new language and runtime, something that requires a lot of retraining and retooling, it would be a version of Personal Java, something that could easily fit into a few hundred kbytes.
Re:There is a point, but this isn't the solution.. (Score:2)
Imagine...
you have just implemented a really cool application for your next generation (Inferno) web phone or PDA and you want your investors, or potential customers to have a look at it.
How do you go about it? Screen shots? PAH! Put it on your web site and let them play with the real thing. No recompilation is required. The same app runs on your phone, your pda, your fridge, Windows desktop, Linux desktop, Solaris desktop, and now - Internet browser!
That's pretty damn cool if you ask me.
Re:it's all you say and more (Score:4)
Yup, I'm working on the security model right now (when I'm not reading /. !!!)
Once we're happy with it, an update will be made available which will open up the networking support.
We have some pretty cool applets available that use the networking. These will be put up on the vita nuova [vitanuova.com] web site, with the plug-in update once the security model is right.
Re:It has to be said (Score:2)
I've done it!
There isn't much point until the networking security model is established - the current plug-in has networking disabled until the security model is mature enough to enable it.
We could enable networking right now, but that would be irresponsible.
I have a version of the plug-in with networking enabled which Charon runs in without a hitch. Pretty strange using one web browser inside another one!
Re:been there, done that (Score:2)
our approach was different: we put a virtual MIPS R3000 machine on top of the java VM, so it runs any OS that has support for the MIPS.
George
Re:Not an OS... its an emulator (Score:2)
You don't need to *worry* about it. You just need to keep your head in the game and understand that you need to take such things into account or you'll run into trouble (by hard coding such stuff). For this, there are the following fields in java.io.File:
static String pathSeparator
The system-dependent path-separator character, represented as a string for convenience.
static char pathSeparatorChar
The system-dependent path-separator character.
static String separator
The system-dependent default name-separator character, represented as a string for convenience.
static char separatorChar
The system-dependent default name-separator character.
Issues (Score:2)
Do we need this?
Well why not? There are hundres of programs doing the same thing around the world. Why not for the internet? Yes, it sounds like the Java virtual machine and nobody is really sure if it adds something new. But the same can be said to hundreds of programs being released around the world.
The usage.
It will probably be used for something usefull. People will create powerful applications with it that will increase our experience on the internet. I am sure of it. I just wonder when a program similar to ICQ will be released.
Re:Not an OS... its an emulator (Score:2)
Ok. i'm not disagreeing with you there
i'll bet you most java programs won't cope properly when the path element separator is any possible character. (i remember a system where '.' was the path separator.
But that is a problem with the program as written, not with the interpreter. Say I had a file called blue/beard.txt (note: not a file called beard.txt in the directory blue). How do I ask Infernal to open it for me? I admit this is a specious argument but it could happen.
in the inferno way, all you have to do is define a two-way mapping between file names in the host system and file names seen by programs inside inferno. as inferno uses Unicode throughout, you've got enough characters to play with.
Except as I say, if / is a valid filename character, then you have to mess around with escape characters or map some other character to it (which could be a pain if the / is meaningful
that's rubbish, i'm afraid. in C, everything is transparent. the path separator is transparent, the endianness of the machine is transparent, in fact almost everything is transparent.
Dare you assume that I don't need to know the endianness of the machine? A lot of what I do is getting systems to interoperate. Say I have a program, compiled for two different machines. It saves its data in the endianness of the host machine (just does a memory dump or such). Now I want to write a (binary) portable program to run on both machines to interpret these data files. Without knowing the endianness of the machine, I'm stuffed.
it's possible to write portable programs in ANSI C, if you try hard, but that doesn't mean that C is a particularly portable language.
For what it is, it doesn't do too bad. Besides, I wasn't saying "If you have transparentness, you have a wonderfully portable language", I was saying that it is an important factor.
it's not handy for portability, it's handy for porting. programs written under c++ on winnt won't be any more or less portable than programs written under other c++ platforms.
I meant source code portability, not binary
in inferno, all programs are portable, even if they're badly written.
Whether they'll work correctly or not is another matter. Is it not possible to make incorrect assumptions about the virtual hardware (such as whether there is a graphics interface available or not) or is the virtual hardware interface strictly defined?
Note that I'm not trying to dis Inferno overall, I'm just not sure that the Inferno method of path handling is "correct". Heck, I'd even say that assuming a traversable directory tree is suspect (What a program should really call is system.UserFileInterface and let the underlying system handle it).
Rich
Is that me in the mirror in the mirror in the... (Score:5)
A browser in an OS.
An OS in a browser in an OS.
A browser in an OS in a browser in an OS.
An OS in a browser in an OS in a browser in an OS.
How many recursion before we run out of memory and CPU cycles?
Just wondering.
Re:been there, done that (Score:2)
emacs in teco in lisp running on emacs running on (Score:2)
Re:Issues (Score:2)
the 13th floor.... (Score:2)
Would it go insane with the knowledge that it's just a computer simulation on a computer simulation of a computer? Would it lose all compassion and kill a bunch of processes just for the fun of it, knowing that nothing was "real?"
Re:Yet another programming language (Score:2)
So I could run a web browser inside IE5 ? If so, will inferno be avalaible as a plugin for that browser ?
Cheers,
--fred
Re:There is a point, but this isn't the solution.. (Score:2)
With a normal, standard win32 inferno emulator (similar to appletviever). This emulator would execute '.whatever' files, which could be downloaded from the web site in a single click. For the use you describe, having a web browser plugin in is (IMHO) pretty weak.
But sure, it is cool. Strangely, it make more sense as a mozilla-plugin, as mozilla appliances will probably appear in a not so far future...
Cheers,
--fred
Re:Hmm... (Score:2)
I've yet to see anything as complicated as VMWare run on VPC...
--
Re:Stewing in their own juices for too long... (Score:2)
it isn't a horrible mistake. it's an extremely well informed design decision.
There's nothing "universal" about a one-dimensional stream of 8 bit characters
no? apart from the fact that all computer data can be represented as bits... that sounds fairly universal to me!
representing resources as files provides an extremely useful abstraction layer and hierarchical naming scheme. in the inferno/plan9 scheme, it also means that resources can be transparently exported through the network (a network being anything that provides a bidirectional stream of bits); no application knowledge or intervention is required.
it means that some simple tools become useful for an incredible range of tasks. compare to CORBA or Java for example, where you need a specialised piece of code for everything, giving you more bugs, less maintainability and lower productivity.
BTW, neither plan 9 or inferno have ioctl, one of unix's nastiest system calls.
sheesh... (Score:3)
Hmm... (Score:4)
But wait, what about OS X? Then I could run Inferno in IE in Windows in VPC in the Classic environment in my Mac.
I wonder if any of the PC emulators could handle VPC itself. Then you could run Inferno in IE in Windows in Mac in Windows in Mac in Windows in Mac in Windows...
Doesn't look like an OS in a browser (Score:5)
The plugin allows you to run applications written in a specific language(Limbo) for the Inferno OS on your browser but isn't an OS in your browser from what I can see.
This is more akin to being able to run Java applets in your browser via the Java Virtual Machine than any OS in the browser crap.
From the Inferno plugin page
The Inferno Internet Explorer plug-in allows a Limbo program to run inside a web page when displayed by Microsoft Internet Explorer 4 or 5. The plug-in executes Dis within a sandbox in the Inferno Dis virtual machine which provides the execution environment for all programs running under the Inferno Operating System
Grabel's Law
Re:Not an OS... its an emulator (Score:2)
the system dependent part of the inferno kernel (devfs.c) could map all slashes that it saw when reading the filesystem to unicode character 2215 (division slash) or 2044 (division slash) or even 2298 (circled division slash) if you wanted the distinction to be crystal clear. the translation would work the other way when filenames were presented to the kernel by inferno programs.
in this way, the whole thing works ok. of course, it's not entirely perfect if the user wants to be able to type in those pathnames, (the name isn't exactly what they would have expected) but using the standard graphical file browser, everything would work just fine.
the goal of Inferno is to have programs that genuinely run the same in any environment, not to have programs that are kind of chameleon-like, adopting some of the traits of the host environment. this decision is arguable, but it is the only way to get true write once, run anywhere software. you don't true portability? you know where to find Java.
Dare you assume that I don't need to know the endianness of the machine? A lot of what I do is getting systems to interoperate. Say I have a program, compiled for two different machines. It saves its data in the endianness of the host machine (just does a memory dump or such). Now I want to write a (binary) portable program to run on both machines to interpret these data files. Without knowing the endianness of the machine, I'm stuffed.
that's not true.
without knowing the endianness of the data file, you're stuffed. this is a distributed system, remember. filesystems, data, network interfaces, and devices can all be imported an exported completely transparently across machine boundaries. it sounds like you're still living in the old world, where the data on the file system you're accessing is guaranteed to be on the same machine. that's just not true any more (and hasn't been for at least a decade, if truth be told).
under Inferno, applications are completely unaware of where the files that they're accessing have come from. (and don't forget that device access is also through the "file" namespace). the file i'm accessing might go straight to the local hard disk, or it might have been imported from a mounted connection obtained by using an imported network interface, connected over a USB link to some machine over an ATM link running a Limbo program that's exporting the file.
the resource deployment can be as simple or as complex as you like, but the applications themselves are blissfully unaware of what might be happening behind the scenes.
any binary data file worth its salt should either keep the data in a predefined endianness, or declare the endianness in the header. that way, someone on a sparc box will still be able to interpret the data file that you email them from a linux x86 box.
Whether they'll work correctly or not is another matter. Is it not possible to make incorrect assumptions about the virtual hardware (such as whether there is a graphics interface available or not) or is the virtual hardware interface strictly defined?
all the hardware device interfaces reside in the namespace, so it's easy to probe to see whether a given device has been provided or not. an incorrect assumption will generate only a "file not found" error.
if the hardware is found, it will act according to its specifications - device control is all through the file interface. low bandwidth data is generally encoded in that universal, endian-independent format: text.
so, for instance, the interface to a tv device contains two files /dev/tv and /dev/tvctl. i can execute the shell command:
echo window 20 20 300 300 > /dev/tvctl
to set the currently displayed tv image rectangle. a captured tv image can be read in a standard image file format with:
cp /dev/tv /tmp/image.pic
it's as simple as that. this interface means that it's possible to (for instance) write a user-level program to simulate a device for which i haven't got the hardware, or to use the namespace access protocol, Styx [vitanuova.com], to import or export the device across the network securely.
Note that I'm not trying to dis Inferno overall, I'm just not sure that the Inferno method of path handling is "correct". Heck, I'd even say that assuming a traversable directory tree is suspect (What a program should really call is system.UserFileInterface and let the underlying system handle it).
if the underlying system doesn't provide a hierarchical filesystem, that's not a problem. the person porting to that system needs to make a decision how to map that filesystem into the inferno model. the "files" that are accessed under inferno aren't really "files" as most people think of them; it might be helpful to think of them as "hierarchical resources" which are accessed in exactly the same way as files.
a "file" under inferno requires no physical resources; it is merely an interface to some underlying software, whether that's a device driver, interpreting writes as commands, or a disk filesystem, storing the data in each write to disk, as you'd expect of a normal file.
you could also think of the inferno namespace as a kind of hierarchical object space, in which each file provides a common set of methods (open, read, write, etc) which can be interpreted as appropriate for the object. looked at that way, directory reading (inspecting metadata) becomes a kind of "reflection", exposing capabilities of the system to an inquisitive program, which can then use them as appropriate.
for instance i could write a little shell script:
if {ftest -f /dev/tv} { /dev/tvctl /dev/tvctl
echo channel 3 >
echo window 0 0 40 40 >
}
this enquires to see if there is a tv device available, and if so sets a particular channel and creates a small window for it at the top left of the screen. all without using any commands written specifically for the device.
that's true power.
Re:Not an OS... its an emulator (Score:2)
Heck, it's just a matter of abstraction. If you want to be able to use / then subclass the File object or something. And you know, there may be a filesystem where / is a valid part of a filename, then where is your Inferno? The only safe way for platform portability is to have everything transparent.
Interestingly, using c++ on winnt, you can use either the '/' or '\' as a path separator which is quite handy for portability.
Rich
Re:Not an OS... its an emulator (Score:2)
No, I said that you need to take your head out of your ass and actually think for a minute. And you don't need to go:
path = pathSeparator + "usr" + pathSeparator + "me" + pathSeparator + "myfile";
path = "/usr/me/myfile";
path = clPath(path);
You need to actually THINK. I know it can be hard, but try. You don't need to write "pathSeparator" 100 times and bang your head into the wall crying about how hard it is and how you have to worry about various platforms being a little different. You can also extend various java.io classes so that they will do the path separator conversion automatically. It would probably take about an hour to create a package like that if you really had a big problem with this.. Of course, it's idiotic to do something like: path = "/usr/me/myfile"; in the first place. A much better way is to define a base path (or several), which is read from a config file and then you just add file names to that base path. You don't even need to THINK about path's in your app.
Call me back.... (Score:2)
Re:Doesn't look like an OS in a browser (Score:2)
It claims (without proof) to be a lot faster than Java: 1.5 - 3 times slower than C (according to this [www.dlc.fi] document, the source of much of the following information).
It's all tooled up with both the bad bways of Garbage Collection. Yes, let's hear it, folks, for Mark and Sweep and his old sparring partner Reference Counting. Still doesn't stop it churning perceptibly in the ticker applet. (They claim RT scheduling but that's no good when you're sitting inside IE with JavaScript turned on in a force 9 pr0n gale.) The polyhedra [vitanuova.com] demo is fast and smoothe and reasonably svelte.
'array of array of vector of arse'. Gak! Neither I nor the compiler are amused that dcl is now compulsory.
It can run Limbo source or binaries, not just bytecode.
Dennis Ritchie encourages [umd.edu] the development of a C compiler, and maybe the one bundled with Plan 9 has a few tricks up its sleeve. With a gcj [redhat.com]-style Dis backend you could install signed X and Gnome/GTK/KDE/Qt (or the unbelievably cool Ion [students.tut.fi] Window Manager) applets to replace the embarrassingly retro [vitanuova.com] interface. How about writing DHTML in Perl or Python instead of JavaScript? Can you say .GNET?
The site's 3 years old and the guy may be talking out of his arse. I'll give him this, though: he sure knows how to diss up C++ with a zeal for hellfire and damnation truly worthy of his dear OS's name:
It's not every day you download and install an operating system in a couple of seconds (ADSL). Didn't even have to powercycle IE let alone reboot its other OS plugin, Windows. If they don't open the source I'm sure there's someone somewhere who's looking at his/her 1 floppy Linux distro and hatching a cunning plan. What a shame Theo de Raadt's so down on a pocket OpenBSD (reminds me of Guido's antipathy [python.org] to a Python shared object [equi4.com], Linus's allergy [linuxcare.com] to a kernel debugger). That fireproof sonofabitch would be a perfect fit for plug-in World Domination.