Introduction
Many technology companies will, at one time or
another, find themselves contracting for the development of
proprietary software, either for incorporation into a product, or as
the product itself. Often, a software development company (or,
occasionally, a research institution) will be engaged for the
purpose of developing a program integral to the purchasing company’s
business. Generally, both purchaser and developer will be focused on
the technical needs of the purchasing company, and on the contract
price. In doing so, the parties often overlook the potential legal
issues that can arise in the event that the product that is
eventually developed does not fully meet the needs of the company
that paid for it. While this is perhaps understandable, as contracts
are entered into optimistically and the parties plan for their
contracts to be completed successfully, the reality in the software
development world is that projects do not always turn out as
planned, and in such cases, the parties must be prepared for the
consequences of this.
Recently, Clark Wilson LLP handled two large cases
where clients were engaged to develop software products for
high-tech companies. One case
involved a commercial contract for the development of an Internet
search engine and algorithm specific to the purchaser’s appraisal
business. The other involved a research project in which the client
was hired to create a program for the wireless transfer of data.
Both cases involved relatively modest contract prices, and both
projects were expected to be completed in relatively short
timeframes.
Unfortunately, the purchasers of the software were
unsatisfied with the final products and commenced legal proceedings
against the software developers, seeking millions of dollars in lost
revenue and opportunities. In both cases, the software developers
ultimately succeeded, but only after lengthy and costly litigation
which diverted energy and resources away from their businesses. Each
of these cases, however, might have been avoided had the parties sat
down before the project began to establish a realistic set of goals
and expectations. The following are some general suggestions for
avoiding litigation arising out of software development, a process
which is necessarily subject to some degree of uncertainty.
(a) Address the Parties’ Expectations Up Front
As every programmer knows, any new software program
will include its share of glitches, commonly known as "bugs". This
is particularly true of systems which are either designed to perform
new functions or to advance existing technology to new levels of
performance. A simple discussion of the anticipated difficulties
involved in the project at the outset can ensure that expectations
are kept to a realistic level, and will reduce the potential for a
dispute if difficulties are encountered down the road.
Ideally, a contract between the developer and its
client should include a provision setting out the parties’
understanding of the anticipated results, along with an
acknowledgement of the risks involved in the project. With an
experimental project, a "reasonable efforts" clause might be the
most appropriate provision, though the purchaser of the software
will in most cases prefer something more concrete. A clause
disclaiming any warranties of fitness for the purchaser’s intended
use may also be appropriate, especially in a project of an
experimental nature.
While the inclusion of such clauses will have to be
negotiated, and may not prevent a dispute if the project does not
turn out as planned, such clauses will provide crucial guidance to
the court or trier of fact in determining whether the project was
performed to the standard anticipated by the parties, and reduce the
liability risks if a dispute cannot be avoided.
(b) Liquidated Damages
Where a software developer is engaged to produce a
program that will form part of the purchaser’s ultimate product, any
delay or failure to create exactly what was contemplated by the
purchaser could lead to a claim for business loss that is extremely
difficult and expensive to prove or disprove. One way to avoid such
costly battles is to include a "liquidated damages" clause in the
contract, which limits the amount recoverable in the event of a
breach to a fixed amount, thereby capping the developer’s liability
risk. These clauses are often attacked on the basis that the level
of performance was so far below the expected level that it
constitutes a "fundamental breach", thereby negating the entire
contract, including the liquidated damages clause itself. However,
provided that the developer creates what it was hired to create,
albeit to a level below that expected by the purchaser, it will be
difficult to show a fundamental breach, and a liquidated damages
clause, if it contains a reasonable estimate of the expected
damages, will usually be enforceable.
(c) Termination Clause
While the goal in entering any contract is always
to complete the contract to the benefit of both parties, there are
occasions, especially in the context of experimental or novel
software development, where it will become apparent to one or both
parties that the project is not moving as anticipated, and that it
would be in the interests of one or both parties to simply abandon
the project altogether. Where one party holds the view that the
project cannot be completed as contemplated and the other disagrees,
disputes can arise. To protect against such instances, a termination
clause can be included in the contract, which allows for the
termination of the project in certain circumstances. The specific
circumstances that may give rise to termination will depend on the
nature of the project.
(d) Ownership of the Technology
In most commercial situations, the purchaser of the
software will become the sole owner of the technology, with the
developer retaining either severely limited rights or no rights at
all to its use. In the context of a research company or institution,
the issue of ownership may be more complicated, with the developer
retaining greater rights to further develop or exploit the
technology and the purchaser obtaining some form of exclusive or
non-exclusive license. The goals
of each party in this regard should be addressed at the outset and
included in the contract.
(e) Address Changes to the Contract in a Structured
Way
Many contracts contain a standard term stating that
any changes or modifications to the contractual duties of a party
must be agreed to in writing and signed by both parties. This is a
sensible requirement that can avoid all sorts of uncertainty, but it
is also one that is ignored more often than it is followed. In one
of the cases mentioned above, the parties agreed on several
modifications of the project, by way of exchanging certain
deliverables for new ones not included in the original contract. All
these changes were made verbally, and not surprisingly, when the
relationship between the parties broke down, there were disputes
over what had been discussed and agreed to. In many software
projects, the parties will come up with new ideas for improvement as
matters progress, and often it will make sense for both parties to
modify the deliverables originally agreed to. In such cases, it is
always a good idea to confirm the change in writing and ask for an
acknowledgement. While it is of course preferable to follow the
contractual terms as set out, a simple exchange of e-mails confirming that one item has
been modified in favour of another will also reduce uncertainty if a
dispute arises.
(f) Obtain Insurance
Companies in the business of developing software
products should maintain professional liability insurance, which
will protect against claims of non-performance. Such policies are
generally available on a "claims made" basis, which means that
whenever it appears that a dispute may arise, the insurer must be
notified (the policy should be reviewed for specific reporting
requirements). Assuming a dispute is covered by the policy, the
developer will be relieved from the cost of litigation, as the
insurer will have a duty to handle and pay for the defence of the
claim. This alone can be a significant advantage to a developer, as
the costs of litigation can be substantial.
(g) Dispute Resolution Clause
Because there is always a chance that disputes will
arise in the course of a software development project, it is
advisable for the parties to spell out in their agreement a process
for handling those disputes. Ideally the process will include a
mechanism for internally escalating disputes that cannot be resolved
by the primary contact persons. If the escalation procedure does not
solve the dispute, mandatory arbitration may be a better course of
action than relying on the Courts for two primary reasons: speed of
resolution and keeping the dispute private. The public Court system
is heavily backlogged at the moment and Court dates are typically
taking two to three years to obtain. Also, it is normally in both
parties’ interest to keep any dispute out of the public eye, which
is generally not possible with a Court proceeding.
Conclusion
The matters discussed above are a sampling of
issues that should be addressed when entering into a software
development or integration project. The list is not meant to be
exhaustive, and many other concerns may arise in a given situation.
However, these issues are sufficiently general that they should be
addressed in most, if not all, contracts, with the goal of avoiding
a serious dispute if the contract does not proceed as planned.
For companies in the business of developing
software products, it is recommended that a standard form contract
be developed which includes the terms discussed above. Even if the
form is modified through negotiation on a project-by-project basis, a standard contract
will provide a starting point and will ensure that the issues are in
the minds of the contracting parties. This, it is hoped, will reduce
the potential for costly litigation in the event the project goes
sideways. While the above suggestions will not prevent litigation in
every situation, if the issues are addressed at the time a contract
is entered into, the risk of litigation can be significantly
reduced.
Please contact any member of our Technology and
Intellectual Property Group to discuss any matters related to
software development and contractual issues.