Emacs As Operating System
c2.com
c2.com
BTW. you can get a pretty good Emacs-as-an-OS feel with the combo of Emacs, Conkeror [0] and StumpWM [1]. They are all extremely extensible (via Emacs Lisp, JavaScript and Common Lisp, respectively) and can be even made to talk to each other.
[0] - http://conkeror.org/
That is the setup that I use at home, and it. is. GLORIOUS.*
*YMMV
This sort of setup is exactly what makes me, a Vim user, think I may have made a mistake by not picking up Emacs instead.
Sure, it's not the same as emacs OS, but it does feel like at least vim-keys-everywhere.
Has anyone used Vile? I tried to compile it once and it looked to be quite onerous to fix all of Clang's whinging. Evil?
If mzscheme/racket scripting support for Vim were given the love that python support is getting instead, that would please me immensely. It seems nobody is using that though.
Conkeror was what tipped everything for me: Having been used to gui apps for a long time, my continued use of gui browsers kept me in some kind of limbo. Learned just enough of Emacs to get things done but never going whole hog in learning its shortcuts mainly because I was still relying on mouse clicks on things like the browser. With Conkeror, those shortcuts work well on both my non-gui emacs setup as well as the browser. It's been a great working environment.
[0]https://github.com/shanecelis/emacsy/blob/master/README.md
Emacs is an editor extensible in Lisp. Nothing more. Just like Autocad is a cad program extensible in Lisp. Autocad is also no Lisp OS. Just like Quicksilver is a publishing program extensible in Lisp. It's still no OS. Just like Audacity is a sound editor extensible in Lisp. Still no OS.
An OS is Movitz. Written in Lisp. Runs on Intel and talks to the hardware. Talks to the graphics card. Keyboard. Network card.
Please, not every shitty Lisp interpreter which can print to the screen and take user input is an operating system. Not every Lisp program which can send mail is an operating system.
How do you know that some Lisp is actually an operating system? A good rule of thumb is this: Is the network stack talking to the ethernet interface written in Lisp? Is the file system and the block level interface to the disk written in Lisp? Is the routine which formats the disk written in Lisp? Is the routine which puts a file system onto a blank disk written in Lisp? If that's the case, then you have a winner. Then it looks like it is a Lisp OS.
I disagree.
> Please, not every shitty Lisp interpreter which can print to the screen and take user input is an operating system. Not every Lisp program which can send mail is an operating system.
I agree with that point.
Calling Emacs an OS is dubious, it certainly isn't a general purpose OS, and won't run on real hardware. But, let me make the case that Emacs is an OS.
Emacs has two parts, the C part, and the Emacs Lisp part.
The C part isn't just a Lisp interpreter, it is a Lisp Machine emulator. It doesn't particularly resemble any of the real Lisp machines. The TCP, Keyboard/Mouse, display support, and filesystem are done at the hardware level (the operations to work with these things are among the primitive operations provided by the hardware). Of these, the display being handled by the hardware isn't particularly uncommon, historically; the filesystem is a little stranger.
The Lisp part of Emacs is the operating system that runs on that emulated hardware. It's not a particularly powerful OS, it not a multi-tasking system. It has many packages available for it (though not until recently was there a official package manager). It has reasonably powerful IPC mechanisms. It has shells, mail clients (MUAs and MSAs), web browsers, web servers and more, all written entirely in Emacs Lisp.
My might say "but a lot of that is being done by the host operating system!" Sure, some of it is, but all of it is sufficiently low level. If you wanted to share the filesystem with another OS running in a VM, you might do it by sharing it as a network filesystem; this is necessary when the VM OS is not designed around running in a VM. However, because Emacs OS will always be running in the Emacs VM, we can optimize it by having the Emacs VM include processor features mapping the native OS, and have the Emacs OS be aware of them. It would be slower and more code to do that all over the network.
But "Operating System" is being used ambiguously. Can Emacs be an OS kernel? Um, no. Can Emacs be a shell/UI replacement? Yes, I think so. The discussion appears to be partly about that.
It's not - it actually was done[1]. There were OSes written in other high-level languages, like Smalltalk and Forth (which may not be "high-level", but at least it's higher level than C).
Definitely with you on the second point.
AutoLisp is far less powerful than elisp - e.g. AutoLisp has no macros. It also ceased being enhanced many years ago, while elisp rolls ever onward to the point where it now includes lexical scoping.
A remark because writing my nitpick got me going:
The degree to which Emacs is an OS depends on a person's definition of OS - if it is the primary means of interacting with the computer from the user's chair then Emacs looks more like an OS. On the other hand, if we start from a more formal stance, then it looks less like one.
Pretty pictures aside, how much more or less of an OS is Emacs than Chrome, and if different, in what fundamental ways?
How different is Chrome running on a VM on a Linux box from Emacs running on the same box?
I think your definition attempt renders the term Operating System useless.
We have pretty good definitions of 'operating system' already, no need to invent new useless ones.
When an Emacs user greps from Emacs why is this less blessed than my grepping from Bash? Is it considered blasphemy against vi?
Yes, I see that Bash is not the OS and vi is not the OS and neither of course is grep, for the OS is the turtle upon which these things rest and it is turtles all the way down until you get to microcode. Just because someone calls themselves "a computer scientist" it does not make their abstractions are any less metaphysical.
It is when we use an human centered definition of "operating system" rather than a machine centered one that Emacs can be seen in a different light. It is not that either group is failing to develop a scientific model. It is that each model has orthogonal metrics.
If the computer is never used for any other application, then that's an arguable position.
As the saying goes, "Emacs is a great OS but it's got a crappy text editor".
"Firefox/Chrome is a great OS but it's got a really crappy text editor that has about as much power as Notepad(TM)"
How about we figure out how to embed a real text editor into the edit fields of web pages?[1]
Oh, and if it only worked under Linux, I don't see a problem with that.
[1] http://emacs.1067599.n5.nabble.com/An-Emacs-plug-in-for-a-br...
https://github.com/kazu-yamamoto/Firemacs
It's the closest thing to a real editor on the I've been able to find.http://tkf.github.io/2013/06/04/Emacs-is-dead.html
The lack of multi-threading is #1 on his list, and it seems to me for good reason. If one of my emacs buffers locks up (which can happen for any number of reasons), the whole session is hosed.
Notwithstanding that, one thing I'd love to see is an FTP client mode something like FileZilla.
Dried
Sunrisecommander
I have used Emacs every non-vacation day for the last 22 years, starting with version 18 and extending through version 24, on over a dozen computers, on Linux, OS X and a proprietary Unix, in text mode and with a GUI. I think I understand Emacs internals pretty well, and I cannot imagine what you mean by "if one of my Emacs buffers locks up".
Typing control-G does not get you out of the infinite loop?
This and the fact that all async processing has to be done through OS jobs (or something like that) make it unsuitable as a replacement for many kinds of app.
Threads are WorseIsBetter concurrency which break pretty-much everything they touch. Elisp would be best without them, and use a sane concurrency mechanism like asynchronous events (like Node/Erlang). This would require private variables (ie. lexical scope), and that the interpreter be aware of what is accessed from each scope, so that concurrent code can be run in parallel. Switching to Scheme (Guile) would be the first step.
What I'd really like to see is an editor with an FRP interface. That won't happen with Emacs though, since it's too big a leap in philosophy.
With dynamic languages the ability to run REPL inside an editor is also a huge plus. In Emacs the way you can interact with text is pretty much unlimited. For example, with the right modes you can pretty much free form evaluate any expression anywhere in the editor. One has to use it to experience the power.
For me that was the situation for a while, nothing but Firefox and emacs. I even used it for IM and Twitter. All I needed was for it to render the web and I could ditch anything but it.
Eight Megs And Constantly Swapping
I think those people would have fainted at the thought of some of the Java IDE's these days.
I don't find it hard to live without auto completion and friendly refactoring wizards. regex replace and grep/sed do the job for me. I might be wasting a bunch of seconds here and there, but I'm quite sure I'm saving more than that in loading/hanging time.
That's a nice thing in some ways, but my guess is that when you try and edit, say, Erlang or something else, those big IDE's are just going to sputter and flail because they're outside their comfort zone. Emacs is more of a rugged jeep in that, ok, it doesn't know all the methods for all the classes in Java, but throw some Erlang, Tcl, Ruby, ASM, or whatever else at it, and it'll handle it ok, just as it does a decent job for Java, C, Perl or whatever else.
There is a great support for refactoring too - for Python it's Rope and it works quite well. It's a bit slow to start sometimes, but that's equally true for "bloated Java IDEs".
I don't think there's anything my teammate can do in his PyCharm which I can't in my Emacs. And if there is something like that, and it's useful, then I'm sure it will come to Emacs soon enough.
To summarize: Emacs is an editor for programmers and can be programmed (with 3rd party or your own scripts) to have any feature you'd like. Setting up an Emacs environment which is on par with other IDEs takes a bit of work, but is possible.
Yup, as much as I like Emacs and dislike IDEs, I fire up Eclipse without hesitation if I need to work on some Java code. Java just begs you to use an IDE because (1) It is incredibly cumbersome and (2) It's very nature make it possible to create powerful IDEs, that's not the case for most languages.
So browsers and ECMAScript are the new EMACS. Looks about right.
GNU/Emacs?
[1] http://www.gnu.org/software/emacs/manual/html_mono/eshell.ht...
[2] http://www.masteringemacs.org/articles/2010/12/13/complete-g...
My father has difficulty seeing, and spends most of his computer time within Emacs, occasionally switching to Gnome (for certain websites) or a speech enabled console.
In those days, having three or four Emacs buffers where one could have a couple of files being edited, a shell session, and the output of the compiler was considered a blessing.
The rest of the "OS" moniker referred to things such as email and NNTP clients written in Elisp. It was really possible to start the day in Emacs and never leave, and I saw some people do it, although it was never quite my cup of tea. Fortunately, megapixel displays and window systems soon came to the rescue.
Now if only Emacs as an OS had a good editor.
And before someone cranks one of these up and nit-picks some functionality GNU Emacs has that this doesn't, do try and remember that serious development of Genera for all practical purposes ended before Stallman released the first public release of GNU Emacs.
How are you running OpenGenera?
What's the best demonstration of its appeal? Any good videos to watch? Is there an equivalent of Englebart's Mother of All Demos for Lisp machines?