|
PRODUCT REVIEWThe State of CM and technology Technology and software development have seen a great deal of change over the last few years, often at blinding speed with technical innovation that could not have been fully imagined even a short time ago. Many of these projects cost millions of dollars to develop and the success or failure of the organization can be greatly impacted by these mission critical applications developed by a handful of developers or large development teams. Despite the importance of these efforts we still know of firms that are using open source SCM solutions that do not provide the functionality, security and integrity controls needed to safeguard the firms development assets. Even some of the most recent open source CM Tools including Subversion have many limitations that can lead to wasted development effort and even loss of critical source code. The majority of open source and even a few commercial CM tools are simply a wrapper around the old RCS file based CM Tools. Despite the growth of technology and development tools, SCM technologies have generally not changed much in recent years. One vendor has changed the game. Large and small scale development teams will benefit in terms of quality and productivity. For the first time, development managers may actually know where a project stands since their visibility into development sandboxes will provide unparalleled transparency. Developers themselves will be able to work better as a coordinated team sharing their code and coding practices in ways that could not have been envisioned before. Get a PDF Version of this Review >>The State of CM and technology Technology and software development have seen a great deal of change over the last few years, often at blinding speed with technical innovation that could not have been fully imagined even a short time ago. Many of these projects cost millions of dollars to develop and the success or failure of the organization can be greatly impacted by these mission critical applications developed by a handful of developers or large development teams. Despite the importance of these efforts we still know of firms that are using open source SCM solutions that do not provide the functionality, security and integrity controls needed to safeguard the firms development assets. Even some of the most recent open source CM Tools including Subversion have many limitations that can lead to wasted development effort and even loss of critical source code. The majority of open source and even a few commercial CM tools are simply a wrapper around the old RCS file based CM Tools. Despite the growth of technology and development tools, SCM technologies have generally not changed much in recent years. One vendor has changed the game. Large and small scale development teams will benefit in terms of quality and productivity. For the first time, development managers may actually know where a project stands since their visibility into development sandboxes will provide unparalleled transparency. Developers themselves will be able to work better as a coordinated team sharing their code and coding practices in ways that could not have been envisioned before. AccuRev 4.5 is the next generation of SCM tools and serious development teams will see huge benefits from adopting this well developed technology. Ease of use AccuRev is easy to learn and easy to use. But yet as a reviewer, I had a hard time getting my arms around the new concepts and practices. I've taught, supported and used so many SCM tools that AccuRev seemed almost too good to be true. It's definitely a paradigm shift and in this review we will cover a few of the core concepts that were initially hard for me to grasp and understand. I kept expecting there to be problems and challenges instead of just relaxing and accepting the new way of thinking about software development. My own experience leading up to this review This review was in the works for a long time. I had been hired by a financial services firm to review their overall CM best practices and I made it a priority that I would bring in several top SCM tools for evaluation and selection as a solution to their existing open source SCM tool. AccuRev was on the short list of CM tools that we brought in for demo and hands-on evaluation. Unfortunately, the CTO of this firm left for another position and the selection of a new CTO took considerable time. My desire to purchase and implement a new and improved SCM tool had to wait until the new senior technology management was in place. During this time we implemented a major new international financial services system using two of the most popular open source CM Tools. The struggle CM practitioners face every day My day job was the hands-on build and deploy of this system to QA, Integration and Production. Our grueling schedule to get the system online quickly made for many challenges and late night - well actually all night efforts. After introducing AccuRev to the organization, many of my colleagues commented that they could see how AccuRev would have helped us get the job done faster and with less pain. The development director would frequently ask me questions about the state of the code and the development effort that could have easily been ascertained by him using the AccuRev StreamBrowser - that is if we had migrated to using AccuRev. Yet this was an Open Source shop, with an almost 100% bias in favor of open source solutions. One developer actually argued that he would stay with an open source solution even if it was significantly inferior just on principle. We did in fact, use the latest open source CM tools which were clearly inferior. Development can be chaos Developers often had trouble after they branched figuring out what version (e.g. tagged release or the trunk) that they had branched from. Changes made on the trunk often did not make their way back to the branch. And developers were surprised when I explained to them that our current CM tool had no automated way to track branches and merges. We even had one incident where a developer started using a tagged release as a branch without communicating with the other developers. The open source CM tool had no built in way to prevent this (I later posted some messages on a user list which resulted in suggestions for creating my own scripts - which would effectively hack the permissions of my repository to prevent this from happening, but the tool itself did not have a straightforward way of managing tag/labeling permissions). Overall the SCM tool we were using just did not help us understand where our code base was at and who was working on each project. Trying to manage a software development effort without this visibility can result in significantly more development time and costly mistakes. I have personally seen teams that could not get a release out the door without refactoring the entire codebase because their branching and merging strategies were so confused by the limitations of their SCM tool. AccuRev's solution is way ahead of its competition in this regard and warrants serious attention by software development engaged in large scale software development efforts that need to be done on-time and within budget. Understanding AccuRev The most important AccuRev concept to understand is its sophisticated management of object oriented workspaces called streams. The AccuRev documentation calls streams "smart branches" which is not a bad description, but it is also much more. I would describe streams as workspaces on steroids. The power of this object oriented development paradigm is remarkable. Streams are workspaces that are organized in a hierarchical fashion. This creates a very intuitive way to use private branches and much improved tools to continuously integrate your changes back into the parent stream. So each stream has a parent and one or more children. The members of the development team can see each other's changes that allow for better control of when you should stay isolated (so you don't break other people's build) and when you are ready to integrate your changes. Unlike other CM tools, streams in AccuRev can be moved to be re-parented. That means that you can do development against "stubs" and then re-parent your stream once the code is ready to be integrated. Any merges required can be handled with AccuRev's merge facility. This ability to dynamically re-parent a stream is extremely powerful and allows parallel development of services and their dependencies. The visibility and intuitive sandbox approach means that Accurev helps you do your job while still safeguarding your code and promoting a repeatable build and release process.
Snapshots allow persistent baselines of the code at repeatable points. Continuous integration can be facilitated with the ability to fall back to a previous snapshot as needed. Project Managers and developers can browse the contents of any development stream (developer workspace). Changes migrate through the stream hierarchy Streams also follow a well defined workflow that is defined by your Software Development Lifecycle (SDLC). That means that your stream is initially in development, and then promoted to QA, integration testing and of course production. Again snapshots provide a persistent baseline that can be rebuilt as needed. This is the key to Sarbanes-Oxley compliance from a CM perspective. Any release in production must be traceable back to its source and the release must be capable of being rebuilt from source and supported as needed. Using the StreamBrowser the developer can see each of the streams used by members of the team as well as the integration stream. Keep -> Promote -> Update -> Merge Developers use a "keep" command to checkin their changes. The promote command commits the changes "kept" in the developer's workspace (stream) to its parent stream. Continuous integration can be facilitated by the update command which rebases the stream with promoted changes from the parent stream (some CM tools call this "rebasing"). Merge conflicts are handled by the developer using the AccuRev merge tools. At any point the developer can roll back to a previous snapshot and streams can be re-parented as needed. Never before has a CM tool provided so much flexibility and control to facilitate the development process. Change sets in AccuRev When a developer promotes his changes the transaction is atomic. The transaction either succeeds as a complete change set or it fails and rolls back. I have worked with major CM tools that can fail in the middle of a merge or large checkin leaving the branch in a halfway state. AccuRev provides some much needed sanity to the developer process of persisting his changes. Support for Processes AccuRev has the ability to support formal processes or the emerging light/Agile processes. A number of best practices are available as prepackaged frameworks with AccuRev straight out of the box. Integrations with other tools - AccuBridge From IDEs to Issue tracking systems, AccuBridge allows AccuRev users to manage their software process using existing tools and infrastructure. The new AccuBridge 4.5.3 Team Plug-in for Eclipse allows for easy access to AccuRev commands from within the familiar Eclipse IDE. This included checkouts, synchronization, and full support for AccuRev Merge (including both content and namespace merge). While setting up CruiseControl I discovered that AccuRev is supported by the major Continuous Integration servers, along with integrations to the major defect tracking systems as well. AccuRev for Admins AccuRev prides itself on not requiring an army of admins for success. However admin procedures for supporting the integrity of Storage Depots, Replicas and clear protocals for client server communications are well documented and thought out. The products append only database is also an administrator's dream come true. Many times I have had to choose between backing up my CM repository and allowing developers access to their code. AccuRev has much smarter options to maintain and administrate your source code repository. The future of CM Technology itself will continue to change with incredible speed that requires good processes and technology to effectively manage. Some development efforts will be successful and achieve their goals. Unfortunately, some development efforts will also face challenges and even critical failures. AccuRev 4.5 is on the short list of key products that development teams should consider to manage their source code, release and overall software development efforts. Bob Aiello is a Senior Editor for CM Crossroads and an Associate Director at a major financial services firm in NYC, where he has company wide responsibility for Software Configuration and Release Management best practices. Bob is on the Steering Committee of the NYC Software Process Improvement Network (CitySPIN), where he is also the chair of the CM SIG which meets in Midtown NYC. Mr. Aiello has a Masters in Industrial Psychology from NYU and a BS in Computer Science from Hofstra University.
Set as favorite
Bookmark
Email this
Hits: 8565 Trackback(0)Comments (5)
|
|
... Thanks, Bob, for a very informative article about Accurev. I am an independent consultant, and get to work with a variety of software technologies. From a developer's perspective, a Stream is indeed an appealing way to look at a branch. Closest Perforce comes to that paradigm is by depicting the branching history for each and every file across all the branches that the file exists in. However, Perforce does keep track of branching relationships: if I branched off "prod" from "main", then I can, at any time, find out what are the differences between the two branches, and merge the incremental changes from one branch to another (in either direction). The fact that ..."Perforce is still based upon RCS like files", while true, is not as bad as it sounds. Perforce, unlike CVS (and like Accurev) does use a centralized database for keeping track of all of is metadata. It also does branch-level merges (rather than having to merge individual files). I like Accurev's "keep/promote" paradigm; Perforce is totally flexible -- you can simulate the "promote/keep", or you can simulate "shelving" as in Microsoft Team Foundation Server. |
|
Eric Veltman (not logged on)
said:
|
... I don't remember much about Perforce anymore (have only read the docs once for an evaluation), but what I can tell you is that AccuRev doesn't really make a difference between direct or indirect merges. Files and folders in Accurev are 'elements' and have an element ID. If you started off with just a single stream and a few workspaces, all containing main.c (id 255), and then add 25 streams and start working in them, eventually perhaps even renaming main.c to workhorse.c, moving it to a different folder and creating lots of parallel versions of the element, the id stays the same (255) across all streams/workspaces. So no matter how often you 'branched' an element (that's not really an AccuRev term) and how often you renamed that element, you can still easily do merges, because AccuRev has a global version history of the element. Merging changes from the backing stream into your workspace is just as easy as merging changes from any other stream anywhere in the hierarchy. Also, if you move one stream (or workspace) somewhere else, your 'active' elements will stay active in that stream. If the elements in your new parent stream are parallel versions of the 'active' elements in the moved stream, then the active elements will get an 'overlap' status, which means they need to be merged. The other elements will automatically be inherited from the new parent stream. Hope this helps answer your question. If not, take a look at the docs on the AccuRev site. They probably do a better job explaining the concepts. |
|
ehagen
said:
|
... I'm curious how AccuRev's reparenting compares to the indirect integration facility found in Perforce. Are they essentially the same thing, or is there more magic sauce in one of them? |
|
Write comment
You must be logged in to post a comment. Please register if you do not have an account yet.





