NodeOS / NodeOS

Lightweight operating system using Node.js as userspace
http://node-os.com
MIT License
6.94k stars 607 forks source link

NodeOS 1.0-RC1 #181

Closed piranna closed 7 years ago

piranna commented 8 years ago

It has been a long time, but now that all the core functionality is ready being only a matter of some tune-ups and add some external projects like find a suitable git client or improve nsh, now we can say it: we have a release candidate :-D

The last weeks there has been a lot of work to make this happen, like adding support for LXC containers using vagga and re-enabling support for Docker, but also work to make all the dependencies downloaded using Node.js instead of bash scripts (and a lot of fixes on several projects to make it work like download, tar-stream, jsdiff or vinyl-fs). Next step, made the build scripts also in Javascript :-)

We have also made it possible to test independently the cross-compiled Node.js binary by using QEmu user mode so we can detect build failures in an earlier stage, and improved memory consumption by using node-kexec both on usrbinenv and logon, although this is a point that still needs to be improved. But best of all... we have network enabled by default! :-D Only dhcp at this moment and the wire needs to be plugged on boot to fetch the address and DNS servers, but it's just enought to start fiddling around.

As a side note, I've inscribed NodeOS this year both on the spanish national Free Software Universitary Championship and the Granada UniversityFree Projects Competition, so let's cross our fingers to see if this year we won again! :-P

zodern commented 8 years ago

Exciting! I might start working on Silk again and get it up to par with what you have said about a GUI.

I have had an issue from npm install. I cloned it into a different folder to start fresh.

zodern@zodern:~/nodeos2$ npm install
npm WARN package.json nodeos-barebones@0.0.0 No repository field.
npm WARN package.json nodeos-rootfs@0.0.0 No repository field.
npm WARN package.json nodeos-usersfs@0.0.0 No repository field.
npm WARN package.json nodeos-initramfs@0.0.0 No repository field.
npm http GET https://registry.npmjs.org/cpio-stream
npm http 304 https://registry.npmjs.org/cpio-stream

> nodeos-barebones@0.0.0 preinstall /home/zodern/nodeos2/node_modules/nodeos-barebones
> scripts/preinstall

> nodeos-cross-toolchain@0.0.0 preinstall /home/zodern/nodeos2/node_modules/nodeos-barebones/node_modules/nodeos-cross-toolchain
> scripts/preinstall

     fetch : http://www.musl-libc.org/releases/musl-1.1.12.tar.gz
     fetch : https://www.kernel.org/pub/linux/kernel/v4.x/linux-4.3.tar.gz
     fetch : http://ftpmirror.gnu.org/gcc/gcc-4.7.3/gcc-4.7.3.tar.gz
     fetch : http://ftpmirror.gnu.org/binutils/binutils-2.25.1.tar.gz
  progress : [                    ] 2% 882.1s(node) warning: Recursive process.nextTick detected. This will break in the next version of node. Please use setImmediate for recursive deferral.
(node) warning: Recursive process.nextTick detected. This will break in the next version of node. Please use setImmediate for recursive deferral.

And it continues the last 2 lines until it gets

RangeError: Maximum call stack size exceeded
npm ERR! weird error 8
npm WARN This failure might be due to the use of legacy binary "node"
npm WARN For further explanations, please read
/usr/share/doc/nodejs/README.Debian

npm ERR! not ok code 0
piranna commented 8 years ago

Exciting! I might start working on Silk again and get it up to par with what you have said about a GUI.

At https://github.com/NodeOS/NodeOS/issues/178#issuecomment-157095981 I've put some sketches about how I think the GUI could be (floating windows are so 90's... :-P), can you take a look and give some comments? :-)

I have had an issue from npm install

Are you using Node.js 0.10.x? I had this same problem on the CI server and fixed it by updating to Node.js 0.12.7, give it a try.

mitsukaki commented 8 years ago

floating windows are so 90's... :-P

I agree 100%! Sure they may look cool, but so much precious time is lost re arranging your windows, when the computer could do this for you! I'm excited for this release!

I've inscribed NodeOS this year both on the spanish national Free Software Universitary Championship and the Granada UniversityFree Projects Competition, so let's cross our fingers to see if this year we won again! :-P

If we do, I called it! We've definitely got a project to pull it off.

find a suitable git client

I wouldn't mind assigning myself this task. Shouldn't be too hard! Just curious, would you rather have git baked into NSH or as a separate module? Of course, as all other modules should be, I will still make it integrable with any other script on the system (via module exporting).

piranna commented 8 years ago

floating windows are so 90's... :-P

I agree 100%! Sure they may look cool, but so much precious time is lost re arranging your windows, when the computer could do this for you! I'm excited for this release!

Well, I don't like windows-based interfaces at all, in the end we use only maximized or maybe tabbed apps, so that's what I tried to achieve. There are floating windows, but they are second class citizens, mostly only for complementary tools (calculator, post-it notes...).

I've inscribed NodeOS this year both on the spanish national Free Software Universitary Championship and the Granada UniversityFree Projects Competition, so let's cross our fingers to see if this year we won again! :-P

If we do, I called it! We've definitely got a project to pull it off.

That's the spirit! ;-)

find a suitable git client

I wouldn't mind assigning myself this task. Shouldn't be too hard! Just curious, would you rather have git baked into NSH or as a separate module?

This would be an useful task if you want to take it :-) There are several pieces, but unluckily they are disconnected :-( I think the best would be to get a libgit binding and give it an interface like gitlet, so we could have an equivalent to git cli. Or maybe, work towards integrate libgit in npm and don't need a git cli at all, this would be awesome! :-D

By the way: independent module, please ;-)

zodern commented 8 years ago

Are you using Node.js 0.10.x? I had this same problem on the CI server and fixed it by updating to Node.js 0.12.7, give it a try.

That worked! I was also missing realpath. Should that be added to install-dependencies? Also, could it check what version of node is installed, and notify the user if it is 0.10.x? I might create a pull request for that.

At #178 (comment) I've put some sketches about how I think the GUI could be (floating windows are so 90's... :-P), can you take a look and give some comments? :-)

I also like not having floating windows. In concept, I thought that the modern apps in windows 8 would be great with the apps using the full screen, but when using a mouse there were things that made it less productive. In Silk all apps are currently full screen with a minimize and close button. I need to add some keyboard shortcuts for switching apps. I would like to have the task bar collapse to give apps more space, but I didn't like that in Windows 8.1.

I would like to make the app menu full screen and pull in other things like have widgets and show all of the open windows.

To create groups, the user could drag the tab to the right or bottom, and then moving tabs could work like Web Storm.

I am not sure about the secondary floating windows, though the more I think about it the better it seems. In any case, we need something for apps that don't need all the space of a full window.

Blender has an interesting UI where windows have no overlap, you can create new sections, divide them, or combine them. You can read about the principles behind it here.

Silk was my first node project and a lot of it needs to be rewritten (I wasn't aware at first that modules were singletons).

The front end of Silk and of apps will be cross platform, but currently the back end of apps only work in Silk. I would like to get it to the point that an app can be run on a computer without silk, but if run by silk it will have additional features for interacting with silk and maybe have some restrictions for security.

Another issue I was having was trying to have everything in apps and then the user can choose which to use, but that fell down for basic features like a file picker.

When I work on Silk, I will create a list of the tasks that cover most of what the target audience do on a computer (terminal, code, browser web, etc.) which I will try to cover for a first version.

piranna commented 8 years ago

I was also missing realpath. Should that be added to install-dependencies?

Maybe, or check the scripts that are using it and convert them to Javascript. In the long term we'll deprecate bash scripts after all, so... :-)

Also, could it check what version of node is installed, and notify the user if it is 0.10.x? I might create a pull request for that.

This should be done by the engines section on package.json, but pull-request are welcome :-)

In Silk all apps are currently full screen with a minimize and close button

I don't like full-screen apps, but maximized ones, I still love the tasksbar and the top menu (I've grown using MacOS Classic :-P ). I falled in love with the original ChromeOS UI, using the browser tabs as application switcher, and as you can see my sketch is somewhat inspired in it :-D It draws some inspiration from Eclipse IDE and Terminator too, and the "minimized" secondary tool windows at the botton and the sides are inspired from hangout/facebook chats and MacOS 8 tabbed folders:

that tabs at the bottom are in fact file explorer folder windows that you were able to drag and drop there to have a quick access:

I think we should create a new issue were start collecting all these ideas in only just one place instead of stole topics... :-P

zodern commented 8 years ago

I don't like full-screen apps, but maximized ones,

Sorry, I meant maximized. The task bar is still there.

that tabs at the bottom are in fact file explorer folder windows that you were able to drag and drop there to have a quick access:

Expand that to quick access for anything, and it would be really useful.

I think we should create a new issue were start collecting all these ideas in only just one place instead of stole topics... :-P

I agree

piranna commented 8 years ago

that tabs at the bottom are in fact file explorer folder windows that you were able to drag and drop there to have a quick access:

Expand that to quick access for anything, and it would be really useful.

Absolutely, since you can be able to access to them with a click and drop your files directly on it. OSX now have the "spring folders" on the Dock, but only have the basic functionality, on MacOS 8 they were full real folder windows, and they were awesome :-D Imagine doing that with all the aplication windows... :-P

mitsukaki commented 8 years ago

curious, would you rather have git baked into NSH or as a separate module?

Technically it would and wouldn't be. See #182 to see what I mean :stuck_out_tongue:

piranna commented 8 years ago

A NodeOS article in german. WTF?!?! :-P

zodern commented 8 years ago

If Google translated it correctly, it looks like it is positive about NodeOS. Though I did notice some things that are inaccurate (npm - Node Package Manager).

piranna commented 8 years ago

npm - Node Package Manager

This error is somewhat common, but I don't think it's too much a problem :-)