A small tool for �sketching UIs
A small tool for sketching UIs
Have an editor to quickly create simple UI-sketches, �usable e.g. for discussing how an interface should look like.
Jan writes:
how about we try this:
[Tool created sketch of UI]
Anna writes:
I think a vertical layout is better, like so:
[Tool created sketch of UI]
add comment
A small tool for sketching UIs
Rough sketch of what it might look like, showing the three tools/modes.
Select
New UI element
New annotation
A small tool for sketching UIs
It should be simple and compact to be embeddable in other tools (e.g. fossil, gitea, mattermost etc.)
Add a UI sketch!
Metaphor
RELEVANT FEATURES
Autogrouping: No grouping or stack management
This actually works and has been done before:
Zoom to cursor, panning etc.
Contextual UI
�Prior art: A lot, but most closely to this idea: Whimsical uses such a contextual UI.
COLLABORATION MODEL
Collaboration model
Collaboration model
build upon this sketch
Collaboration model
Using a copy-and-build-upon model of collaboration, we gain the following advantages: �
ALTERNATIVES
Whimsical
Balsamiq
Draw.io
Excalidraw
IMPLEMENTATION: DETAILS FOR DEVS
More backend-y stuff I tried or thought about. It is written in the context of drawing apps, so I guess, just like understanding a web app usually needs knowledge of concepts like routers, requests, etc. it might be hard to grasp without knowledge of drawing apps.
Repository
It does only a part of it yet, but if you want to try:
Expect it to barely look better than this!
OOP
Hotdraw, morphic and OOP
�Classic Examples:
Some approaches not used so far
Canvas and figures
Layers of rendered elements
(Entirely internal, this is nothing the user deals with)
typical UI elements like „duplicate this element“-button or „select size“
handles: scaling, changing size etc.: little boxes to drag/drop
element previews
document itself (changed by commands)
Notes on language and tools
Selection
Tools
Commands
Theory: Why such a tool?
Examples for sketches
Some examples for the level of fidelity that the tool should be able to realize
By Members of WMF Growth team: Wireframes from WMF Growth team meetings, CC BY-SA 4.0, Source: https://commons.wikimedia.org/w/index.php?curid=79612907
Wireframe brainstorms by sonali sridhar, CC BY-SA 2.0, Source
Wireframes by Christine Ronde , CC BY 2.0, Source
https://mastodon.blaede.family/@cassidy/116404709985792379 “I found some exploratory sketches from 2013 (I would often doodle things out when talking them over remotely, and then let we’d iterate and then someone better than me with design tools would make a pretty pixel-perfect mockup)”
Archive: Old open questions
Open questions: Rendering
Former Open questions: Rendering 2
Former Open questions: Overlays, previews
Open questions: Overlays, previews
…via Transient mode: During drag, changes are transient
onDragStart(){
state.transientMode(true) …
onDragMove(){� selection.move(…�onDragEnd(){
state.transientMode(false)
commandManager.apply(…
…probably via Memento-Pattern on the complete state?
Former Open questions: Overlays, previews
Strategy: Dragging a copy, updating model on drop.
On Dragstart, make the original view invisible; create a copy that is rendered on top. Drag this copy. When dragging is done, destroy the copy and change the position of the original.��(Works pretty well in MVC, had problems in declarative-reactive paradigms)
Worked great!
Fromer Open questions: Abstracting auto grouping
Most models of graphics work based positions, manual grouping and stack management. Here, we would only have the user-issued position. Should figuring out the grouping happen: �
– before I construct commands (so the commands themselves operate on the stack-grouping model; more deterministic)
– after I issue the commands (so the commands just contain the positions, the grouping is part of the drawing-object behavior; more reflecting user action)�
…I tend to choose the latter one (but I will probably need escape hatches then). It turned out the “before” was easier to implement (hit test on drop)
Former Open questions: Storage format