diff options
| author | faiface <faiface2202@gmail.com> | 2019-05-05 15:12:45 +0200 |
|---|---|---|
| committer | faiface <faiface2202@gmail.com> | 2019-05-05 15:12:45 +0200 |
| commit | 9bb7ad60a7d32f981f9aa1405e4ec6d1db928424 (patch) | |
| tree | a545677eaee4e7546eac6dfb21816b4bc952579c /README.md | |
| parent | 4714ebefece2d0d22b5dec2a42e062bb8ab2536f (diff) | |
| download | gui-9bb7ad60a7d32f981f9aa1405e4ec6d1db928424.zip | |
README: add 'Why concurrent GUI?' paragraph
Diffstat (limited to 'README.md')
| -rw-r--r-- | README.md | 16 |
1 files changed, 16 insertions, 0 deletions
@@ -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: |