I'm having a debate with my director of engineering over the best way to avoid code-forking when trying to maintain "cobrands" of a main site which may have substantial look and feel differences.

We're already using multiple component roots, with each cobrand looking first in its directory and then checking for components in the "default" component root.  This works fine, but when we have components that blend (minor amounts of) business logic in %init sections with HTML, we find ourselves copying the whole component into the cobrand directory when we want to modify the HTML even a little bit.  This then creates a problem if we make changes to the %init section, as we have to remember to make the corresponding change in the copy for each cobrand.

We see 2 possible solutions to this problem:
1. Move all of the HTML into a subcomponent, so that the cobrand can override only that subcomponent
2. Move all of the init section into a subcomponent or module, which would handle the initialization and (light) business logic required for this particular page

We're not particularly happy with either of these, for the following reasons:
1. It would be nice for HTML designers to be able to find the HTML content of a file by just looking for the file that matches the URL, rather than tracing down to some subcomponent it calls.
2. Moving the contents of the %init section into a subcomponent, the variables it declares and sets up will not be available to the current component -- we would have to use globals, or pass in all the variables we want the init-section-component to initialize.

Also, both methods suffer if we find we want to replace only part of the HTML, and then we find a "bug" like a style change which we want to apply in the common-but-copied part of the HTML.

Have you encountered this kind of problem, and do you have a recommended solution?  Or alternatively, is there a better place for me to ask this (mailing list)?

--Mark Torrance


_______________________________________________
Mason-users mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/mason-users

Reply via email to