Please fill all the required fields!
The required fields are marked red.

Custom software projects fail commercially far more often than they fail technically. The usual cause is not bad code. It is an agreement that never defined what “done” meant, never allocated ownership, and never priced change.
This guide from the Business Law team at Libra Law covers the terms that decide whether a software development project ends in a working product or a dispute, for both the company commissioning the work and the developer delivering it.
A development agreement is a contract for services with a deliverable attached. That distinction matters because it shapes what warranties apply, how termination works, and what happens to work in progress.
It also affects the ownership analysis. Custom development typically involves three overlapping categories of code:
Almost every ownership dispute traces back to a contract that treated all three as one thing.
The commercial core of the agreement is the statement of work, and it should be a separate, dated schedule rather than prose buried in the main body.
A workable statement of work covers:
Vague scope is the most expensive term in a software contract. “A modern, user-friendly portal” is not a specification. It is the beginning of an argument.
Requirements will change. The question is whether change is a process or a fight.
A change control clause should define who can request changes, how the developer responds with an impact assessment on cost and schedule, who must approve, and what happens while approval is pending. Without it, the developer absorbs unpaid scope or the client receives surprise invoices, and both outcomes damage the relationship.
Acceptance criteria and testing procedure deserve their own clause. Address:
Deemed acceptance protects developers from projects that never formally end. A defect severity framework protects clients from being told a critical failure is a cosmetic issue.
Default rules will not give you what you assume. Under Canadian copyright law, the employer of an employee generally owns copyright in work created in the course of employment, but that provision does not apply to independent contractors. A development firm you engage is a contractor. Absent a written assignment, the developer generally owns the copyright in what it wrote, and the client has an implied licence to use it for the commissioned purpose.
That is usually not what the client intended, and it becomes acute during a financing or sale when a buyer asks for clean title to the product. Our article on who owns employee inventions explains the underlying default rules in more depth.
A well-drafted IP clause typically does the following:
The open-source point is not academic. A single component under a strong copyleft licence, integrated into a product the client intends to license commercially, can create obligations the client never contemplated.
Tie payment to milestones and acceptance rather than to elapsed time. Also address:
Developers should give a defined warranty period during which defects are corrected, and should resist an open-ended promise that the software will be error-free. Clients should require:
Limitation of liability is normally the most negotiated clause. Expect a cap tied to fees paid and an exclusion of indirect and consequential loss. Common carve-outs from the cap include IP infringement, breach of confidentiality, privacy breaches, and wilful misconduct.
For clients, be realistic: a developer paid $80,000 will not accept unlimited liability for your lost revenue. For developers, be realistic too: a cap set at one month of fees on a mission-critical system will not survive negotiation with a serious counterparty.
If the developer will access personal information, the agreement needs data-protection terms, not just a confidentiality clause.
Alberta’s Personal Information Protection Act governs how private-sector organizations handle personal information, and includes obligations around safeguards and breach reporting to the Office of the Information and Privacy Commissioner where there is a real risk of significant harm. Federal privacy legislation may also apply depending on the nature of the business and whether information crosses borders.
Cover, at minimum: permitted purposes, subcontractor and cloud-hosting disclosure, data location, security standards, breach notification timelines to the client, and what happens to data on termination.
Two questions clients forget to ask until the relationship sours:
Do we get the source code? If the deliverable is compiled software and the agreement is silent, you may have a licence to run it and no ability to maintain it. Specify delivery of source code, build scripts, documentation, and credentials.
What happens if the developer disappears? For business-critical systems built by a small firm, source code escrow with defined release triggers is worth the cost.
A termination and transition clause should address termination for convenience and for cause, payment for work performed, delivery of work in progress, transfer of credentials and accounts, and a defined cooperation period for handover.
Long-term embedded developers can begin to look like employees, which creates payroll, benefit, and termination exposure the client never budgeted for. State the relationship clearly, and then make the working reality match the paper. See employee vs. contractor in Alberta.
Specify Alberta law and Alberta courts, or a defined arbitration process. For projects with an offshore development partner, this clause is the difference between a manageable dispute and an unenforceable judgment.
Define scope in a schedule, price change through a process, decide ownership explicitly across all three categories of code, and tie payment to acceptance. Those four choices prevent most software development disputes.
Before you sign a development agreement, on either side of it, talk to a business lawyer at Libra Law.
This article is for general informational purposes only and does not constitute legal advice. For advice specific to your situation, consult a qualified professional.