Welcome Guest, Not a member yet? Register   Sign In
Implementing a 'kill switch', ethically dubious question!
#11

[eluser]Daniel Moore[/eluser]
I don't start on a project without a partial payment up front into an escrow account. This protects both me and the client, as it is easier for the client to get a refund if I don't follow through, yet I am guaranteed payment if I do.

Part of the contract with the client stipulates that once the work has been completed, the remainder of the agreed upon price is due. If they don't pay, then they don't get to "take the site live" and the "site demo" is removed. As all this is stipulated up front, they have no legal recourse when I remove a site for non-payment. It encourages payment in a timely manner.

If you're going to be earning your living doing this, then it is a good idea to have an attorney draw up some standard contracts for you to use for various types of projects, where you have the ability to "fill in" certain elements of the contract, or select other elements from a "multiple choice" so that all bases are covered and you are protected against non-payment.

I won't start a project unless I have a signed contract.

If my best friend said, "Hey, I'll pay you $X if you'll do Y" then I'll have a contract drawn up stating that, and I won't do it unless he is willing to sign it. Verbal agreements, especially between friends, is a bad idea and has ended many friendships. The signed contract will show your friend that you are truly a professional, and he will respect you more for it.

My 2 cents.
#12

[eluser]TheFuzzy0ne[/eluser]
Just my 2 pence...

Rather than a kill switch, I'd like to suggest that the Web site works much like shareware. It can work for 30 days, and unless you change a setting somewhere, it will stop working after that period of time. You can stop it working by setting it to delete most of it's core files that you've written (but not the database data). Of course, you will have a spare copy of these files lying around, won't you?? Once they've been using it for 30 days, there will be a lot of their time invested in setting up their new Web site, and that should give them the incentive they need to pay up. The code itself is the your property until it's been fully paid for, so I'd have thought that legally you can do as you please with it. The data is not yours, so you'll be sued if you destroy any of it, so of course, don't touch the data.

When you start any paid project, it's advisable to always agree a down payment for the Web site. This can cover the cost of the time you spend with the client, and time you spend researching. Basically, it could cover the costs of you doing everything you need to do in order to draw up an initial proposal. It's up to the client to decide whether or not they like where it's heading, and whether they want to continue with your business venture.
#13

[eluser]Daniel Moore[/eluser]
[quote author="TheFuzzy0ne" date="1238534124"]Rather than a kill switch, I'd like to suggest that the Web site works much like shareware. It can work for 30 days, and unless you change a setting somewhere, it will stop working after that period of time. [/quote]

Nice.
#14

[eluser]brianw1975[/eluser]
One thing a former employer used to do was require that the client host their site with us (at a heft monthly fee mind you) until the bill is paid in full.
#15

[eluser]kgill[/eluser]
[quote author="TheFuzzy0ne" date="1238534124"]

The code itself is the your property until it's been fully paid for, so I'd have thought that legally you can do as you please with it. The data is not yours, so you'll be sued if you destroy any of it, so of course, don't touch the data.[/quote]

If you are in the US I'd strongly advise against doing anything to the code, as has been mentioned this is a legal problem and to stay on the good side of the law you've got 3 options: write it off as a loss, send 'em to collections or take 'em to court.

The first is the easiest, provided you are claiming your self-employment income on your taxes and not working under-the-table. The second is a pain but the threat of collections is often enough to make them cough up the cash, it'll cost you the price of a piece of paper, envelope and a stamp - state the amount owed, when it was due, how many days they're past due and how long they have to get the money to you before the account is sent to collections. If they don't pay then they've called your bluff and you're going to have to follow through by securing the services of a collection agency or eat the loss (option 1). The last option is small claims court - provided the amount is under $5000 (that's the typical amount for most states but check yours to be sure), as long as you've got all your documentation it'll be fairly painless and cost you your time and a filing fee ($50 or less).

Ok so why not build in a kill-switch or something else, because this is the US and there are all kinds of laws which are too broad in their terms when it comes to computer crimes. You might own the code but it's on their server and having code which deletes stuff they don't want deleted could easily be called malicious code that performs in excess of your authorization on that server and that phrase is what will hang you.

- K
#16

[eluser]Daniel Moore[/eluser]
[quote author="kgill" date="1238577543"][quote author="TheFuzzy0ne" date="1238534124"]
The code itself is the your property until it's been fully paid for, so I'd have thought that legally you can do as you please with it. The data is not yours, so you'll be sued if you destroy any of it, so of course, don't touch the data.[/quote]

If you are in the US I'd strongly advise against doing anything to the code, as has been mentioned this is a legal problem and to stay on the good side of the law you've got 3 options: write it off as a loss, send 'em to collections or take 'em to court.[/quote]

The beauty of setting it up similar to shareware, is that you've made the client aware of the "won't work after 30 days" in advance, and it should be done in a signed contract. If you have a signed contract that states the code will be deleted if not paid for within 30 days, then they have no recourse. Them taking you to court over it would be the same as a person whose car was repossessed for nonpayment taking the bank to court for "stealing" the car. The court would throw it out. At least in the US.

If you're not sure, talk with an attorney.

Always get a signed contract. Never do business by an oral agreement or where the sole agreement is by an email, web form, or phone call. Always take the extra step to get a signed agreement. It should not offend your client if you ask for proper identification to prove they are who they say they are and to verify their signature by.

I've always insisted on signed contracts and ID, had very few clients balk at it when explained properly, and I've always gotten paid. The clients who balk generally complain about things like that because it makes it harder for them to skip out on payment. I pass on those clients, because I do this to put food on the table. There are always other clients who WILL pay.
#17

[eluser]kgill[/eluser]
Absolutely the shareware idea is great solution (signed contracts being even better), my concern was with his present client - unless they agree to the 30 days or it goes boom thing changing the code to do that now might cause trouble.

Of course this being PHP, unless you're shipping precompiled bytecode and not source it's easy to remove the lines which work the delete magic and you're back to square one.
#18

[eluser]Daniel Moore[/eluser]
[quote author="kgill" date="1238619586"]Of course this being PHP, unless you're shipping precompiled bytecode and not source it's easy to remove the lines which work the delete magic and you're back to square one.[/quote]

Of course, that would be "security through obscurity" where you would want to bury it deep and obscurely to confuse the casual PHP user. A real PHP hacker probably isn't going to hire someone to write it for them, though, and if they already had a PHP expert on the payroll, then why would they hire you? I would estimate 99% safe to do it that way. Nothing is 100% guarantee, that's why you need a contract to fall back on.

Doing contracts is also why I try to take clients that are in the US, it makes it easier to enforce. I'm afraid it would be difficult for me, as a US citizen, to take a client residing in Uruguay to small claims court.
#19

[eluser]jedd[/eluser]
If you provide software, and do not have anything in writing, signed by the client, that says after 30 days it will stop working unless he pays you money - then you are still exposed if the software stops working in 30 days.

Here's how it will look from a legal point of view.

You have supplied software to this person. The person relies upon this software. You engineered it in such a way as to make it stop working. There is nothing in writing that makes that agreement clear - the only agreement that is clear is that you provided this software. I think, but again I emphasise that IANAL, that you are exposed in this scenario - primarily because of the lack of a written, signed agreement, and the implicit agreement that could be inferred by you providing the software in the first instance (which in turn implies certain things).


As has been mentioned, you're using PHP so your code is visible.

I've been pondering this since my first posting a few days ago, and I came to the conclusion that if, as a hypothetical exercise, I found myself in a similar situation, where I was not motivated enough to back out of the arrangement, but wary about proceeding, I might adjust the way that I developed the code.

Because there was a risk of not being paid, I might reasonably be inclined to spend less time working on the project - this means I'd likely not have time to do any in-line documentation. I'd also probably be more prone to making off-by-one and edge- and corner- case errors that wouldn't necessarily be found and fixed during initial testing. I'd probably, because I was eager to provide maximum performance for the client at minimal cost (to me) - and again this is quite a reasonable motivation for anyone in my position - try to run some automatic code optimisers. So, with the intent of reducing the file size and consequently improving load times, I'd not only rip out any existing wasteful comment lines, I'd then run the code through said optimiser. Sometimes they have names like 'php-obfuscator' - but their intent is clearly to maximise performance by trimming all your variable names to just one letter, reducing wasteful white-space, and so on. This would be quite a defensible move - as I say, you're attempting to optimise the performance of the code for the benefit of the client, in the cheapest way possible for you because you are concerned about payment.

I'd likely do these optimisations just after I'd forked the codebase, just before handing the code over to the client. If they ever wanted proper code optimisations, or indeed any modifications done to it in the future, they'd probably need to access the much slower and full-of-useless-comment-lines fork that I kept in my cvs.

At which point it quite rightly becomes a negotiation issue, not a technical one, as to what is needed for them to gain access to that codebase.

Just pondering out loud on this one.
#20

[eluser]Daniel Moore[/eluser]
[quote author="jedd" date="1238621701"]If you provide software, and do not have anything in writing, signed by the client, that says after 30 days it will stop working unless he pays you money - then you are still exposed if the software stops working in 30 days.
[/quote]

Which is why I keep saying, "Get it in writing! Get a contract!"

If you've made an agreement without getting it in writing, then chalk it up to experience and move on. Write it off. Do it right the next time.




Theme © iAndrew 2016 - Forum software by © MyBB