On Mar 14, 2006, at 12:06 PM, Trygve Lie wrote:
Let’s say company FooBar Inc is a multi national company with different offices in several countries (US, UK and Japan). FooBar Inc want to set up a blog for there employees in all countries so they can share insight information and thoughts with the public in an easy way. FooBar Inc is an open source minded company :-) FooBar Inc has one centralized server farm where they want to set up this blog software for all countries. The problem FooBar Inc faces is that each country has different domains (www.foobar.com, www.foobar.co.uk, and www.foobar.co.jp) and they will also have different sets of templates for each country. In each country there will be several employees which has there private blog.

OK, so different "sites" have different sets of blog templates that are allowed.

And we don't yet have support for private blogs, so we'd have to add that.


To solve this with Roller today, FooBar Inc must make one installation of Roller for each country. This will result in one DB instance for each country and one installation running for each country. This is not very efficient, especially for the girls and guys maintaining the day to day server for this purpose and it will be even more complex since FooBar Inc has the intention to expand to 20 more countries and also provide the same internet services for these offices.

That does sound inconvenient.


The perfect solution for FooBar Inc would be if there was some kind of multi domain support. In other words one extra “layer” which made it possible to separate country from country so each country can have there own domain and there own set of templates (and configuration; like language and what features in the blog which are turned on and off) but there are still one installation and one DB instance.

NOTE: Country is here an example. It might be that a company wants to have one set of intranet blogs, one set of Internet blogs and one set of extranet blogs which they want to run on the same installation.

Was that understandable?

Yes. It sounds like a very useful feature for anybody who wants to offer Roller hosting services.


The reason I’m asking are because my company are going to use Roller in an almost similar situation as this and we are very interested in such kind of support in Roller. We do have a couple of developers which we might dedicate to build parts of such and support and contribute back to the Roller project if this is an feature the project would like to have.

The first questions we are wondering about are:
- Is the project interested in this?

It's not yet on the wish list where I work, but it think it's a very desirable feature.


- If so; what changes must be done to implement such a multi domain support?

Not sure. You could add a new column to every table to specify which site to which each row belongs. You'd also have to have a way to partition the themes directory and possibly the Velocity Macro files themselves since some sites might want to override some of the built in macros.


- If so; how deep and how complicated will the changes in the structure be?

Not sure. I'm guessing that the changes would be fairly deep, but not overly complicated.

If you're going to go down this path, it would be best for you to either get these changes into Roller so that you don't have to fork away from mainline Roller development.

Here's what I'd recommend:

1 - Analyze the Roller code and figure out how to do this work

2 - Ask questions about Roller architecture here on the list. Step #1 will be easier if you have some expert advice.

3 - Put together a proposal on the Roller wiki that details your plan so the Roller team can review it and help you to do things "the Roller way." (Send me a separate email and I'll setup a wiki account for you).

4a - If the Roller team seems to like your proposal, then develop the feature and submit a patch. Hopefully one of the Roller team members will have time and inclination to integrate your changes.

4b - If the Roller team doesn't like your proposal then perhaps there are still some ways we can help you out -- by making it easier for to customize Roller without actually forking the code.


- Dave









Reply via email to