[consulting] Patching code on client's site, and general packaging of customizations

Bèr Kessels ber at webschuur.com
Fri Dec 15 11:31:30 UTC 2006


Op donderdag 14 december 2006 02:41, schreef Gary Feldman:
> Here's a real beginner's (consulting) question:
>
> How do you handle cases where there's a bug that you need fixed for a
> customer long before any fix will show up in CVS?  Or there's a change
> that can't be done via a hook?

Any project I ran brought me at least two such cases. On average I think I ran 
into four or five each time. 
Biggest problem is the pace of bugs going into Drupal not being the pace we 
(consultants) work.  mean, a deadline is oftne measured in days, sometimes 
weeks, A patch takes weeks if not longer to get in, most often not in the 
form/way you needed it in the first place. 

So yes, I see a big problem here, basically because commercial/consultants 
cannot make their work valuable for Drupal, becuase most of us cannot wait 
for a patch to hit core or the contrib it was made for. 

On top of that, I run most of my clients sites of a single multisite 
(sympal.nl) and that makes it impossible to do any core hacks.

> I've been tracking my changes in a
> personal Subversion repository, but it's still not particularly
> efficient.  (Looking at some of the tools layered on top of Subversion
> is on my list of things to do.)

Here is my shot at this:
#1: I give a 25% discount on work that can be re-released as a GPLed module. 
this means: 
  -- the code must be very general and useful for other projects
  -- the licence allows me, others to re-use this
Reason is that this way we can easier agree on 'general' and thus 'reusable' 
solutions. Good for me, good for the client, but often takes more time (hence 
the discount) 

#2: I maintain all my work + notes in an SVN. Good for my history, good for 
note-taking / logging. And good if ever a client wants to get other parties 
involved, because they can read back on all my hacks. No vendor-lock-in in 
the forms of hacks so to say.

#3: Whenever possible and feasible I contact authors of contribs beforehand in 
a personal mail, that I will be useing their module(s) as a base for a new 
project, so if they have new code and or unshared ideas, I will be spending a 
lot of time on the modules. Often I get good response, because it allows me 
to communicate closer between the author, my client, and myself. E.g. I have 
a rather big LDAP project coming up, I am still preparing all work, but once 
the Go is trough, I will get in touch with the LDAP module authors.

#4: Whenever possible, I commit patches for features and bugs in contribs. 
These are often taken up within days. esp, if communication from #3 is good. 
I hardly ever commit patches for core, for they hardly ever get in, in a) the 
way I find them useful, b) a useful timeframe. For me its inacceptible to 
work on one issue for two, three weeks. 
#4a: I maintain a list of all submitted issues on Drupal.org using simpy 
(delicious alike) and tags drupal,issue,CPC (capitalised project code). Works 
like a charm to keep track of all the issues relevant for a certain project.

#5: In the end I run one last CVS syncronisation, and compare that with the 
last version in my SVN. I do that for each contrib I worked on. This gives me 
a set of patches that describe any local changes that did not go back into 
any of the contribs, e.g. still waiting patches, or patches that were 
refused. 
I maintain these in a local directory, for each project.

Bèr
-- 

Drupal, Ruby on Rails and Joomla! development: webschuur.com | Drupal hosting: 
sympal.nl
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 189 bytes
Desc: not available
Url : http://lists.drupal.org/pipermail/consulting/attachments/20061215/57121a2d/attachment.pgp 


More information about the consulting mailing list