Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Extend NodeOS to KidOS #278

Open
khanshakeeb opened this issue Jul 29, 2016 · 73 comments
Open

Extend NodeOS to KidOS #278

khanshakeeb opened this issue Jul 29, 2016 · 73 comments

Comments

@khanshakeeb
Copy link

@khanshakeeb khanshakeeb commented Jul 29, 2016

I wonder how people are thinking about NodeJS. For me its really surprising that people are making OS based on NodeJS so first of all I will like to give them best wishes.

However I always thinking about OS which is light weight, secure, parental control and portable and specially designed for children so that it will help them to build computing skills and also very low budget so that every child can afford it.

I am thinking is it possible to extend NodeOS and make a desktop distribution for Kids? Kindly let me know your thought on this

Thanks

@piranna
Copy link
Member

@piranna piranna commented Jul 29, 2016

Hi @khanshakeeb. Yes, I conceived NodeOS as an OS able to be used on education and for kids too, that's why I designed it with the users isolated ones from others. Do you have any commercial plans on this topic? KidOS would be build on top of NodeOS without problems, only that in that case I think it takes special importance to have a simple GUI easy to use. What do you think? Could you be able to work on that?

We have other open issues regarding to this topic, being the most important on this aspect to be able to run a web rendered like Gecko or Chrome on NodeOS. Could you be able to help on that?

@khanshakeeb
Copy link
Author

@khanshakeeb khanshakeeb commented Jul 30, 2016

Hi @piranna I am happy to see your positive reply, right now I did not make any solid commercial plan but I believe we can derive one over the period of time. Initially I am thinking to make something good to use by education institute.

I am willing to work on that as I am thinking to build OS for Kids only so let me know how can I start with KidOS

I am open to work on this project let me know how can I do my contribution

Thanks

@kskarthik
Copy link

@kskarthik kskarthik commented Jul 30, 2016

@khanshakeeb It's exciting to see an OS based on nodejs for educational purpose ! We can rather use existing boards like the pizero (probably the cheapest one) for this.

@khanshakeeb
Copy link
Author

@khanshakeeb khanshakeeb commented Jul 30, 2016

I am thinking to use it http://www.orangepi.org/ because it has low price with good configuration.

@piranna
Copy link
Member

@piranna piranna commented Jul 30, 2016

Hi @piranna I am happy to see your positive reply

You are welcome :-)

right now I did not make any solid commercial plan but I believe we can derive one over the period of time. Initially I am thinking to make something good to use by education institute.

If you progress on the commercial aspect don't doubt on tell us, I have been lately on some ways to monetize NodeOS by giving support or implementing features and probably there will be others here that would be willing to collaborate :-)

I am willing to work on that as I am thinking to build OS for Kids only so let me know how can I start with KidOS

As I told you, if kids will be your main target, you should give attention to the GUI, so take a look at earlier examples as Sugar. Also, at this moment NodeOS can host a local GUI because we have not managed to have a web engine running on it, but you could give a remote GUI on any web browser and later use it locally when one is available... or help to make this happen ;-)

We can rather use existing boards like the pizero (probably the cheapest one) for this.

Currently NodeOS only support x86 32 and 64 bits systems. The cross-compiles was able to compile an ARM kernel but it was not able to exec a simple /init program ("binary not tainted", said), but it should be trivial for someone more experienced with ARM platforms.

@khanshakeeb
Copy link
Author

@khanshakeeb khanshakeeb commented Jul 30, 2016

@piranna & @kskarthik So lets start doing this activity, as I am also hosting coder dojo session for Kids so I will keep involve with Kids to validate UX of Desktop. Agreed with your point to make great GUI so that kids can easily interact with it.

@Coretool
Copy link
Member

@Coretool Coretool commented Jul 30, 2016

Yeah. The only problem is getting the web engine for the GUI onto NodeOS. :/

@kskarthik
Copy link

@kskarthik kskarthik commented Jul 30, 2016

@> The only problem is getting the web engine for the GUI onto NodeOS

Let's adopt gecko & gaia. We get a neat UI 😃 2 days ago the whole architecture was changed https://github.com/mozilla-b2g/gaia/ moved to pure web standards. I think we can customize the UI

@khanshakeeb
Copy link
Author

@khanshakeeb khanshakeeb commented Jul 30, 2016

@kskarthik So can we use NodeOS at the back-end and desktop would be build on Gecko & Gaia? If yes then let me know we can utilize that and customize UI

@kskarthik
Copy link

@kskarthik kskarthik commented Jul 30, 2016

yes. @Coretool & @piranna are investigating this..

@khanshakeeb
Copy link
Author

@khanshakeeb khanshakeeb commented Jul 30, 2016

Great, can we do some more discussion on some instant messenger? Could be gitter or slack?

@kskarthik
Copy link

@kskarthik kskarthik commented Jul 30, 2016

do you use telegram ? I think its best tool for a chat. We can make a group there with upto 5000 people

@khanshakeeb
Copy link
Author

@khanshakeeb khanshakeeb commented Jul 30, 2016

I can use that will it be available to Windows10?

@kskarthik
Copy link

@kskarthik kskarthik commented Jul 30, 2016

it's available everywhere https://telegram.org & open source too

@khanshakeeb
Copy link
Author

@khanshakeeb khanshakeeb commented Jul 30, 2016

let me download then

@Coretool
Copy link
Member

@Coretool Coretool commented Jul 30, 2016

@kskarthik I discussed it with lissyx and it doesn't look as good as I first hoped it would. B2G is based on the Android Kernel (which isn't a pure Linux kernel) which contains the HAL (Hardward Abstraction Layer) and I think the mir window server too (not sure on that but that's of second order I guess).

HAL is / contains according to Lissyx the stack needed for running Gecko as it runs on B2G (I think it's the graphics section of HAL). If we use a pure Linux Kernel, we need X.

I'm not if we could / should use Android Kernels / the HAL, what do you think @piranna ?

@kskarthik
Copy link

@kskarthik kskarthik commented Jul 30, 2016

But X is insecure right ?

@Coretool
Copy link
Member

@Coretool Coretool commented Jul 30, 2016

I've never asked, why we do not use X but just searched for ways to get around it. You have to ask @piranna...

@khanshakeeb
Copy link
Author

@khanshakeeb khanshakeeb commented Jul 30, 2016

In between I have setup Telegram messenger :)

@piranna
Copy link
Member

@piranna piranna commented Jul 30, 2016

I'm not if we could / should use Android Kernels / the HAL, what do you
think @piranna ?

By using HTML5 we can use any web engine for the GUI, also remote web
browsers on desktop computers. I don't think we need HAL to run Gecko or
Chromium or whatever here, just support for framebuffer or know how to
enable DRI.

@Coretool
Copy link
Member

@Coretool Coretool commented Jul 30, 2016

We would need HAL to run Gecko without X, that's what I was told.

Gonk uses android HAL as stack for Gecko, but we do not have HAL so we would need X for Gecko.

Chromium depended on GTK when I last checkt and GTK heavily depends on X.

We could handcraft some kind of framebuffer-webengine as I said nearly a year ago, but that's just an extreme amount of work. =/

@piranna
Copy link
Member

@piranna piranna commented Jul 30, 2016

We would need HAL to run Gecko without X, that's what I was told.

Gonk uses android HAL as stack for Gecko, but we do not have HAL so we would need X for Gecko.

No, we don't need it, Gonk is an OS build on top of Android kernel
where later Gecko run on top of it, think of it like Nodeos-barebones
without Node.js. Gecko is just the web renderer and can use several
graphic subsystems, that's what we need here.

Chromium depended on GTK when I last checkt and GTK heavily depends on X.

Chromium used GTK a several years ago, now it's using only Skya, it's
own vector graphics librarym that support several graphic subsystems
like DRI and EGL thanks to Ozone. That's mostly why I wanted to give
CEF a chance before..

"Si quieres viajar alrededor del mundo y ser invitado a hablar en un
monton de sitios diferentes, simplemente escribe un sistema operativo
Unix."
– Linus Tordvals, creador del sistema operativo Linux

@Coretool
Copy link
Member

@Coretool Coretool commented Jul 30, 2016

I honestly don't know what to do now 😅

@piranna
Copy link
Member

@piranna piranna commented Jul 30, 2016

What problem do you have?
El 30/7/2016 19:06, "John Green" notifications@github.com escribió:

I honestly don't know what to do know 😅


You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub
#278 (comment), or mute
the thread
https://github.com/notifications/unsubscribe-auth/AAgfvnpgiZLTTPMDvcku0xUEh5cl0KXzks5qa4SGgaJpZM4JYFWL
.

@Coretool
Copy link
Member

@Coretool Coretool commented Jul 30, 2016

Well, I don't know what I should try now. :/

Whatever, QtWebEngine static build succeeded today, that's something I guess ... Even if I can't find the right headers :o The question is, what to do with Gecko ?

@piranna
Copy link
Member

@piranna piranna commented Jul 30, 2016

QtWebEngine static build succeeded today, that's something I guess ...

That's great! Do you have somewhere the build scripts and the output of ldd command?

Even if I can't find the right headers :o

What do you mean with that?

The question is, what to do with Gecko ?

We need a web renderer, and by using standard APIs, nothing forget to have both of them avaliable so we can experiment and compare them or let people to choose what do they want to use...

@Coretool
Copy link
Member

@Coretool Coretool commented Jul 30, 2016

I'll push my scripts when my pc's back working.

By not finding the headers I mean, that I can't build noGUI because I cannot find the QtWebEngineWidgets header ... Will search for them when my Pc's back ^^

@piranna
Copy link
Member

@piranna piranna commented Jul 30, 2016

By not finding the headers I mean, that I can't build noGUI because I cannot find the QtWebEngineWidgets header

So you were able to build Qt with QtWebEngine? Maybe you'll need to configure the location of the just compiled Qt library. Take a look on current code of noGUI.

@Coretool
Copy link
Member

@Coretool Coretool commented Jul 30, 2016

Ok, my machine is back up and running. I'll compile it again with the prefix set to somewhere, where I can find it. In the mean time I found out, where they place the headers so it won't be hard to build noGUI when I compiled it a second time !!

Do you want the ldd of noGUI or what ?

@piranna
Copy link
Member

@piranna piranna commented Jul 30, 2016

Do you want the ldd of noGUI or what ?

Yes, I want the ldd of noGUI to check what libraries dependencies it has. I know you are trying to do a static build, but I've found in previous tries that although we were building a static build of noGUI some of the dynamic libraries were still needed, and I want to check what are them beyond the standard library, that's fine to have it dynamically because we already have it global on NodeOS.

@Coretool
Copy link
Member

@Coretool Coretool commented Jul 31, 2016

About a year ago I was able to run a NodeOS Iso in virtual box. You can get them from the prebuild section or build it yourself (on Linux )

@khanshakeeb
Copy link
Author

@khanshakeeb khanshakeeb commented Aug 3, 2016

Hi guys,

I just wanted to know what we have decided because I really wanted to start with something so that later we can make more refine version

Please suggest me some starting point for that

Thanks

@piranna
Copy link
Member

@piranna piranna commented Aug 3, 2016

I think that the conclusion points are:

  1. Yes, it can be extended ;-) You can do it as a derivative by doing a
    github fork of the repo and doing your changes there by changing the
    dependencies you use so it could be easily updated with new changes on
    upstream code, and later we could be able to publish it as one of the
    oficial NodeOS "flavours" (how we define derivatives of NodeOS optimized
    for specific task).
  2. The most important thing for an OS intended for kids is to have a nice
    and easy to use GUI, so maybe you should start here. You could be able to
    craft one and access remotely from a web browser or try with other already
    available like os.js, or help B2G OS project by making Gaia UI to work on
    regular web browsers and later try to install and serve it from a NodeOS
    server.
  3. To run a GUI localy we need to be able to exec a web engine like Gecko
    or Chromium or similar on NodeOS but we don't have anything available yet,
    so we need someone that can be compiled statically, and can draw on the
    Linux franebuffer or someone help to find to get hardware acceleration on
    NodeOS, whatever happens first. You can help here too.

El 3/8/2016 7:11, "Muhammad Shakeeb Khan" notifications@github.com
escribió:

Hi guys,

I just wanted to know what we have decided because I really wanted to
start with something so that later we can make more refine version

Please suggest me some starting point for that

Thanks


You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub
#278 (comment), or mute
the thread
https://github.com/notifications/unsubscribe-auth/AAgfvgJIssBcTLBmt8WNCkwc6evFSybDks5qcCMLgaJpZM4JYFWL
.

@kskarthik
Copy link

@kskarthik kskarthik commented Aug 3, 2016

just saw os.js ! it's cool!

@kskarthik
Copy link

@kskarthik kskarthik commented Aug 3, 2016

desktop gecko has hardware acceleration AFAIK

@piranna
Copy link
Member

@piranna piranna commented Aug 3, 2016

@piranna
Copy link
Member

@piranna piranna commented Aug 3, 2016

@kskarthik
Copy link

@kskarthik kskarthik commented Aug 3, 2016

did you contact gecko dev's about this ? are you on telegram ? We can talk about this my id is @kskarthik there. I will help you regarding gecko to my best

@Coretool
Copy link
Member

@Coretool Coretool commented Aug 3, 2016

@kskarthik I talked to lissyx and he said that it won't be possible to run it without X. .. a bit strange I guess and can't really believe it :/

@kskarthik
Copy link

@kskarthik kskarthik commented Aug 6, 2016

@piranna @Coretool How about using Node OS as a module for Chromium OS. This will also GUI since chromium os has a good UI & chrome add-on's support. I found this guy building chromium os for PC's http://chromium.arnoldthebat.co.uk/ since a long time actively...

Two birds for one shot:

  • GUI
  • Add-on support

Chromium OS also has a terminal to access nodejs features

@piranna
Copy link
Member

@piranna piranna commented Aug 6, 2016

@piranna How about using Node OS as a module for Chromium OS. This will also solve the ARM port & we have a good gui & chrome add-on's support.

Could you be able to explain a bit more this? NodeOS use mostly standard npm modules, so they can be used on stardard linux distributions... Are you asking about to boot in ChromeOS (or Ubuntu, or whatever) as a "bootloader" and later "go into" NodeOS (as mklinux did on OldWorld Macintosh machines, that first started a minimal MacOS Classic to init the system and later started the Linux kernel, or how loadlin worked to start Linux from MS-DOS) automatically or in demand by using chroot or Docker or something similar? That would be feasable... Or are you asking something totally different?

I found this guy building chromium os for PC's http://chromium.arnoldthebat.co.uk/ since a long time actively

I only knew of @Hexxeh old builds, but this updated links are really cool, thanks! :-D

@kskarthik
Copy link

@kskarthik kskarthik commented Aug 6, 2016

We should boot to chrome os as usual & we could be able to access nodeos features via terminal

We can get the best of the two worlds :-)

I only knew of @Hexxeh old builds, but this updated links are really cool, thanks! :-D

Yeah, his work is awesome!

@piranna
Copy link
Member

@piranna piranna commented Aug 6, 2016

This mostly could be done. If you want to start it soon and have a full NodeOS experience it would be just a matter of exec nodeos-mount-filesystems, and this is mostly how it could be done to port NodeOS to other kernels. If you want to "go into" from a user session I don't think it makes too much sense because as I told before you can use regular npm modules, only use case I can find is to "go into" a NodeOS restricted and isolated environment, in that case it makes sense specially for a KidsOS, and also I was thinking to split appart the users isolation mechanism so it could be used on other OSes in a more general way, so you could "go into" just when init a new session on your regular OS :-)

@kskarthik
Copy link

@kskarthik kskarthik commented Aug 6, 2016

Pretty much out of my knowledge here ;-)

So, you think my proposal is a solution ?

We should boot to chrome os as usual & we could be able to access nodeos features via terminal

Also, ARM port will also can be solved since chrome os targets mostly ARM hardware (chrome books)

@piranna
Copy link
Member

@piranna piranna commented Aug 6, 2016

So, you think my proposal is a solution ?

More than a solution, I find it an alternative.

@kskarthik
Copy link

@kskarthik kskarthik commented Aug 6, 2016

Well, we save time in building a new GUI & app (add-on) support

@kskarthik
Copy link

@kskarthik kskarthik commented Aug 6, 2016

@piranna

More than a solution, I find it an alternative.

Like cyanogenmod is an alternative to AOSP, Node OS can be Chrome OS + NodeJs

Advantages:

  • Kids (adults too) can play games & videos along with learning coding ;-)
@Coretool
Copy link
Member

@Coretool Coretool commented Aug 6, 2016

I honestly cannot see the role of NodeOS ... If we do that, it's just chromium + node which makes me a bit sad :/

We could replace the base of chromium OS with NodeOS though ...

@piranna
Copy link
Member

@piranna piranna commented Aug 6, 2016

I'm with @Coretool, that would be ChromiumOS + Node.js, not NodeOS, that's why I saw it as an alternative to having an ARM port of NodeOS. It would be an interesting derivative using NodeOS components similar to running NodeOS inside Docker, but it would not be NodeOS... Also, the case of Docker would be considered more like a NodeOS port because we only replaced the Linux kernel by the Docker infraestructure, there are no more changes...

@kskarthik
Copy link

@kskarthik kskarthik commented Aug 7, 2016

@Coretool
Copy link
Member

@Coretool Coretool commented Aug 7, 2016

Is that what we were talking about ? ^^

@kskarthik
Copy link

@kskarthik kskarthik commented Aug 7, 2016

actually, i just saw it now, some one imagined & implemented it faster than me ;-)

@EthraZa
Copy link

@EthraZa EthraZa commented Oct 14, 2016

I'm curious! When NodeOS talks about local Ul, it would be something like a NWJS app in the sense it would be a nodejs environment hooked to the rendering engine or it wold be more like just a rendering engine running HTML/JS and taking to a nodejs webservice like that would give all the hardware access to the UI?

@piranna
Copy link
Member

@piranna piranna commented Oct 14, 2016

Second option :-) Not just a "single" web service but instead each app will provide its own one, but if there are some resources common to several applications, it would be possible to create a common agnostic web service for that. This is what has happened for example with files access and the reason why I created Davius.

@khanshakeeb
Copy link
Author

@khanshakeeb khanshakeeb commented Jan 18, 2017

Hi all,
I have fork repository for kidOS.
@piranna I have seen your presentation in repository but its not in English language do you have one?

Also need to know is there API already build on NodeOS in order to get login authentication and other tasks? Or we need to built one?

Thanks

@piranna
Copy link
Member

@piranna piranna commented Jan 18, 2017

@piranna I have seen your presentation in repository but its not in English language do you have one?

Currently no, spanish is my mother language and so far I have only done the keynotes here. I'm currently candidate for the call of papers of JsDayEs and I've postulate for the english track, if I'm selected I'll publish updated slides in english and also hope to have the keynote recorded :-)

By the way, the slides on the repo are really old, you should better take a look for my bachelor thesis ones.

Also need to know is there API already build on NodeOS in order to get login authentication and other tasks? Or we need to built one?

There's no "global" API but instead there are modules that implement the functionality. For login authentication we are using logon.

@khanshakeeb
Copy link
Author

@khanshakeeb khanshakeeb commented Jan 21, 2017

@piranna best of luck for JsDayEs and I am looking forward for English version.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Linked pull requests

Successfully merging a pull request may close this issue.

None yet
5 participants
You can’t perform that action at this time.