11 ms·
Fyne: Cross-Platform GUI in Go Based on Material Design
- ebg13 8y agoCongratulations on the 1.0 release, but...and I hope you don't take this the wrong way...why would I ever want to use material design if I don't have to? IMO everything made using it is a UX nightmare, looks awful, and treats the user worse than not using it.
- thebruce87m 8y agoI can’t seem to see any screenshots of the framework, but does Material Design specify eye-searing white as the background colour or are there other options?
- SkyMarshal 8y agoScroll further down the github page, there’s a full app demo/mockup screenshot.
- jimjimjim 8y agoYou can specify light or dark modes/themes. The github page has examples of both.
- tracker1 8y agoI'm hoping they have a theme system that's easy enough to create new color pallets. Material Design's guidelines do spell this out.
- tuesdayrain 8y agoI'm curious what you would consider to be a better UI kit. Personally I think Material Design is the smoothest and most professional looking thing out there. Everything else seems too cartoonish or just overall less appealing to me.
- stiGGG 8y agoCan you elaborate? How does e.g. Qt, GTK, Cocoa, UWP etc look „cartoonish“ in comparison?
- zapzupnz 8y agoPlaying devil's advocate: Qt and GTK I could see being seen as 'cartoonish' because the default themes on many distributions are fat, shiny, bubbly, and look like they firmly belong in the 2000s. Cocoa, maybe because of the vivid blue? Or that person hasn't seen Cocoa since before they moved away from the glowing blue bubbles, although I think they still look nicer than Material.
- deleted 8y ago[deleted]
- bsimpson 8y agoDo you have a concrete critique of Material? That was a lot of vitriol without any substance.
- GordonS 8y agoNot the OP, but I personally find it very flat, and very much lacking in contrast. I tend to find my eyes scanning and hunting for things all the time with Material Design.
- w4rh4wk5 8y agoAlso not OP, but I too dislike Material. My main issue is that interactable controls don't stand out. Sometimes it takes me multiple seconds to recognize a button. Apart from that, I simply dislike the look. It oft reminds me of Windows' Metro due to the sharp edges and corners. I'd prefer Apple's UI design over Metro although I am a Windows / Linux user. One more thing, looking at Android apps, they sometimes use many different color tones without any underlying meaning. Or such an obscure meaning, that I still struggle understanding it.
- benatkin 8y agoIt's too long for an HN comment. There are so many things to consider. The safe choice is probably to not use Material UI. Here's a nice article from the point of view of someone who decided against it. The comment thread is good too. https://medium.com/techtrument/bye-bye-material-design-acaebcc7c6b4 https://medium.com/techtrument/bye-bye-material-design-acaeb... As for the vitriol, here's a quote from the comments on the above post: "As much I agree with you about what it has given to the community, as I disagree about not being fair to criticise it. Every creation should be criticised, especially if it’s unquestionably used by millions. Otherwise we won’t get anywhere. Criticism is not bad, even if it is done harshly. Especially in the age of corporations and their visually subliminal effects on an entire civilisation, I cannot possibly promote discouragement to criticism like you do."
- benatkin 8y agoFyne doesn't appear to follow the material ui guidelines very closely. Probably to its credit. Here's some screenshots: https://github.com/fyne-io/examples/ https://github.com/fyne-io/examples/ It seems to borrow the icons and some widgets, but not so much the container elements.
- baroffoos 8y agoI think it works fine on a phone especially if you don't follow it 100%. On websites and desktops however I just really don't like it. Its hard to explain but the feeling is just bland and awkward.
- smaddox 8y agoDoes this do minimal updates, or does it rerender the whole window every frame? And does it use old-school stateful components, or new-school "reactive" components?
- analognoise 8y agoJust as a point of reference: redrawing the whole screen when something changed is about as old a concept as you can get. Lots of applications from DOS days (...and before) did that.
- nyrulez 8y agoI like it. But as a new user I have some feedback: For a GUI framework, I hardly see any screenshots, videos, list of widgets and so on. I want to see how deep the GUI framework goes compared to my other choices. I think it fails to answer the most pressing questions any first timer would have. Even a FAQ would be really useful. The list of features is quite information-free, nothing specific from a developer's perspective. I know focus is on the code here, but would greatly appreciate some more visual documentation before anyone dives into the code :)
- genericone 8y agoAlso what I noticed, very few visual examples on the main website, was turned off fairly quickly, is this what they want? To filter out developers like me?
- lazyjones 8y agoSome critique: you talk about a cross-platform GUI "for the desktop and beyond", but what platforms does it support? After seeing a mobile phone on the title screen, I expected at least some info about mobile support, but apparently it's desktop-only at this time. Some typical platform icons would help very much in avoiding confusion.
- andydotxyz 8y agoA fair point. At this time it is desktop only but the design of the API does not limit this. People are looking at mobile and web drivers but this will be a fair distance off I expect.
- fuddle 8y agoLooks interesting. How does it compare to Electron?
- jrockway 8y agoIt doesn't ship Chrome, for one thing.
- analognoise 8y agoWait, you mean to tell me you can get "HELLO WORLD" on screen without carrying around 100MB of "app" and 10 million lines of browser?
- neop1x 8y ago...and develop without "npm install" of 2 GB of dependencies?
- rafaelvasco 8y agoNo direct relation. This is more akin to Qt. It's an Application and GUI framework for Desktop. It draws its own widgets with a vector based approach as does every modern gui framework I believe.
- PhilippGille 8y agoI tried it several months ago and some basic things still don't work, most notably text can neither be selected via keyboard nor mouse and rightclick doesn't work either. The scroll bar doesn't work. I got a "panic: runtime error: index out of range" during some interaction with the fyne_demo. It was similar when I tried it the last time. I reported the bugs and most got resolved quickly by the maintainer, but in the current state I wouldn't recommend it for anything serious. Sadly, there aren't many well-maintained GUI libraries for Go. And even less that don't have dependencies on something like GTK or that don't use HTML and a web view. I wish the author best of luck with this project, I'll check it out again in half a year or so.
- marmaduke 8y ago> And even less that don't have dependencies on something like GTK or that don't use HTML and a web view Most GUI libs supporting all the typical stuff are gonna be fat like GTK or suffer from underwhelming API... or do you ha e a counterexample (Id like to know)? It seems like it would be neat for all these non C/C++ languages to band together to produce a reusable GUI runtime which can be operated via RPC... or declarative YAML. If everyone didn’t need to rebind all of Qt we would surely have GUIs for even the most niche languages.
- jstimpfle 8y ago> via RPC... or declarative YAML. or CORBA... More seriously. I'm not too familiar with Qt, but when I had to do a project in it I really hated how anti-modular it was. While it gets high praise from many people, I don't think it's possible to write sane software in it. It's bloat. Even though MFC (which I have to fight currently) is probably worse. Instead, what we need is a simple API with opaque handles and C function calls. No fancy OOP or macro preprocessors. Simple OpenGL style. At least regarding portability, OpenGL made sane choices I think. Immediate Mode GUI (IMGUI) has been a trend in the last years, and there are a few popular libraries like DearImGUI, but my impression is they are optimized for quick-and-dirty work. It seems that control and clarity is traded away for small local reductions of keystrokes.
- themacguffinman 8y agoCongrats on releasing, that's a huge feat. A Go GUI app is an interesting concept, it definitely has compelling advantages like single binary targets and inherently cross platform code. I do take issue with the repo description "Cross platform GUI in Go based on Material Design" though. Looking on the screenshots in the README (eg [1]), I can't see how this is actually based on Material Design, other than using some material design icons. The widgets don't even follow the basic spirit of Material design [2]: > Material Design UIs are displayed in an environment that expresses three-dimensional (3D) space using light, surfaces, and cast shadows. It looks much closer to Microsoft's "fluent design". Maybe the repo description was accidentally left unchanged? It's weird that the public website https://fyne.io/ https://fyne.io/ doesn't actually contain any references to material design. [1] https://raw.githubusercontent.com/fyne-io/fyne/master/img/widgets-light.png https://raw.githubusercontent.com/fyne-io/fyne/master/img/wi... [2] https://material.io/design/environment/surfaces.html https://material.io/design/environment/surfaces.html
- tyingq 8y ago"Material Design UIs are displayed in an environment that expresses three-dimensional (3D) space using light, surfaces, and cast shadows" Somewhat amusing because my biggest issue with Material Design is buttons I don't know I can click, because they are flat and have no depth or shadows: https://storage.googleapis.com/spec-host-backup/mio-design%2Fassets%2F1rI63_05lNHyMtSwrnzXJ1Erg0TbkSDTY%2Fbuttons-types-all.png https://storage.googleapis.com/spec-host-backup/mio-design%2...
- wongarsu 8y agoPeople for some reason always think just because things are flat in material design they shouldn't have shadows. Or maybe it's just people calling lots of things material design that really aren't.
- tyingq 8y agoMaybe taking cues from the official docs. My picture is from the Material Design website. https://material.io/design/components/buttons.html# https://material.io/design/components/buttons.html# (scroll down to types)
- ctoth 8y agoNo mention of Accessibility so I am kind of assuming any software you write with this will be totally unusable for those that use screen readers, speech recognition-based controls, etc.
- tyingq 8y agoI assume since it's using OpenGL that even more mundane stuff, like "select text", and "copy" might not work. Edit: Yes, appears to be an issue, but it does sound like they plan on making it work: https://github.com/fyne-io/fyne/issues/67 https://github.com/fyne-io/fyne/issues/67
- zapzupnz 8y agoFar too many of these sorts of toolkits are planning to make accessibility a thing when systems' native toolkits do it out of the box and integrate well with integrated and commercial accessibility software. For these projects, accessibility is always coming at a later date, never baked in right from the start.
- andydotxyz 8y agoUnfortunately it is a matter of hours in the day. Accessibility relies on things like focus handling that are just not ready yet. Maybe we released too early or maybe it was sensible to get a basic but solid release together to build on. I expect that time will tell.
- zapzupnz 8y agoFor people who don't have any particular accessibility needs, time will tell. For those of us who do, time has told us again and again and again and again and again, and we're kinda sick of time telling us to just hold tight when everything we need is right there in the native frameworks.
- andydotxyz 8y ago
- qwerty456127 8y agoCool. But how well does it integrate with the OS and screen readers? "We use OpenGL" sounds like it might have problems with this part.
- andydotxyz 8y agoAt the moment that is lacking - we intend to add it in a future version as accessibility is important
- qwerty456127 8y agoDoes it have tree views and data grids? Does it have HTML renderer view?
- andydotxyz 8y agoNone of those are in yet. Tree views and data grids require a data binding API that we have not yet decided on. HTML view is going to be difficult on Linux as we don’t want to bring in GTK or Qt - but we will get there.
- qwerty456127 8y agoGreat to know you are considering these. Introducing these will make Fyne a real Thing. As for the data binding API - sure, this is an extremely important part to architect so it will be both easy/concise and flexible. Yet, IMHO, tree and grid views are vital for practical use. I can't easily imagine an app I could make without these. As for HTML view - having a full browser widget like Qt WebView would be very cool but it's not a primary necessity. A simple HTML renderer able to display a plain HTML document without user inputs and without JavaScript (just paragraphs, lists, tables and pictures, some basic CSS for text formatting perhaps) would already be extremely useful.
- andydotxyz 8y agoFor the simple text markup views we will support markdown as it has those features. After that we could consider HTML...
- qwerty456127 8y agoGreat. But please don't forget to support ways to define where a line of text should never be broken (i.e. nbsp) and where it always should. Many markdown implementations don't support the standard double-space notation so you have to use the html br tag instead.
- tracker1 8y ago
- qwerty456127 8y agoi/? message box background icons look ugly.
- sansnomme 8y agoCongrats on shipping! It looks amazing, do you plan to support Material Design 2.0 too? Also performance-wise, how does this compare to Flutter (which uses Skia underneath)?
- photonios 8y agoFirst of all, congratulations on shipping! That by itself is quite a feat. There's lots of valueable feedback in this thread. Don't get discouraged by it. It's an interesting project in its early stages and it has a lot of potential. Keep it up, we need more people like you :)
- napsy 8y agoI tried the included demo a bit but it seems the code is fairly unstable. A couple of clicks here and there and the program crashes. But it looks really promising!
- andydotxyz 8y agoCan you help us and report the issue on GitHub please? There must be something different about your interaction or setup as the developers have not seen that app crash in a long time...
- epaga 8y agoProbably this -> https://github.com/fyne-io/fyne/issues/161 https://github.com/fyne-io/fyne/issues/161
- andydotxyz 8y agoThanks, I think there is a patch nearly ready for that, will roll out a hotfix as soon as that is done and I expect a 1.0.1 in a few days
- happppy 8y agoGreat work. I wanted something like this in GO for desktop application development.
- brute 8y ago> Fyne ships with two themes by default, "light" and "dark". […] The default is dark As someone who uses dark-themes for absolutely everything, which sometimes requires quite some hassle (I am looking at you Slack), I welcome the trend to offer a dark theme next to a light one. And having dark as default is even better. Thank you!
- steve_taylor 8y agoInterestingly, the Fyne website uses Bootstrap rather than one of the many Material Design implementations.
- benbristow 8y agoIt's a free theme https://blackrockdigital.github.io/startbootstrap-creative/ https://blackrockdigital.github.io/startbootstrap-creative/ https://fyne.io/js/creative.js https://fyne.io/js/creative.js
- nixarn 8y agoAwesome job! A super simple way to create crossplatform Go GUI apps, just want I want!
- bnolsen 8y agoNot bad but still by and missing features like tabbing between elements.
- johnisgood 8y agoDo I want lorca[1] or fyne? I know that they are different, but which one would you go with and why? [1] https://github.com/zserge/lorca https://github.com/zserge/lorca
- andydotxyz 8y agoWell the obvious reason would be if your users may not have Chrome installed? On a more basic level it comes down to whether you want to code pure Go or HTML/CSS as well...