“This feedback is simply unfortunate.
This project, hired on July 30th, basically on August 1st and started on 3rd August due to exchange of information, is what the Client calls dragging into August.
The project involved the specs in the RFP which are pretty basic as regards my ability. The client negotiated the cost down to what he termed as "what can I get for this amount of money as I cannot afford your bid".
This led to a strip down of functionality and as suggested by the client, would be for what he could pay.
The project must then (all my projects) be fully funded. Upto the time the client decided to cancel the project, he never completed escrow funding.
The project was split into 3 milestones that we agreed on. The first milestone was for setup of an external server to enable import which was completed in a couple of days and paid for as agreed.
The client then decided to introduce project creep. Addition of requests outside the RFP.
The first was that the installation would be a drupal aegir install. This in itself for a non-upgrade site would be a $400 value (to date the client has paid about $350 for all work done).
I therefore converted the drupal install into an aegir one with specific instruction that my aegir install, being a complete full fledged install would have capability that would not be available on his server. That I should instead do the work on his server. This was for some reason not acceptable.
It is my opinion that for best development experience (and has been the case with nearly all my clients), full access to the dev and production environments are a must. Attempting to copy the developers work will nearly always fail.
From here, the client requested that internalisation should be added to the site and I should convert all content types and all taxonomies in respect. This included my writing re-iteration code to fulfill the request.
On import of the drupal 5 site, I discovered that the D5 site had database issues and module issues that would prevent migration. The upgrade path from Drupal 5 to drupal 6 broke on numerous occassions as I fixed the database and removed code that would not work for the forced upgrade path. After the successful migration and site upgrade to drupal 6 and a consequent one to drupal 7, in between requests to fully fund escrow, I had a fully functional D7 site.
I then proceeded to work on the conversions for internationalisation and on a complex mapping functionality based on apache solr and leaflet maps. Again outside project scope but added on.
At this point, I was done with the second milestone. This was at around Mid September. I at this point asked for full funding of the project and payment for the second milestone. The client stonewalled and later funded escrow for the second milestone only and not releasing funds for the 2nd milestone.
Repeated requests for milestone payments were simply ignored.
At beggining of October, I did have personal issues and had to be off the site. I let all my clients know about this including this client who terms it as increasingly unavailable while refusing to pay for work done.
When I returned, hoping to have funds already paid, nothing had happened. We talked and I agreed to accept 50% payment of milestone 2 so as to allow me to proceed. NOT a 50% reduction.
Client then cancelled the project with a demand for repayment of all paid fees, and a return of the escrow funding for milestone 2 and a demand for all files I had worked on and further to write a document detailing all the work I had done and how best to complete the project.
I could obviously have decided to send this into dispute. Instead, I sent him all the files and databases; a complete upgraded drupal site with functionality all way above the RFP for a mere $350 on $1,500 project and let him cancel the job.
While I would have liked to complete the project, as I always do, I have no regrets for walking away from this one at a complete loss.