Hacker News new | comments | show | ask | jobs | submit login
NW.js based operating system (externos.io)
105 points by rakibtg on Sept 30, 2017 | hide | past | web | favorite | 67 comments

A lot of criticism for not being a "real" OS from a technical perspective - by "OS" the author likely means this is a graphical windowing system and application platform - the part of the OS that the user sees and interacts with. That it is written in nodejs is irrelevant - if this gains traction it would likely be rewritten and optimized for better efficiency.

Also bear in mind this is a single university students design project, he's not trying to be Linus or stallman just yet - Id love to see more people trying to rethink the desktop/workstation OS.

To the author - well done, this is far more than I would have been able to do in uni!

If it isn't an operating system, it shouldn't be called an operating system.

He isn't trying to rethink the desktop/workstation OS. If he's found a way of improving upon existing desktop environments, it should be clear what improvements he's made and how he has made them.

It seems it's written in Node Webkit (NW.js), which - if I understand correctly - allows you to build desktop applications in the same way node.js allows you to build applications which run in the browser. He appears to have used this to prototype a desktop environment. Rewriting a desktop environment, for efficiency, in C and using Xlib would itself be a major undertaking.


It's a statically typed subset of JS that uses typed arrays for machine-typed memory and JS's bitwise operators for int32 and uint32 casts, and + for to-IEEE754-double, etc.

It is as fast as memory-safe C-like variants already, see



I'm not sure why the native C++ (clang) gray line stops over a year ago. Perhaps @azakai can say.

If things keep going the way they are someday JavaScript is gonna be optimized enough to get pretty close to C; specially functional scripts/parts (those with no side effects).

Right sure, then you'll have something that (supposedly) goes as fast as C and has even more issues! This is going to be great!


Close to C for perf, in some things.

Very, very far from C in memory, for all things.

> Id love to see more people trying to rethink the desktop/workstation OS

He's very creative. Both his video[0] and website are very artistic. I originally went through the initial reddit links[1] to try and figure out what he was trying to do here.

He just needs to provide more substance. Lots of flash but little info. I say this as constructive criticism. It shouldn't have taken me as long as it did to figure out what this was.

On a positive note: I did spend extra time trying to figure it out because it looks so great and I really liked that he went JS-stack with this - it's very impressive. Impressive enough that it's on my todo list (very few things get on it because I've gotten very lazy!:)

[0] https://www.youtube.com/watch?v=-5tak0tHqIg

[1] https://www.reddit.com/user/anesuc/submitted/

> A lot of criticism for not being a "real" OS from a technical perspective

It's not criticism, an actual full operating system written in NW.js would just be very special in its own way.

NW.js requires an underlying operating system to function, so if it really could be called an "NW.js-based operating system", there would have to be interesting things like bootstrapping WebKit as early as possible and then doing everything else in there.

And that would also have stark performance implications. If core-libraries were written in NW.js, getting something as fluid as in the videos, would be absolutely incredible.

That would still not be an operating system. It would still just be a very early on bootstrapped WebKit in a different operating system.

When I was in university, I knew what the difference between an operating system and desktop environments were, I knew what click-bait nonsense was ("An OS! In JS!") and I knew what JS was good for (web) and what it was terrible for (everything else).

> if this gains traction it would likely be rewritten and optimized for better efficiency

Uttered by any JS "mvp" apologist ever; number of times fulfilled in JS projects: 0.2 times. (The .2 goes for Atom and its C++ rewrites).

> eXtern is an Operating System that offers a unique user interface and user experiences compared to traditional systems. In addition, it is powered by JavaScript and takes advantage of the power of node modules making the possibilities of App development endless.

npm install bootloader? Please does anyone know anything about this? I highly doubt it is an "operating system".



It's not an OS.

NW.JS is "Node-Webkit" which came before Electron but it's similar enough. This is just a UI on top of an OS.

30 seconds in to the video and all I've seen are some spinning computers and a message saying "these computers are just for show, they're not really running anything". Please, when you try to sell a product, start by TELLING US WHAT IT IS.

You don't need a person to tell you what it is. You can tell by that amazing uplifting music that this is a next level idea.

LMAO! Not sure why you're downvoted, that was clearly sarcasm.

The author has some serious design and coding skills. I just wish they were more precise about what it is (a window manager? an gnome user theme?) rather than trying to brand it as a javascript-based operating system.

I tried to install the OS, assuming it's a debian-derived distro but couldn't download it yet. Checking the author's twitter, patreon, instagram says he released beta 1, and is trying to name the web browser.

What's this all about? any ideas? Finally [1]

[1] https://www.reddit.com/r/linux/comments/4onxro/extern_os_a_n...

PS: the website uses stratus wordpress theme, which, like most of the cool wp themes is inspired by the apple website.

> inspired by the apple website

My first thoughts when loading the website were "Is this an Apple project?"

It's uncanny how similar the design is to Apple's website. It's crazy how much a brand can monopolise a market just from an aesthetics point of view.

I'm confused. Is this a GUI that runs on top of a kernel (like Linux)? What part of it uses NW.js? Using JavaScript for a system like this is generally not a good idea. The garbage collector can interfere at any time and cause all sorts of problems in a kernel or OS environment. It'll also likely be incredibly slow.

Wait... is this a parody?

They're (badly) superimposing screen captures onto plagiarised Apple and Microsoft ads, and not particularly attractive screencaps; that text editor with the dropshadow and frosted glass behind the text looks… painful.

It can't be a parody because it's too earnest in its poor imitation of 2010s design language.

I think they went a little overboard with the blur effect on the applications.

The design skills of the author are phenomenal. I'm a JS skeptic, but seeing how popular hyper.js is, maybe this project has a future.

What design skills? It uses lots of frosted glass and nature graphics, but if anything that just shows an ability to follow popular trends. It reminds me of Longhorn concept videos, especially the focus on æsthetics rather than utility.

>What design skills?

I think parent means the ability to create more than decent looking application UIs with a consistent theme for lots of different apps (file viewer, music player, dock and toolbar, editor, etc), implement them in html/css, and add interactivity and code the functionality they offer -- and graphics that niggles aside wouldn't look out of place in an actual end product by a major company.

The "ability to follow popular trends" is by itself a feat, considering it's a young student, he's also programming, and most programmers UI skills are something south of [1] or [2].

Nobody cares if they don't follow 2017's trends to a T, or if they overused some transparency in the result, it's the overall skills shown that matter.

[1] http://csis335.wikispaces.com/file/view/bru_main_screen.jpg/...

[2] https://www.google.gr/imgres?imgurl=http%3A%2F%2Fwww.37signa...

I don't really care much about this project one way or the other.

Even so, it is extremely frustrating to see someone put in THIS level of effort (As a university project! From someone who is primarily a coder!)... to then be taken down by 30-seconds worth of smug quips from some nobody on a discussion board.

I am reminded of when the last round of Star Trek movies started up a decade ago. How the phrase "lens flare" quickly became an Internet meme. It's not that the effect was that over-used, and it certainly isn't that ANY of the Internet film geeks commenting on it will ever accomplish 1% of J.J. Abrams' life work. It was just a way of signaling to others, "I know some basic industry jargon. So I may not be on his level, but I'm slightly above YOUR level. Look up to me."

I dunno. I have approximately 1000x more respect for this guy's "frosted glass" and "2010's design language" than I do for you. Talk is cheap, he shipped.

I mean, I don't want to be as mean about it as I come across. It's great they're creating things. The praise just seems… misdirected. I find the execution more impressive than the actual design.

Shipped what, a plagarized ad video?

Hence why I said skills and not taste.

Eh… I wouldn’t call this phenomenal. https://i.imgur.com/X8g7J1D.png

The design extends about as far as “blur the background of everything”. Beyond that, the choices are not so good. The file explorer’s sidebar was nice, at least.

I don't know about that. It looks like a carbon copy of OSX.

Actually the application and icons bar is at the bottom and there are menus inside each window. I'd say it's more like Windows or as I reconfigure Gnome to be (except the dark theme), starting from the Gnome Flashback coming with Ubuntu 16.04.

It seems a really well executed demo. Too bad the site has very little details and the download page is offline (limits exceeded). However the last part of the Developers page is somewhat revealing:

> Since eXtern as of Beta 1 does not have a terminal, you can use the Linux binary powered gnome-terminal. You can do this by typing this into the I.T.A.I assistant input area (the bottom input area that says “What would you like to do?”:

> Then press enter.

No terminal means massive fail

Looks cool, I started making an electron based desktop environment like this a while ago but didn't see it through https://github.com/TrevorDev/niftyOS

Oh great, another "OS" in the making. I am starting to get the feel people have no idea what an OS actually is.

If you looking for a way to develop apps for linux ( elementary os) with nodejs and vala,here is an example https://github.com/harisvsulaiman/Pushy

How does vala compare to electron or qt?

I wouldn't get too hung up in it being an OS. My main question is about why you'd use something like this instead of the existing web-based "OS", ChromeOS.

If it's a desktop environment for a Linux-based operating system, like it seems from the comments here, then you'd have access to more and especially more powerful software.

And then I suppose, it's a matter of taste when compared to KDE, GNOME, Xfce etc.

Would however be interesting how much resources it actually uses when idle. The page suggests a minimum for RAM of 4 GiB.

So, unless that is one of those minimum system requirements where the author wants you to not even touch their software, if you're not equipped to have a completely stutter-free time, I also find it hard to think of many cases where someone would prefer the design so much that they'd buy another RAM stick for it.

So it's like chromeos but worse

Haven't seen a high-profile NW.js application in a little while now. What's the current state of the landscape between it and Electron? Fading, or still a very active project and viable option?

I use it for the GUI of a FLOSS project I maintain and it works very well. It looks to be quite active still.

Granted, my use case is rather idiosyncratic-- I have to support the use of multiple toplevel windows which communicate over a TCP socket with the "business logic" process. With Electron, this would either require an additional socket connection per window, or central node.js socket connection with the business logic which then forwards messages to/from each window using some form of IPC.

With nw.js you get the option of just accessing the window/browser context directly from the node.js context. That made it a lot easier to get the GUI up and running.

I should also say I'm doing the socket connection through node.js, and I've completely disabled the Chromium part of the toolkit from accessing the network. For use cases where the app needs to load web content over the network, Chromium makes all kinds of requests to Google for all kinds of reasons. That's kind of a weird thing for a general purpose GUI toolkit to do. I'd imagine the same is true for Electron.

Looks and feels (from the video) like a variant of KDE.

If everything runs on nodejs I can't imagine the performance you would get on the average modern dual core laptop

...and both download links are now returning HTTP 508 - Resource limit reached.

All I can say is that I certainly hope the browser application runs in a separate, sandboxed process from the rest of the, er, "OS". Imagine a world where clientside browser JS can interact directly with the desktop environment...

See ActiveX for windows

Is that a Linux distro?

Not sure (I haven't tried it yet), but the developer manual stub mentions using gnome-terminal.

Get ready to replace your PC with a super computer.

It's a DE

Where is the source code?

nodejs is the right choice for doing anything nowadays. The next step is not just operating systems, but airplane systems. I want to see autopilot programmed in nodejs.

I can't be 100% sure that you're joking.

If you are joking, and I'm going to assume you are, you might want to be careful. Somebody will see your comment and think it is a brilliant idea.

Hell, they might even suggest a blockchain to verify output in the two-out-of-three CPU check. ICO forthcoming.

It's increasingly hard to distinguish satire from news reporting too, but as you point out that can work both ways.

I've noticed Rust encroaching into this space lately. "They should rewrite it in Rust!" Many of those posts seem to be sincere. Hell, there are whole articles that are very sincere.

A recent(ish) favorite was one suggesting that all C should be rewritten in Rust. Granted, they suggested doing it when you did patches and doing it piece by piece, as opposed to all at once, but they were quite serious about it.

They appeared to even be serious about doing it in pieces over a period of many years. I'm not actually sure which one is worse.

The Rust Evangelism Strikeforce is real, dude.

Not just airplane systems... airbag systems. Javascript is the future of programming.


On a more (maybe?) serious note, I remember when JavaScript first came out. Well, sort of... It was mid-1990s and I think Netscape was the first to implement it.

It didn't take long before it was first used for abuse, such as spawning new windows until the target computer froze. It was just a short while before it was making cursers with tracers that followed your mouse movements.

Somewhere around this time, there were the first exploits that took advantage of JavaScript. Soon, the exploits were to JavaScript itself. At the same time, there were quite a few games being done in JavaScript.

I want to guess that it was just a few short years before the general consensus in the newsgroups was that it was a horrible, bloated, insecure bit of needless cruft that had no business being on the Internet. Many people agreed that JavaScript needed to die a slow and cruel death, and it was still so young...

Anyhow, it has cycled through these periods of love and hate, sometimes even being love-hate, but it has still kept going. People have been actively warring against JavaScript almost since day one. Well, at least since day 1,000.

Since then, it has gotten sandboxing and that helped a lot. It has been used for some truly wonderful things. It has enabled all sorts of innovation and creativity.

Don't get me wrong, I still recommend people surf with JavaScript disabled by default, but I can't really argue about the functionality and the results. JavaScript has, despite the campaigns against it, survived.

There have been untold exploits, countless press articles where it was either the problem or facilitated the problem, and is often used as an example of incompetent programmers gone amok. Yet, JavaScript persists.

I never thought it would last this long, actually. If I'd been asked to predict the demise of JavaScript, I probably would have said the year 2000. I'd have been wrong.

It is a language that seems to invoke strong emotions in the developers/tech world. You either love it or you hate it. The only other language I can think of that evokes quite so strong emotions is PHP.

It really is amazing. It really is impressive to see what people have done with the language. It was Eich, right? I wonder if he knew wht JS would become?

Also, it has been over twenty years. Why is it that people still regularly confuse Java with JavaScript? I see that mistake with remarkable frequency, though I didn't see it in this thread. How did JavaScript survive this long, if people still don't even know what it is?

Either way, I begrudgingly admit that there's a place in the world for JavaScript. I will even go so far as to say that it's a good language for some things. Well, it is now that they have kind of got the security aspects of it dialed in.

So, maybe hit is the future of programming? The future where we let any old website execute programs on our personal compute devices without any vetting, of course.

If I drank, I'd toast to NASDAQ.js.

For the job that JavaScript does, there is simply no alternative. The only thing that ever came close was ActionScript, but even that didn't didn't do what JavaScript does. There is only one programming language that embraces and enhances HTML & CSS; JavaScript.

And it's a horrible language. I write JavaScript all day everyday. It's how I earn my living. But I'll admit that it's a terrible, quirky, cumbersome programming language. But then it does its job in a terrible, quirky, and cumbersome environment. The JS I write has to run in several different runtime systems. Run times that change at random, in a way we the developers have no control over. My JS code has to embrace uncertainty, unlike my Swift or PHP or Python that comes with concrete guarantees. But I know that as much as I love Swift, it couldn't do what JS does. Not as succinctly as JS. Not as effortlessly as JS. Swift isn't as street wise as JS. Swift doesn't have to put up with the crap that JS has to put up with. And so Swift can be elegant and modern. But it will never be as versatile as JS.

Java, VBScript and Dart have all been supported by some of the browsers at different times. It's not like nobody has tried to put something else in the browser, it's just getting everyone to agree to support an alternative. Looks like that will be web assembly.

So keep JS on that terrible environment where it belongs.

Don't try to develop desktop "apps", mobile "apps", "operating systems", "desktop environments", "airplane systems", "nuclear reactors", "[something.js]" etc.

...I'll start writing pacemakr.js now....

To anyone that can't see sarcasm and attempts this for real: don't forget to register a matching .io domain so that it gives real _gravitas_ to your JS project.

[Something].js https://xkcd.com/1508/


Guidelines | FAQ | Support | API | Security | Lists | Bookmarklet | Legal | Apply to YC | Contact