
Vugu – Modern UI Library for Go and WebAssembly - ingve
https://www.vugu.org/
======
floki999
A UI library which doesn't present a visual example of its capabilities on its
landing page is missing the point. The underlying technology stack is
secondary.

~~~
dmix
This project sounds like it _is_ just code. There isn’t any UI components or
themes or anything. It’s just a library for writing web components but with Go
instead of Javascript:

[https://play.vugu.org](https://play.vugu.org)

A wider breadth of examples, with links to the demos or even hosting one on
the homepage should definitely be considered.

------
codebeaker
Does "modern" here mean that it supports all the expected ARIA accessibility
standards, or are they talking about a shiny developer experience and fancy
APIs whilst ignoring usability completely?

I checked some examples in the playground and they seemed to be devoid of any
kind of accessibility tags, and the generated HTML sources didn't look super
friendly to screen readers.

~~~
core-questions
Why is this always the first comment on any new UI library that's in a beta
level release? I get it, there are blind users, but they're honestly less than
0.1% of the population.

A good UI library should definitely be accessible once it's in a mature
release, but that's a fair bit of extra work to do up front when things are
likely still in a state of flux; and since there's no guarantee there's even
sufficient interest in Yet Another UI Library to get an upswing in usage, it's
very possible no blind user will ever be exposed to a site powered by this in
production at all, ever.

I'm not trying to say we should ignore blind people overall, but this comment
is always in the top spot on every single new UI library and it's rather
tiresome. How about some actually constructive criticism on the structure of
how this library actually works?

~~~
farah7
Exactly. Accessibility is a huge investment of time and adds a lot of
technical debt if done incorrectly, really doesn't make sense until the entire
library is somewhat mature and starts being ised in production at large
enterprises. Can't believe OP is complaining about screen readers in a beta
release.

~~~
MrGilbert
I'd say it's too late then. You have to make at least some assumption
beforehand, otherwise you'll have to rewrite huge portions of your lib. Sorry,
I kindly disagree.

It's like adding unit tests AFTER you've written everything. Just don't do it.

~~~
farah7
>It's like adding unit tests AFTER you've written everything. Just don't do
it.

Funny you say this, because that's exactly what I do :)

I don't start unit tests on a new project/library until I flesh out most of
the major components as I'm sure I'd be rewriting things multiple times as I'm
iterating in the beginning. My guess is this method isn't uncommon....

~~~
MrGilbert
Yeah, I know - that's how it's mostly done. I guess a Mish-Mash might make
some sense? Because, often, I see people in my team creating
"ConsoleApplication1"-kind of projects, so that they can build their
components and already test them. That's when I mostly say "write a Unit test
instead."

------
23inhouse
That site's moto should be:

All your CPU are belong to us

------
ssalka
Can't click any links/buttons on mobile (Android). Not exactly instilling
confidence

~~~
sigmaSeries
Same here.. it actually causes my other running apps to crash

------
childintime
Wails ([https://wails.app/](https://wails.app/)) has similar goals, but has
traditional Javascript on the browser side. It's not clear to me how Vugu
accesses resources from the backend. Wails has an explicit event mechanism.

~~~
skyyler
Wails seems to be a software framework for creating desktop applications,
where Vugu is a UI library for creating webpages.

Very different goals, even if they're both essentially "glue Go stuff to web
stuff"

------
pestaa
I've tried to run the playground, but it fails. I've seen the code snippet on
the upper half first, but then the whole frame turned white.

Using latest Chromium on Kubuntu.

~~~
bradpeabody
Interesting, I'll add it to the issue here -
[https://github.com/vugu/vugu/issues/25](https://github.com/vugu/vugu/issues/25)
\- needs more compatibility testing for sure.

------
JaggedNZ
I've been intrigued by the idea of compiled Go based web apps and this looks
like an interesting approach.

This is clearly Experimental / Alpha and missing some basics, such as:

On Chrome: Click "get started" Click the back button in the browser URL
changes, but you stay on the "Getting started" page

------
anm89
So do you get all the concurrency abilities of go with something like this or
do you essentially get a nicer syntax around the capabilities of JS?

Sorry if this is a dumb question but I'm pretty new to wasm.

~~~
snek
concurrency yes, parallelism no(t yet). each wasm module is single threaded,
but you can create multiple modules in separate threads that communicate with
each other via shared memory and atomic ops, but of course you have to figure
out how to correctly emit modules that take advantage of this. So far
emscripten's pthread is the only thing I'm aware of that properly does this.

------
underwater
The website manages to consistently crash my browser (Brave), my Android
launcher, and who knows what else - my device no longer responds to gesture
navigaion. Quite impressive.

------
andreimiulescu
The wugu website doesn’t work well on iOS/chrome

------
haolez
Is it still active? Doesn't look like it.

~~~
bradpeabody
There are some setbacks, but it's definitely still being worked on.

------
cooljacob204
FAQ section is broken for me. Lol

------
crimsonalucard
This is cool, but in all honesty, golang isn't the best language for UI. It's
just not expressive enough. Golang sacrifices expressiveness for readability
(and readability is an opinionated concept) for a domain where I think
expressiveness is more important.

That being said. I would love to see something like this done in Swift!

------
api
We are approaching the glorious day when we'll be able to write web frontends
for web-based apps in real programming languages. Not there yet though.

What I really want is something like an "old school" UI library and the
ability to style it via well-documented straightforward CSS. For web apps I
don't necessarily want to code my UI in HTML. I want to develop an app in a
more Qt-like way but with a more modern API.

The older versions of GWT actually kind of did this but it's Java and newer
versions have decided to try to cater to people who want to do web sites
rather than business apps with it.

~~~
pjmlp
You can already do that today in C, C++, D, Rust, Java and .NET.

I just wait for someone bored enough to bring Flash back.

~~~
Townley
Is this right? (Disclaimer: I'm about halfway through the Rust book, so I'm
just a bit above useless when it comes to Rust) but my understanding was that
since WASM can't do DOM manipulation, you still need JS and something like
Emscripten to call WASM code.

The data and business logic of your code can be written in a WASM-targeting
language, but I don't think you could make a React/Vue/Angular-esque UI
library (or even a jQuery clone) purely in Rust.

~~~
steveklabnik
While this is technically true, we have libraries (js-sys and web-sys) as well
as tools (wasm-pack and wasm-bindgen) that handle creating that JS for you;
you don't have to write any of it yourself. Additionally, they're implemented
as polyfills for the eventual way to do this kind of thing without the JS, so
once that lands in wasm proper, your code won't need to change, and things
will just get faster.

