The Changing Landscape of SCM

May 1st, 2012 by brad hart No comments »

It’s 1998. I’m just starting my job at Rational Software, supporting ClearCase. During my training and through my first few months handling customer issues, I developed a deep understanding of the complexities of SCM and the heavy-handed centralized control that ClearCase provided its customer base. Wrappers, triggers and script automation were the key to a tightly controlled, centralized development environment.  In the developers’ eyes, dealing with the version control tool was just a part of doing their job.

Developers like to code, not “waste time” with tools or infrastructure. They are creators and want to create their masterpiece. Check-in, Check-out, Merge, etc. are not ways developers want to spend their time, especially if they are forced to deal with poor performance from an SCM tool, whether it’s by the tool itself, or the myriad of wrappers that were forced on top of the SCM tool their company chose. In a developers eyes, any time spent NOT writing code is wasted time.

However, despite the negative ramifications of SCM centralization and control to the developer’s productivity, there are absolute benefits to the enterprise that cannot be lost. Security, traceability, visibility and control are paramount to running a development organization.

My decision to come work at AccuRev in 2001 was based on the software’s unique ability to provide all the features the enterprise needs, while minimizing the negative impact SCM has on developer productivity. The ease at which AccuRev provides visualization and control over the entire development process was truly a game changer.  And while still a centralized SCM tool, AccuRev was designed to minimize the pain developers felt during their day to day operations.

It’s now 2012 and the SCM landscape has changed dramatically for developers. De-centralized / Distributed development is all the rage now. Version control tools such as Git and Mercurial are providing developers with the experience they demand. Local copies of repositories give unparalleled performance. Strong branching models provide near painless branching and merging. Tools like Git are designed with the developer in mind. Performance, merging strength and extremely in-depth control of all operations are the focus of product features.

All that said, while distributed SCM tools are great for developers and fine for open source development, Enterprises are experiencing chaotic development and losing control in their engineering organizations. So which way do you go? Centralized appeases the Enterprise, De-Centralized appeases the developers.

The answer is both. Now that AccuRev has introduced Kando, Enterprises can maintain all the security, traceability, audit-ability, visibility and process control their business depends on, while giving their developers exactly what they want – to use Git for their day to day development.

General Availability for Industry’s First Seamless Integration of Enterprise-Level Security and Visualization into Git

April 3rd, 2012 by AccuRev No comments »

AccuRev released for general availability today the first Git integration that seamlessly bridges the world of commercial tools and open source software configuration management.

Kando General Availability for Industrys First Seamless Integration of Enterprise Level Security and Visualization into GitAccuRev’s Kando, an enterprise security and compliance platform for Git, which was released in beta in January, complements the open source SCM tool with additional functionality, allowing organizations using Git to simultaneously leverage enterprise-level security and requirements traceability.

Kando is the first software development solution that enables Git development shops to add workflow, issue tracking, security, change requirements and other capabilities to the software development process, all while maintaining the flexibility and familiarity of Git environments.

Kando’s ground-breaking enterprise-level security and compliance capabilities allow its users to:

  • Comply with enterprise-level regulations, by providing full audit and traceability
  • Secure Git with access control capabilities, and support for enterprise authentication via LDAP and Microsoft Active Directory
  • Visualize and manage development processes that use Git in AccuRev’s StreamBrowser™ environment
  • Support Software Change and Configuration Management (SCCM) through change-based development with AccuRev Change Packages

“Our Kando Beta announcement in January had an overwhelmingly positive response, and it is clear that Git adoption has expanded well beyond the Linux community, into product development and IT,” said Lorne Cooper, AccuRev’s CEO. “Kando can solve many security and requirements traceability problems that enterprise organizations face when adopting Git, and really allows Git an opportunity to scale the development process across enterprise software development teams.”

During the development of Kando, AccuRev established the Kando Technical Advisory Board, comprised of representatives from several enterprise organizations with Git environments. To hear what they are saying, or to learn more about Kando, visit http://www.accurev.com/kando.

Avoiding Merge Hell

March 7th, 2012 by clucca No comments »

As you start to scale a software development process it becomes apparent that code and user stories have to be merged more frequently. Sometimes changes may flow from one organization to another. This means that you will need to take code from one team, merge, integrate and test those changes with everyone. Each team needs to be able to work on its own schedule, this means that if multiple teams want to work on different sized iterations they can. It also means they can deliver changes as needed and on a regular basis, independent of other teams.

To do this in a traditional Software Configuration Management system, you’ll face two major problems.

  1. You have to merge these code changes daily for them to be of any use.
  2. You also still need to keep visibility into what stories are shared between teams, because delivering changes from user stories that are not completed in a sprint would be disastrous.

Typically, configuration teams use a single baseline or “trunk” methodology for situations like this, where all changes from each team are delivered to trunk and pulled from trunk as their iterations complete.

In terms of traditional Software Configuration Management, your teams will have to deal with these branching and merging issues. But there are STILL other problems that can happen when you use this trunk methodology:

  1. Delivering 2 weeks worth of changes only causes isolation among teams, because teams are working in such a rapidly paced environment.
  2. It’s too difficult to pick out each user story from the codebase as it is completed because no tracking is in place.
  3. Figuring out the dependencies of those above mentioned user stories is complex.
  4. Identifying what changes came from what branch is impossible.

This “baseline pollution” is not scale-able. There are a few ways to alleviate these issues that break the baseline mold. I recommend using a development hierarchy, and manage the relationship of dependencies between branches. This could also include process steps such as integration, quality assurance and code reviews.  A separate code configuration can be used for each step and user stories could simply be drag and dropped between each team, state or branch instead of a merge.

Doing this will increase code stability. As a completed user story is pushed from one stage to the next, the particular change as well as the system as a whole reaches a higher level of maturity. Many traditional SCM tools do not easily support or surface a development hierarchy. AccuRev supports the creation of a hierarchy, gives visibility into the changes at each stage, and enables straightforward merging between stages.