Name of the blog

Short description of the blog

PureCM gets a complete makeover

Why we tackled the GUI

The PureCM GUI is used to perform many different tasks. For example:

  • Developers write and submit code
  • Merge Managers/Integrators merge changesets between streams
  • Testers raise issues
  • Project Managers view reports and check on the status of a project

Feedback from our customers has shown that the current GUI works well in small organisations where the same user performs multiple or all of these tasks. In larger organisations where one user typically performs one task the current GUI does it all – but is unnecessarily complicated.

For the 2009/1 release we wanted to change the user interface so all the information relevant to a particular user is clearly grouped, and navigation between these tasks is simple and intuitive. After getting more feedback to find out how we could do this you will see that we have made some quite drastic changes.

We are quite excited to show you some first impressions, so we are going to quickly demonstrate the Workspace and Streams perspectives in this blog. This work is currently in development so do not be surprised if more changes are made before the 2009/1 release. We would also welcome any feedback; just comment this article or email to

Active Repository

When launching the new GUI for the first time it will ask you to select a repository. This repository will be remembered the next time you launch the tool. Having a repository centric user interface reduces the complexity of the GUI. For example, the toolbars and menus can apply to this repository, rather than having to select the connection and then the repository every time.

This is particularly apparent for users who only work with 1 repository. User feedback has indicated that about 60% of our users work this way. So if you only have one connection with one repository, the current GUI will feel very ‘clunky’ constantly having to expand the connection, then the repository. If you work on multiple repositories you can change the active repository at any time.

The first thing you will notice is the new ‘Perspectives’ toolbar at the top. Clicking on each of these buttons will launch the corresponding perspective for the active repository. So clicking on the ‘Streams’ button will launch a perspective showing all streams for the active repository.

Having started to use the beta for this, we believe this promotes a more streamlined and focused way of working. Imagine you are in the middle of coding within your workspace perspective but need to quickly view a changeset submitted in another stream. You can switch to the ‘Streams’ perspective and view the changeset. You can then flip back to your workspace perspective and everything is unchanged. The files you were working on are still open, the same tree item is selected, etc.

In the old GUI you would need to scroll down the tree to the ‘Streams’ tree item, expand it to find the new stream, etc. Then when you were done you would need to scroll back up and find your workspace again. The context of what you were working on would be lost and scrolling the tree is a lot more time consuming than clicking a single button.

As the above screenshot illustrates, the ‘Workspaces’ perspective lists all workspaces for the active repository. You can also create a new workspace. Currently we are reusing the old home page here; for the actual release expect a completely new look and feel. You will be able to see which workspaces are out of date, which workspaces you are working on, etc. You will also be able to open a workspace directly using the ‘drop-down’ within the perspectives toolbar.


Workspace Perspective

Selecting a workspace will launch the perspective for that workspace. Once you have selected a workspace, the workspace perspective will automatically be launched the next time you start the tool. So if you are a developer who only works on one workspace you will never need to navigate away from your workspace perspective.

The aim of the workspace perspective is to provide enough functionality so that this is the only perspective a developer will need to use. We think of it as a developer’s ‘home base’ if they are not using the Visual Studio or Eclipse plugins.

The top left window shows the folders within the workspace. Selecting a folder will show the files and folders for the selected folder in the window on the right. This is very much like the workspaces in the current tree control

The bottom left window shows the current changes you are working on. The advantage with this is that you can view/submit your changes without having to move away from the folder you are working on. With the old GUI we found ourselves constantly having to scroll up the tree to ‘My Changes’ whenever we wanted to submit/view our changes and we would need to scroll back down again to the folder we were working on.

You can also view ‘Integrated Changesets’ to see previous changesets submitted in this workspace.  If you are using issues you can quickly look at ‘My Issues’ and ‘Active Issues’ without moving away from the folder you are working on. Finally, the stream tab allows you to browse the stream your workspace is based on. So if you are working on a team stream you are able to see the changes your colleagues submitted.

The toolbar on the right below the perspectives toolbar only applies to this perspective. So the submit, update or check consistency buttons will always be available (when connected) and will always apply to this workspace. This is a big improvement over the old GUI because it means we can have different toolbar buttons for different perspectives.

Note that if you are working on multiple workspaces you automatically create a perspective for each workspace the first time you use it. One of the key advantages with perspectives is that you can then switch between them without losing your environment (which folder is selected, etc.).

Streams Perspective

The Streams Perspective allows you to view all streams within the active repository with all the functionality of the existing GUI. This perspective will be useful for project managers & release managers to create new streams. Project managers will also use this perspective for monitoring the activity of a stream (what changes have been submitted, who is working on what files).

For 2009/1, developers will be able to create a private/feature stream when creating a workspace. So developers will not need to leave their workspace perspective for that purpose.


The main benefits of working in the new GUI are:

  • Repository centric user interface for more streamlined and simpler navigation
  • Group related tasks together to reduce complexity and more intuitive UI
  • Make navigating between different tasks quicker
  • Navigating between different tasks does not lose the context/environment of the previous task

Expect a future blog for the Merging perspective. For 2009/1 we have made this the central place for merging changesets between streams. We have added a whole host of new features such as automatic merging and better tracking of unmerged changes. Combined with workspace rebasing we believe this will make PureCM the ideal tool for agile development.

I look forward to hearing your thoughts on what you have seen...

Towards Rebasing


In order to better support Agile development, we're looking to allow easier Workspace Rebasing.  Currently, when you finish working in a particular task stream, you have to create a new workspace when you start work on another.  The idea behind rebasing is that rather than having, for example :-


and 'rebase' to v1.2 and v1.3 as your workload requires.  Of course we'll always remain flexible to allow you to choose your own way of working.

Initial Steps

Before we can make Rebasing a reality we felt that we needed to address some of the Workspace infrastructure.  From inception, PureCM has always had a workspace database that sits alongside your code and holds the revision, checkout and file information about the workspace.  Since this holds the file data (in compressed and delta-ed form) it grows in size proportional to the size of the files in your workspace.  We've always liked this approach since it makes certain operations easy to implement offline (i.e. no server connection)

The first stage of the rebasing work involves minimising the size of the workspace database (since most of the information is thrown away as you rebase).  We're nearly complete now and the results are encouraging.  Some of our internal workspace databases can be reduced in size from roughly 500MB to 10MB.  Obviously the size of the files in the workspace doesn't change but it's quite a healthy saving nonetheless!  Early performance figures indicate roughly a 25% speedup when creating the workspace as well.  These new workspaces can also be used offline although certain functionality is slightly limited (e.g. you can't always view file differences offline).  You can always create a traditional workspace that holds full offline data if this is a concern.

Looking Forward

The next step is to actually implement the Rebasing support.  The initial plan is to provide the UI/Dialog for this from the PureCM GUI as well as the Command Line client.  We can't currently make this work from within Visual Studio - our SCC Provider doesn't have the ability to add custom commands/toolbars so we'll have to look at a true Developer Studio AddIn for added functionality such as this.  The rebasing functionality itself is scheduled to be shipped as part of our 2009/1 release in early 2009.