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:
-
the Singapore development team finds they can't use
the corporate configuration management system effectively
because they don't have high-speed access to the
the central office's local file system...
-
the SCM system so bogs down the local net with constant
traffic that engineers circumvent the system, making private
local copies of source just to get builds done...
-
the top-down life-cycle process model laboriously
constructed nine months ago after intense effort
by the QA department, and scrupulously enforced by the
corporate CM system is now hopelessly
out of whack because business/corporate/industry conditions
have changed. It will take several months to re-program
the model... not to worry, any process model is better than
none...
-
the company suddenly decides the desktop platform of choice
is now NT instead of Windows. Whoops, the CM system
they were using isn't available on NT. Ah, well... just take
copies of the entire source tree, install on each desktop machine,
let the programmers do their thing, worry about integration
into the main code line later... much, much later...
-
the company boldly accelerates a product release forward
to meet a window of opportunity (or necessity) in the
market place, doubling the development team from 8 to
16. OK, up to now integrations went reasonably smoothly,
everyone lined up in order and the last guy had the most
problems, too bad... Now integration conflicts suddenly
quadruple. One day isn't enough time to finish all the
integrations: engineers, testers, release managers,
customers are all twiddling thumbs waiting....
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