kicad-developers team mailing list archive
-
kicad-developers team
-
Mailing list archive
-
Message #20072
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