Sunday Nov 18 2007 5:16 pm by Smokinn

I really like Larry O'Brien's blog. It has the perfect (for me) mix of interesting technical stories and random personal posts to lighten the mood. This recent post reminds me of what sometimes happens at work.

Right when I got there I helped design an entirely new system that makes code re-use much easier. Basically we develop "plug-ins" that do some discrete bit of functionality (like output a list of elements in a table-ish form or poll functionality or rating functionality or something like that). However the setup makes some of these independent sites highly dependent on each other. We have all our plugins in a single repository that we check out to our dev drives. When we start a new site or a new site section we typically make a new repo, check it out and, inside, make a symlink to the plugin repo checkout. This way all sites use the same plugins... which sometimes just isn't understood.

I have no idea why someone would be making a new site and, instead of making a new template for the plugin and using that one, leave all functionality the same and edit the default template! Then they put up the site, everything works (well more or less anyway) and people are happy. Until one of the old sites gets changed a little, someone makes a change and then updates (site deployment is typically just an svn checkout on the right server). Then the whole thing comes crashing down because the class names of all divs for some plugin were changed and none of the css is being applied to them so the whole thing looks like shit. Then we run around going wtf, check subversion for the commit logs and notice someone edited the default template and therefore have to revert back to the old, make a new one and fix BOTH sites (fix the new one too so that it uses its own specific template, the way it should have been done). It can be really really frustrating when something so basic is done completely wrong.

I don't think I've sworn at anybody yet though. =)

Comments
Sunday 18 2007 11:42 pm by Iouri Goussev

Well since you are a "Lead Programmer" that is probably your fault ;-) since you also responsible for the project infrastructure.

What you can do to prevent this problem in the future is to configure each website to use plugins as an external svn project (with svn:externals).

Since plugins are supposed to be generic you can checkout read-only copy. This way you will never accidentally commit local modifications.

You will have copy of plugin's source everywhere but since it is versioned that should not be a problem.

Or if you can simple checkout read-only copy and keep using symlinks.

Post a comment
Name:
Email (optional):
URL (optional):
(Allowed tags: <a> <p> <strong> <em>)

Sorry, but due to spambots, to post I'll need you to prove you're human.

Of the six following animals, just select the two that are not fluffy

About the Site:

I might update. Don't hold your breath though.

About Me:

Name: Guillaume Theoret

Age: 804671641 seconds

Job: Mostly web dev

Some Friends:
Search:

RSS Feeds:

RSS