← Back to team overview

kicad-developers team mailing list archive

Re: UI and usability enhancement

 

>The mouse wheel and navigation (as mentioned above).
  Make it consistent with other EDA, CAD and drawing applications:
  wheel -> up/down, shift-wheel -> left/right, ctrl-wheel -> zoom


I disagree, EAGLE uses mouse wheel zoom and it is by far one of the
most widely used tools these days.

On Mon, Aug 31, 2015 at 10:15 AM, Attila Kinali <attila@xxxxxxxxx> wrote:
> On Wed, 12 Aug 2015 00:09:06 +0200
> Attila Kinali <attila@xxxxxxxxx> wrote:
>
>> So, I would like to ask, whether there would be any interest of the
>> developers to work on the UI. If so, I would start collecting
>> points on the UI that are worth to work on and how to improve them.
>
> Ok, here is a list of the things I stumbled upon in the UI.
>
> Generally, there are very few strict rules in UI design, most of
> it is opinion. So, please accept the things I list here as my view,
> which most likely will differ from yours. I do not intend to impose
> my view on you, but rather want to give an insight on what someone,
> who has done quite a bit of electronic design, finds cumbersome when
> using Kicad. Also, the list is quite skewed to issues in pcbnew,
> because that is what I was mostly using last week, when I took notes.
>
> I also incorporated the comments I got from my friend Andrew Bradford.
> These are marked with (bradfa).
>
> All comments are based on kicad from bzr from about a month ago
> (2015-08-10 r6080).
>
> Of the general rules of UI design, the most important one is consistency,
> both internal and external. Consistency helps the user to develop a mental
> model on how the application is supposed to work. This help in not needing
> to remember exactly how to do X, but being able to derive the key presses,
> mouse movement, etc on the spot. External consistency is a behaviour similar
> to other applications, internal consistency behaviour that is similar within
> the application itself.
>
> One example where Kicad fails with internal consistency are the symbol and
> component editors compared to the schematic and layout entry respectively.
> Even though they do very similar things, they work differently.
> An example where Kicad fails with external consistency is the use of the
> mouse wheel. While all EDA, CAD and simple drawing applications I've used
> in the past have the following mapping:
>
> wheel           -> up/down
> shift-wheel     -> left/right
> ctrl-wheel      -> zoom
>
> Kicad has the following mapping:
>
> wheel           -> zoom
> shift-wheel     -> up/down
> ctrl-wheel      -> left/right
>
> And this is probably my biggest gripe with Kicad. Even after several weeks
> of using Kicad, I still use the wrong one in the first try. If possible,
> I would advise to change this before the release, as the release will
> attract a lot of people who have never used Kicad before and they will
> for sure stumble over this as I have. Especially as this cannot be changed
> in any of the preferences menus.
>
> The second most important rule of UI is to make things explicit. Do not
> hide the state a certain tool is in, but show it somewhere. For example,
> the push-and-shove router only works with the OpenGL canvas. This is highly
> non-obvious. I had to look at Tomasz introduction video twice to spot the
> hint that I have to change the canvas. Also, the differen canvas behave
> differently. This is _not_ a good idea. If there is need to have multiple
> canvas types, then make them behave exactly the same, or at least as far
> as possible and warn the user when he is trying to do something that the
> current canvas type does not support. But better still: remove all canvas
> types but one.
>
> In a similar vein, why the heck is dragging behaviour of tracks hidden in
> the track settings context menue? It took me half a day to figure out why
> dragging tracks moved the whole track element instead of drag the track
> elastically. Even though I guessed it was some setting somewhere, I could
> not find it in any preferences menu. A good way to at least alleviate
> this issue is to put all persistent settings into one big (tool-)global
> preferences dialog. If you have a look at commercial EDA/CAD tools, they
> have humongous preferences dialogs, with hundreds if not thousands of
> settings. Yes, this is cumbersome. But at least you have a chance to find
> a setting there, even if it means to check each sub-dialog.
>
> The place where Kicad has done this right are the lists of key shortcuts.
> Heck, I love this! I wish more tools had an accessible list like this,
> that is only two mouse clicks away!
>
> The third rule most important rule (in an CAD like application) is the
> placement of keys and symbols. The farther they are apart the more mouse
> and hand movement is necesssary to use them. E.g. a wire is placed pressing
> W, but to end it, one has to press K. While this would be ok if one had
> both hands on the keyboard, but for this task the right hand rests on the
> mouse and draws the wire. So one has to either lift the right hand from
> the mouse or move the left hand over to the right half of the keyboard.
> While the first is a natural movement, but has a long distance, the second
> one is an "un-natural" movement and forces one to look on the keyboard to
> find the right key. Yes, one can change the key settings. But honestly, how
> many people will do this? Most, especially casual users, will just live
> with the default settings (and even for "professional" users it is usually
> a good idea to stick with the defaults, as it helps when working in different
> environments).
>
>
> Ok, now for the real part:
>
> General:
>
> * (bradfa) Make a wizard for the creation of a project, which allows to set
>         - Whether the default libraries should be used or not
>         - Paper size
>
> * (bradfa, me) Create a way to gracefully handle changes of schematic
>    symbols and footprints. Currently, they get silently replaced, which can
>    (and often does) lead to problems. Either cache the symbols/footprints
>    in the project or versionize them such that changes can be caught.
>
> * The mouse wheel and navigation (as mentioned above).
>   Make it consistent with other EDA, CAD and drawing applications:
>   wheel -> up/down, shift-wheel -> left/right, ctrl-wheel -> zoom
>
> * (bradfa) Allow for copy/paste and a move ability across pages.  This would
>   be hard given the way the selection and copy/cut operations work with the
>   drag a box around things workflow.  Not sure what the right way to solve
>   it is, but it should be solved.
>
> * Fix the drawing issues (ghost lines etc). Yes, I know, this is most likely
>   a bug in wx. But it is annoying as hell. So if wx needs to be fixed, then
>   fix wx.
>
> * Get rid of plot vs print. Use one that does the right thing
>
>
> Schematic entry:
>
> * Print by default in color. We are in the year 2015. Most people have color
>   printers these days. If you think it should configurable, then make a config
>   option somewhere, that is _global_ and does not revert to the other thing
>   when you use a different path for printing.
>
> * Make powersymbols global netlabels that do not depend on being in the right
>   library. Heck, this is the most cumbersome way to define power symbols I have
>   ever seen! For every new power rail I define, I need to create a new power
>   symbol. And above all, it has to be in a library called "power", which of
>   course is not documented. Additionally, this masks power symbols with the
>   same name. The "right" way to do it, would be have specially marked symbols,
>   (have a property POWERSYMBOL) that have a name field which doubles as the
>   net label. This way, one can create one symbol of the right form, set it
>   in the schematic, and change its label according to the needs.
>
> * Create a junction automatically, when a wire is passing over a pin.
>   This is usefull when, e.g. placing a dozen blocking C's. Then you just
>   pass with the wire once over all, instead of having to stop at each C.
>   Actually better still: When a pin or a wire ends on a wire, connect them,
>   even if there is no junction.
>
> * When creating/placing netlabels: remember the last created label.
>   It is normal to set a label at multiple places at once, and also
>   to have multiple labels that are named similarly.
>   As advanced feature: if the label ends in a number, automatically increment
>   the number.
>
> * (bradfa) Allow for non-hierarchical multi-sheet schematics. Especially for
>   big parts or boards where there are many big parts (think 1000 pin BGA
>   and 64 bit wide DDR3 and other "modern computer things") it's simply
>   easier and more elegant looking to organize a common set of parts across
>   more than one non-hierarchical sheet.  Being forced to use hierarchy
>   means either I'm going to have to use a bigger sheet (which I can't
>   print, most people can't print on A3 size paper, let alone larger) or I
>   have to break my single unit of schematic up into yet another hierachy,
>   which for things like DDR, especially in something like a 64 bit wide of
>   x8 chips, is hard to fit onto one page.
>
>
> Schematic Symbol editor:
>
> * Explicitly make it clear which symbol is being edited. The name should be
>   placed somewhere prominently. Either in the title bar or in a corner of the
>   window.
>
> * Allow for multiple symbol editor windows to be open, for easy copy&paste.
>
> * Add a pane with a view of the library. This would allow for faster selection
>   of the symbol one wants to edit/view.
>
> * Get rid of the double-confirm needed to save a changed symbol (why do I need
>   to save the changes of the symbol and then again save the changes of the
>   library?)
>
>
>
> Layout editor:
>
> * I do not really like the idea of having the board on a sheet, though i
>   can understand the reasoning. IMHO it comes from the old pen and pencil
>   times, when people drew on pre-made sheets of paper. Today, i don't really
>   see a point here. Yes, having some text describing the layout somewhere
>   (the sheet header) is nice, but why place the frame as well?
>
> * Start with a board creation wizard. In 99% of the cases people will start
>   with a rectangular PCB of a predetermined size. A wizard would allow for
>   a quick and easy creation of the board shape without the need to place
>   a number of lines precisely. The wizard should als create an automatic
>   keep out line around the PCB (there is usally a 0.5mm to 1mm keepout
>   at the board edges for production reasons. For PCB separation by scoring
>   this goes up to 2-3mm).
>   To make be able to call this wizard at a later stage (or not cal it at all)
>   would be also a good idea.
>
> * Make board edges a polygon line. I.e. disallow the breaking up of the closed
>   shape by moving a single line. Breaking of a polygon should be explicit,
>   when the user demands it, i.e. to insert another line shape. And those should
>   "snap" automatically into the polygon again and be not be broken until
>   requested.
>
> * All components should be placed next to each other, sorted by sheet they
>   are on. Not ontop of each other.
>
> * Allow placing explicitly a single via. And do not remove the netlabel of a
>   via if it's not connected to any track. The reason for this is simple: after
>   a layout is finished, I hunt for places where the ground (or power plane)
>   connectivity is not good over different layers (think long parallel tracks
>   on the bottom layer that carry high frequency signals, the ground between
>   the tracks becomes a long (but wide) wire itself. Adding a via every now
>   and then connects the ground to the ground plane on another layer.)
>   Currently the only way to do this is to place a track that starts at some
>   GND pin and runs in a zig-zag course over the PCB.
>
> * Allow to place a track in the middle of nowhere. Reason is similar as above.
>
> * Allow to set the net of a track/via explicitly. Not only while drawing
>   the track/setting the via, but also afterwards.
>
> * Make all canvas feature complete and equivalent. (reason given above)
>   IMHO make the OpenGL canvas the default one. It's the one with the nicest
>   features. Also it does not screw up every time one draws a track.
>
> * Allow rotations in both directions. (probably R, shift-R). Make R the one
>   that goes in clock-wise direction, which is the "natural" direction for most
>   people.
>
> * The important key shortcuts are all over the keyboard, which means
>    the user has to constantly move his hands around (see above).
>
> * Switching of trace width is.. meh.. the default canvas allows only to use
>   pre-defined values (which is nice in theory, but not when you have to add
>   every allowable line width explicitly into the settings). The OpenGL canvas
>   allows to set to a value. Which is IMHO nicer, but there should be some
>   "remembering" of old used values that present themselv in a drop down menu.
>
> * All dialogs for creating something (planes, etc) should remember their
>   settings that have been previous used. Chances are high I want to create
>   another instance with the same settings.
>
> * Give unconnected pins a "No Net" label instead of a random netlabel.
>   The random netlabel is confusing. One does automatically want to find
>   the other component/pin that connects to it.
>
> * Create an un-select key shortcut.
>
> * Zoming centers the window at the point where the mouse pointer was
>   pointing to. This sudden jump is very annoying. Instead the point the mouse
>   pointer is pointing to should be kept fixed and the zoomed window moved
>   accordingly.
>
> * When moving parts references, highlight the part it belongs to.
>
> * Make highlighting and masking levels configurable by sliders
>   (Altium does that in a very cool way)
>
> * Place a small scale at the lower right corner. It is often very hard to
>   judge how large something is, when doing the layout. A ruler would allow
>   to have a quick look, to verify that one is actually drawing something
>   roughly 1mm in size and not 10mm in size.
>
> * Allow for different line thickness on non-copper planes.
>
> * Allow for arbitrary shapes (rectangles, circles, rings, polygones) on
>   non-copper planes (e.g. for modifying the paste mask or solder mask)
>
> * Add a "undo" for tracks while drawing them. If I am drawing a track
>   and realize I've passed a component on the wrong side and thus have ended
>   up in the wrong spot, I want to be able to backtrack to the place I went
>   wrong and continue from there. Currently, I either have to cancel the track
>   and start from zero again, or place the track and delete the part that is
>   wrong and start from there.
>
> * Have a toggle (key shortcut) between "show all layers" and "show only active
>   layer". In complex boards with more then 8 layer (sometimes even from 6 up)
>   the other layers start to confuse and I want to disable them. But from time
>   to time i need to know where I am and need to quickly reenable them.
>
> * Enabling/disabling layers takes way too much time when area fills are
>   involved. I have here a simple design of 10x8cm board, with few components
>   (two dozen in total),  but it already takes a second to enable/disable
>   a single layer.
>
> * BUG: Two area fills with the same priority but different nets will overlap,
>   when drawn over eachother. The right thing to do here is to draw the area
>   fills in a specific order and to cut later ones off when they get too close
>   to another fill. Of course, this will then need some form of configuration
>   in which order the fills are drawn (could replace the priority).
>
> * Mouse drag behaviour "interactive" is what people would expect today.
>   Please make it the default.
>
> * Allow the grid to be changed with a key command that makes the grid
>   smaller/larger.
>
> * Allow the grid to be switched off completely.
>
> * Make pin snap-in radius configurable.
>
> Footprint editor:
>
> * Explicitly make it clear which symbol is being edited. The name should be
>   placed somewhere prominently. Either in the title bar or in a corner of the
>   window.
>
> * Allow for multiple symbol editor windows to be open, for easy copy&paste.
>
> * Add a pane with a view of the library. This would allow for faster selection
>   of the symbol one wants to edit/view.
>
> * Make measurements easy and intuitive. The current "press space and watch
>   the status line" is not! This requires at least an explicit command.
>
> * Allow the grid to be changed with a key command that makes the grid
>   smaller/larger.
>
> * Allow the grid to be switched off completely (especially important
>   for measuring things).
>
> * Create a "snapp to nearest center/vertex" option (also important for
>   measurement)
>
>
> Yes. I know. This is a damn long list. But this is still just the beginning.
> There are many issues, a lot that you only realize when you use the tool for
> the first time (because you get used to the quirks) and others that you only
> realize after using the tool for some time. Especially consistency issues
> are quite difficult to catch. I still hope this list is usefull.
>
> Please let me know what you think.
>
>
> In an other note: I love the new website! It is a lot better!
> Especially the documentation is now the first thing one sees
> and thus does not have to search for it anymore!
>
>
>                                 Attila Kinali
>
>
> --
> It is upon moral qualities that a society is ultimately founded. All
> the prosperity and technological sophistication in the world is of no
> use without that foundation.
>                  -- Miss Matheson, The Diamond Age, Neil Stephenson
>
> _______________________________________________
> Mailing list: https://launchpad.net/~kicad-developers
> Post to     : kicad-developers@xxxxxxxxxxxxxxxxxxx
> Unsubscribe : https://launchpad.net/~kicad-developers
> More help   : https://help.launchpad.net/ListHelp



-- 
Mark


Follow ups

References