views:

101

answers:

3

I've been consulted with on the setup of a project and would like to bounce my ideas off of someone for extra opinions.

The main part of this website is very complex and has very customized functionality, so from what I saw it's more of a webapp. However a blog is needed and also a forum is needed. This is the general overview of this project.

Because the main part of the website is more of a webapp, I think this project should be separated into individual pieces taken care of by different frameworks and CMSs so that each component does not limit other components. This is a pretty difficult decision to sell though because no one wants to maintain different frameworks and CMSs unless this is really the right thing to do for them.

My logic is that because the main part of the website is really a complex webapp, trying to fit it into a CMS like Drupal or Joolma or whatever is going to increase development time and cost. This part makes sense to be created with a more flexible technology like the Zend Framework or Symfony, basically something that's a framework not a CMS.

For the rest of the components, I don't see a point of using a framework since many of them are standard components like a blog and forum. So for the rest of the website, my options are 1) to build everything else needed with a single CMS that I'm familiar with (say Drupal), but since I've already went down the road of dividing the site, I thought option 2) why not divide the site even more and choose the best software for each component. Drupal for example doesn't make a great forum. That's just not where its power lies.

It also turns out that the people who will be involved in writing the blogs are mostly not the same people contributing to the forums, so I'm thinking that I shouldn't worry about something like training the same staff on 2 separate software.

But I can't make up my mind regarding the maintainability of this website. On one side I think it's going to be more difficult to maintain 3 main different technologies: framework for the app, specialized forum software (suggestions welcome), and specialized blogging software (suggestions welcome), but on the other hand, I think this may actually be a lot easier to maintain because one part of the website can be taken down or changed much more easily without affecting everything else.

That's been my general idea, but I worry that it might be hard to sell, because it may look like I'm trying to complicate a project. I do think though that this approach actually simplifies it. So any thoughts on this? Are there issues I'm not fully considering? What architectural decisions would you make similarly or differently if you had the same type of problem?

+2  A: 

It's going to be much easier to maintain frameworks that have a lot of users who know what they're doing. It's going to be harder to maintain a custom-built app which tries to be an app, a blog and a forum in one.

Whoever's maintaining it will be glad that when they need to make a change to the blog:

  • they don't need to look at any of the other components
  • there is a lot of documentation out there for your blog engine (assuming you go with a popular one, e.g. Wordpress
Skilldrick
I think if you're going to separate it, you might as well do it properly. It's much easier to maintain something that's just trying to do a good job of being a blog, and likewise with a forum.
Skilldrick
+7  A: 

Its a difficult decision indeed. However before anything else there are a couple of critical questions that need to be answered.

1 : Is the blog going to contain the full functionality of blogging softwares you see out there? Or you require a smaller, simpler set of functions? Same goes for the forum.

2 : Is it required to share the user base across all three systems?

3 : Is it required that the design of the site be exactly the same across the board?

If you guys require the full blown forums and blogs, then it would be wise to go with separate systems. However if the feature-set required is small, it might be wiser to just custom build it, without spending too much time.

If the user base needs to be shared, then it would be a pain to integrate the sessions and user base across three different systems, its always easier and smoother to just use one users table. You will have to hack the forum and blogging platform to make it work with the main cms, there will be issues doing that.

If the design can vary on these systems, it would be ok, however making it exactly the same would be feat and would require specialized people for the relevant forum and blogging platform. So maintaining the design would be a problem too.

This is a very difficult decision. Its going to be short-term cost vs long term cost. If you think the web app is there to stay for a while, i vote for increased short term cost, it would make things easier in the long term.

Another note: If you design your architecture to be modular, you can develop your forum and blog system as modules which you can plug-in. So gives you the freedom to take the site partially offline.

Sabeen Malik
+1  A: 

I like @Sabeen's questions.

Assuming the three components are going to share users and layout, it strikes me as preferable to have a single underlying framework, not a multi-headed Drupal-Wordpress-phpBB-Zend monster in which you have to handle distinct authentication and theming schemes.

But as Sabeen noted, if the forum and the blog really need to be fully-featured, then implementing them from scratch seems like a lot of work re-inventing already tried-and-tested wheels. Short term cost, to be sure, but hopefully with long-term benefits.

David Weinraub