skinning the app

Good news everyone: a customer wants to license our Rails-based app!
(Maybe we'll be able to afford something fancier than ramen noodle for
dinner!!!) The bad news is that they want a custom logo, custom color
scheme and "a few tweaks here and there".

What are the established techniques for managing "a few tweaks here and
there"?

Creating branch in git seems like it will do almost everything
necessary. The only complication I see is that we'll have to
back-merge enhancements and bug fixes in the main branch, but that would
be true for any approach.

Simply stated: is there a compelling reason NOT to use git for creating
multiple 'skins'?

- ff

can you write a skin loader instead? And use the fact that css was created to solve this problem?

A few tweaks can become a nightmare to manage if your not familar with designing product lines.

I would decide what customizations you are willing to support or not
support. For the ones that you want to support, create a separate git
and provide your customization gem/plugin there. In terms of skinning,
this will be fairly easy. You could supply options for using different
layout files which could include how the page displays, the CSS used,
etc.

Alpha Blue wrote in post #1019380:

I would decide what customizations you are willing to support or not
support.

Life would be lovely if that were up to me. But the person with the
checkbook gets to make that decision. (Of course, I can charge more for
some customizations...)

For the ones that you want to support, create a separate git
and provide your customization gem/plugin there. In terms of skinning,
this will be fairly easy. You could supply options for using different
layout files which could include how the page displays, the CSS used,
etc.

That's what I had in mind: swapping in different CSS files under git
control is straightforward. Swapping in different views isn't much
harder. Mercifully, the customer has not requested any 'tweaks' that
would require changes to the models or schema -- that could quickly
become a real PITA.

@Curtis Schofield: The customer is asking for more than just changes to
the CSS -- he wants different content and some additional views. And I
agree that this could become a nightmare -- I plan to maintain a bill of
materials, SKUs and ECOs for each variant of the app. That should help
some.

@Curtis Schofield: The customer is asking for more than just changes to

the CSS – he wants different content and some additional views. And I

agree that this could become a nightmare – I plan to maintain a bill of

materials, SKUs and ECOs for each variant of the app. That should help

some.

that will help you recoup costs - it will not help you maintain and scale your codebase - you are going to create yourself a nightmare the direction you are heading.

I know it seems like Git can do this - but this is not what Git is for this is what software is for - skip to making new and

original mistakes - don’t make the obviously avoidable ones.

  • see the following.

As far as running a biz around this :

http://www.sei.cmu.edu/productlines/

As far as software patterns:

Check out the work on ‘feature flags’

http://code.flickr.com/blog/2009/12/02/flipping-out/

http://napkin.highgroove.com/articles/2011/08/22/introducing-setler-for-feature-flags