Helix Repository Improves Performance and Eliminates Data Corruption Issues
By collecting high-level information about the nature of each change, Helix can answer such questions as who made what changes, what changes are parts of a release, and how releases differ. Especially in organizations without formal change control procedures, the history in Helix can make for after-the-fact release management. Traceability can be extended further with integrations to leading defect-tracking systems.
Why Bare Bones Made the Switch to Helix
Architecture improves overall productivity
Enables collaborative development
Near-zero administrative needs
So first we used it to support our own development and then we ended up building Helix support into BBEdit to serve our customers' needs."
Bare Bones Software, Inc. develops leading-edge power tools for the Mac. The company's passion for creating deeply functional software with a clean, effective interface has earned it devotion from Mac users worldwide.
The company's award-winning products include BBEdit, a professional HTML and text editor, and TextWrangler, a high-performance plain text editor. The company's expanding product family also includes Yojimbo, an easy-to-use information organizer, and Yojimbo for iPad, the companion app for taking Yojimbo content anywhere using an iPad. All these products are currently managed with Helix.
In the early days, Bare Bones Software used a primitive versioning system to manage its source code. The major challenges to efficient development included the use of a shared file system, time-consuming conflict resolution, and little to no collaborative development.
Architecture Improves Overall Productivity
Before adopting Helix, Bare Bones Software relied on Projector, a component of the Mac Programmers Workshop, a file-based version control system that relies on AppleShare to provide users with local and remote access to versioned files. Developers were therefore required to mount the file system to work with project files. The ensuing latency issues affected performance considerably; it could take minutes to acquire new versions of files using the Projector architecture.
"When we moved to Helix to manage our source code, the client/server architecture was a big win for us," explains Rich Siegel, founder and CEO of Bare Bones Software. The centralized repository in Helix improved performance and eliminated data corruption issues.
Helix is based on a true TCP/IP-based client/server architecture. Helix Core's repository resides on one central host, and client workspaces can be anywhere on the network — across the office or across the ocean. The architecture of Helix is key in providing efficient local workspaces and rich central metadata.
According to Siegel, overall productivity improved dramatically with Helix. "The fact that the server now tracks file state makes synchronizations very, very quick. It's especially noticeable over a slow link such as a cable-internet connection."
Helix tracks all client workspaces, as well as the evolution and content of its repository, through a central database of metadata. Because it is centrally located at the server, rather than scattered around in each client workspace, information about who has what, who is doing what, and what has been done is equally available to all users.
"We have an engineer who works at home full time, and all of us work from home on occasion, connecting via cable/internet. When someone is working remotely, they are much more productive using Helix than they could have been otherwise."
The Helix Proxy Server (P4P) speeds distributed development in situations where offshore or offsite developers are forced to work over links where bandwidth is restricted or expensive. P4P offers caching technology to provide remote users with quicker response times and real-time access to project activity and status information.
Helix Enables Collaborative Development
"Another major benefit of using Helix is that before we moved to Helix, collaborative development was virtually nonexistent," explained Siegel. "Conflict resolution used to require a lot of manual work; the way Helix manages conflict resolution really solved some major headaches for us."
Collaborative development was not formally supported by the Projector system, requiring that exclusive locks be taken on versioned files every time files were checked out. Developers had to resort to manual intervention to enable simultaneous user access to project files. Because no formal merge tool was supported, the workaround for resolving conflicts required tedious work using Projector's diffing tool.
Helix supports two forms of parallel development. First, users can work simultaneously on files in a common code line in the depot. For example, two programmers may work concurrently on the same project, including working on the same files. Second, Helix supports multiple parallel or related code lines in the depot. For example, a released product code line can co-exist with an experimental development code line. Helix tracks changes integrated between code lines and automates merging between code lines, enabling users to work in parallel and to reconcile changes between projects.
Helix provides a unique branching model called Inter-File Branching, which simplifies creation and maintenance of related code lines based on the natural hierarchies of the directory name space.
Integration with Defect Tracker Ensures Total Traceability
"With Helix, we have dramatically improved our processes by documenting user-level information," Siegel said. "And because we've linked Helix to our bug-tracking system, we more accurately track the changes we make to our software."
Helix tracks how things got the way they are, not just their current state. By collecting high-level information about the nature of each change, Helix can answer such questions as who made what changes, what changes are parts of a release, and how releases differ. Especially in organizations without formal change control procedures, the history in Helix can make for after-the-fact release management. Traceability can be extended further with integrations to leading defect-tracking systems.
Siegel explained that administration of the Helix installation is handled very informally.
"A couple of the guys on the engineering team are familiar enough with the ins and outs of running the Helix Versioning Engine that they make whatever changes, updates, and administrative work is necessary along with their regular engineering work."
The Helix architecture allows for straightforward administration. Server and client programs require no third-party or add-on software and no special hardware is required.
"We had Helix installed and configured within a couple of hours," Siegel said.
Minimal system administration involves scheduling checkpoints and backups, and monitoring resources. No downtime is needed for backups, as Helix provides continuous journaling and online checkpoints.
Integration with BBEdit
In addition to using Helix internally, there was interest on the part of Bare Bones Software's customers in integrating Helix support into BBEdit.
A Helix menu is available in the BBEdit application and all the basic Helix commands are in place. BBEdit users don't have to leave the application to reconcile or merge changes. Helix organizes the changes made to multiple files into units of work called changelists. Changelists typically represent features or bug fixes that are implemented by modifying multiple files. The BBEdit integration provides complete support for this functionality.
Users can also review file history, retrieve previous or current versions of files, and compare file contents. All of the integration functionality comes built-in with BBEdit and only requires that users designate a Helix server and workspace.
"For the way we do product development, Helix is the clear win for our software engineering, and our customers love it, too," Siegel concluded.