Business Lawyers in Columbus, Ohio
By Drew Stevens - April 14, 2020 - Technology & IP
Whether you’re the developer or the client, your first major software development agreement can cover a number of key but confusing topics and provisions. To address this, our Columbus, Ohio software attorney put together this general checklist for software development agreements. While this is not meant to cover each variety of a contract that you may see for software development, we will touch on some of the major scenarios that you will encounter, no matter which party you are.
Before reading this checklist, keep in mind that any good agreement for software should be tailored for the specific work and development that is occurring for each company. Having a good lawyer develop templates can significant save time and legal fees. Just be sure that your templates are structured in a way that allow for easy modifications to core areas that may change from time to time – think fees, specifications, expenses and costs, and scope of services.
1. General Engagement, Change Orders, and Specifications
Typically, the first few sections of your software development agreement are where the scope of services and specifications are defined. These provisions will usually start with the parties agreeing to have the customer hire the developer and to provide the services as stipulated in the agreement.
A. Project Managers
When the scope of development can require months or even years, the preliminary sections may specify primary points of contact and managers for both the developer and the customer. Where on-going development work requires project-based, monthly, weekly, or even day-to-day feedback and approvals, specifying key individuals who have authority to speak for a business can eliminate questions and issues as to authorizations and decision-making.
B. Change Orders
Another key area to address is that of change orders and the procedure for processing a change order. If you like to keep change order procedures on the simpler end, a brief provision might state something like the parties will evaluate the proposed change order and the change order will only go into effect if mutually agreed upon.
A more thorough change order provision might stipulate timetables for each party, the impact on fee increases or decreases, and termination rights in the event a change order is not agreed upon. For example, once received from the customer, the developer may have a period of 10 days to either accept or reject the change order. If the change order results in a certain increase in percentage in fees or the developer rejects the change order, the customer may be able to terminate the agreement.
C. Software Development Specifications and Milestones
A great software development agreement will include a detailed list of development specifications. Rather than attempt to integrate these directly into the agreement itself, it can often be easiest to “schedule out” the specifications onto an attachment.
Depending on whether you’re the developer or the business, you may want to consider breaking the specification up into phases and tying the phases to payment milestones and deadlines. If you’re the customer, you may also want to consider inserting a time is “of the essence provision” Conversely, if you’re the developer, you may want a standard “customer delay” provision that states that you are not responsible or liable for delays or missed deadlines when such result from the customer delaying or failing to meet its obligations under the contract.
2. Software Development Specifications
As we move deeper into the software development agreement, we start to cover more specific issues inherent with software development, such as the use of third-party materials, subcontractors, use of open source software, and software documentation.
A. Third-Party Materials
We typically define third-party materials to mean software or products that are not owned by the developer or the customer. When development includes a plug-in or service, a developer will typically transfer the license agreement for that third-party service to the customer. If you’re the customer, you may want to be very clear that the cost of any third-party materials is including in your overall fees. You may even want a list of all third-party materials that are included in your development work.
Subcontracting provisions can be as brief or as complex as the parties desire. If you’re the developer, you may want carte blanche to include subcontractors as you need them. If you’re the customer, you will want to specify that the developer is still ultimately responsible for the actions (or lack of action) of the subcontractors. Depending on how heavily regulated your business is, you may also need to address background checks and access credentials for the subcontractors.
C. Open Source Software
Open source software is software that is available pursuant to an open source license, such as the GNU General Public License. Examples of open source software include Linux, the Apache HTTP Server, and osCommerce. Integrating open source software into development work can save hours, not to mention cost. If you’re the customer, you may want a list of open source software included in your work or the ability to pre-approve the use of open source software.
D. Software Documentation
While software documentation might not mean physical documents, in the scope of a good software contract, it might mean that the developer is including an operating manual, technical explanations, or just a general electronic or PDF document on how your software works or how to take certain actions with your software. If you’re the customer, you may want to stipulate in the software development agreement how much documentation is included with your development work.
3. Party Specific Obligations
As with any good legal services, your contract should be tailored for the side that you’re on. If you are the customer, there may be a necessary process or rights you may want. Same if you are the provider.
A. Customer Obligations
If you are the provider, there may be some key provisions related to your customer that you need in your software development agreement. Some software agreements will have a customer responsibilities section or attachment. This can cover a variety of areas, including a list of customer materials that the customer might need to get to the provider (think in terms of specific data or information) and a list of operating environments requirements (think specific browser or mobile platforms) that the customer needs the software to function in.
Another key customer-related provision is a delay or failure to deliver provision for the customer. If you’re the provider, you absolutely want a clause that states that you are not responsible in the event the customer is late in meeting key milestones or requirements. For example, if you’re developing an app for a customer, and the customer drags their feet for months on something critical like the overall user experience, this could significantly impact your ability to code.
B. Provider Responsibilities and Acceptance Testing
If you’re the customer, one of the number one responsibilities for the provider that you want in the software agreement is acceptance testing. An acceptance test provision will outline the procedures for the developer and the customer to review the work product of the developers and approve of a specific deliverable or the entire scope of the development project.
A standard acceptance test provision will have the provider first give notice to the customer that a deliverable is ready for review. The customer will then typically have a specific number of days, such as 05 or 10 days to review the deliverable. If the customer finds a material nonconformity with the deliverable, the provider will then have a period of time to assess and repair the issue. In the event the customer does not give notice of any material nonconformity, then acceptance of the deliverable can be deemed to have occurred.
It is important to note that you can insist on two rounds of acceptance testing – pre-delivery testing and the actual acceptance tests. Pre-delivery testing can typically require the provider to test each deliverable to ensure that it meets the applicable specifications and does not contain any harmful code, such as worms or viruses. For customers where the software will be installed on local servers, pre-delivery testing can be crucial. Also, in giving a testing assignment to a developer, note that the customer can have a clause that gives the customer the ability to be present for pre-delivery or actual acceptance testing.
4. Escrow of Source Code
Depending on the scope of the software development and the length of time of the development, the parties may want to consider a source code escrow provision. This would require the developer to execute a source code escrow agreement, and the parties would a appoint a third-party escrow agent. If certain circumstances occur, such as default or breach of the software development agreement, the source code escrow agreement may require disbursement of the source code to the customer. When the development consists of multiple long-term projects or critical IP is involved, escrow of the source code may be prudent.
5. Support, Training, and Maintenance
Sometimes, in the haste to get to the finish line to finalize an agreement, both provider and customer can easily overlook the expectations for support, training, and maintenance. These ancillary issues can be crucial around delivery time or in the first few months following delivery.
A. Software Development Warranty Period
First and foremost, does the software development agreement include a warranty? A warranty period can range from 30 days to 90 days to one year. During the warranty period, a developer might warrant that the software will continue to function in material conformity with the specifications for the software, in the software’s intended operating environment. A warranty period might also include the developer providing maintenance such as security updates or certain upgrades. Free technical support may also be included in the warranty period.
B. Software Training
When the software development is complete, will the customer require training? Training provisions for a software development agreement might include how many training sessions are included with the software development. Both parties may want to cover things like the extent of training, how many customer representatives and employees will receive training, and whether the developer charges for training sessions or a certain number of sessions are included in the development pricing.
6. Indemnities for Software Developers and Software Customers
One of the most important sections for a good software development agreement is indemnification. A typical indemnification provision will say something like one party shall defend, indemnify, and hold harmless the other party in the event of certain scenarios.
With a customer-friendly indemnification provision, the software developer would indemnify the customer in the event the developer breaches any representation, warranty, or obligation contained in the software development agreement. The indemnification provision might also contemplate developer indemnification where the developer, or the developer’s subcontractors, are negligent or grossly negligent.
A developer-friendly indemnification provision can address the above scenarios in the customer context as well as some specific customer concerns. For example, the software development might include the developer handling customer materials and datasets. A developer-friendly indemnification provision would have the customer indemnify the developer from the developer’s use of the customer materials. The developer may also want to be indemnified from the developer’s compliance with certain specifications provided by the customer.
7. Intellectual Property Rights
Which party ends up owning the intellectual property rights for the software development must be addressed in clear detail in your contract. Depending on the business model of the software developer, the intellectual property rights for the development work might only be licensed to the customer. With traditional development work though, typically the customer will hold all right, title, and interest to the work product.
To the extent the developer is including some of the developer’s own proprietary background technology in the development, be sure that such background technology is included within the scope of the intellectual property rights. If you’re the developer, you’ll want to be very clear that these rights are solely made via a license.
8. Miscellaneous Provisions
Towards the end of the software development agreement is where you will typically find what are referred to as “miscellaneous” or “boilerplate” provisions. This section will cover standard contract concepts such as independent contractor status/relationship of the parties, notices, contract modification, and severability. While all of these miscellaneous provisions can be important, there are two in particular that you’ll want to watch.
A. Assignment Clauses
An assignment clause will speak to whether a party can freely transfer the contract to an affiliate or related party. Some clauses will require mutual consent, others will just require written notice. If you’re the developer, an assignment clause with flexibility can be especially important if you think an acquisition is in the future.
B. Governing Law and Venue Clauses
These clauses will specify, in the event an issue arises, which state law applies and where a lawsuit can actually be filed. You’ll obviously want the governing law to be that of your home state and the venue where your business is. Where the developer and customer are in different states, and the parties can’t agree on the governing law and venue, consider a neutral forum.
Software Licensing Lawyer Columbus Ohio
Software development agreements can be complex contracts with a number of moving parts. Take the time to get them right the first time. Do not hesitate to contact our firm if you think we can be of assistance.