Skip to content

Instantly share code, notes, and snippets.

@jkereako
Forked from malarkey/Contract Killer 3.md
Last active January 21, 2021 20:22
Show Gist options
  • Star 5 You must be signed in to star a gist
  • Fork 2 You must be signed in to fork a gist
  • Save jkereako/929f26ec5ce4727c7bd5 to your computer and use it in GitHub Desktop.
Save jkereako/929f26ec5ce4727c7bd5 to your computer and use it in GitHub Desktop.
This is a more serious version of Contract Killer 3. Some language and provisions were taken from a lawyer-speak contract and injected here.

date

Identification of parties

This agreement is made between customer name ("you") of company name located at customer address and developer name ("us") of developer's company located at company address.

Purpose of agreement

You desire to retain us as an independent contractor to develop the name of application (the "application") described in the section, Technical specifications.

We are ready, willing and able to undertake the development of the application and agree to do so under the terms and conditions set forth in this agreement.

Technical specification

The following section briefly describes the individual technologies that will comprise the application. All of the technologies are open source and free to use and modify.

Bootstrap

We will build the application with the user interface with Bootstrap. Bootstrap is, according to their website, "the most popular HTML, CSS, and JS framework for developing responsive, mobile first projects on the web." This will minimize time spent designing the user interface since most of it is taken care of by Bootstrap. This allows us to focus on the functionality of the application.

Flask

We will build the application with Flask. Flask is a small, web application framework built in Python. We chose Flask because of its simplicity and popularity.

SQLite

Because, initially, we do not expect a large user base, we will use the SQLite database engine. A SQLite database is contained in a single text file and that file will be stored in the application's root directory. This eliminates the need for a separate database server and thus eliminates much of the usual complications involved in configuring a database.

Git

We will track revisions of the application using the source control management tool, Git.

Functional specification

Users will be able to register account through a contruct we build in Flask. The user's information will be saved in a SQLite store and information will be presented to him using Bootstrap's constructs.

Payment

As stated in the project proposal, we shall be compensated at the rate of $0.00 per hour. Unless otherwise agreed upon in writing, your maximum liability for all services performed during the term of this agreement will not exceed $0.00.

In a show of good faith, we require the first 0 hours, or $0.00 as a down payment prior to undertaking the development of the application.

Schedule

We will invoice you via billing service at every 0 days. You will pay us within 0 days of our submission of the invoice.

Changes and revisions

Additional features which we determine to be outside of the agreed upon project scope will require a separate estimate.

After delivery

User acceptance testing periods

Beginning the day after the date of delivery of the final product you will have 0 days to inspect, test and evaluate the application to determine whether the application satisfies the acceptance criteria.

You will draft a document containing the acceptance criteria and we will approve it prior to the commencement of the acceptance testing period.

If the application does not satisfy the acceptance criteria, then we will attempt to resolve errors you discover during the acceptance testing period at the project rate ($0.00).

If we do not hear from you during the acceptance testing period, then the acceptance testing period will terminate after 0 days.

Technical support

We will attempt to resolve errors you discover after the acceptance testing period for the hourly rate of $0.00.

You are under no obligation to seek technical support from us.

Legal stuff

Limitation of liability

We cannot guarantee that the final product we deliver to you will be free of errors. As such, in no event shall we be liable to you for your lost profits or special consequential damages resulting from errors in or misuse of the application, even if you have advised us of the possibility of such damages.

To reduce the chance of this catastrophe from happening we insist that you do not release the application to the public until after the application has been thoroughly tested during the acceptance testing period.

Ownership

This section describes which party owns which parts of the application. The main idea is to give you full ownership of the final product while allowing us to retain ownership of the routines and algorithms we invent along the way. Good programmers write code once and reuse that code in other projects.

Ownership of the application

After we receive your final payment, you will own the entire application, which, lawyers refer to as the "work product". In this context, the application is the combination of the User Interface elements, the source code and the database which includes all of the data stored said database.

Ownership of background technology

"Background technology" is the fundamental functional components of the application including design patterns, data structures, class structures, functions, methods, algorithms, routines and subroutines. In other words, it's the individual parts of the application.

You have an unlimited license to use the background technology for the application to operate. You cannot sell the background technology or publicly claim that it is yours without written consent from us.

Background technology does not include any assets or technology you provide to us. You still retain ownership.

Other rights

We reserve the right to display screen shots of the public-facing portion of the application for our portfolio. We reserve the right to link to the public-facing portion your application. We also reserve the right to write about the application on websites, in magazine articles and in books. We guarantee that we will never release the source code nor divulge any confidential information to any third party.

This agreement is non-transferable

Just like a parking ticket, you cannot transfer this agreement to anyone else without our permission. This agreement stays in place and need not be renewed. If for some reason any part of this agreement becomes invalid or unenforceable, the remaining parts of it remain in place.

Although the language of this agreement is simple, this is still a legal document under the jurisdiction of United States courts.

The dotted line

By signing this document, each party guarantees they are authorized to bind their respective organizations to this agreement.

@jkereako
Copy link
Author

jkereako commented Feb 24, 2015

About this version

This contract is intended for developers where as the unadulterated version of Contract Killer 3 is intended for designers. I put a sample Flask application in this agreement to provide an idea of how the agreement looks with content.

I edited to the original document so many times and removed nearly all of the playful text that I'm certain Andy Clarke would not consider this a killer contract.

Sections I added

  • Identification of parties and purpose of agreement. Clearly define whom the agreement is between and what the agreement is for. I think Contract Killer 3 failed at providing this.

  • Technical and functional specification. Describe the application you are building and how it works. Generally, these are appendixes to the actual agreement, but I put them both in the contract body so 1) they cannot be ignored and 2) to keep you brief in writing them.

    Do not voluntarily spend hours detailing the minutia of the application. However, if it is a client request, then feel free because all client requests are billable. The customer will not understand nor care about the intricacies of the app and you will change your mind or find a limitation which prevents you from implementing a feature that has been documented in the technical specification.

  • User acceptance testing period. Make it clear that the customer has time to review the application you built for him. I consider this period the "warranty period". If the customer finds bugs in the application you delivered to him, you ought to fix them free of charge at the project rate.

  • Developer retains ownership of background technology. This ensures that you can reuse the routines you used in this project. Technically, Contract Killer 3 has this section (4th paragraph), but it is not clear.

    UPDATE: I want to note that I nearly lost a client because of this clause. The client's attorney (it was first time I ever dealt with a lawyer as a freelancer) thought I meant that I retain ownership of the entire app, including the proprietary software that the client had developed—my task was to develop an authenticated Rails app to access and execute a private Ruby gem written by the client. What I meant was, if I develop (and I did) a generic routine such as user policy manager or a CSV parser, I want the right to use those routines in other applications and to publish them on GitHub. Even after I explained this the client's lawyer still was not satisfied, so I axed the whole section.

    UPDATE: I originally wrote that all bugs found in the user acceptance period ought to be fixed free of charge. That was a mistake. The same client I wrote about in the update above used my naivety to their advantage and got an extra 15 hours of free development time from me. The saying "nice guy finish last" applies here. Always bill the client.

The intended goal

The Elements of Style was the inspiration behind the edits. I wanted an agreement which was readable to folks who are not lawyers.

The only gripe I have about Contract Killer 3 is there is text in that agreement which adds no value. All it did was create more work for the reader. For example:

We’ll always do our best to fulfil your needs and meet your expectations, but it’s important to have things written down so that we both know what’s what, who should do what and when, and what will happen if something goes wrong.

That is 1 sentence and it does not provide any detail on the terms of the contract. To me, his attempts at setting a playful tone comes off as insecurity. Either because he's afraid to talk about legal requirements or he doesn't know how, so he puts in filler.

On the other hand, adding jokes which are actually funny is a good idea. Everyone enjoys laughing. But set the limit at 2 jokes. If you go overboard then you'll come off as attention starved and you may not be taken seriously.

@samlopez-dev
Copy link

Awesome, thanks!

@CRTX
Copy link

CRTX commented Nov 30, 2016

What in the world do you mean by "background technology". I'm a developer and even I'm not sure what this means. Specific examples to explain would help both the developer and client understand this contract.

@jkereako
Copy link
Author

jkereako commented Dec 3, 2016

@CRTX

It's a legal term. On this page is a description of background technology.

I understand background technology as the basic parts of the product you build for a client. So things like architectural designs, algorithms and so forth. This clause states that you retain ownership of the background technology so you can use it elsewhere.

However, to your point, I was never convinced this clause adds any value because "background technology" is an esoteric term only understood by IP lawyers. As you can see from my update, this particular clause caused a problem for a slow-paying client of mine.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment