Bare Bones Software
We tried Perforce and really liked it - so first we used it to support our own development and then we ended up building Perforce support into BBEdit to serve our customers' needs."
Founder and CEO, Bare Bones Software
Rich Siegel is the Founder and CEO of Bare Bones Software, North Chelmsford, Mass.
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 Perforce.
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 Perforce, 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 Perforce 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. Perforce's centralized repository improved performance and eliminated data corruption issues.
Perforce is based on a true TCP/IP-based client/server architecture. The Perforce Server's repository resides on one central host, and client workspaces can be anywhere on the network -- across the office or across the ocean. Perforce's architecture is key in providing efficient local workspaces and rich central metadata.
According to Siegel overall productivity improved dramatically with Perforce. "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."
Perforce 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 Perforce than they could have been otherwise."
The Perforce Proxy (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.
Perforce Enables Collaborative Development
"Another major benefit of using Perforce is that before we moved to Perforce, collaborative development was virtually nonexistent," explained Siegel. "Conflict resolution used to require a lot of manual work; the way Perforce 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.
Perforce 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, Perforce 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. Perforce tracks changes integrated between code lines and automates merging between code lines, enabling users to work in parallel and to reconcile changes between projects.
Perforce provides a unique branching model called Inter-File Branching, that 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 Perforce, we have dramatically improved our processes by documenting user level information," Siegel said. "And, because we've linked Perforce to our bug tracking system we more accurately track the changes we make to our software."
Perforce tracks how things got the way they are, not just their current state. By collecting high-level information about the nature of each change, Perforce 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, Perforce's history can make for after-the-fact release management. Perforce's traceability can be extended further with integrations to leading defect tracking systems.
Siegel explained that administration of the Perforce 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 Perforce server that they make whatever changes, updates and administrative work is necessary along with their regular engineering work."
The Perforce 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 Perforce 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 Perforce provides continuous journaling and online checkpoints.
Integration with BBEdit
In addition to using Perforce internally, there was interest on the part of Bare Bones Software's customers in integrating Perforce support into BBEdit.
A Perforce menu is available in the BBEdit application and all the basic Perforce commands are in place. BBEdit users don't have to leave the application to reconcile or merge changes. Perforce 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 Perforce server and workspace.
"For the way we do product development, Perforce is the clear win for our software engineering, and our customers love it, too," Siegel concluded.