WebVM is a server-less virtual Linux environment running client-side
webvm.io
webvm.io
VMs
https://jamesfriend.com.au/pce-js/ (https://github.com/jsdf/pce)
https://www.pcjs.org/ (lots of hardware and OSes) (https://github.com/jeffpar/pcjs)
Mac OS
https://infinitemac.org/ (https://blog.persistent.info/2023/03/infinitemac-dot-org.htm...)
https://jamesfriend.com.au/projects/basiliskii/BasiliskII-wo...
To get a flavor of the work required when emulating the kernel, you can read up on the work it took Windows developers to emulate Linux syscalls on top of the NT kernel for WSL 1 here: https://learn.microsoft.com/en-us/archive/blogs/wsl/wsl-syst...
WSL devs eventually abandoned that effort in favor of running the actual kernel in a VM -- that's how WSL 2 is implemented.
[0] I'd be surprised if sys_fork actually forks the process using a web worker, for example.
On webvm.io
> $ time python3 -c "max(range(10**7))"
real 0m1.558s
On https://copy.sh/v86/?profile=archlinux
> # time python3 -c "max(range(10**7))"
real 0m5.283s
"WebVM is based on a CheerpX build that we host. We encourage users to deploy their own versions of WebVM, but we don’t currently allow self-hosting of the CheerpX engine itself. This public build of CheerpX is provided as-is and is free to use for technological exploration, testing and non-commercial uses. If you want to build a product on top of CheerpX/WebVM, please get in touch:"
https://labs.leaningtech.com/blog/mini-webvm-your-linux-box-...
Even better, consider joining our Discord: https://discord.gg/yTNZgySKGa
* Education (Linux, Programming, Security, ...)
* Live docs for arbitrary languages and binary libraries
* Preservation of historical software and games
* Virtualization of legacy Windows enterprise apps.
* Dev environment for Web IDEs
Just a few examples, the list could go on for long
What are the use cases you Invision?
Last but not least, an IRC server/channel in lieu of discord? I'm stuck in my ways!
Nice work too, I hope this doesn't come across as flippant.
EDIT: Side note, I opened vi and escape is.. well maybe a browser issue but 'cant exit vi' .. Never thought id say that again
The trend of using discord over forums does suck though, it’s really hard to search old discussions.
A channel listing will give you _many_ results.
It's not like it used to be in the 90s but that's still something.
Seems reasonable to go with the growing platform with 1000x more users.
I agree! I am a nobody and forever will be a proud nobody!
Not OP, but they said the following in an answer to similar question: https://news.ycombinator.com/item?id=40940707
"The technology is extremely flexibile, off the top of my head:
* Education (Linux, Programming, Security, ...)
* Live docs for arbitrary languages and binary libraries
* Preservation of historical software and games
* Virtualization of legacy Windows enterprise apps.
* Dev environment for Web IDEs
Just a few examples, the list could go on for long"
IRC is nice for people who use it, but it has a huuuuge barrier to entry for new users. The very first thing you have to do is choose a client out of a list of 100 clients, half of which haven't been maintained since 2003. Then you need to set up a bouncer somewhere so that you can see messages that were posted when you were away. Those two things will filter out 99.99% of new people.
Or, you could use Discord (or Matrix); people sign up for an account and that's it.
Our open-source project switched from IRC to Matrix (after having been on IRC for over a decade before that), and got a noticeable uptick in engagement.
Unfortunately, Matrix still has some long-standing UI quirks, which would make me reluctant to use it in a context where I want people to pay me money; particularly if some of those are non-technical users.
1. go to https://web.libera.chat/
2. click Start (as a Guest account)
And you still have the problem that if you're in the wrong time zone and happen to close the window, you may miss responses.
There are advantages to having high barriers to entry for a community; Ham radio is essentially a global chat room with an entrance exam, for instance. But there are costs too.
Curious - is your implementation of how you wrangled lwIP for the networking piece open source? I had previously read the article you linked elsewhere, re: networking, but would love to see the specifics of your approach there.
edit: Saw your other reply!
https://labs.leaningtech.com/blog/webvm-virtual-machine-with...
1. Copy and paste does not work and this could be bad for basically every editing task (programming etc).
2. The screen freezes sometimes and keypresses don't appear. Usually pressing backspace unfreezes the screen. Firefox about:performance doesn't show any CPU usage in the tab. Linux's htop (on my machine) doesn't show anything strange with Firefox.
And a question: I saw that new files persist after closing the tab and opening it again. I didn't investigate my localstorage etc with Developer Tools. Did you use that or some other browser feature? How truly persistent are those files?
2. We had these reported from several users and we will investigate as soon as we can: https://github.com/leaningtech/webvm/issues/102
To answer you question: filesystem chunks are cached/persisted using a local IndexedDB. It provides a fairly strong level of persistence, although the user can wipe it out of course.
Copy&paste via menu works (I didn't think about it) and Ctrl+Shift+V works too. Ctrl+Shift+C opens Firefox's Developer Tools. It's difficult to find a reasonable shortcut.
I don't believe I've ever seen Ctrl+insert and shift+insert makes to anything _other_ than copy and paste.
Why have everybody kept using Ctrl-Shift-C and Ctrl-Shift-V since forever included myself?
I ask because I personally think we are headed towards a future where web browsers are just sandboxed container environments where we download and run containers for each app...
Eventually, even calling them "web" browsers might feel a little odd, almost the way in which we "dial" a phone number today, even though we now mostly key it in on a touch screen.
As described in the project README we provide a GitHub Action workflow to convert Dockerfiles into bootable images for WebVM: https://github.com/leaningtech/webvm
It's a Linux command line environment running in a browser. Slowly.
Also, a little below:
CheerpX currently focuses on user mode (ring 3), and does not fully emulate the kernel (ring 0). We do, however, implement a subset of the Linux system call interface, which is enough to run most applications.
[0]: https://github.com/WICG/direct-sockets/blob/main/docs/explai...
[1]: https://github.com/WICG/isolated-web-apps/blob/main/README.m...
Also, for the use case of local dev environment for Web IDEs, this doesn't look fast enough.
node --version
runs fast after the first time, but executing any JavaScript is very, very slow: user@:~$ time node -e "console.log('Hello')"
Hello
real 0m7.693s
user 0m0.012s
sys 0m0.000sThe technology is extremely flexibile, off the top of my head:
* Education (Linux, Programming, Security, ...)
* Live docs for arbitrary languages and binary libraries
* Preservation of historical software and games
* Virtualization of legacy Windows enterprise apps.
* Dev environment for Web IDEs
Just a few examples, the list could go on for long
This runs a NodeJS server and frontend in your browser so you can see what Graphweaver can do without having to install or run anything more than a browser on your computer. The example has an SQLite database joined to a REST API. Graphweaver serves a GraphQL API with the result.
State is already locally maintained via IndexedDB, no data is ever sent back or saved on our servers.
How do you import a .exe compiled elsewhere, curl, scp?
This is a Linux environment, but it can run Windows apps? How does that work?
I’ve said for a while that a browser is basically its own operating system. Now it can host operating systems!
Error: /proc must be mounted
If a browser is not supported, the site should display a specific error message.
/sarcasm