← Back to team overview

kicad-developers team mailing list archive

Re: UI and usability enhancement

 

Just for evaluation.

Mentor Designer Schematic Capture > wheel zoom
Mentor Designer Layout > ctrl+wheel zoom
PCBWeb > wheel zoom
Diptrace > wheel zoom
NI Ultiboard > wheel zoom
Upverter > wheel zoom
EasyEDA > wheel zoom
Eagle > Wheel zoom
Altium > ctrl+wheel zoom



On Mon, Aug 31, 2015 at 9:53 AM, Mark Roszko <mark.roszko@xxxxxxxxx> wrote:

> >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
>
> _______________________________________________
> 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
>

References