HNHacker News
TopNewBestAskShowJobs

apignotti

2,341 karma · joined October 4, 2013

CTO of Leaning Technologies, we make compilers for the Web.
submissionscomments
apignotti··on Modern Baby: A pioneering computer from Manchester
You can play with an online simulator of this machine here: https://davidsharp.com/baby/online/index.html

The simulator is originally written in Java, and the browser version is powered by CheerpJ, a WebAssembly-based JVM (https://cheerpj.com/)

apignotti··on Ask HN: What were the best books you read this year?
Benjamín Labatut - The Maniac, a novelized biography about the mathematician and computer science pioneer John von Neumann.

The story of his life was absolute fascinating for me, unfortunately the last part of the book attempts a connection with the development of Alpha Go / reinforcement learning that should have been avoided.

apignotti··on Webvm: Virtual Machine for the Web
Not right now, WebVM/CheerpX support large disks (1GB+) to be able to run complete distributions. This an advantage of the solution, but it also means that it cannot run completely offline unless we provide a way to pre-download all this data. This does not seem a practical solution.

Fundamentally, a real VM running a real OS needs lots of data.

apignotti··on Webvm: Virtual Machine for the Web
That would fit our vision for a new generation of Web apps with traditional server-side payloads running client-side, with lots of positive impacts on user privacy and operational costs.

The main difficulties right now are two:

* Most docker containers are 64-bit, while CheerpX currently only support 32-bit x86 code * Due to CORS limitations it is not currently possible to downloaded layers from repositories such as Docker Hub

The first limitation will be eventually fixed, the second one will require a specialized repository, a proxy, or co-operation from the existing repositories.

apignotti··on Webvm: Virtual Machine for the Web
Thank you, appreciated.
apignotti··on Webvm: Virtual Machine for the Web
> I'd be very interested in chatting with you about our respective products' future plans.

Sure, you can find me and the rest of the team on Discord: https://discord.leaningtech.com

apignotti··on Webvm: Virtual Machine for the Web
We don't currently expose an API to integrate custom block devices, although it could be possible. We provide an integrated backend based on HTTP byte ranges that can work on any standard compliant HTTP server. See here for more info: https://cheerpx.io/docs/guides/File-System-support#block-dev...

CheerpX is indeed proprietary, but free-to-use for individuals and open source projects. We do want to see the community building on top of our tech. Our Flash product is build on top of CheerpX and the official Flash player plugin that needs to be licensed separately from Harman/Adobe. Java support is provided by a completely different product called CheerpJ, although lots of the ideas and parts of the JIT engines are shared with CheerpX.

At this stage we believe that keeping CheerpX proprietary serves our growth plans the best, this could of course change over time as adoption increases and we build further added-value products on top. On the other hand the WebVM integration is FOSS since it doubles as an extensive sample of what can you build with our technology.

apignotti··on Webvm: Virtual Machine for the Web
You can use the self-hosted version of the Tailscale control plane, called Headscale, but you need our own fork since the upstream version has various issues. We plan to merge these fixes upstream soon.

For more info, see the last few paragraph of the Networking section from our latest blog post: https://labs.leaningtech.com/blog/webvm-20#private-networkin...

apignotti··on Webvm: Virtual Machine for the Web
CheerpX uses Tailscale, not the other way around. The Tailscale SSH client is built on the same Go stack (compiled to Wasm) used by CheerpX uses.
apignotti··on Webvm: Virtual Machine for the Web
We envision virtualization of corporate internal apps to be of the most interesting markets in the short-medium term. CheerpJ has been very successful in this segment for quite some time already. CheerpX can be seen as an alternative to Citrix, at least for some use cases.

In the longer term we plan to get unmodified Docker containers to work with CheerpX, including exposing REST APIs to the local Web app.

We have also internally speculated about a marketplace-like system to allow immediate conversion of traditional client-side apps to Web apps. This would be intended for the long tail of client software vendors that have not yet adopted Web-first distribution methods.

apignotti··on Webvm: Virtual Machine for the Web
Hello again HN. Lead dev of WebVM and CTO of Leaning Technologies here. Happy to answer any question from the community.
apignotti··on WebVM 2.0: A complete Linux Desktop Environment in the browser via WebAssembly
CheerpX uses SharedArrayBuffer, which is associated to threads, and can optionally use Branch Hinting if available. The latter is fully standardized, but not yet enabled by default in Chrome.
apignotti··on WebVM 2.0: A complete Linux Desktop Environment in the browser via WebAssembly
I cannot speak for other VMs, in the case of CheerpX there is nothing fundamental preventing emulation/JIT-ting of 64-bit platforms, but it is an inefficient choice due to the current limitations of Wasm, in particular on the front of how much memory can be used in total. In the best case scenario it would be 4GB, but it's unlikely this can be achieved on all devices in the real world.

64-bit code by its nature consume more memory, each pointer is twice the size, which makes the memory limitation even more pressing for no advantage. Please note, that this is unrelated to the work on WebAssembly Memory64. The issue is not the lack of address space, but rather on the actual memory that can be allocated in practice.

For this public deployment of WebVM we have chosen to limit the maximum memory to 700MBs, which makes the demo work fine on the vast majority of devices, including mobile ones. This said, we do plan to support the 64-bit ISA in the future with the main use case of supporting all the existing docker images available on Docker Hub and similar platforms.

Appreciate your feedback on licensing and we will take it into account, but please notice that this article is specifically about WebVM, that is indeed FOSS. A separate article dedicated to the CheerpX 1.0 release will be published soon, and it will of course be very clear that the latter is proprietary.

apignotti··on WebVM 2.0: A complete Linux Desktop Environment in the browser via WebAssembly
I am not sure what 'ads' you are referring to, we don't have ads anywhere on our websites and demos.

Anyway, click on the "Apps" button on the top menu, then click on "Terminal". An xterm session will open for you.

You could be interested in the terminal-only version of WebVM, based on Debian: https://webvm.io

apignotti··on WebVM 2.0: A complete Linux Desktop Environment in the browser via WebAssembly
The promise of WebAssembly is bringing actual large scale applications to the browser.

To be clear, it is possible to build large apps with technologies like TypeScript, with VSCode being probably the standard bearer of this approach, but at Leaning Technologies we don't believe this solution to be viable for everybody.

We strongly believe that more "traditional" languages are required instead to work at scale, especially C++ and Java, and we offer products dedicated to these languages as well: Cheerp and CheerpJ respectively.

Although these languages might not be the most exciting ones, they have a proven track record for delivering large scale applications used by millions of people. Billions of people if the Operating Systems we all use are taken into account.

Thanks to WebAssembly these robust and scalable languages can be used to build Web apps. My own personal metric for the success of WebAssembly is seeing AAA games delivering playable demos as Web apps by cross-compiling (a portion of) the game to the browser.

apignotti··on WebVM 2.0: A complete Linux Desktop Environment in the browser via WebAssembly
Thanks for reporting this, the approach to keyboard input is quite convoluted to integrate mobile input well. No "keydown"/"keyup" events on mobile.

Any specific key or character that is not working for you? Or this is a widespread problem?

apignotti··on WebVM 2.0: A complete Linux Desktop Environment in the browser via WebAssembly
The disk blocks are streamed on demand, so a connection is required.

The virtual disk is quite large (1.5GB) which is necessary to run a full distro but makes pre-downloading for offline mode not possible.

It _could_ work if you let your workload run once and then disconnect, but there is no guarantee.

Installing packages is supported both in the Debian terminal and Alpine desktop.

apignotti··on WebVM 2.0: A complete Linux Desktop Environment in the browser via WebAssembly
What makes WebVM (and CheerpX, the underlying virtualization engine) different is the level of performance that we have achieved.

Although CheerpX is not yet perfect and additional optimizations are required on its floating point and vector pipelines, it's already fast enough to be practically useful on many use cases, especially when legacy/older binaries are virtualized.

apignotti··on WebVM 2.0: A complete Linux Desktop Environment in the browser via WebAssembly
I want to clarify that we are not officially collaborating with GOG at this time, although we would love to do so.

We think CheerpX would be very useful in education, to provide ready-made environments for students that can be wiped out on demand. We also envision it to be an alternative to remote virtualization (e.g. Citrix) in the enterprise sector.

apignotti··on WebVM 2.0: A complete Linux Desktop Environment in the browser via WebAssembly
Performance is expected to be between 3x-10x slowdown depending on the workload, which for this class of systems is quite good. The gap, especially on the high end, will further shrink as the virtualization engine improves.

Not all parts of the ISA are as well optimized currently. The codegen for integer operations (the most common by far) is very sophisticated. Floating point and vector operations still have a pretty basic implementation.

WebVM can run any distro, barring bugs in our syscall layer of course :-)

You can add your own Dockerfile and deploy a custom version on GitHub: https://github.com/leaningtech/webvm/?tab=readme-ov-file#for...

apignotti··on WebVM 2.0: A complete Linux Desktop Environment in the browser via WebAssembly
There are lots of use cases, these are the few we have identified so far, but there are certainly many more:

* REPLs for any programming language (Python, ruby, nodejs) for trying out ideas or libraries without installing an environment or when on-the-go

* In education, to let students fiddle with languages or the whole linux system without the friction of local installation, which can break. At the end of the class refresh the tab and you are ready for another session

* Virtualizing legacy native apps that are common in the enterprise sector. With WebVM they can be converted to Web apps. These apps will be mostly Windows-based and our next big project will be to get WINE to work well in WebVM, with an initial focus on gaming.

Fundamentally WebVM brings the convenience of virtualization to lots of users that can not yet benefit from it. Not everybody is able to use docker or VirtualBox on its machine.

In the enterprise sector, remote virtualization via Citrix or similar tech is often used, but this comes at a very high operational costs due to server side execution. With WebVM you can have the security and reproducibility of virtualized environments with completely local execution.

apignotti··on WebVM 2.0: A complete Linux Desktop Environment in the browser via WebAssembly
Hello HN! Lead dev of WebVM and CTO of Leaning Technologies here.

Happy to answer any question.

apignotti··on WebVM 2.0: Full Linux Desktop GUI in the Browser
At the time of the comment the other entry was marked as duped as well
apignotti··on WebVM 2.0: Full Linux Desktop GUI in the Browser
To clarify, this is _not_ a duplicate of past discussions. Support for a full graphical desktop was never available before and completely changes the capabilities of this technology.
apignotti··on WebVM 2.0: Linux Desktop Environment in the Browser via WebAssembly
The last time it was discussed it did not support graphical modes.

The new version can boot a complete Alpine + Xorg + i3 environment. See here: https://webvm.io/alpine.html

apignotti··on Show HN: Compiling C in the browser using WebAssembly
No, the competition is explicitly based around CheerpX: an X86 virtualization technology built on top of WebAssembly
apignotti··on Show HN: Compiling C in the browser using WebAssembly
GCC? That's easy! :-) What about a complete system? https://webvm.io

Shameless plug: we are hosting a WebVM Hackathon next week (11-14 October) over Discord. For more information: https://cheerpx.io/hackathon

apignotti··on Show HN: I've open sourced DD Poker
I see the game was ported with the legacy CheerpJ 2.3 runtime. Consider upgrading to the new CheerpJ 3.0. Improving boot times has been one of our main goals and upgrading is very easy: https://cheerpj.com/docs/migrating-from-cheerpj2
apignotti··on Show HN: I've open sourced DD Poker
Lead dev of CheerpJ here, if you need support you can find us on Discord: https://discord.gg/X9ruPkchM5

Edit: Tool a quick look at the repo, if the game is a Java 8 Swing application (as it seems) then it will most likely work out-of-the-box with CheerpJ

apignotti··on Orca: WebAssembly Apps Without the Web
X64 is not yet supported, but we got good results for x86 already: https://webvm.io
← PreviousPage 3 of 8Next →