Hello!
Context
As part of the WYSIWYG usability of XWiki macros proposal, I’m going to audit the macros of XWiki Standard for how easy they are to insert and configure from the WYSIWYG editor. The main goal is macro fluidity, meaning that using a macro in the editor should not break the editing flow (or slow it as little as possible for complex macros ^^’ ).
To keep this audit somewhat consistent from one macro to the next, and make sure we cover everything, I drafted a list of usability criteria most macros would be checked against. Before starting the audit itself, I’d like to gather your feedback on these criteria.
When checking those criteria, I’ll open tickets on Jira for any violation that makes sense (I’ll still use my good sense to avoid reporting unnecessary things – I might discover some issues with the criteria when starting the audit itself).
Proposal
Macros already categorized as deprecated or internal are not audited.
Each macro is classified as one of two types:
- Wrapper macro: most of its output is content the user types, and the macro decorates or structures it. For example: warning, info, box or expand.
- Generator macro: most of its output comes from its parameters. For example table of contents, livedata or document tree.
Some criteria only apply to one of the two types. The criteria are grouped by macro use steps: Discovery, Learnability, Insertion, Configuration and Editing. The content of a macro is for the most part treated as a parameter like any other. Macro IDs set in bold are ideas that have already been discussed with a small group of users and devs in private before, I expect those to be less subject to discussion because it’s not something I thought off just by myself ![]()
| ID | Name | Description | Applies to |
|---|---|---|---|
| D1 | wording |
The macro name uses the user’s words for what it produces (a warning, a diagram), not technical jargon. | All |
| D2 | summary |
The macro description is one sentence that says what the macro adds to the page. | All |
| D3 | category |
The macro is in the category a user would expect it in. |
All |
| D4 | quick-action |
The Quick Actions menu finds the macro with the words a user would type, including common synonyms like “note” or “callout” for info or warning. | All |
| L1 | consistency |
The macro behaves like the other macros of the same kind, for the mandatory content, the insertion process and its default parameter values. | All |
| L2 | doc-parameters |
The documentation of the macro parameters is up to date. | All |
| L3 | doc-example |
The documentation of the macro contains at least one example for its most common use. | All |
| I1 | pattern |
There is no macro-specific insertion behavior. The macro follows a common behavior, whether inserted from the Quick Actions menu or from the Insert Macro dialog. | All |
| I2 | zero-config |
Inserting with only default values gives a sensible result, not an error box. Generator macros may require configuration before giving a sensible result. | Wrapper (All?) |
| I3 | instant |
Inserting from the Quick Actions menu does not open the Edit Macro dialog. The macro appears in the page right away. | Wrapper |
| I4 | cursor |
After insertion, the cursor is in the macro content, so the user can keep typing without an extra click. | Wrapper |
| I5 | focus |
Inserting opens the Edit Macro dialog with the essential parameters first and focus on the first one. | Generator |
| C1 | clarity |
Each parameter name and description is self-explanatory, and uses user terms. | All |
| C2 | mandatory |
A parameter is mandatory only when the macro’s behavior is ambiguous without it. | All |
| C3 | defaults |
The default value of each optional parameter is the value used in most cases, and the Edit Macro dialog displays it clearly. | All |
| C4 | input |
Each parameter uses an appropriate input, such as a picker, a dropdown or a checkbox. Pickers find what the user looks for. | All |
| C5 | groups |
Parameters used together are in the same group, and groups appear in a logical order. | All |
| C6 | order |
Within each group, and among the parameters outside any group, parameters are ordered by how often they are used. | All |
| C7 | alternatives |
When several parameters are alternative ways to set the same feature, the Edit Macro dialog presents them as a unit, and requires one of them when the macro needs it. | All |
| C8 | advanced |
Rarely used parameters are marked as advanced. | All |
| C9 | technical |
Only parameters that are meant to be edited are shown. | All |
| E1 | wysiwyg |
The macro renders in the WYSIWYG editor the same way as in view mode. | All |
| E2 | errors |
An invalid parameter value produces a message that says what is wrong and how to fix it, not a stack trace. | All |
| E3 | nesting |
The macro behaves consistently when it is placed inside a list, a table or the content of another macro. When the macro has content, that content accepts lists, tables and other macros like the rest of the page. | All |
| E4 | empty |
Empty content still renders in the editor and stays editable, with no zero-width area that cannot receive the cursor. | Wrapper |
| E5 | inline |
The content can be edited as rich text in the editor, not as wiki syntax in a text area of the Edit Macro dialog. | Wrapper |
This is a simplified view. The full version on the design wiki also gives, for each criterion, a measure explaining how to check it, and an existing Jira issue as an example when we have one.
Open questions
- Does the split between wrapper and generator macros make sense to you? Are you okay using these names in discussions on the topic?
- Is there a criterion missing, or one you would drop?
In a week from now, I’ll set a process and templates for myself for auditing all the XS macros, it’d be great if the list of criteria gets somewhat stable by then.
Any feedback is welcome, the earlier the better ![]()
@lucaa @surli tagging you because I figured you especially want to check this topic out and you have a great idea of the usability issues we currently have with macros ![]()
Thank you!
Lucas C.