Skip to content

Instantly share code, notes, and snippets.

@jpstacey
Forked from manarth/drupal killer contract.md
Last active December 26, 2015 13:09
Show Gist options
  • Save jpstacey/7156361 to your computer and use it in GitHub Desktop.
Save jpstacey/7156361 to your computer and use it in GitHub Desktop.
Contract between a freelance Drupal developer and another party

Freelance Technical Consultancy Contract

Between me: [my name]
and you: [customer name]

Summary

I’ll always do my best to fulfil your needs and meet your expectations, but it’s important to have things written down so that everyone knows what’s what, who should do what and when, and what will happen if something goes wrong.

In this contract you won’t find any complicated legal terms or long passages of unreadable text. I’ve no desire to trick you into signing something that you might later regret. What I do want is what’s best for both parties, now and in the future.

So, in short:

  • You ([customer name])
  • are hiring me ([my name])
  • to provide IT consultancy

What that involves will be explained in more detail below.

What do both parties agree to do?

You: You have the authority to enter into this contract on behalf of yourself, your company or your organisation. You’ll give me everything I need to complete the project, when required, and in the format I need it. You’ll review my work, provide feedback and approval in a timely manner too. Deadlines work two ways, so you’ll also be bound by dates we set together. You also agree to stick to the payment schedule set out at the end of this contract.

Me: I have the experience and ability to do everything I’ve agreed with you and I’ll do it all in a professional and timely manner. I’ll endeavour to meet every deadline that’s set and on top of that I’ll maintain the confidentiality of everything you give me. If the scope of what’s required extends beyond what I originally agreed with you, I will inform you in good time and attempt where possible to accommodate the new scope. This might entail extra costs, which I’ll agree with you in advance.

What will be delivered and how?

Deliverables

I create electronic works, and use a source-control repository such as GitHub to store them. I usually give you access to the repository throughout the development, so that at any point you can see how work is progressing.

Where I have given you access to the repository, that’s usually enough to "deliver" the work. I’m happy to deliver the work on CD, DVD, or USB memory stick at no extra cost - just ask.

If you’re using my source control repository, I will keep it open and available to you for a month after you’ve accepted the project, to give you plenty of time to create an independent copy.

Technical development

I primarily build things with Drupal, and I also use many other components (libraries, applications, APIs and other tools) in my work.

I will strive to make sure my work follows best practice for the appropriate language or framework, commonly-accepted approaches, integrates gracefully with the components I’m using, and is well-documented.

Special note on Drupal modules

Where possible and appropriate, I will use (and configure) Drupal modules which are already available on the drupal.org website, rather than create new modules. I do this because an existing Drupal module has usually gone through more extensive testing, real-world production use, and is more widely known by developers, than a new module could be. This is also true going forwards: existing modules are tested and fixed by the community on an ongoing basis.

The code for Drupal, and for the third-party modules available on drupal.org, is licensed under the GNU Public Licence version 2 (GPLv2). How this licensing affects the code I write for you is something you might wish to take legal advice about. However, I recommend and will assume that:

  • If I’m building a website for you, and I decide to build a Drupal module as part of that, I will consider myself free to release that module with the same GPLv2 licence and publish that module on Drupal.org. Releasing a module to the public gives it better visibility, which means more developers to use, test, and improve the module.
  • If I’m building a module that’s very specific to your system, references your internal APIs, or is in some other way unsuitable for general release, I would probably decide not to release it.
  • If you feel that a module I’m developing must be exclusively licenced to you and no-one else, you need to agree this with me first. In that situation, I don’t guarantee that the GPLv2 will not apply to such code, as I’m not a lawyer. However, I accept that I’m working as your agent, and that you might not feel that the code is being "distributed" to you in such a way that the GPLv2 applies; with respect for that feeling in mind, I might agree to waive my right to the code and delete any copies in my possession once development is finished; but this must be discussed in advance.

Text content

I’m not responsible for sourcing, creating or inputting any textual copy or images. If you’d like me to do so, I can provide a separate estimate for that.

Photographs

You should supply graphic files in an editable, vector digital format. You should supply photographs in a high resolution digital format. If you choose to buy stock photographs, I can suggest stock libraries. If you’d like me to source photographs for you, I can provide a separate estimate for that.

HTML, CSS and Javascript

Some projects will require front-end code, including HTML, CSS and Javascript. I deliver front-end code developed from XHTML or HTML5 markup, CSS2.1+3 stylesheets for styling, and unobtrusive Javascript for feature detection, poly-fills and behaviours.

My front-end code should work well with the themes that are bundled with Drupal core. My front-end code will often function and appear as expected with custom themes without any further work. If you’d like me to make sure the front-end code works with a particular theme, I can provide a separate estimate for that.

If the CSS is already in place when the project commences, I will do my best, but obviously cannot guarantee the cross-browser behaviour of other developers' code. If you want my CSS to work in combination with legacy CSS, in line with my affirmations above, then I can provide a separate estimate for the extra work that might be required.

Browser testing

Browser testing no longer means attempting to make a website look the same in browsers of different capabilities or on devices with different size screens. It does mean ensuring that a person’s experience of a design should be appropriate to the capabilities of a browser or device.

Desktop browser testing

I test my work in current versions of major desktop browsers including those made by:

  • Google (Chrome)
  • Microsoft (Internet Explorer)
  • and Mozilla Firefox

Non-current versions will at best receive a functional, reasonable, but possibly different experience. This includes Microsoft Internet Explorer 9 for Windows users. Apple-specific browsers like Safari will be catered for via Google Chrome testing - they both use the same rendering engine - but if you want more thorough testing on Safari then I can provide an estimate for that.

I reserve the right to implement a simplified design (such as a single column layout) for older browsers, but regardless I won’t test in other older browsers unless there’s a clear agreement to do otherwise. If you need an enhanced design for an older browser, I can provide a separate estimate for that.

Mobile browser testing

Many websites will display and function properly on small screen devices without any extra development effort, and I don’t specifically test on mobile browsers.

A mobile-specific theme or responsive layout can give a much better user-experience on a mobile device. The time to develop and test this can often be significant, so I don’t include this in my work, but I can provide a separate estimate for this.

If I do agree to build and test for mobile devices, I recommend that testing should prioritize Safari and Android browsers. I currently don’t test Blackberry OS or Blackberry QNX, Opera Mobile, Symbian or other mobile browsers. If you need me to test using these, I can provide a separate estimate for that.

Technical support

I’m not a website hosting company so I don’t offer support for website hosting, email or other services relating to hosting.

You may already have professional hosting and you might even manage that hosting in-house: if you do, great; if you don’t, I can help.

On request and at my hourly rate, I can set up an account for you with your preferred hosting provider or one of the hosting providers I work with. I can set up your site on a server, plus any statistics software such as Google Analytics, and I can provide a separate estimate for that.

I don’t guarantee that your server is in any way security-hardened, although I will ensure basic security good practice. To this end, I strongly recommend that a professional system administrator check the security of your server, possibly including penetration tests. Going forwards, any updates to, and management of, your server(s) and service(s) will be up to you.

Price, office hours and scope

Fixed-price contract: summary of costs

[fill in cost information here]

Time and materials contract: summary of rates

The rates I will charge for this work will be:

  • Hourly rate: [hourly rate], rounded up to the nearest [hourly roundup]
  • Daily rate: [daily rate], rounded up to the nearest [daily roundup].

I provide discounts as follows:

[standard discounts]

[other discounts]

Office hours

Unless otherwise agreed, my office hours are [office hours].

Within those hours, we'll agree estimated hours that you would like me to work. If for any reason I'm unable to work those hours, I'll endeavour to give you good notice of any such circumstances.

Availability, holiday and illness

As I can potentially work for more than one client, I might not be available on days, or during specific hours, when I'm not strictly working for you. I'll try to answer any communications from you as quickly as possible, but unless it's an emergency then you might not receive a response until I'm next available to work for you.

I will advise you of any vacations I wish to take and give you good notice of the dates. If an emergency (e.g. illness) means I'm unable to work for you on a particular day, then I will inform you as soon as I can. If it's possible for me to work through any illness (keeping a project moving, but potentially e.g. working at a temporarily reduced rate) then I'll advise you of those circumstances.

Any reduction in my time worked for you for the above reasons will of course be reflected in the hours I charge, and I will endeavour to provide sufficiently detailed breakdowns for you on any invoices, so you can keep track of the reasons for any reductions in cost.

Changes and revisions

I know from experience that fixed-price and fixed-scope contracts are rarely beneficial to anyone. Ultimately, the time required to fulfil the scope is very likely to be less than or more than what was quoted; either way, someone loses out. To ensure a fair and worthwhile business relationship, I will work flexibly and transparently with you as follows.

[Pick one of the two below]

[Fixed cost contracts] I don’t want to limit your ability to change your mind. The price at the beginning of this contract is based on the features that you’ve told me you want to achieve, but I’m happy to be flexible. If you want to change your mind or add anything new, that won’t be a problem as I’ll provide a separate estimate for that.

[Time and materials] I will work at an hourly rate or daily rate, detailed elsewhere in this contract. I will strive to keep you well informed of the time taken throughout the duration I am working for you, and keep you updated if any task looks like it’s going to take longer than expected.

Contractual and liability warnings

Limitations of liability

I can’t guarantee that our work will be error-free, so I can’t be liable to you or any third-party for damages, including but not limited to:

  • lost profits
  • lost savings
  • or other incidental, consequential or special damages

even if you’ve advised me of them in advance.

Finally, if any provision of this contract shall be unlawful, void, or for any reason unenforceable, then that provision shall be deemed severable from this contract and shall not affect the validity and enforceability of any remaining provisions.

Copyrights

First, you guarantee that all elements of text, images or other artwork you provide are either owned by yourselves, or that you’ve permission to use them.

Then, when your final payment has cleared, copyright will be automatically assigned as follows:

  • Some components may already be subject to other copyright or licences, such as GPLv2 (see earlier.)
  • You’ll own the visual elements that I create for this project. We’ll give you source files and finished files and you should keep them somewhere safe as we’re not required to keep a copy. You own all elements of text, images and data you provided, unless someone else owns them.
  • We’ll own the unique combination of these elements that constitutes a complete design and we’ll license that you, exclusively and in perpetuity for this project only, unless we agree otherwise. I can provide a separate estimate for that.
  • I love to show off my work and share what I’ve learned with other people, so I reserve the right, with your permission, to display and link to your project as part of my portfolio and to write about it on websites, in magazine articles and in books.

Payments

We’re sure you understand how important it is as a small business that you pay the invoices that I send you promptly. As we’re also sure you’ll want to stay friends, you agree to stick tight to the following payment schedule.

Invoices will be raised at agreed points during the contract, usually:

[Pick one of the two below]

[Fixed-cost contracts]

  • just before the start of the project,
  • when the project is delivered to you for testing (at the start of "UAT" - User Acceptance Testing),
  • when the issues raised during UAT have been addressed ("Acceptance").

[Time and materials]

  • at the end of each month.

Payment is due within 30 calendar days of the invoice date. I ask that you pay direct to my bank account via BACS or other direct electronic payment (and if you can’t make electronic payments, you agree that with me in advance). I will provide my bank details in any invoice I send.

If I don’t hear from you within seven calendar days of your receipt of the invoice, will assume that the invoice is correct.

[Pick one of the two below]

[VAT] VAT is not included in the quotes or estimates I give, and will be added to the invoice if it’s subject to VAT.

[No VAT] I am not liable for VAT, so it will not be included in any quotes, estimates or invoices.

[Other contractual details]

The small print

You can’t transfer this contract to anyone else without my permission. This contract stays in place and need not be renewed. If for some reason one part of this contract becomes invalid or unenforceable, the remaining parts of it remain in place.

Although its language is simple, the intentions of this contract are serious and it consists a legal document under exclusive jurisdiction of English courts.

The dotted line

The signatories below confirm that they have read this contract and that they understand and agree to them. All parties should sign a copy and keep it for their records.

Signed for and on behalf of [my name]

Signed:


Dated:


Signed for and on behalf of [customer name] by

Print your name:


Signed:


Dated:


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