As a long-time user who has promoted/demonstrated/installed Avogadro to/for many members of my group, I have a lot of thoughts on how the interface can be better laid out to conform to user expectations, reduce friction/irritation, and help them to find actions.
Though the following is definitely opinionated, I personally think it’s quite logical (naturally, haha) and I would like to see if other users agree. I would especially appreciate it if any long-term users would take the time to look through and voice an opinion, particularly if you disagree!
1 Things being where the user expects
-
This is not easy, as shown by the shifting position of the coordinate viewer over the years, but it is worth getting right as it massively improves ease of use and the first impression for a potential new user.
-
Menu items must be grouped by what they do, not how they do it, as only the first is known to the user.
-
Choosing which panels are visible (as done by right-clicking on the panel titles) should also be doable via the
View
menu. -
The
Extensions
menu contains way too much disparate stuff. It is not clear to the user why thePeriodic Table
should be next toCalculate
, the language settings, andSet Python Path...
The Extensions menu should definitely never contain any functionality that is native to Avogadro e.g. settings or the Open Babel stuff, as it implies non-basic stuff and a beginner user won’t think to look there. -
There is no clear place to go to change preferences, though I think this has been discussed.
2 Locations of functionality relying on Open Babel
Whether a function uses Open Babel or not is irrelevant to the average user. The actions that rely on it are often very different in their purpose, making it non-obvious to the user that they should be grouped together. Moreover, Open Babel is bundled with Avogadro, doesn’t need to be installed via Download Plugins...
, cannot be removed, and is thus not really perceived as a “plugin” or “extension”.
Thus the menu options under Extensions|Open Babel
should be redistributed to where the user expects to find those sorts of functions:
-
Add Hydrogens
,Remove Hydrogens
andPerceive Bonds
belong inBuild
as they are concerned with editing a molecular structure and will typically be used when building a molecule; Edit: In fact, they are already there! They just need the old location deprecating… -
Configure Force Field...
andOptimize Geometry
are on the other hand concerned with calculations. They should be completely subsumed into the new force field framework. The Open Babel FF should be the default option within the framework, as currently it is Lennard-Jones if no extensions or Python are installed, which does not lead to the results users expect (e.g. #4973); -
The exceedingly useful shortcut
ctrl+alt+o
should trigger an optimization with the force field framework, with whatever the currently configured force field is i.e. what is currently atExtensions|Calculate|Optimize
3 Easier settings management
A preferences menu is a common feature of basically applications, so the user will always look for one first in order to change something globally.
There are already a few settings that can be set for the program, but their menu options don’t currently fit anywhere very well. Preferences should be set in one central location, either a) in a Settings
dialog that is accessible via either File
, Edit
, or View
depending on the taste of the programmer or b) as individual menu options collected together into an Options
menu.
Note that if approach a) was taken, Qt would automatically put the menu option for Settings
or Preferences
and put it in the Apple menu on macOS, as required by the macOS interface guidelines.
I suspect the options for background colour, projection, and the rendering settings also belong better in a settings/preferences menu/dialog than under View
.
4 Split calculations from extensions
One of the most common use cases for Avogadro is quickly optimizing a geometry. The most common functionality should be available from a non-nested menu for ease of use and discovery.
At the moment this functionality, and other commonly used calculations, is buried under Extensions
along with a lot of other, non-calculation stuff. It would probably not occur to a first-time user that such functionality is considered an “Extension” rather than core functionality.
Furthermore, the Extensions|Calculate
sub-menu only contains Force Fields and is not the correct place to create/submit a Gaussian or ORCA (or xtb now) calculation, so it is maybe misleading in implying a broader scope than it contains.
I thus suggest:
-
Anything to do with calculations should be split off into a new centralized
Calculate
menu, as I previously pitched elsewhere. -
The most common functions (using pre-configured settings) should be available at the top level of this menu as e.g.
Quick Optimize
andQuick Energy
so that they are two clicks away, and should havectrl-alt-o
andctrl-alt-e
shortcuts. -
Anything outside of the “quick” functions should be organized into sub-menus based on level of theory. This is partly so as to advertise to the user what levels of theory are available, but also so that it can be suggested to the novice/naive chemist that certain levels are better than others.
- This is implied by placing the “quick” options at the top of the list, which establishes the “crude” end of the scale, and then going down from force fields to semi-empirical (if installed) to DFT under
Prepare Input
(see below) which sounds more labour-intensive and thus more rigorous.
- This is implied by placing the “quick” options at the top of the list, which establishes the “crude” end of the scale, and then going down from force fields to semi-empirical (if installed) to DFT under
-
Lastly – and on this I am not so convinced – I think the preparation of input files for quantum mechanical calculations also belongs under a
Calculate
menu. I would place all the current contents ofInput
under the slightly more descriptiveCalculate|Prepare Input
sub-menu.
5 Vibrations/MOs/properties should be visible in a panel, not dialogs
Two key reasons:
-
The user wants to see the list of vibrations or orbitals on screen at the same time as the 3D molecule + MO/animation;
-
If this “Analysis” or “Properties” panel is tabbed, different results from the same calculation can be quickly accessed without always diving into the menu.
This was the case for the orbital viewer in Avogadro 1 and it worked like a dream. Sometimes I still use Avo 1 for this exact purpose. The Orbitals
tab of such a panel should basically be a replica of the Avo 1 one. I suspect that @ghutchis is working on this anyway and is already very aware of how much it is wished for.
I also think it makes sense to have a tab here for Molecule
which contains everything currently under Analysis|Properties|Molecular...
. This is where the value totalEnergy
of the system from the cjson should be displayed. It should also have editable boxes for the charge and spin of the molecule. This should be the default tab.
When frequencies/orbitals are found the tabs should be opened automatically, as already happens for the freqs dialog at the moment.
A tab can also go here for viewing conformers one day.
The other dialogs under Analysis|Properties
should also instead be displayed here as tabs in the panel, but only when they are selected from the Analysis
menu.
The panel and the menu should probably have the same name so the relationship is clear, but I would think Properties
is more fitting. Possibly Atoms
, Bonds
etc. should be in a section at the top level rather than hidden in a sub-menu.
6 Clarity of meaning
-
This is extremely important, and I think where Avo runs into problems most is the names of buttons not matching their function in languages other than English. With the rapid development that is still going on it is hard to keep them in sync. This is hard to do anything about, but hopefully it will become more consistent once the interface becomes more fixed. My only suggestion would be to maybe add
Help|Report Translation Error
to allow non-contributors to report mistakes in the interface separately to bugs. -
Plugins/extensions should be referred to by one of the two words, not both. This avoids confusion.
@ghutchis I would love to prototype/implement all this myself, but my C++ knowledge is not great and the menu organization is not all in one file, as far as I can tell! If you point me in the direction of where stuff is generated, though, I can play around with it. And if I stick to changing only one/a few things per PR, only those ideas with your blessing need be merged.