Perforce Software Company Profile

PERFORCE ...

The Fast Software Configuration Management System

Company Profile


[ Overview | Information | Testimonials | Downloads | Pricing | Contact | About us ]

Perforce Software's Mission

Perforce Software supplies critical software tools that solve the everyday problems of developing production software in large, complex and distributed engineering environments. Our goal is to provide value, for a fair price, from the first encounter -- more functional than freeware tools, more practical than academic solutions, and simply more usable than other commercial products.

Perforce Software's products are deployable on projects involving the collaboration of scores of engineers networked across heterogeneous platforms and geographically distributed locations, sharing tens or hundreds of thousands of files seamlessly. Our orientation towards performance, wide availability, ease of use, flexibility, and low administration is particularly attuned to engineers for whom "software management" is often an obstacle to productivity.

We run our own business according to the same goals. We're not interested in corporate weight for its own sake -- lower overhead, such as using the Internet as our distribution channel, allows us to pass on greater value to you.

We do not push a particular methodology or philosophy of software engineering. The world is moving too fast to be secure in any one model for very long. Nevertheless, our core philosophy is that with good basic tools that are fast, nimble, broadly functional, and usable wherever you need them, you will quickly discover and continuously adapt for yourself practices that work well for you. Our experience using Perforce tools as a vehicle for implementing a wide variety of policies is available to you.

Perforce Software Product Overview

Our flagship product is PERFORCE - the Fast Software Configuration Management System. PERFORCE provides all the features of leading-edge SCM, in a high performance, scalable package. From initial deployment through to active use and administration, PERFORCE works quickly. Built upon a light client/server architecture (that does not rely on shared file system technology), every piece of PERFORCE is engineered for speed. Just as importantly, PERFORCE stores and presents information about the user's workspace in ways that streamline the user interface. PERFORCE's speed is not at the expense of its function: with atomic change transactions, flexible client views, and a powerful branching model, the PERFORCE system provides a comprehensive SCM environment.

Besides licensing and supporting the PERFORCE software configuration management system, Perforce Software provides installation, consulting, and training services for PERFORCE users. Perforce has also developed and supports a freely available build tool, Jam. PERFORCE and Jam are independent tools, but work effectively together as components of a complete SCM environment.

The Software Management Problem

Software systems are becoming ever larger and more complex. As user demand increases for greater integration, intelligence and platform independence in software and as the capacity and cost-performance of hardware continues to expand this trend will accelerate. At the same time the engineering teams required to collaboratively develop, port, maintain, release and deploy these software systems grow larger. Simultaneously these teams are becoming more geographically dispersed - often spanning continents.

The current crop of commercial engineering tools for large-scale source management are just beginning to address these real and growing needs. However in many circumstances they still fall miserably short. Many users initially find some of the leading commercial SCM products quite effective - no surprise since many of these users were essentially trying to cope with stone knives and bearskins before. But down the road a few months and a release or two later another picture emerges:

These are real life scenarios at real companies. Perforce Software's own founders and developers have experienced these conditions themselves in their own careers, and based on this experience have incorporated in PERFORCE complete, well-tested, long-term fundamental solutions to the troublesome scenarios above.

Technical Product Descriptions

PERFORCE - The Fast Source Code Management System

Perforce Software's principal product, PERFORCE, is a fast, heterogeneous, distributed, client/server source code management system.
Fast Client/Server

PERFORCE is high-performance and is truly client/server. It's main component is a single server daemon program which manages access to a central repository, or "depot", on a server machine. A single simple client user interface program is invoked locally in each client workspace located anywhere on a short- or long-haul network.

Typically each engineer user has his or her own dedicated client workspace, and may also use other shared group or project client workspaces. Each client defines a view of a subset of files from the repository. The client contains physical copies of the files in its view.

The server is composed of three main sub-components: a request handler, a data manager and a file librarian. The request handler is an executive, sequencing actions to carry out client requests and managing communication with the client. The data manager implements optimized database services based on the Berkeley DB database package. It maintains a meta-database describing the status and history of versioned files in the depot and transactions against the depot. The librarian implements a highly efficient programmatic interface to RCS archive files storing versioned text files. The librarian also supports versioning of binary files.

Heterogenous Local or Wide-Area Networking

PERFORCE clients and server are loosely coupled using a simple TCP/IP-based streaming file transfer protocol tuned to mimimize network latency. PERFORCE clients exist for a heterogeneous mix of platforms (currently Unix, NT, Windows95, OS/2, and Macintosh; OpenVMS and clients are planned). PERFORCE servers run on a variety of Unix platforms and NT. Once fetched, client files are localized on the client, avoiding network access for ordinary client file activity such as editing or compiling.

Because of its network architecture, PERFORCE is unique among CM systems in its ability to function well in wide-area as well as local network environment. Whether development teams are spread across continents or simply telecommuting across the Internet or low bandwidth phone lines, PERFORCE allows all users to work as first-class clients directly connected to the central repository.

Transactional Change Model

The PERFORCE change model is based on atomic submissions of multiple files as one transactional "change". This granularity is critical to maintain code integrity. It permits meaningful relationships between source management events (change submissions) and external representations of work such as bug fix orders, ECO's or program specifications. PERFORCE tracks adds, deletes, and renames of files as well as updates.

PERFORCE provides an efficient mechanism for maintaining client views of the depot and selectively syncronizing the client workspace with new depot changes as desired.

Parallel Development and Branching

PERFORCE supports two forms of parallel development. Different clients can engage in simultaneous development of files in a common code line in the server. E.g., two programmers may work on complementary aspects of the same project, including working on the same files. Additionally, PERFORCE supports multiple parallel or related codeline branches in the server. E.g., a released product code line can co-exist with an experimental development code line. PERFORCE provides integration/merge support enabling parallel development in different clients or between different codelines to be reconciled with integration work substantially automated..

PERFORCE provides a uniquely elegant branching model called Inter-File Branching TM, that simplifies creation and maintenance of codeline branches based on the natural hierarchies of the directory name space.

Configuration Labels

PERFORCE provides the ability to store in the server a named specification of the exact configuration of file revisions on a client. This provides a mechanism for labelling a release and for reproducing the exact file configuration needed to build that release. (Note that PERFORCE does not impose any particular build technology - it simply provides a mechanism to assemble a defined set of file revisions in a client workspace.)

Reporting, Change Review, Defect Tracking

PERFORCE provides for reporting from the depot on the status of clients, file change histories, work in progress, currency of clients with respect to server code lines, and the currency of server code lines with respect to each other.

PERFORCE supports an abstraction "jobs" providing for integration with external defect tracking systems. PERFORCE maintains associations between "changes" (CM system events) and "jobs" (externally meaningful units of work, such as bug reports, ECO's or enhancement requests). PERFORCE's jobs abstraction is adequate for simple defect tracking by itself or it can be used in conjunction with more powerful independent defect trackers to support more complex environments.

PERFORCE supports a simple flexible change review mechanism, notifying designated teams via email for review and comment upon changes. This same mechanism can be used for automated uploads into defect tracking systems. (Change review available 9/96).

Portability and Ease of Administration

PERFORCE is implemented portably in C++ as a user application. No kernel support or special file system is required.

The PERFORCE server runs on any Unix platform and NT. Clients are supported on any Unix platform, NT, Windows 95, OS/2, Macintosh and QNX.

PERFORCE is entirely unencumbered of any third party product licensing. PERFORCE's own run-time licensing mechanism is simple and involves no license managers, extra daemons or ancillary software.

PERFORCE is architecturally simple and therefore easy to administer. It sits lightly in your environment.

Flexible Server API

PERFORCE supports an API to its server making customized front-ends easy to develop. PERFORCE can be embedded as a component or back-end sub-system of a larger application which requires controlled check-in/check-out or versioning of files. For example, Perforce Software's web://keeper module interfaces an Apache HTTP web server as a front end to PERFORCE's repository server, providing version-controlled web content management and publication.

Jam - A Build Engine

Jam is a portable, full-function build engine that replaces make. It runs on Unix, NT, Windows 95, OS/2, VMS. It supports an expressive language for representing dependencies top-down and can build large complex projects spread across many directories in one pass. Jam itself is small, unintrusive and very high performance. On Unix it supports parallel concurrent builds.

Jam is freely available via public FTP from ftp.perforce.com. Perforce Software provide custom installation, conversion, training and support services. Prices for consulting services are available on request.

Perforce Software's Technical Strengths and Differentiators

What sets PERFORCE apart from other solutions?

PERFORCE's unique design features position it to be able to deal with the real problems of today's software development environments.

PERFORCE is high performance

PERFORCE is a high-performance system. Experience shows that engineers will willingly use a code management tool if it materially improves their personal performance for nuts and bolts tasks, e.g., making a file ready for editing, submitting a change to the system, tracking pending work or reporting change histories. Otherwise, they avoid it like the plague. PERFORCE imposes only nominal overhead in the engineer's environment.

PERFORCE is task oriented for engineers & technicians

PERFORCE is designed and implemented to facilitate and keep track of the day to day work of engineers, technicians and their managers in creating, maintaining and releasing production level software. The interface to PERFORCE is a simple command structure, accessible directly from native command shell and easily scripted to fit a variety of environments. PERFORCE does not currently provide a GUI interface. While GUIs are suitable for some users and tasks (and great for demos!) often they are an impediment to engineering users. More important is for the SCM system to assiduously monitor and remember the state of the user's workspace. PERFORCE successfully eliminates most need for hand-written notes to remember work in progress.

PERFORCE scales from 1 to 1000 users, 100 to 100,000 files

PERFORCE is functional, efficient and cost-effective in managing collaboration from the smallest to the largest user environments. PERFORCE is simple to install and administer. It does not rely on complicated third party software such as database managers. It requires no license manager.

PERFORCE is effective in any situation requiring shared access and file distribution among more than one user. Even a single individual working on versions of software on different target platforms will find PERFORCE a boon for managing propagation of changes between platforms. The database technology in the PERFORCE server supports a high degree of concurrency among simultaneous users. PERFORCE facilitates communication about change submissions to interested users.

PERFORCE has been demonstrated to successfully handle repositories of over 100,000 files, efficiently, without special configuration.

PERFORCE is fully heterogeneous and portable

PERFORCE's true light client/server architecture is inherently heterogeneous. Server and client require only a very loose network connection that supports a simple data streaming protocol. Nearly all the intelligence of the system is in the server component. The client is a simple, light, program that funnels input and output between user and server and handles basic file operations on the client. It can often be ported to new environments in a few hours.

PERFORCE is transactional

PERFORCE provides transactional integrity and natural grouping of work. A logical change can incorporate updates to any number of files. It is never possible for the system to retain only part of a change submission. Changes can be logically associated to represent larger units of meaningful work such as bug fixes or engineering change orders.

PERFORCE supports geographic distribution of work

PERFORCE effectively supports geographic distribution of work across a WAN. Repository data is downloaded to clients via a very simple data streaming protocol. This allows even geographically remote collaborators to function directly with the central SCM repository as first-class citizens.

PERFORCE promotes client autonomy

PERFORCE's architecture allows for the greatest possible autonomy of clients. Once files have been downloaded to the client all access to those files occurs locally. Edits and builds are free to operate entirely within the client file system with no impact on or from the server. Clients can even physically detach from the network and later re-attach and bring their status with the repository up to date.

PERFORCE fosters codeline management and branching naturally

PERFORCE supports Inter-File Branching, a natural way of representing parallel source code branches within the directory name space of the repository and client file structure. This avoids the confusion of hierarchical revision numbering used in all other SCM systems.

PERFORCE is easy to administer

PERFORCE's architecture is the simplest possible client/server organization: one server program, one client program. No special kernel or file system support or privileges are required. The server is started with a simple command invocation.

PERFORCE run-time licensing is unintrusive and forgiving

PERFORCE handles run-time license limit verification without requiring a license manager or any extra daemons. The license does not limit the number of users, only the number the client workspaces. It is easy for the user to temporarily work around the license restriction if critical work requires it.

Pricing

PERFORCE user licensing is based on the number of client workspaces to be supported, not the number of concurrent users. Each PERFORCE user license is $500 and permits two client workspaces, reflecting the fact while many users need only a single workspace, certain users -- such as porting or release engineers -- need more than one. License enforcement is forgiving -- we never want to leave you stuck trying to get a critical release out the door only to find you have run out of licenses! The user license includes documentation, one year of direct (phone or email) support and software upgrades as available.

Additional support for one year is available for 20% of the current license fee ($100 per user).

Consulting services, including custom installation, conversion, and training for PERFORCE and Jam, are available. Contact us for rates.

A developers license permitting embedding or repackaging PERFORCE into another software product as a file versioning sub-system is also available by arrangement.

Perforce Software's Founders

Perforce Software's founders are Christopher Seiwald and Peter Kreps. With collectively over 35 years development, software engineering and management experience, our founders are experts in the practical issues of building large software products on multiple hardware platforms.

While at Ingres Corporation Christopher and Peter did the design and principal engineering work to create a high-performance source management system called Piccolo. Piccolo was used daily by hundreds of developers spread across three continents to develop one of the industry's top relational database system products.

After leaving Ingres, the Perforce founders went on to develop PERFORCE, an entirely new and unencumbered implementation. Christopher is also the developer of Jam. That system, currently freely available, is in use as the production build system by several major commercial software development concerns.

Perforce sold its first product in August 1995 and has been steadily gaining market and attention, including among its customers AT&T Bell Labs, Internet Profiles Corportion (I/PRO), QNX Software Systems, DataTools, WebLogic, Exoterica, Cleveland Clinic Foundation and other Fortune 500 corporations selecting PERFORCE as their CM system of choice.


Perforce Software Company Profile
Copyright 1996 Perforce Software. Comments to info@perforce.com.
Last updated: September 30, 1996