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