From 9bb7ad60a7d32f981f9aa1405e4ec6d1db928424 Mon Sep 17 00:00:00 2001 From: faiface Date: Sun, 5 May 2019 15:12:45 +0200 Subject: README: add 'Why concurrent GUI?' paragraph --- README.md | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/README.md b/README.md index 12b22e3..c162019 100644 --- a/README.md +++ b/README.md @@ -10,6 +10,22 @@ go get -u github.com/faiface/gui Currently uses [GLFW](https://www.glfw.org/) under the hood, so have [these dependencies](https://github.com/go-gl/glfw#installation). +## Why concurrent GUI? + +GUI is concurrent by nature. Elements like buttons, text fields, or canvases are conceptually independent. Conventional GUI frameworks solve this by implementing huge architectures: the event +loop, call-backs, tickers, you name it. + +In a concurrent GUI, the story is different. Each element is actually handled by its own goroutine, +or event multiple ones. Elements communicate with each other via channels. + +This has several advantages: + +- Make a new element at any time just by spawning a goroutine. +- Implement animations using simple for-loops. +- An intenstive computation in one element won't block the whole app. +- Enables decentralized design - since elements communicate via channels, multiple communications + may be going on at once, without any central entity. + ## What needs getting done? This package is solid, but not complete. Here are some of the things that I'd love to get done with your help: -- cgit v1.2.3