Sorry. When I say 'We use css...' in the first section, I mean "vss" or
"Visual Source Safe". Monday's. Umm, I mean Tuesday's, after a long
weekend...
Kevin Galligan wrote:
Do you keep the code local? I mean do you keep the customizations in
your source control, or are you giving the application out?
We do this. We have a several-pronged approach.
Different applications with mostly the same codebase:
We use css, and use css's sharing capability to share most of the common
files. This was good in the beginning, but if you have larger
codebases, it gets more difficult as time goes on. Not perfect, but
functional.
Custom code within the same application:
I have a main application directory, and a 'deploy' directory. The only
thing in there is the specific files that are different for that client.
And we just 'overlay' that on top of the regular code during a build.
Functional, but also gets a little hairy. We stopped doing this
because we started to get too many clients to handle it.
Client branding directory:
If your clients require logos, colors, and minor changes,
customizations, or string label differences, you should just have these
in config directories outside of your application. We have 1 dir per
client. It keeps the logo, menu files, a properties file with color
definitions (which are used inside css files which are built
dynamically. 1 set of css files per client turned out to be a huge
pain), and a global properties file. In this file we keep custom
strings for descriptions, and properties that the application can use
for "customizations". For example, lets say you wanted to hide a
person's phone number for a particular client on a particular screen. In
the jsp, just check for a 'hidephone' property, and default to false.
Then in that client's property file, set it to true (override the
default).
Anyway, that's what we did, and it works quite well. Nothing against
Tiles or templating, but we have a large codebase that couldn't be
completely redone. Also, if you exclusively rely on a particular
template library, you might be excluding some technology thats
incompatible.
Mike Kienenberger wrote:
Have you looked into some kind of templating layer such as using
facelets or Tiles?
You'd have the configurable aspects as separate resources.
On 9/6/05, Richard Wallace <[EMAIL PROTECTED]> wrote:
Hey everyone,
I've got an interesting question that came up while working on my last
project that I'm hoping someone has an answer to. Basically, the
situation is that there is a base webapp that has all the basic features
of the application. But, we plan on licensing it to clients and do some
customization for them, like custom user registration system, custom
skinning, etc. The thing is that most of the JSPs and other resources
from the base webapp can remain the same but a few will need to change
(logos, css, etc.).
Right now we don't have a good way of doing this other than to copy ALL
the JSPs over from the base into the sub-projects and modify only those
that need it. The problem we're running into is that adding features to
the base webapp and propagating them to the sub-projects is quickly
becoming a major PITA.
What I was thinking was that it would be nice if there was a way to do
something like an "overlay" of the webapp. So that the base webapp
would be unrolled first and then the sub-projects webapp would be rolled
out over top of that replacing any files that were modified and keeping
anything that wasn't. That way we would only have to maintain JSPs and
resources in the sub-project that are specific to that clients
customizations.
Is there anything out there that solves this problem already? Have
others run into this and what have you done? Any input would be
appreciated.
Thanks.
Rich