- Capitalization and punctuation
- Confirmation dialogs
The copy for GitLab is clear and direct. We strike a clear balance between professional and friendly. We can empathesize with users (such as celebrating completing all Todos), and remain respectful of the importance of the work. We are that trusted, friendly coworker that is helpful and understanding.
The copy and messaging is a core part of the experience of GitLab and the conversation with our users. Follow the below conventions throughout GitLab.
Portions of this page are inspired by work found in the Material Design guidelines.
Note: We are currently inconsistent with this guidance. Images below are created to illustrate the point. As this guidance is refined, we will ensure that our experiences align.
Users will skim content, rather than read text carefully. When familiar with a web app, users rely on muscle memory, and may read even less when moving quickly. A good experience should quickly orient a user, regardless of their experience, to the purpose of the current screen. This should happen without the user having to consciously read long strings of text. In general, text is burdensome and adds cognitive load. This is especially pronounced in a powerful productivity tool such as GitLab. We should not rely on words as a crutch to explain the purpose of a screen. The current navigation and composition of the elements on the screen should get the user 95% there, with the remaining 5% being specific elements such as text. This means that, as a rule, copy should be very short. A long message or label is a red flag hinting at design that needs improvement.
Add issueas a button label. Preferrably use context and placement of controls to make it obvious what clicking on them will do.
Use sentence case for titles, headings, labels, menu items, and buttons. Use title case when referring to features or products. Note that some features are also objects (e.g. “Merge Requests” and “merge requests”).
|:white_check_mark: Do||:no_entry_sign: Don’t|
|Add issues to the Issue Board feature in GitLab Hosted||Add Issues To The Issue Board Feature In GitLab Hosted|
Avoid using periods in solitary sentences in these elements:
- Hover text
- Bulleted lists
- Dialog body text
Periods should be used for:
- Lists or dialogs with multiple sentences
- Any sentence followed by a link
|:white_check_mark: Do place periods after sentences followed by a link||:no_entry_sign: Don’t place periods after a link if it‘s not followed by a sentence|
|Mention someone to notify them. Learn more||Mention someone to notify them. Learn more.|
|:white_check_mark: Do skip periods after solo sentences of body text||:no_entry_sign: Don’t place periods after body text if there is only a single sentence|
|To see the available commands, enter
||To see the available commands, enter
Don’t make a sentence harder to understand just to follow this rule. For example, “do not” can give more emphasis than “don’t” when needed.
|:white_check_mark: Do||:no_entry_sign: Don’t|
|it’s, can’t, wouldn’t, you’re, you’ve, haven’t, don’t||it is, cannot, would not, it’ll, should’ve|
Use “1, 2, 3” instead of “one, two, three” for numbers. One exception is when mixing uses of numbers, such as “Enter two 3s.”
|:white_check_mark: Do||:no_entry_sign: Don’t|
|3 new commits||Three new commits|
Omit punctuation after phrases and labels to create a cleaner and more readable interface. Use punctuation to add clarity or be grammatically correct.
|Punctuation mark||Copy and paste||HTML entity||Unicode||Mac shortcut||Windows shortcut||Description|
|Period||.||Omit for single sentences in affordances like labels, hover text, bulleted lists, and dialog body text.
Use in lists or dialogs with multiple sentences, and any sentence followed by a link or inline code.
Place inside quotation marks unless you’re telling the reader what to enter and it’s ambiguous whether to include the period.
|Comma||,||Place inside quotation marks.
Use a serial comma in lists of three or more terms.
|Exclamation point||!||Avoid exclamation points as they tend to come across as shouting. Some exceptions include greetings or congratulatory messages.|
||Omit from labels, for example, in the labels for fields in a form.|
||⌥ Option+⇧ Shift+]||Alt+0 1 4 6||Use for contractions (I’m, you’re, ’89) and to show possession.
To show possession, add an ’s to all singular common nouns and names, even if they already end in an s: “Look into this worker process’s log.” For singular proper names ending in s, use only an apostrophe: “James’ commits.” For plurals of a single letter, add an ’s: “Dot your i’s and cross your t’s.”
Omit for decades or acronyms: “the 1990s”, “MRs.”
⌥ Option+⇧ Shift+[
⌥ Option+⇧ Shift+]
Alt+0 1 4 7
Alt+0 1 4 8
Alt+0 1 4 5
Alt+0 1 4 6
|Use proper quotation marks (also known as smart quotes, curly quotes, or typographer’s quotes) for quotes. Single quotation marks are used for quotes inside of quotes.
The right single quotation mark symbol is also used for apostrophes.
Don’t use primes, straight quotes, or free-standing accents for quotation marks.
Alt+8 2 4 2
Alt+8 2 4 3
|Use prime (′) only in abbreviations for feet, arcminutes, and minutes: 3° 15′
Use double-prime (″) only in abbreviations for inches, arcseconds, and seconds: 3° 15′ 35″
Don’t use quotation marks, straight quotes, or free-standing accents for primes.
|Straight quotes and accents||
||Don’t use straight quotes or free-standing accents for primes or quotation marks.
Proper typography never uses straight quotes. They are left over from the age of typewriters and their only modern use is for code.
||⌥ Option+;||Alt+0 1 3 3||Use to indicate an action in progress (“Downloading…”) or incomplete or truncated text. No space before the ellipsis.
Omit from menu items or buttons that open a dialog or start some other process.
||Omit from links or buttons that open another page or move to the next or previous step in a process. Also known as angle brackets, angular quote brackets, or guillemets.|
||⌥ Option+⇧ Shift+-||Alt+0 1 5 1||Avoid using dashes to separate text. If you must use dashes for this purpose — like this — use an em dash surrounded by spaces.|
||⌥ Option+-||Alt+0 1 5 0||Use an en dash without spaces instead of a hyphen to indicate a range of values, such as numbers, times, and dates: “3–5 kg”, “8:00 AM–12:30 PM”, “10–17 Jan”|
|Hyphen||-||Use to represent negative numbers, or to avoid ambiguity in adjective-noun or noun-participle pairs. Example: “anti-inflammatory”; “5-mile walk.”
Omit in commonly understood terms and adverbs that end in ly: “frontend”, “greatly improved performance.”
Omit in the term “open source.”
|Parentheses||( )||Use only to define acronyms or jargon: “Secure web connections are based on a technology called SSL (the secure sockets layer).”
Avoid other uses and instead rewrite the text, or use dashes or commas to set off the information. If parentheses are required: If the parenthetical is a complete, independent sentence, place the period inside the parentheses; if not, the period goes outside.
When using the Alt keystrokes in Windows, use the numeric keypad, not the row of numbers above the alphabet, and be sure Num Lock is turned on.
Only use the terms below.
When using verbs or adjectives:
- If the context clearly refers to the object, use them alone. Example:
- If the context isn’t clear enough, use them with the object. Example:
|Search||When using all metadata to add criteria that match/don't match. Search can also affect ordering, by ranking best results.|
|Filter||When taking a single criteria that removes items within a list that match/don't match. Filters do not affect ordering.|
|Sort||Orders a list based on a single or grouped criteria|
|Members||When discussing the people who are a part of a project or a group.||Don't use
|New||Although it’s not a verb,
|Create||Only to indicate when or who created an issue|
|Add||Associate an existing issue with an item or a list of items||Don’t use
|View||Open the detail page of an issue||Don’t use
|Edit||Enter the editing mode of an issue||Don’t use
|Submit||Finalize the creation process of an issue||Don’t use
|Save||Finalize the editing process of an issue||Don’t use
|Cancel||Cancel the creation or editing process of an issue||Don’t use
|Close||Close an open issue||Don’t use
|Re-open||Re-open a closed issue||Don’t use
|Delete||Permanently remove an issue from the system||Don’t use
|Remove||Remove the association an issue with an item or a list of items||Don’t use
|Add||Add a merge request||Do not use
|View||View an open or merged merge request|
|Edit||Edit an open or merged merge request||Do not use
|Approve||Approve an open merge request|
|Remove approval, unapproved||Remove approval of an open merge request||Do not use
|Merge||Merge an open merge request|
A comment is a written piece of text that users of GitLab can create. Comments have the meta data of author and timestamp. Comments can be added in a variety of contexts, such as issues, merge requests, and discussions.
A discussion is a group of 1 or more comments. A discussion can include subdiscussions. Some discussions have the special capability of being able to be resolved. Both the comments in the discussion and the discussion itself can be resolved.
- Destruction buttons should be clear and always say what they are destroying.
Delete pageinstead of just
- If the copy describes another action the user can take instead of the destructive one, provide a way for them to do that as a secondary button.
- Avoid the word
canceledin the descriptive copy. It can be confusing when you then see the