Product InfoCustomer TestimonialsConcept and Reference DocumentsLicensing Terms and PricingCompany Location, Mission and VisionAnnouncements & NewslettersHome

SnapshotCM Newsletter for June, 2012


  • Editor's Blog
    • New Release: SnapshotCM Simplifies Product-Line Development
  • Solving the Product-Line Problem
  • Release Notes
  • Recommended Releases
  • Links We Like

Editor's Blog

New Release: SnapshotCM Simplifies Product-Line Development

Our goal was to manage a related group of projects as easily as we were already managing a single project. And we've done it. For most operations, the result is truly seamless. Workspace support for the multi-project unified view was added over two years ago and is widely adopted, and once set up, simply works. Similar seamlessness is now present for promote, update, compare and copy changes actions. And even branching, labeling, freezing and snapshot deleting operations operate on a whole product-line set of snapshots. Finally, the product-line relationships are used to initialize mount definitions in new workspaces, eliminating the need for each user to remember which projects and snapshots are required. All this simplifies product-line development, insures that all promotes/updates/copies occur as desired, and gives you seamless confidence in the results.

Getting started with product-line is easy. You begin using the new product-line features by identifying a primary project snapshot (representing the product) and creating dependency relationships to snapshots in other projects that the product uses or upon which it depends. These relationships can be added directly from the Project Browser, or, if you have a workspace with the appropriate mounts already defined, you can use that to initialize a set of relationships. The key for the latter is to first identify the primary (or product) snapshot in the workspace definition by double-clicking it, and saving the result. Then, in the Project Browser, select the corresponding workspace icon and invoke the context menu to Synchronize Dependencies...

As always, we welcome your feedback and ideas.

Scott Kramer

Solving the Product-Line Problem

A single product is pretty easy to organize: Put it into a single project containing all your files. It's also easy to version: simply check it all in. And when you make changes, check it all in again. It's simple because everything gets versioned together and all on the same schedule. Things become more interesting when you create additional products and want to share some files between them. Initially, it's often easiest to continue to version everything together in one project, but as release schedules and goals for the products increasingly differ, this becomes more and more problematic. And that means it's time to adopt a product-line structure.

A product-line structure organizes files based on how they are used. Each product gets its own project to hold its product-specific files, while files which are shared also get their own projects. By giving each piece of the products its own project, it becomes possible to share common components as well as release the products on separate schedules.

Making the sharing explicit by putting shared files in projects separate from the products which use them provides the key benefit that the shared projects can be evolved independently of any product. The products no longer need to use the same versions of the shared projects. Or put another way, changes to a shared project do not need to be immediately adopted by all users of that project. Rather, they can be incorporated at a time that makes sense for each using product. In a large product-line environment, separate shared project versioning is required for stability for products about to release, while still supporting changes for products in development.

There is a downside to this organization though. It is no longer so simple to version a product because everything needed by your product is now spread over multiple projects. Branching, labeling, promoting, merging, and other product-level operations must now operate on multiple projects. While manageable when a product uses just one or two other projects, when it makes use of a dozen projects, it becomes tedious and error prone (i.e. how can you be sure you branched/tagged/promoted/updated everything?).

This then is the product-line problem: How to have a product-line organization and gain the benefits of it, without losing the simplicity and confidence of managing everything in one project.

A while back, SnapshotCM introduced the ability to mount multiple projects into a single workspace. This provides the developer a unified and seamless view of the product, even for products using a dozen projects. The latest product-line release extends that unified view to product-level operations like branching and labeling, promoting and merging changes, freezing and creating new workspaces. The new release does this using directed uses relationships between a product's primary project and the shared projects which it uses. Operations on the product simply act upon all components which the product uses, which improves productivity, reduces mistakes, and instills greater confidence in the results.

Furthermore, the uses relationships are versioned so different versions (snapshots) of your product may use different versions (snapshots) of your shared projects. In short, this gives simple, big-picture, product-level versioning while easily supporting project sharing and reuse!

The product-line release supports creating and editing the product-line relationships, synchronizing the relationships to or from a workspace definition, and navigating between projects using the relationships. You can even create relationships between projects in different SnapshotCM databases.

Release Notes

The SnapshotCM Product-Line release, also known as SnapshotCM 1.90 or SnapshotCM A.12.06, is now posted in the usual location (if you've forgotten the location, please register for an evaluation download). The most important feature of this release is the addition of significant new Product-Line capability.

As you plan your upgrades, please note that SnapshotCM repository support for product-line dependencies was already present in the 1.84 release. This means your server probably already supports creating product-line dependencies and all you need to do is install the new clients to have full access to the product-line benefits. That said, we strongly encourage everyone to keep their server up-to-date as there are performance and reliability benefits of the newer releases.

For a complete list of user-visible changes, see the Change List.

Recommended Releases

The following releases are recommended:

  • - The product-line release, plus the latest features and fixes.
  • - The last pre-product-line release.
  • 1.84.2 / - A known stable release.
  • 1.82.06 / 1.82.07 / 1.82.08 - stable version with the old (single mount) workspace model.

If you are running any other release, we recommend that you update to the latest recommended version that your license allows.

For a complete list of user-visible changes, see the Change List.

Links We Like

Links we find interesting, fun, or occasionally useful.

We are looking for interesting links to share. Send to

Please forward this newsletter to interested colleagues, and if you are not a subscriber, keep up-to-date by subscribing to SnapshotCM News today!