Happy 2003 to everyone, although I can't believe I'm saying this because it seems as though I only recently recovered from the 2000/millennium celebrations. Deja vu? or did someone just say that? ... but as usual we digress ....
What do you call a company with 2,000 customers, 80,000 users ... and no sales force? Well personally I'd call them "lucky rascals" but in this case luck is much less of a factor than the fact that they have a killer product that literally sells itself by word-of-mouth.
The company in question is called Perforce Software Inc., and the tool also known as Perforce (which makes life simple until they introduce a second product) is an incredibly versatile document/file control system that is applicable to software, hardware, and mixed hardware/embedded software design teams.
RCS to CVS to SCM
Way back in the days of yore when I was but a young lad something called the Revision Control System (RCS) came out of the UNIX world. This little rapscallion was designed to help users manage multiple revisions of files by automating the storing, retrieval, logging, identification, and merging of different revisions of documents. Primarily targeted at text-based files that are revised frequently such as software source code RCS was better than a poke in the eye with a sharp stick, but it had a number of limitations, especially the fact that it was not well suited for concurrent design practices involving multiple users.
Sometime around the latter half of the 1980s, an open source version control system called the Current Version System (CVS) was layered on top of RCS. Still around today, CVS is much better than RCS at handling multiple users involved in concurrent software design projects, but it quickly runs out of steam as the projects increase in size.
These days there are perhaps 30 to 40 vendors of Software Configuration Management (SCM) systems that provide a super-set of the capabilities offered by the early version control tools. Most of these systems work really well when you're dealing with a few hundred megabytes of data and say 10 to 20 users. However, when you start to talk about 10s or even 100s of gigabytes of data and 100s of users located in multiple geographically disparate locations, many of these systems become flaky around the edges and start to fall apart.
This is where the Perforce folks claim they take the high ground they say that in environments with 100s of users and 100s of gigabytes of data and say 100K changes logged in the system, it still responds as fast as it did on "day one." Even more exciting (at least to a worry-wart like myself) is that most high-end SCM tools require an expert system administrator to keep "tweaking" and balancing the server and database. By comparison, with Perforce you just load it and use it ... I love it like a brother already!
Three key architectural features
1) Change-based Architecture: With many SCM systems you start off by needing to know the name of the file in which you are interested, and you then request a list of the changes associated with that file. By comparison, Perforce uses a change-based architecture. Every time someone checks a file or a group of files into the database, Perforce generates a unique change (log) number. Thereafter you can obtain lists and details of modifications referenced by change numbers (there are whitepapers on the Perforce website that explain the power of this architecture in way more detail than I can go into here).
2) Atomic Transactions: This concept refers to the ability for groups of files to be tracked together. Even though each file has its own revision history, this history is typically useful only in the context of a set of related files. As a simple example, with most SCM systems, if you wish to input say 20 files, then you have to submit each one individually. By comparison, in the case of Perforce, you can submit a group of files together, and thereafter this atomic transaction is persistent and guaranteed.
3) Inter-file branching: This is where things start to get really cool. When you're working on a design (either hardware or software), you often wish to play "what-if" games and explore different design scenarios. In this case you typically wish to take a copy of a group of files (a separate copy for each evaluation of course) and work with that copy. The problem is that if you perform a large number of evaluations, each involving a number of files, and you take a hard copy of each file, the amount of data flying around the system can quickly become overwhelming.
The way Perforce handles this is really rather clever. When you make a copy of a group of files, Perforce makes a "lazy copy" of each file, which means that it creates a place-holder, but doesn't actually make a physical copy until necessary. For example, if you now decide to change one of the copied files, Perforce will automatically (and transparently) complete a hard copy of that file from the original. And of course Perforce also handles the situation when someone changes the original file from which your "lazy copy" was derived. And it handles copies of copies. And it allows you to easily fold changes in a sibling copy "back up the tree" into the parent copy (or changes in the parent copy "downstream" into sibling copies). And the list goes on ...
HW versus SW design environments
In the software world, you are generally working with ASCII (textual) files and you typically take a "Branch and Merge" approach in which you decide to merge changes from a sibling branch back into the parent copy of the code (this is complicated by the fact that you may have multiple folks working on different portions of the same files at the same time, but SCM systems are geared up to this).
By comparison, in the hardware world you often have binary objects (libraries, databases, etc.). You can't merge binary files (at least not easily) so you typically adopt a "Branch and Replace" technique. In addition to supporting all types of files, Perforce seamlessly supports both the "Branch and Merge" and "Branch and Replace" philosophies.
The end result is that, unlike conventional SCM tools that are really applicable solely to software-only environments, Perforce is suitable for a wide variety of applications, ranging from software, hardware, and mixed hardware/embedded software designs to games creation projects (which can involve large numbers of folks and humongous amounts, of code, graphics, sounds, etc.) and even corporate website management and control.
Painless to use
I've been in design environments where the document control system was so arcane and painful to use that the engineers "worked around it" (which is a polite way of saying that they by-passed it altogether until close to the end of the project).
I was fortunate to receive a live online demo of Perforce, and I have to say that I was impressed. First of all, Perforce runs on a huge variety of UNIX, Linux, Windows, Mac, and other platforms, so you can work in whatever environment is most familiar.
Perforce can be controlled from the command line which makes it idea for all of us techno-dweebs but there are also nice Windows and web-based GUIs available for those that want them.
Cool beans stuff
The first cool thing (at least as far as I'm concerned, because I spend a large portion of my life hunting for different versions of Word documents that I remember creating ages ago) is that there's a Perforce plug-in for Microsoft Office called P4OFC. This plug-in adds a simple "Perforce" menu to Microsoft Office applications and allows documents created using Microsoft Word, Excel, and PowerPoint to be easily stored and versioned.
And there's also a Cadence-Perforce Integration (CDSP4) that connects Cadence's DFII Layout and Schematic to Perforce, thereby allowing Perforce's high performance SCM to be used with Cadence's hardware design databases.
But the really cool thing is that anyone can download an evaluation copy of Perforce. They say "You may use software downloaded from Perforce for any purpose you want and for as long as you like," which can't be a bad deal whichever way you look at it. This evaluation copy supports only two users and two client workspaces (but what do you want for nothing, your money back? ) Furthermore, the Perforce website also states that that they are happy to issue a free evaluation license to remove these user/workspace restrictions for a limited time.
Even better, Perforce offer free technical support. "Why are they so generous?" I hear you cry. Well there's reason behind their madness, because Steve Balbo from Perforce told me that six out of every ten people who download an evaluation version end up buying the software ... which is of course why they now have so many users.
Personally I don't tend to get too excited about documentation control systems (I like to think that I have a life), but I was pretty impressed by this one. I'm also going to take advantage of the free download to finally try to get a grip on the thousands of documents and versions and revisions and transmogrifications thereof that are currently running wild and free throughout my computer's file system. Call me "old-fashioned" if you will, but anything that makes my life easier certainly deserves an official "Cool Beans" from me. Until next time, have a good one!
Clive (Max) Maxfield is president of TechBites Interactive Inc., a marketing consultancy firm specializing in high-tech. Author of Bebop to the Boolean Boogie (An Unconventional Guide to Electronics) and co-author of EDA: Where Electronics Begins, Max was once referred to as a "semiconductor design expert" by someone famous who wasn't prompted, coerced, or remunerated in any way.