Though I've found many threads related to problems with the business side of programming where people replied that a better/clearer contract could have avoided the problem, I haven't been able to find anything regarding how to write a good contract (or have one written). For a great many jobs 95% of the contract would be boilerplate text, so a sample contract form would be great to have. Does anyone happen to have a sample custom programming contract that they would share?
Thanks for your time.

Ray B. Morris
support@webmastersguide.com

Considered by holli - not perl-related, food for the reaper.
Unconsidered by castaway - Keep/Edit/Delete: 6/0/6 - Looks like a Meditation to me

Replies are listed 'Best First'.
Re: Custom perl programming contract
by castaway (Parson) on Feb 17, 2005 at 12:50 UTC
    While gellyfish is no doubt correct, I'm going to throw one in anyway. I distilled it from various sources, including a company that does mostly contract related work (that my sister works for).. Feel free to pick holes..

    <Contract Template> Date: <current date> Name/Address: <customer> Project: <short description> Details: <long description> Estimated length: <X days> Completion by: <date> Price: <$X> Requirements: <eg access to source, persons> Customer <X> hereafter referred to as 'The customer' .. Standard business conditions: 1. Completed work produced in the project remains the property of the +customer, unless otherwise negoiated. 1a. The use of other, freely available software modules is allowed (th +ese will not be the property of the customer, but remain the property + of the community). 1b. Any existing or newly created generic reusable software modules wi +ll remain the property of the contractor. 2. Estimated time and price include the following: 2a. Creation of software to fulfill the project goals. 2b. Documentation of software, both user and admin manuals, unless sta +ted otherwise. 2c. Clearly defined milestones (project tasks), and up-to-date informa +tionabout the progress of each task. 2d. Meeting/Discussion time to clarify project goals. Using Instant Me +ssaging / EMail methods. Email and IM exchanges will be retained for +reference, with 'meeting minutes' summary docments created as appropr +iate. 2e. Installation and user support for 14 days after completion of proj +ect. 2f. Project testing in an environment as near to the deployment enviro +nment as possible. Test results will be available. 2g. Defect fixing after installation. (Subject to defect being confirm +ed as such by the development team) 3. Estimates do *not* include: 3a. Change requests - wanted features which are outside the scope of t +he original project specification, after the specification has been a +greed upon and signed. These will be evaluated and added as appendice +s to the specification, with new deadline and price estimates. 3b. Cost for changes: See hourly/daily rates. 4. Requirements: 4a. Appropriate access to any existing solution with which the project + solution must work. 4b. Access to persons needed to clarify any goals etc. Delays in this access will result in delays to the completion of the p +roject. 4c. Project specification detailing exactly which deliverables will re +sult from the project and what they will do. 4c. Project specification must be agreed and signed by the customer be +fore development can commence. 4d. Specific details to be set down in the Specification, of the envir +onment in which the project will be used. (To ease local testing). #5. We will not be liable for any disruption of work or loss of income + due to #the use or installation of the completed solution. #5a. The customer will help in defining tests to prove the solution wo +rks as #requested, and will sign off the project upon completion. 5. Tests, work completion document 5a. A set of tests to prove the software works as required will be def +ined. 5b. The customer will help design and approve the test suite. 5c. When the software has been tested according to the predefined test +s, and the results are deamed a pass, a document will be signed by th +e customer to acknowledge that the work is complete and functional. 6. Current specifics: 6a. Specification documentation will be delivered in MS Word format. 6b. User documentation will be delivered as HTML. 6c. Milestone reporting: Depends on project length, at least daily. 6d. Response time to problems with the installed solution: 'Urgent' pr +oblems occuring within 14 days of installation, 2 hours, daytimes(8:0 +0-22:00 CET timezone). 6e. Problems occuring after 14 days will be treated as change requests +, see above.

    I should probably also note that it's only seen service once so far.. No doubt others have more experience.

    C.

Re: Custom perl programming contract
by g0n (Priest) on Feb 17, 2005 at 15:15 UTC
    I'll reproduce here the comment I /msg'd to raymor, when I thought his node might get reaped.

    In the UK, the PCG (Professional Contractors Group) makes draft contracts available to members. I suspect there will be a local equivalent wherever you may be.

    c.

    VGhpcyBtZXNzYWdlIGludGVudGlvbmFsbHkgcG9pbnRsZXNz
Re: Custom perl programming contract
by gellyfish (Monsignor) on Feb 17, 2005 at 11:59 UTC

    This is really not an appropriate place to be asking this, firstly the same would apply whether you were contracting someone to do development in Perl, RPG/III, Clipper, COBOL or Occam. Secondly taking what is essentially legal advice off a bunch of (relatively) anonymous geeks on some random web-forum is pretty certainly not a sensible way to run a business. A contract is a legal document, legal documents are created by lawyers. If you need a lawyer, hire a lawyer, or if you really think you might be able to get this professional help for free then at the very least ask somewhere where there is at least a slim chance that you might get a response from someone who has been to law school.

    See for instance http://www.legalknowhow.com/FineHummel/webcontract.htm for some reasons why you shouldn't want our help.

    /J\

      Perhaps I didn't phrase my question well. From reading posts by others, this seemed to be an issue of great interest to most professional Perl programmers. From reading those same posts most monks are unable/unwilling to hire a lawyer for each project.

      One thing has me curious. When many others, including merlyn, have posted many times about problems they had because they failed to obtain an adequate contract for a Perl programming (or Perl book writing) project, no one said anything about it not being Perl related, marked it "considered", or talked about it being deleted. Indeed there were a couple of different very active threads here when one of our most beloved members, who has contributed much to Perl Monks and CPAN over the years had to stop contributing modules or posting code because he signed a bad contract. I'm thinking also about merlyn's post where he lost many thousands of dollars because he failed to have an adequate contract, which appeared to be of much interest to many monks.

      That just leaves me asking what exacly the criteria are. Would these previous posts be "Perl related" because they discussed a problem, rather than an attempt at a solution? Is reporting problems more valuable than seeking solutions? Or does the name of the person posting determine whether or not it's "Perl related", such that of two posts on the same topic one may be "Perl related" because it was posted by a recognizable nick, while if the same post was made by a less recognizable nick it's no longer "Perl related"?

      Agreed, many of the same issues apply when programming in other languages. Some of the contract issues are unique to perl, such as the copyright clauses of a contract for a project that includes/makes use of modules or libraries under the Perl Artistic License. Similarly, any of the algorithms discussed on this site could also be coded in some other language, but here you'll find the best ways to implement them in Perl. Perhaps if this is not an appropriate place to discuss the business and legal considerations faced by every professional Perl programmer someone might be able to suggest what an appropriate forum WOULD be?

      Lastly, I must ask those who feel that the legal and contractual issues that apply to every professional Perl project are not Perl related if I were to hire a IP lawyer to write an excellent Perl programming contract form that could be used by any monk who wished to use it, would that be Perl related?

      Ray B. Morris
      support@bettercgi.com

        I think you are missing the point here, sure there may or may not be some merit in discussing contractual issues as they relate to those who describe themselves as "Perl programmers" (and I am sure there are as many opinions on this as there subscribers to perlmonks). However you specifically asked for something substantive (i.e. a boilerplate contract) and this is something that you really do need to engage a lawyer to get help with rather than ask here, even if your red herring about the IP and copyright issues were pertinent you would still need a lawyer to interpret those as regards the law as it prevails in the country that you are working. Even if someone were to provide what you are asking for, you don't state where you intend to work and under what jurisdiction the contract would fall - you might find yourself using a contract that has no force or even be potentially illegal under the law of the land where you are working: again you would require a lawyer to advise you on this. And what happens if you do use a contract devised from one you are given here and you end up not getting paid or getting sued or worse, what are you going to do then? Ask for you money back?, sue the monk who posted it or The Perl Foundation? At the very least if you take legal advice from a legal professional and it is wrong then you have some recourse in most countries.

        Believe it or not I am trying to give you advice that is in your own best interest here, but you seem to think the opposite for some reason.

        /J\

        raymor in "Re^2: Custom perl programming contract" said:
        When many others, including merlyn, have posted many times about problems they had because they failed to obtain an adequate contract for a Perl programming (or Perl book writing) project
        Just for the record, I'm challenging the inclusion of my name in this statement. If you have evidence of the particular phrase you've seen here (or perhaps in some other public forum) that you think supports your statement, I'd like to see it. I do believe this statement to be false as far as including my name, however, and would request that you withdraw your claim for lack of evidence.

        I don't suspect any malice here; perhaps just a misunderstanding. But in this area, my reputation is important.

        -- Randal L. Schwartz, Perl hacker
        Be sure to read my standard disclaimer if this is a reply.


        update: After reviewing private comments from raymor, I see that he was confused about a prior public dispute I had, thinking it was a contractual issue, when in fact it was an issue over an understanding that was not contractually related. Thus, his comments that led me to write the first part of this message were not intentionally incorrect. However, for the record, I'll leave this node as it stands, and declare the matter resolved to my satisfaction.
        It was me who considered your node not beeing Perl related, this decision had nothing to do with your nick. In fact I did not look it up before my consideration.
        If I had the wisdom your node fits into Meditations, I would have considered it to be moved. Thank crunchy itīs Friday feasible to unconsider nodes, and castaway in her great wisdom has done so.
        Take my apoligies.


        holli, /regexed monk/
Re: Custom perl programming contract
by Fletch (Bishop) on Feb 17, 2005 at 18:21 UTC

    For US jurisdictions nolo.com has some pretty good free/cheap resources available. I doubt they have anything specifically on Perl, but I'd bet they probably have something applicable for freelance software workers in general. Looks like Consultant & Independent Contractor Agreements (ISBN 141330026X) might be of interest. Just remember that the only way to be sure is to talk to a lawyer yourself (so you know whom to sue when things go wrong :).

      Thanks Fletch, though I've used Nolo's books and forms for other purposes it hadn't occurred to me that they might have anything specific enough to be of much use. In fact, though, tey have a whole section for developers including a book called Web and Software Development that goes in depth into the legalities of using open source code such as CPAN modules within professional projects and includes sample contracts that are designed to cover all the bases and protect you and the client when you write code that may either be contributed to CPAN or use code from CPAN. I'll post a review of this book from the perspective of a Perl programmer who does both open source a proprietary work after I get done reading it if noone objects.

      Web & Software Development: A Legal Guide

      Edit by castaway - Fixed link

      2005-02-21 Janitored by Arunbear - added title to long bare hyperlink, to prevent distortion of site layout

Re: Custom perl programming contract
by mattr (Curate) on Feb 18, 2005 at 05:21 UTC
    To help muddy the waters lest they clarify too soon I'll throw in a rock.

    I was thinking recently about a new app I'm designing and being a lazy japh or aspiring to be one, haven't looked recently at the Perl Artistic Liscense (which undoubtedly deserves a look as it is the most beautiful name for a contract that I have ever heard or expect to).

    So if I compile with pp can I still include proprietary (source available but not gpl'd) modules from other people? Does linking before runtime have any effect on the model I choose? What about code I eval that has been downloaded from some other server? In general I am figuring the answers are yes, no and no, unless I state "this module can be used under the same terms as Perl itself". Also I am thinking of selling a wxperl based app and wonder if there is anything I should know first about liscensing restrictions.

    I'll give a partial answer to the parent thread since this is mostly my rock.

    When I have written modules/cgi for clients I always say they own what I give them, but not exclusive rights to libaries contained therein, and I put my copyright on every file. I give them source code and respond quickly to security related questions but responsibility ends if they modify it. Except for NTT I have never had a problem with that. (NTT just wants - this is a long time ago - to own a thing outright.)

    As for contracts I can say that if you are writing a contract it is good to spell out the responsibilities and ownership/rights on both sides in terms of time, space, communication and other intangibles, and possibly offer a support contract. And feature creep or may make you want to switch to a monthly fee and payment schedule. I also specify a testing term after which the client automatically agrees you have delivered the goods, and also specify a risk management framework in which the client is encouraged to help control scope/cost/people/schedule and documentation deliverables are spelled out. But this isn't a legal forum so TMTOWTDI in Perl but there might be a best way in law and we can only probably supply anecdotes and links elsewhere.