**************************** JS/UIX Version History *************************** In this file: * JS/UIX License * JS/UIX FAQ * JS/UIX Version History JS/UIX License: While JS/UIX is open-source (JS-files and HTML embedding must be) it is not public domain. All rights reserved (c) mass:werk, N. Landsteiner 2003. You may download the files for private use, but you must not publish, serve or provide this system in any form without the positive confirmation of the author. All changes to the source code must be authorized. No warranty of any kind is granted. Disclaimer: JS/UIX is provided free of charge and on an "as is" basis, without warranties of any kind, expressed or implied. Licensors have no liability with respect to use of the product. The entire risk as to the quality and perfor- mance of the product is borne by licensee, who assumes the entire cost of any service and repair. This disclaimer of warranty constitutes an essential part of this agreement. No use of the product is authorized hereunder except under this disclaimer. JS/UIX is NOT a free software (for reasons see the FAQ). If you are looking for a powerfull but easy to use terminal interface have a look at "mass:werk termlib.js": "mass:werk termlib.js" is free for private and academic use. ("mass:werk termlib" is NOT JS/UIX but an object oriented library to create out-of-the-box terminal interfaces.) JS/UIX FAQ: * Why is JS/UIX not distributed under the GPL? The strict licence is mainly due to the very nature of JS/UIX by now: Since any malformed code could corrupt the whole system, a greater variety of distributed copies would render it merly impossible to secure any bugfree version. Plans are for a totally rebuild version with true multitasking and a secure userland domain. As this new architecture would allow for third party extensions, this future version of JS/UIX could well be the start of an open project under a more permissive licence. For the time being have a look at "mass:werk termlib.js" (aka termlib.js). termlib.js is free for private and academic use (see license statement) and provides an object oriented library for out-of-the-box terminal interfaces. * Is it easier to implement such stuff in a high level language like JS? Yes, it is definitly easier (as compared to C) to code this in a high level language, since you don't have to care for memory management, variables and so on. But there are other obstacles like the strictly single threadded base of any JS implementation. (No wait(), no interrupts.) * How long did it take to develop JS/UIX? Not that long. In fact it was done while curing a flu (with the terminal GUI already in place -> c.f. the version history). The most hideous part was writing the docs and man pages - as usual. * Why on earth? What for? As stated in "features" it was some alpinistic proof of perception. (You know the story going for almost any well known alpinist: "Why on earth did you climb that mountain?" - "Because it was there.") Then it was intended as a statement on what an interactive web page would really mean. And partly, yes, for the wow-effect. [At least I stopped implementing features and commands when it sufficed to that critera. ;-) Or, well, let's say, when there was enough stuff for a proof of concept.] On the other hand JS/UIX was concepted as a possible remote interface from the very beginning. This would involve some kind of chat-server as an external part of the communication stack and some implementation of up and down streams. (With the implementation of a continuous up stream - as would be required by a http-chat client - you could even connect externally to the system via the chat-server as a proxy.) * Is there a gcc port? Hell no! But as stated above, there are plans for a totally new version. This new architecture would incorporate a boot strapped JavaScript runtime engine (coded in JavaScript - very much alike the narcissus project). I can't think why there should not be a C/C++ engine too. (At least there are C interpreters around, mostly coded in C.) But since I'm not a well trained C programmer, it would not be me to do that. * Is it a real VOS or is it just a shell since it lacks communications? As for me the definition of an operating system does not start with networking. (No one issued any doubt that the first 128K-Macs did have an OS.) There is a VM with the specification of the I/O system, the virtual file system, and the specifications of the ECMA262-2 implementation on which it relies. The native language of the VM is JavaScript meeting the ECMA262 specifications 2nd ed. The JS/UIX shell gives access to this system and the commands provided to change its state and to manipulate the data stored. (c.f. jsuix-documentation.txt) In fact - as suggested in a comment - we could coin the term "Hosted OS" for JS/UIX that would make it the first "HOS". By implementing a distributed communication stack (with a server side back end) JS/UIX would even become the first distributed HOS or "DHOS". * Hey, all my data is lost between sessions. Not necessarily. There are means for at least some intersession operabilty. -> c.f. commands "fexport" and "fimport". * Is there a root password? Where I can get it? Yes, there is. It's the bonus for those, who read the docs. :-) JS/UIX Version History: -> to do: * shell-globbing and script-language (no big deal) * some commands (e.g. grep, find) * links (ln -s) v0.46 Feb 2007 added some glue to identify browsers with support for exception handling. the "js" command is now buffered by exception handling if available. (commands like "js -l document" used to fail with the last generation of browsers.) Fixed a bug with Safari that caused to execute the BACKSPACE key twice. v0.45 Jul 2005 added "/usr/bin/invaders" as a demo for interactive run time capabilities of a noncooperative foreground process. yes, it's space invaders for JS/UIX. - have fun! added a new mechanism to registrate (additional) files for incarnation at boot time (c.f. "jsuix_inv.js"). added a paragraph on the term "HOS" to the FAQ. v0.44 Jun 2005 JS/UIX was slashdotted! (June 16 2005) thanks for comments and mails! fixed some typos in man-entries (man v.0431) and this file. added FAQ and excursion on "/dev/js" to this file. fixed a typo concerning root execute permissions. added a smart scrolling feature for the console. as long as output is handled via a single buffer, scrolling delays should now be avoided even for long files. (this is done by writing to a scroll buffer and refreshing visible parts only. i.e.: the output of invisible text is skipped.) the smart console option is activated by default and can be switched on/off via the "stty" command. (so now even "js -l document" should be handled without any delays. the draw back on this is that the output of long files is not as obvious as before and the head of the stream could be missed. to activate the traditional behaviour (full scrolling) use "stty -smart".) added minor modifications to some commands, "sh set", and "sh alias" to support the smart console feature. fixed a bug in the part of command "mv". (concerning the test for directory sizes: vfsgetSize->vfsGetSize). v0.43 Sep 2004 fixed a bug in command "which" v0.42 Nov 2003 fixed "wc" - counts now like the real thing added "news"-command to display recent changes. v0.41 Nov 2003 fixed ls -l for hidden single files (in v0.4 only with ls -al ). fixed vi write command (w): if buffer was opened with an existing file, the override option (w!) is not an obli- gation any more. v0.4 Nov 2003 changed to regular permissions with users and groups. (accordingly rewrote the file system and some commands.) added permissions to export format. added command "chmod" and option -p for "cp". the file system root has its sticky bit set. (a file or directory at root level may be unlinked by its owner only.) renamed command "open" to "browse" ("open" is now reserved for future use). added root login/su. all commands taking options are reporting illegal opts now. some (minor) changes to shell: - scripts and commands will execute only if permissions are set accordingly (execute bit) or, with "sh ", if the read-permission is set. - since we have permissions now and the shell is the only executable script language, scripts may lack the "magic- cookie" (#!/bin/sh). - scripts and console commands may have continuous lines: if the last character of a line is a bacslash ("\") - escaped linebreak -, it will be treated as continuous with the next line. - renamed "/etc/.profile" to "/etc/profile" added "~/.history" for command history. history is now handled on a per user basis. things are working usually as in any standard POSIX-system now. minor change to "fexport" and "fimport": hidden files won't be exported any more. (this is in order to protect any con- figuration files as ".history".) v0.35 Oct 2003 added /dev directory and /dev/null new transparent javascript-glue for commands via "/dev/js". ["#!/dev/js/function" issues a JS-call of "self.function()". c.f.: open vi insert '#!/dev/js/commandMore' save the file as '/bin/less' chmod 0755 /bin/less -> you just made a working copy of 'more' called 'less'.] added command "js" for javascript evaluation. fixed comments in middle of line. users may now copy or remove commands (according to file permissions as show by "ls -l".) v0.34 Oct 2003 fixed bug in mv and cp: directories can't be exchanged for plain files any more. removed last traces of TermApp in help and man texts. fixed command reboot (became "halt" in some prior vers.) v0.33 Oct 2003 added some /etc/* files. showing users and groups now. (yes, we remember a returning user after "su" or re-login.) improved permission control: explicit lock for system files. still lacking real permissions and modes. added a nicer re-login screen. fixed cursor blinking for MSIE5/Mac (a clearInterval-bug). v0.32 Oct 2003 fixed missing step in parameter interpolation for backticks. improved key-mapping for cursor keys in some browsers, MSIE backspace now works as it should, Opera doesn't jump to location history any more. (Safari still only beeps, sorry.) [2005: Safari works fine with OS 10.3 or higher. khtml is still restricted to the use of the graphic keyboard.] minor fixes to vi (insert at line ends, "cw" and "dw" works now as it should: same as "ce" and "de"). added version history (this document). v0.31 Oct 2003 positional parameters for shell, added apropos command. added file export and re-import for intersession persistance. fixed command history, last typed won't be lost. added timestamps to files. (now we can check file versions.) added confirmation for "halt" and "reboot". [added undocumented feature of access to environment vars for shell ($ENV-) - should not be accessed by users.] v0.3 Oct 2003 output redirection, editable vi (not only view-mode any more) added some more commands (eg: ls -l). full writing access to file-system. reworked start-up proceedure. added inode-numbers to file-system (so we can check for some kind of reverse boot-strapping as it would occure in case of an rm -r of a directory in the path of the cwd or an move of a directory to one of its children or grand[grand]children). v0.2 Oct 2003 first published version, added vi (view mode only) v0.1 Oct 2003 converted web-terminal "TermApp" to OS. added file system, more commands, processes and environments forks for shell and processes. (TermApp (c) mass:werk, Oct 7/8 2003) start of project mid (17/18th) Oct 2003. N.Landsteiner mass:werk - media environments