Topic: Maintaining multiple instances of an application

Our business has been developing a CMS for a few months now and we're to the point of actually deploying it to several clients. One problem we've stumbled upon is maintaining multiple copies of the application, some with a little custom development thrown in.

The CMS is setup with a public, front-end, and an administrative back-end. We run into our problem when planning out custom sites that require changes and additions to the back-end. We want to maintain consistency everywhere possible, staying as DRY as possible.

We first considered using branches in Subversion. Branching off the trunk for each site, allowing us to keep evolving the CMS by merging to and from the custom site. During our test run, we found that this wasn't very elegant and probably an abnormal way of using branches.

So we are now considering converting the core content management into a plugin. Then, when creating a new site that uses the CMS, we simply install the plugin as an external, allowing us to update the core CMS with an `svn up`. We are still uncertain of this because of the lack of knowledge of creating plugins from existing applications and integrating them into a rails app. I read the wonderful post on creating plugins here, and if we go this route it will be a lifesaver.

I just want to know what people have done in these circumstances, as we are open to ideas. Thanks in advance.

Re: Maintaining multiple instances of an application

I think plugins would be a great help in this situation.  You may also want to look into themes.  If you can extract most of your code into some of these you'd have a much smaller codebase that's editable.

Re: Maintaining multiple instances of an application

Thank you, danger.

I've been hacking the amazing Comatose plugin from scratch. Everything is going well so far, and plugins aren't so bad after you get used to them. Comatose is incredible. It helped ease the pain of making a plugin like I needed.

I feel that with this kind of application, one that needs to be distributed among many hosts/machines, it *has* to be developed as a plugin to maintain consistency.

I'll have to look into themes next. Which theme plugin have you had the most success with?