Skip to content

bpmn-io/design-principles

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

3 Commits
 
 
 
 

Repository files navigation

Notice: This document is a wiki. Help us and 📝 improve it.

Design Principles

A summary of some core design principles that are baked into our modeling tools.

TLDR

Editors, not drawing tools

Our editors are domain specific tools with a strong foundation on the standards they support.

Examples

  • We ensure diagrams are always structurally consistent (no free floating sequence flows, can be exported to a valid standards representation at any point in time).
  • We build upon domain specific modeling rules (no tasks in tasks, no sequence flows across pool boundaries).
  • We do not support intermediate states, if they are without representation in target language (free floating connections).
  • We support users to ensure diagrams stay semantically sound (change sequence to message flows and vice versa, ...).
  • We enforce and/or embrace domain specific modeling conventions (left-to-right, top-to-bottom, encoded good practices)

Why

  • Guides users in learning and modeling the standards.
  • Setup diagrams for interchange and basic understandability.
  • Prevent unintentional human harm.

Less is more

Our tools are intentionally minimalistic.

Examples

Why

  • Reduces the cognitive burden for newcomers and experienced users alike.
  • Aids modeling in collaborative environments where different perspectives / tool / modeling experience clashes.
  • Compensates for the standards being overly complicated at times

Know the context

We understand that using our tools is highly situational, depending on what the user wants to achieve. We provide intuitive means that support users across all stages of diagram editing.

Examples

  • We embrace continues modeling / locality (cf. context pad, infinite canvas).
  • We provide tools for larger scale refactorings (i.e. space tool, drop on flow)
  • We provide facilities for efficient navigation and discovery

Why

  • Get out of the way as a tool.

Do the hard work to make it simple

We do a lot of things under the hood so the user does not have to.

Examples

Why

  • A user can think about what she would like to express
  • Get out of the way as a tool.
  • Do not cause frustrating extra work.

See also ➡️ no surprises.

No surprises

We aim for predicable, intuitive editing behavior.

Examples

  • We offer predictable core modeling actions (connect previews, move ghosts)
  • We do repair / fix sensibly during user editing (layout / grid snapping / alignment)
  • We clean up / support during local modifications (see also ➡️ do the hard work)
  • We design breaking modeling changes with a migration path in mind (e.g. incremental grid snapping)
  • We do NOT globally, magically fix everything

Why

  • Automagic changes should have the sole purpose of "getting the tool out of the way"
  • Predicable behavior is a basis of trust and aids learning

Empower the user

We do no magic. Using our tools, the user is in control.

Examples

  • We are agnostic to modeling styles and conventions (i.e. spacing). There is not one standard way to model.
  • However, we pickup diagram styles and support users in building consistent looking models (auto-place, align / distribute, ...).
  • We are forgiving. We rather allow the user to do what he attempts to do than blocking a request. Following up, we do best effort to support her intend and still end up in a valid diagram (drop on flow, change sequence to message flow when moving task across pool boundaries, cf. also ➡️ do the hard work).

Why

  • Users should be able to learn the implemented standards by doing
  • Users should never be frustrated through changes our tool introduces

Resources


How to achieve all this? Iteration and user feedback.

Are we done achieving all this? No.

About

The design principles that guide our tool UX

Resources

Code of conduct

Security policy

Stars

Watchers

Forks