A Constructive Look at TempleOS
codersnotes.com
codersnotes.com
- a powerful REPL to call either apps, inline tools, or direct commands
- interactive shells made up of mouse-interactable graphical components being
printed to the screen
- compilation of source code directly into the running image
etc.They were also single-user, but did networking as well. People logged into a machine remotely could have the same interactive graphical sessions in their own context.
Given the history of computing from the 50s - 80s, this desktop architecture idea comes naturally to a lot of people. The major OSes, however, all have their ancestral lineage which prevents major rethinking. But another issue is that these ideas are at least power-user oriented.
While the mobile market did some major rethinks about the UIs, they're still *nix inspired descendants underneath, and don't expose anything but pre-baked applications to their users.
It's like COBOL. Or COM. There's nothing in any way pleasant about it. It's undeniable that it works, and perhaps gets things done in a practical manner.
But there's no love in it. Just my 2c though.
GNU Emacs is an editor written in some more primitive Lisp with extensive libraries and applications. It lacks the extensive low-level features, multi-threading, Flavors/CLOS etc of Zetalisp or Interlisp. GNU Emacs implements all their applications inside the editor. Lisp Machines did not do that.
If you've ever used a Lisp Machine, the look&feel was quite different from GNU Emacs.
We've had years of this already and it's enough. If someone wants to do the work of making a list of threads we've had about it in the past, we can all point to that the next time someone inevitably starts this controversy up again.
I'm not talking about Terry's technical work, of course. That is as on topic as anyone else's.
Well said. Its infuriating the lack of common courtesy and sensitivity that people show in threads about his work.
It seems to me that he would, like most of us would in his situation, want to be judged on the merits of his work, without other people constantly framing in the context of his mental illness.
terry is given the exact opposite of a "free pass." he has created at least eight accounts at this site. all of them are now hellbanned.
The guy learned how to write compilers and operating systems, surely he is capable of learning to stop using that term - at least on this forum.
It is failing to treat someone as a human being. You are ignoring them because you perceive their mental illness to be dangerous. You're failing to make eye contact with him, because you think he is an animal.
The admins on this site need to do a lot of soul searching if they are ok with this. And now I'm hellbanned for speaking up for terry. Fuck you hackernews.
Hellbanning is not failing to treat him like a human being.
If you want to make the argument that there is a good reason consistent with the purpose of the community to excuse conduct in his case that would otherwise merit hellbanning, that might be an argument with merit -- without the argument being made, I don't see it, but it might be there. But, in any case, that's not am argument you've made.
Bear in mind I've run forums with 50,000+ subscribers and was an EFnet and Quakenet IRC op.
It's notable because he writes the software in ways that someone without his condition would not consider. You can't separate the two.
The guidelines already cover this when they say: "Please avoid introducing classic flamewar topics unless you have something genuinely new to say about them."
If someone with a mental illness writes a word salad, it can be dismissed as a word salad, not because the write has mental issues, but becasue the writing is a word salad.
That said, it takes time to read and judge the merits of a writing, and give a limit to our time we all develop heuristics to help us determine to help us avoid wasting time.
It is, however, absolutely essential to take into account the person behind a product when evaluating a product. You would never write an essay on the film stylings of Stanley Kubrick or Roman Polanski without fully considering their backgrounds and personality quirks. You would certainly never write about a work of classic literature without first taking into account the context of when the book was written, what life experiences the author had, or what inspired the author to write such a book.
Products like TempleOS should be treated the same.
and the author's website:
I'm not sure I really want to use TemplOS, but if you look at it as a research OS like the article suggests, lots of the ideas here are very compelling. DolDoc sounds like something I wish I had today.
I kind of wonder what could be created if these ideas were filtered through more modern design ideas?
You can also embed code fragments of arbitrary length, in any or all of dozens of languages, and execute them inline with arbitrary input, including both other sections of the same document and the output of other code snippets therein. (TempleOS seems to have a similar capability, but of course only for the single language in which everything to do with it is implemented.)
I liked the index concept. There have been more than one (successful) efforts to build a filesystem that fully supports indexing content, but they're generally implicit indexes. Explicit indexing via file content might be interesting.
I'm not sure what the real justification for running everything in Ring-0 is. I can't think of many reasons for anything more than minimal privileges to be a benefit.
Terry seemed to think it was pretty cool, so he made a 3rd Party Software page and linked to the GitHub repo.
https://github.com/pcorey/julia-templeos/blob/master/julia.C...
[1] http://farm8.staticflickr.com/7112/7488906888_f49800754f_z.j...
>> If a crash in one users’ programs could take down all the others, then obviously that would be bad. But for a personal computer, with just one user, this makes no sense. Instead the OS should empower the single user and not get in their way.
My PC doesn't have 100 users, it has 100 processes serving one user. It's nice that they can't stomp all over each other.
But I hear you on the low level access. For me it was a Tandy Color Computer, and then a Columbia 8088 luggable, and finally a 80286. All those systems ran DOS or something similar to it in real mode, and I had fun poking bytes into RAM too :).
The problem is that software is buggy, and without memory protections a buggy piece of code in one process can cause unpredictable things to happen in another. Essentially it turns a process which executes in a "knowable way" into one that executes in a arbitrary way.
Windows 9x suffered from this with drivers in particular, where a single buffer bug in one driver could cause other drivers to seemingly crash, and the root cause was incredibly difficult to track down.
I understand his perspective - computing in the 1980s was very much an age of innocence. The programmer's God/Genius is telling him to build a modern, developed version of the environment that he spent his healthy youth in. I don't suppose it's entirely beyond the realm of possibility that it might hold a key to resolving his problems and coming to terms with his illness.
It may be a trite comment, but in an environment where these conditions are treated as "holy madness" or shamanism, the sufferers have more of a place in society.
cf. John Nash, although Schizophrenia is a scale of greys.
Couldn't agree more, and something I'm going to try to keep in mind more often.
There's a whole world of hundreds of small and innovative hobbyist/niche OSes (Sortix to name just one), but we only ever hear about this one. Again and again, over and over, because the author's mental health makes for good clickbait articles for people to gawk and stare at, apparently. It's really quite sickening.
I'm okay with this article though, I like that it presented something new for a change.
[1]: http://ignorethecode.net/blog/2009/04/22/oberon/ [2]: http://lighttable.com/
Take the idea of having a single language for the shell and system programming. It forces you to think harder about the design of the language, so that it correctly works both as a command-line interpreter and as a compiled language. Lisp machines had that. Oberon system had that (in a graphical way, even). Forth systems had that. So it's not like we collectively didn't know. But neither Unix nor DOS/Windows even tried. Instead, they both feature shell languages that can best be described as "pathetic". Why did we have to wait until Windows 10 to have useful text selection in the CMD shell?
Or in programming languages, why is it that new languages always seem to take C and C++ as role models, while spectacularly failing to take any inspiration from Erlang, Ada, SmallTalk, Intentional Software, or Lisp? Why is XL, my own language, still the only one I know where it's easy to do multi-operator overloading, i.e. overload A+B*C, something it has been doing for at least a decade? Why are we unable to create a language that would work well both on GPUs and CPUs, or better yet, let me easily describe an application that uses both?
Or in interactive apps, why do we still not have good reactive functional frameworks for the web, similar to what Tao3D does for interactive 3D? (See http://bit.ly/1G8VOmr for my rant on that topic). Why is creating an OpenGL application getting more complex with each generation, instead of simpler? Why can a kid easily use GameMaker, but none of the Apple developer tools?
Or in operating systems, why did Linus Torvalds decide to mimick Unix and not the kind of mind-blowing operating system design ideas that were floating at the time? Like TaOS, the OS that was recompiling byte code at page-in time and could run a same program on different processor architectures during its lifetime? Or like MacOS, the original one, and its built-in graphical toolbox where, unlike X11, you could easily draw an ellipse inside a rectangle irrespective of line width? Or like GeOS and its 64K-based multitasking OS with vector fonts and GUI apps?
In summary, why is it that we always seems to ignore good ideas, but have no concerns repeating bad ones?
My theory is that inferior technology needs superior marketing, and that's how you win in the end. That's just a theory, of course ;-)
The common thread in what you're saying is "why do people not choose (technically pleasing solution) over (familiar solution with known warts)", and the answer to that is that change is really expensive and unpopular. Especially if it forces people to abandon their existing custom tooling, workflow, infrastructure, and skills.
Would most people use a new operating system with no web browser? Probably not. So that sets a minimum bar on the quantity of software you have to port to get it adopted. Which is a vast amount, especially if you want to write it in a new language as well. And new languages have new pitfalls.
For the shell, it's not clear that the same language is necessarily ideal: shell commands are ephemeral and the user wants to type as little as possible, while code lives forever and is generally more complex. Strong type systems and other forms of testability are important for code but clutter for the command line.
Linux chose Minix to replicate partially because he'd been taught it at university and partially because he could leverage the GNU infrastructure.
edit : damn it took me too long without refreshing the page to answer someone did it better
Like an esoteric programming language, it's likely never going to be used as a mainstream or practical system. However, Terry has been afforded the opportunity to create this system with few external constraints; this is one of the reasons it utilizes so many novel approaches. It could likely influence features in more practical systems.
People get too worked up about solving immediate problems, and often never see the forest through the trees. He may end up solving problems we never even realized were problems.
So imagine if you wanted to fire up a Python REPL and use it as your shell. What the shell essentially does is treat bare words as external command/executable invocations. Every dynamic language treats bare words as internal function/method invocations. That would mean that any executable looked up in $PATH (a global variable that holds a list of directories) would supersede any internal method in that scope! Is this workable? Why not try it and see? Also if you created a Shell library for Python (in C ;-)) then it could be used by Ruby and Perl and Node (or whatever they're calling it nowadays) and ...
It is interesting to imagine not having to context switch to shell-speak to interact with your machine. If you are a Pythonista just speak Python, a Rubyist the same ...
The article proves your point, even Linux with its openness is still very much tied to years of tradition.
And what if the shell output wasn't line-oriented but a live hypertext doc, say HTML5?
https://pypi.python.org/pypi/sh
I'm not seeing what I'm supposed to be seeing :) https://try.jupyter.org/
Okay, thats' very cool.https://ipython.org/ipython-doc/dev/interactive/shell.html
And while that page doesn't really highlight it, it works pretty well out of the box:
% ipython
Python 2.7.6 (default, Sep 9 2014, 15:04:36)
Type "copyright", "credits" or "license" for more information.
IPython 2.3.0 -- An enhanced Interactive Python.
? -> Introduction and overview of IPython's features.
%quickref -> Quick reference.
help -> Python's own help system.
object? -> Details about 'object', use 'object??' for extra details.
In [1]: pwd
Out[1]: u'/private/tmp'
In [2]: ls
KSOutOfProcessFetcher.0.r55jifrBu08ZlGAfPLYXKgYad4c=/ lein-trampoline-M8eCP9ASjLYqO
KSOutOfProcessFetcher.501.r55jifrBu08ZlGAfPLYXKgYad4c=/ lein-trampoline-i3aRyHVGcm1Fr
com.apple.launchd.QiAYKXJLr7/ snow-nic1.pcap
com.apple.launchd.iNBrDiEeE8/ snow-nic2.pcap
com.apple.launchd.z0Zss1uMx6/
In [3]:But something like this works of-sorts in Ruby:
module Sh
def method_missing sym, *args
bin = ENV["PATH"].split(":").collect do |path|
full = File.join(path,sym.to_s)
File.exists?(full) ? full : nil
end.compact[0] rescue nil
if !bin
raise NameError.new(sym.to_s)
else
bin = system(bin,*args.collect{|a| a.to_s})
end
end
end
self.extend Sh
Pry can't handle it very well, probably as it relies extensively on method_missing "magic" itself, but Irb seems do do fine with it.I'm sure there are ways to do the above in much cleaner ways, and even in Ruby syntax still gets in the way. E.g. you need to do 'ps :aux' or 'ps "aux"' instead of "ps aux" or the options will get interpreted as a method (though you could conceivably try to handle that by capturing NameError exceptions and applying really horribly nasty hacks, there would be a special place in hell for you if you were to do that; even the above is likely to break all kinds of stuff).
> And what if the shell output wasn't line-oriented but a live hypertext doc, say HTML5?
There have been all kinds of attempts at that, notably XmlTerm from Mozilla ca. 2000 [1]. It turns out to be a hard problem to get it right enough to make people use it. Basically to get that working at all I suspect you need to start with a good terminal emulator + a good shell, and make small enhancements rather than go the other way which most of these kind of projects have done.
> ls
It worked pretty well, I even added getters for directories, and they had getters for their subdirectories, etc.
At the end of the day though, having to wrap all arguments in () is a bit annoying.
And every time, I'm like "I've got some fing code and they've given me some fing code and all I want is for them to run together."
Powershell can call code in .Net assemblies and I imagine there's a way to pass C# or some other .Net code in but it probably requires a fat command.
The true beauty here, I think isn't just the way the Command Line acts as an interpreter but that all the code on the system is exposed at all times through a simple, common interface.
For a while I was running Perl as my shell, it bakes in most common unix commands as top level functions and its easy to call ones that aren't built in using system calls. Perl is pretty nice for file manipulations out of the box if you know what you are doing.
cute
It's amazing. He has a whole bunch of videos of his programs. It's fascinating how much stuff he puts out there!
Person A: TempleOS is amazing, written by just one guy! I'd love to know more about Terry, someone should do a documentary!
Person B: Terry has a mental disorder, a documentary would just end up [making fun of him|causing more mental issues]
As I understand it he does not believe he has mental issues, but does believe everything he's doing is directly influenced by an entity he perceives to be his God. Any of his supposed mental issues can just as easily be explained as issues of deep faith, a faith most/all of us are incompatible with.
Maybe I'm missing something essential here but what's the difference between Terry Davis and anyone else who believes their lives are being influenced/led by the invisible forces that are part of their religion? If he's crazy, is his brand of crazy significantly different from that of the pope or anyone else who claims to be regularly spoken to by their God?
As for Terry being racist, so what... He's so far out there, and so far gone, that that's just another flaw in him that we have to accept/overlook.
We should simply accept him without judgment and take from his work whatever we feel like... Just as we do from religion or any other work of technology... People are free to do what they want, and it's not our right to get in the way of whatever they are attempting to accomplish, guided by whatever is out there or in here.
I also feel like it's somewhat in bad taste to attempt to debate this in the explicit context of a member here.
But it's pretty clear that "his brand of crazy" is quite distinct from just deep belief. Most people with deepheld religious beliefs don't have manic episodes or start seeing people following them.
A nigger respects complicated programs. The more complicated the more the little niggers respect it. Ask a nigger to design a operating system task scheduler! It's hilarious watching a nigger make priority schedulers. I make my programs simple. I have an electrical engineering degree. I am a master of differential equations. Physics>Engineer>Computer Science> Psychology. The nigger standard model is 20 pages instead of two and it's really really complicated. When a computer scientist builds something he says, "What all features might we possibly need?" When I design I make it as simple as possible. Hello world joke: http://www.infiltec.com/j-h-wrld.htm Look at what the nigger did to graphic files formats: http://en.wikipedia.org/wiki/BMP_file_format Sound file formats: http://en.wikipedia.org/wiki/WAV Any nigger can make it complicated. A nigger makes it as complicated as possible. I am a genius. I make it simple.
Then again, when even a luminary like Paul Graham has to be careful about what he can and can't say [1], I suppose it's not too surprising that people should care more about the style of Mr. Davis's remarks than about their substance.
In contrast, when the artwork of a schizophrenic gets posted (there's a particular one that pops up from time to time), people mostly respond with fascination.
I don't know, maybe it's just me. But when I see a lot of different people who've all apparently been trained to react identically and without thought or consideration to a given set of triggers, regardless of any context in which those triggers occur, it creeps me out just a little.
How literal is your meaning when you say "Wow, that's pretty offensive, hate" below? Because I think hatred directed at a bigot is sort of a not very fruitful response to bigotry. In that sense, people being nasty because someone is saying offensive things isn't a huge improvement over people being nasty because someone is mentally ill.
I do see some need to deal with people that are being disruptive (whether intentionally or not), but I don't see much justification to do it with rancor.
As for the racial slurs, they obviously are not racial in this context.
Otherwise, perhaps he's a bit immodest or incorrect. OTOH, he's brighter than most so...
In any case, I don't know much about the guy. I just remember his posts being a little off... that might explain it but he is suffering from schizophrenia if I remember it correctly.
There, I fixed it. Do try and use the brain God gave you.
Really? You think that that change would make him likeable?
> Do try and use the brain God gave you.
Sorry, but I don't understand the purpose of that snarky comment. Do you disagree that the kind of post in the example I gave is why people are mean to him? It makes not a jot of difference that you "fixed" his post here (for whose benefit, I don't know), because he posts what he posts, and people read what he posts, and make their judgements based on that.
It's really annoying to me to see people get so caught up in the phrasing of an otherwise intelligible statement (due to trigger words or blatant racism or whatever) that they can't respond to it on its own merits.
Also, at this point, anybody who believes Terry is genuinely racist is obviously too incompetent to do research--it's pretty easy to find if you do any searching on the topic.
Yes, but the issue was why people are mean to him (as in, what are they responding to?), not why people are mean in general.
It's a fact of life that you will be judged on how you present yourself. And quite reasonably so -- you can't realistically expect that people are going to search the Internet for clues to every poster's mental health history before they form an opinion of them. That's simply not their responsibility. If at this point I were to call you something unpleasant, you would immediately form an opinion of me without doing any searching on the topic of my mental health. The evidence suggests you might even respond rudely.
In short, you don't need research to know when someone is off a bit. Our minds are great at pattern matching, but we get /lots/ of false positives. It's up to the higher level bits of our consciousness to figure out which is which. You just need to know what real tolerance and understanding is and fight off the urge to react to things on the surface.
Literally no-one in their right minds are going to write like that and expect to be taken seriously. Outright overt racism like what you claim you see in his posts just doesn't make sense in the contexts of code.
Of course people hate this, even without the random sprinkling of "nigger".
And the choice of that word reveals obvious racism. It says, I dislike blacks to the point that a word denoting them serves me as metaphor for other groups of people or concepts I revile.
Nice armchair psychology--maybe it's chosen because it's considered taboo, instead of because of some deep-seated dislike of blacks?
See: http://worrydream.com/ExplorableExplanations/
It seems to me that the way that the HolyC environment is designed, we're not far off from having a pretty decent implementation of some of Brets' concepts .. it at least seems closer than the features offered in other OS's for this kind of interaction.
Perhaps some enterprising disciple of both TempleOS and Worrydream will find motivation to push the last %5 of work through to completion .. seems like an exciting opportunity to do something truly innovative.
It's important to be open minded, but at the same time it's important to also have a filter for what's actually worth examining in depth and what isn't. Otherwise you waste your time going down fruitless cul-de-sacs to nothing. Which is exactly how you end up spending your life making something completely useless like TempleOS.
Additionally, the author thrives on attention. He's been around forever, it's true. But every time he gets any attention he goes on what seems to be a manic streak which erupts in the racist diatribes and nonsense.
He certainly does need medical attention. He does not need this kind of attention, treating his delusion seriously.
And you'd like to go say what they've made is worthless?
I'm really saddened to see such a lack of empathy. In life we procreate and create, offspring and projects the only chance our fleeting sparks have to last into the long night of eternity. We should always be charitable to others who've made something, that we may one day be judged by the same measure.
Empathy aside: how many operating systems (kernel + userland) have you written, chummer?
> And you'd like to go say what they've made is worthless?
It's patently obvious that it's worthless. What possible use does it serve? Morbid curiosity is the best you can say for it.
> We should always be charitable to others who've made something, that we may one day be judged by the same measure.
I judge my own work by an even less charitable measure than I'm using on TempleOS.
> Empathy aside: how many operating systems (kernel + userland) have you written, chummer?
This is the most ridiculous/tired response on the face of the earth to all criticism. "How many movies have you made?" "How many hit songs have you written?"
The fact that you even think that's a valid response says more about you than me.
Most people are worthless (just look at the distribution of wealth on this planet), most art is worthless, etc. etc. If we judged all our actions based on some silly notion of how ultimately worthless they were, we never would've gotten out of the trees because why bother.
As my mom used to say, a doodle has a right to be a doodle. Lighten up.
> This is the most ridiculous/tired response on the face of the earth to all criticism. "How many movies have you made?" "How many hit songs have you written?"
Can you explain why it's ridiculous? It seems reasonable to me. Because I haven't created an OS (or movie or hit song), I don't know that I could do any better than anyone I'd want to criticize, so I'm probably better off not criticizing.
Just curious, how much time have you spent using it? How much of the source have you read? How carefully did you read this article? Because if your answers to those questions are what I think they are, then you're just a dick.
But I certainly learned a few new ideas from taking some time to judge it objectively.
If tomorrow someone launched a new Linux shell because of an interesting idea they'd seen in TempleOS, or was inspired to write a new IDE which borrowed some features, then the world is a better place for it.
p.s. everyone thrives on attention.
Yeah, this is not going to happen.
A) It's been around for a long time.
B) He's not some misunderstood genius full of great ideas.
It's the preservation and extension of an archaic, dying style of computing: the single-user, programming-oriented, low-level and transparently-abstracted environment once common amongst micros.
It's going against the grain and doing something different in a time when (for very good practical reason) popular environments are approaching monoculture.
It's a tremendous achievement for a single person.
It's proof that not only can people create amazing things in spite of mental illnesses, but also because of them.
It's sad that even on Hacker News, there are people that can't accept that programs themselves can be art (more than simply the "engine" behind a work of art).
Exploiting a non-networked machine isn't very useful. There's no practical way to get any data back, to use it as a bot worker, or to send spam, so what's the point?
It might have landed (either in closed beta or I don't have enough karma to do it). Or maybe it was simply revived by an admin...
In the past he made racist and homophobic remarks and got shadowbanned. His mental illness is hard to understand at times. The same thing happened to him on Reddit. He has to use multiple accounts to get around the shadowbans.
I think he is like Brandon Eich who donated to the wrong charity, made good contributions and solid programming work, but holds opinions that are not socially acceptable.
I'd take HolyC over Javascript any day.
I can't reply to you directly. I didn't mean to imply that TempleOS is not multiprocessing. From what I gather there is only one user (with multiple processes) and that user owns all the files, hence no file permissions that say "this file belongs to user X" and "this file belongs to user Y", only user X can read/write/execute X's files, and the same for user Y. The author of the article linked to here states that TempleOS is a single user (but multiprocess!) system.
I wonder why you haven't implemented threads? Not enough of a benefit in your opinion? Aren't threads supported by modern CPUs. Don't they allow faster context switching than switching context for processes? Though I guess Erlang disagrees!
What TempleOS calls “processes” is what you are used to calling “threads”.
You are currently shadow banned.