top | item 9050480

7GUIs – A Notational Usability Benchmark for GUI Programming

160 points| desdiv | 11 years ago |github.com | reply

17 comments

order
[+] newgame|11 years ago|reply
Very cool to see my master's project here on hn!

Let me give you some background information. The idea for 7GUIs was born while I was writing my master's thesis Comparison of Object-Oriented and Functional Programming for GUI Development[1]. My advisor and I first agreed to compare Java7/Swing and Clojure/Seesaw. That's the reason why you see these implementations in the repository. Over the course of writing the thesis we changed the scope to compare JavaFX in Java and Scala as well as some novel FRP-inspired frameworks and all that with a GUI _programming_ usability benchmark which I named 7GUIs. I received great input from my expert reviewers, especially Tomas Mikula[2].

Anyway, 7GUIs is work in progress although nowadays I have much less time to work on it (not studying anymore but working). Not all implementations are complete (e.g. Android/Elm) and I'm sure the existing ones can be improved. So I'd be very happy if others would help to extend 7GUIs with more implementations or analyses. I still want to try out other approaches myself and compare them with 7GUIs but again time is limited sadly.

You can find much more information in the thesis[1] if you're interested. I've also written a short overview blog post[3] that deals with Reactive GUI Programming.

[1]: http://www.eugenkiss.com/projects/thesis.pdf

[2]: http://tomasmikula.github.io/blog/

[3]: http://www.eugenkiss.com/b/overview-of-reactive-gui-programm...

[+] davedx|11 years ago|reply
I'd love to see Om implementations!
[+] mmatants|11 years ago|reply
Very interesting, although it took me a second reading to understand that it is about dev framework (source code) usability, not the resulting task interface UX usability itself. Given how "usability" as a word is conventionally applied to end-user experience and not developer workflow, I wonder if "productivity" is a clearer term to use instead.

[edited for grammar]

[+] ricardobeat|11 years ago|reply
The term usability is correctly used. GUI programming mostly consists of manipulating APIs - emphasis on the "I". They are not user-facing but still are interfaces.
[+] omaranto|11 years ago|reply
Aren't developers the end-users of GUI frameworks?
[+] paulojreis|11 years ago|reply
I agree. Talking about "Usability" in a GUI context clearly points to something else.
[+] miguelrochefort|11 years ago|reply
I was just reading this thread [1] this morning, and spent the rest of the day looking for layout languages, GUI toolkits, and common layout examples/patterns online. I was effectively looking for some sort of "Rosetta Stone of UI patterns", and there this lands on HN's home page. The timing couldn't have been better.

I'll watch this repository closely, hoping for an unusual solution to wow me. At the moment, I feel like Elm is the most unusual of the bunch.

[1] https://news.ycombinator.com/item?id=7986612

[+] blt|11 years ago|reply
This is a very good idea. Similar to Rosetta Code for GUIs. They do a good job explaining the task specifications and the attributes of the framework that each task intends to test/reveal.

I think they should add a task where events outside the user's control can affect the GUI state in non-trival ways. For example, a control panel for a piece of hardware that could be disconnected at any moment, or a remote file viewer where the server can take away the user's rights to view a file while they are viewing it. This makes GUIs more challenging in my experience.

[+] acbart|11 years ago|reply
What about GUIs that need to dynamically create and destroy components at runtime?
[+] miguelrochefort|11 years ago|reply
Some additional GUI toolkits with which 7GUIs could be implemented:

- UIKit with AutoLayout (iOS, Mac OS)

- JS/HTML/CSS with Flexbox and/or React (web)

- XAML/WPF (Windows 8, Windows Phone, Xamarin.Forms)

[+] columbo|11 years ago|reply
Great idea! I understand there are only seven options (hence the name) but I'd suggest adding a music playlist as an item. It's easy to describe and would cover multiple GUI elements: button groups (forward,back,start,pause), display list (what is in the playlist, what is currently playing) and interactivity (drag and drop to re-order).
[+] ww520|11 years ago|reply
These are pretty good criteria for evaluation. I found myself using 5 of the 7 patterns from time to time in implementing UI.
[+] amelius|11 years ago|reply
How about:

- implementing a text editor

- implementing a rich text editor

- implementing a web browser

[+] zefei|11 years ago|reply
None of these are related with GUI frameworks (such as Swing, QT). They rely on lower graphic constructs, and are suitable at showing off graphic libraries (such as Cairo, Skia).