
Show HN: A Go unikernel capable of running GUI programs - eliasnaur
https://groups.google.com/forum/#!topic/golang-nuts/4cDIL5Vr_es
======
klysm
Repo is here:
[https://git.sr.ht/~eliasnaur/unik](https://git.sr.ht/~eliasnaur/unik)

Some key points from the article:

> Unik pretends to be a Linux kernel, implementing enough system calls to fool
> the Go runtime.

> The gui program is run with [https://gioui.org/](https://gioui.org/)

I could see this being useful to write GUI apps that need to run on tiny
hardware to reduce the footprint, but the real sweet spot for unikernels I
think is backend services. Cool project though!

~~~
pjmlp
Another alternative for bare metal Go is TamaGo, developed by F-Secure for
their USB armory pen.

[https://labs.f-secure.com/blog/tamago/](https://labs.f-secure.com/blog/tamago/)

~~~
eyberg
Also Nanos -
[https://github.com/nanovms/nanos](https://github.com/nanovms/nanos) for those
who want to run go unikernels on gcloud || aws. (I'm involved in the project).

~~~
pjmlp
Thanks for the heads up.

------
Matt3o12_
Wow super cool project and it's super impressive that you could do that with
only 6400 logical lines of code (according to cloc) and without any
dependencies (expect one for the gui part & material icons).

Can you explain how you implemented the GPU? What resources did you use?

------
meddlepal
Absolutely terrible naming collision with another Go Unikernel project:

[https://github.com/solo-io/unik](https://github.com/solo-io/unik)

~~~
TACIXAT
It is just a naming collision, not sure you need the superlative and adjective
to point it out.

~~~
Semaphor
isotope (the JS layout library) and isotope.js (the JS view library) are
arguably a naming collision despite having slightly different names. I feel
like two projects having exactly the same name can have a qualifier to their
collision added.

------
gitgud
What's the use-case for this? Is it for limited hardware devices or Docker
containers?...

------
amscanne
Super cool!

One question: why a UEFI boot loader? QEMU and others have mechanisms that
support direct loading of an ELF binary. Was the original thinking to support
bare metal? (Or maybe it's still in the cards?)

~~~
eliasnaur
It happened by accident. Originally I wanted to run on bare-metal, and thought
UEFI would be a good starting point. THen I never got around to adding
multiboot and similar support.

------
cpach
Very cool!

Some thoughts:

Out of curiosity, did you do it for the hack value and learning or do you also
see a practical use-case for this project?

Have you considered doing any demo videos/GIFs? Would be fun to see.

------
jbverschoor
I was just looking for something similar last week. Cool work.

------
nurettin
> GPU+mouse works, I ran out of time to implement a keyboard driver

Keyboard driver is usually the first and only thing I implement before getting
demotivated and giving up.

