
7GUIs – A Notational Usability Benchmark for GUI Programming - desdiv
https://github.com/eugenkiss/7guis/wiki
======
newgame
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](http://www.eugenkiss.com/projects/thesis.pdf)

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

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

~~~
davedx
I'd love to see Om implementations!

------
mmatants
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]

~~~
paulojreis
I agree. Talking about "Usability" in a GUI context clearly points to
something else.

~~~
GuiA
GUI usability is one thing, GUI programming usability is another.

------
miguelrochefort
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](https://news.ycombinator.com/item?id=7986612)

------
blt
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
What about GUIs that need to dynamically create and destroy components at
runtime?

------
miguelrochefort
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
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
These are pretty good criteria for evaluation. I found myself using 5 of the 7
patterns from time to time in implementing UI.

------
amelius
How about:

\- implementing a text editor

\- implementing a rich text editor

\- implementing a web browser

~~~
zefei
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).

