My Workspace

The new “My Workspace” page introduced in Cider-CI 3.6 “Peacock”, and extended in Cider-CI 3.13 “Frisco”, combines the information previously located in the “Commits” and “Jobs” pages. This article discusses the underlying rational and advanced usage.

  • updated: 2016-06-03
  • created: 2015-08-30
  • level: basic, intermediate
  • keywords: user interface, user experience, workflow

Overview - Relations between Commits and Jobs

One objective of the "Workspace" page is to give a quick overview over commits and related jobs.

To this end the first table shows the most recent commits. The related jobs are shown within as icons. The name of the job is revealed by a mouseover tooltip, and other wise hidden to save space. Multiple jobs within a commit row are ordered by name.

Every job shown via an icon in the commits table has a dedicated row in the jobs table below. They are ordered chronologically1 in most recently created order.

Overview

Revealing Relations between Commits and Branches

The position of a commit within a branch is shown by a subscript prefix number. Branch heads are denoted with a 0 prefix and are additionally displayed in bold face.

In this example the commit 1eddf0 is the current head of of the branch tmp in the project Cider-CI. 20a2c is the ancestor of 1eddf0 (and by that 1 behind the head of tmp) and the current head of master.

Branches

The default filter options focus on branch heads and hide deeper commits. This can be changed up to the point of showing commits which are no longer related to a branch. Setting to depths of 1 (or higher) is convenient to compare the outcome of jobs to the previous commit(s).

Depth

The meaning of "My Workspace"

The workspace page (and really any page of the Cider-CI UI ) integrates well with web-browsers. Filter URLs can be bookmarked and will produce expected results by applying the bookmarked filter parameters.

Using the Filter (or Reset) button causes the filter parameters to be stored for the signed in user2. This comes with two intentional side effects:

  1. When clicking on a Workspace link via the UI the stored filter settings for the user will be reproduced3, and

  2. if the requested filter parameter match the stored ones4 the page will be displayed with the My Workspace title.

The "My work" and "Branches" Shortcuts

With Cider-CI 3.13 Frisco the filtering options have been extended and the "My work" and "Branches" buttons have been added.

The "My work" button filters by "My commits" and sets the depth to "Any depth". The commits are filtered by e-mail addresses configured with the user account. If your Cider-CI instance is configured to use GitHub OAuth2, see the article GitHub Integration, the e-mail addresses will be added automatically.

The "Branches" button in converse switches the filtering option to show only the heads of branches and removes the "My commits" option.

Experience shows that the two shortcut filters cover most of the daily filtering requirements. They have also been chosen this way because the the underlying queries perform well in general.

Shortcuts

Advanced Filters

The repository name, as well as the branch name input accept a string, or a sequence of strings separated by commas, or a regular expression indicated by a prepending ^ which is a mandatory part of the regular expression. A sequence is combined with logically or. Regular expressions are interpreted case insensitive and are particular convenient to match all projects with a shared prefix name, e.g. ^cider-ci matches Cider-CI User-Interface, Cider-CI Integration-Tests, and so on.

Regexes

The text search input uses the subject, author, and committer fields of a commit. It is in particular useful if the author name is sufficiently distinct from common words for filtering e.g. all of the last commits of a person.

Text Search

The git-ref can be the full 40, or a short prefix, of the hex character representation of either a git commit SHA1 or the git tree SHA1. Searching for a git-ref is usually combined with lifting the depth restriction to Any depth.

Git-ref

Keeping Filtering Fast

The code behind the "My Workspace" page is designed to show the page in less than 200 milliseconds for typical use cases5.

Certain query parameters combined with projects of a long history and many branches can result in very slow queries. Diverging from the default depth setting (Heads only) is a typical case.

Slow Query Parameters

The Cider-CI server will abort the query it surpasses a predefined threshold of three seconds. The user can then reset the query parameters and reformulate them such that the query performs more efficiently. It can be at times counter intuitive but seemingly more elaborate query parameters perform generally better since they restrict the search space more efficiently.

Query Timeout

  1. The jobs are not ordered as in the commits table because one job can (and in the case of using e.g. the reflow workflow most likely will) appear in multiples commits.

  2. This is the reason why setting the filter is not done via a GET but a POST HTTP request.

  3. Here and additional HTTP redirect is used to operate within the HTTP specification.

  4. E.g. when the user clicks on the Workspace link.

  5. Assuming decent hardware and network performance.