views:

948

answers:

14

Dear stack overflow community,

I've been given the task of overhauling a couple of websites for a large corporation I'm working for, as well as developing an internal intranet site for content management and document storage within the organization.

My "problem" is this: They want me to use a framework/set of languages/technologies that I can prove to them are "stable, enterprise-ready technologies with a proven track record."

The spec's "big picture" really isn't too complicated: Implement an enterprise-class CMS for management of each division's web pages that deal mostly with product information and documentation (i.e. a simpler version of www.linksys.com).

As an open-source programmer, I'd like to use Python with TurboGears and build it from scratch, but I can't really find a way to prove to the president that TurboGears has a huge enterprise track record. Zope seems to have a lot of enterprise usage, but it looks a bit bloated to me. Django could be an option, but doesn't seem as flexible as TurboGears.

I'd rather not use PHP, but Drupal has a very nice resume with the "right" names under it (AOL, Sony, MTV); plus it could save me building many of the CMS components from scratch.

Rails might be another option, but I'm not too familiar with it (and as a Python/PHP programmer, Ruby's syntax drives me crazy).

What would the S.O. community suggest for a project like this? I'm sure many of you have faced the same dilemma. What ended up working/not working for you? As I said before, my first choice would be Python, second would be PHP, third would be Rails.

Thank you, Seth

+8  A: 

If you like Python, and you want a web framework, I wouldn't go past Django. It's simple, powerful, and runs plenty of enterprise-level sites.

A few of the bigger sites using Django are Lawrence.com, Curse Gaming and some Washington Post sites. It just went to version 1.0 recently as well, so you have a solid code base to work from.

You can always throw in a list of companies that use Python if you want to, it includes people like Google, Yahoo and NASA.

Harley
"Django could be an option, but doesn't seem as flexible as TurboGears." Don't worry about it. Unless you're doing something crazy (seriously -- crazy) Django will do everything you need.
S.Lott
A: 

No matter what you choose, don't use Typo3. It is a huge unhackable mess with its own idiotic template "script" language, near impossible to learn quickly, hard to teach to your enterprise users and damn ugly. No wonder there are shops which earn a living just doing Typo3 consulting. It is somewhat popular but don't think there is any decent documentation.

artificialidiot
+8  A: 

This is a contradictory statement: "The spec's "big picture" really isn't too complicated: Implement an enterprise-class CMS for management of each division's web pages".

"Enterprise Class" and "isn't too complicated" do not belong in the same sentence. Seriously.

"Enterprise Class" stuff is complicated because "enterprise class" tasks and environments are complicated.

Mind, just because something is deployed within an enterprise doesn't mean it requires an "enterprise class" tool. But those that DO have "enterprise class" requirements ARE complicated because the problem domain and deployment environment are complicated.

So, you need to be more clear on your specs than "buzzword compliant", "my boss has heard of it", "never breaks", etc.

CMS seems deceptively simple, but it's not. If it's geeks managing stuff for geeks, that's one thing, but CMSs tend to have great impact on non-technical end users which can dramatically complicate user interfaces, security, workflows, support, etc. Think "marketing wants to maintain the website", and that they're going to let their junior intern do it.

So, seriously, without REAL requirements it's hard to suggest anything. And without REAL requirements, and a solid understanding of your user base, you most certainly should NOT just "roll your own".

Will Hartung
""Enterprise Class" stuff is complicated because "enterprise class" tasks and environments are complicated." Disagree. Enterprise may be "big" but it isn't inherently complex. Short-sighted design makes it complex. -1.
S.Lott
+3  A: 

I agree with Will's comments. Building a CMS, an intranet, and a document management system sounds like a ton of work. My company would probably spend 6 months on the requirements for one of those systems and still hand off vague/incomplete requirements.

Here are a few questions:

  1. Who will be maintaining the CMS and Doc Management systems when you're done? The odds of the apps being a success go down if you drop a custom Python app in the midst of a bunch of salaried Java developers. I'm not saying that it can't work, just that the odds skew against it.
  2. Are you looking for a single app/framework to create the CMS for the external sites, the CMS for the intranet, and the document management system? If so, that should narrow the field of possible CMSs considerably. For example, I don't think that Drupal handles Document Management well (if it handles it at all.)
  3. Who are the users of the systems? Will the folks using the document management system be the same ones managing the websites and intranet?
  4. Will the systems share workflow? (Will document management system content stay in its silo or can documents migrate to the Web CMS or intranet? Are there different "approvers" in each area of the system or one set of overlords?)

Good luck!

braveterry
+2  A: 

The first thing that comes to mind here is that you're approaching this all wrong. It seems like you're looking for a pet project for yourself and trying to decide what you'd like to do best. You didn't specify the scope of who is going to be managing this site.. which is the real question. Is it just you? Is it the management team? Is it each division?

Making a huge decision like this takes a lot of time and thought. We spend a lot of time just helping our clients choose the right CMS for their needs. There are a lot out there and a decision like this is not something to be taken lightly. A lot are good in the right situation and HORRIBLE in others. Also, what is right for you as the developer isn't necessarily right for your end user.

As someone up there suggested, you need a lot more research into what the requirements are before anyone (including the developer community) can make any suggestions about what is best to use.

Divamatrix
+2  A: 

I agree with Will's, braveterry's and Divamatrix's comments. Fully.

There are tons of questions/issues/risks/considerations to take in order to succesfully launch a CMS solution for a medium/big enterprise. I will not repeat what Will and braveterry had said, instead of it I will offer a different point of view:

CMS for a medium-big company is not about Software. It is about proccesses and policies.

Which framework/tool to use must be dependent on exact requirements (kind of content, sources for content, who will be responsible to capture and create content, what are their abilities, who will be approving content updates, which departments will have a voice on what goes into the home page?, under which policies will be selected the content for the home page?, what will be the puropose for the home page? (marketing? sales? technical? branding?).

If the answers to these questions (there are lot more) are not clear to you or even if you do not get why are SO important. Then I think you need to contract a seasoned consulting firm.

PS: This gives me the idea to publish some sort of paper about this topic but that would take some days as I currently do not have the time to prepare it.

vmarquez
+1  A: 

"They want me to use a framework/set of languages/technologies that I can prove to them are "stable, enterprise-ready technologies with a proven track record.""

There's no proof of those features. None.

Is there some incumbent technology that they want you to use? If so, you might be swimming upstream.

  • If you're fighting for your preferred technology, you probably can't win their hearts and minds without a serious proof of concept or pilot project or something.

  • If they're willing to listen, they'd be more willing to listen if you had a demo that showed how rock-solid your preferred approach is.

if there is no incumbent, then they're just wringing their hands. In this case, you'll need some evidence they actually believe -- a pilot project or a proof of concept.

There's no Proof in this industry. For every technology you can find a proponent and an opponent. Even crap technology has proponents. Forget proof.

Just pick something that you can use very rapidly. Get something up and running so quickly, with such high quality that you're obviously right and the rest of your opinions must be equally right.

For this reason, flexibility has no value. Go with Django and get something to run ASAP.

S.Lott
+4  A: 

If you're looking for a enterprise-class CMS, why implement from scratch? There's a well-established, mature, Python-based enterprise-class CMS already available called Plone.

It was recently reviewed by a major IT publication:

"Plone does one thing -- Web content management -- and does it with aplomb. That's why you'll find well-known U.S. and international organizations in most industries running their Web sites, internets, and extranets with Plone." Inforworld, "Open source CMSes prove well worth the price" Oct 2007

Out of the box Plone provides most if not all of the features you'll need, and with hundreds of free add-ons available to implement any other features you'll need you may not need to do any coding to get your site up and running.

It is being used by government, non-profit, education and businesses. Names such as Novell, gnome.org, Discover Magazine, and thousands more. And you can be pretty certain its secure, the CIA is using it to run its public facing site.

The Plone community is very strong, it is one of the largest Open Source projects in the planet. There are hundreds of Plone service providers around the world to provide support for your deployment.

You can read up on the project itself on the Plone.org website. There's also Plone.net which provides case studies and success stories, global list of service providers and more media coverage.

hexsprite
+5  A: 

If you want an enterprise CMS, you don't build it from scratch with a framework. An enterprise CMS requires the work of thousands of people, like Plone. Here's Plone in the enterprise:

http://plone.net

Chris Calloway
+2  A: 

You'd like to build an Enterprise Class CMS from scratch? Just for one project? Are you crazy? Unless plan to go into the CMS business and have thousands and thousands of hours of development time there absolutely is no point to create a new one. There are excellent CMS's already out there. Drupal and Plone are the best in my opinion. I like Plone because its delightful to use. It's used by CIA, NASA, Akami, Novell and Ebay.

Best wishes,

Tony

+1  A: 

Seth, if you really want a E-CMS, dont try to reinvent the wheel. There are plenty tested E-CMS around. For example some Zope/Python based solutions like Plone. It is Enterprise tested, so easy to use, extremly extensible (as you have a complete applicationserver in the backend), there are books around explaining it for authors/editors, webmasters and developers. Evolve it where it doesnt fit. If you need more info ask at IRC (OPN/freenode, #plone) or if one of the 59 World Plone Day [1] locations is not too far away go there at November 7th 2008 and get in touch with Plone and its huge and helpful community. [1] http://plone.org/wpd

A: 

CMS for a medium-big company is not about Software. It is about proccesses and policies.

Very true!

Association with prestigious names is not necessarily an indicator of pleasing end results.

I like Sony products, yes, but on the various occasions on which I have sought support from Sony sites I have felt like banging my head against a brick wall! Those head-cracking sites may not have been Drupal-oriented, I have no idea, but the point is: don't be sucked in by big names alone.

An issue you should expect is: preconceptions of what may be achieved (or constrained) by a system.

Allow yourself some learning time with Plone — ideally, for a large project such as this, invest in expert advice — and you'll realise that traditional-ish ideas of what a system can or should accomplish are mostly exceeded by Plone's capabilities.

Gauge user requirements with a very open mind (not based on simplicities such as "I'd like a system that's equal to system x") then come to plone.org | Support | Chat Room to further discuss your requirements.

Graham Perrin
A: 

Keep an eye on Flossquality - Open source quality research http://flossquality.eu/

Concerning Flossquality and the three quality-related projects under that heading, at http://n2.nabble.com/Plone-and-QUALOSS---QUALity-in-Open-Source-Software-tp1402419p1446439.html I imagined some questions that people in the open source communities (not just in Plone) might ask about the whole caboodle.

Very recently I received, off-list, some responses to those questions. As soon as I find time to read the relevant e-mails I'll aim to either share or at least abstract the responses.

Graham Perrin
+1  A: 

"Enterprise" is a marketing term. It has pretty much zero technical meaning. If your boss wants to hear Enterprise, then he will, but this won't mean that a given system is suitable for your needs.

Beware of lists of companies that use a given suite of software. "Ebay uses Plone", and "Ebay runs on Plone" are two very different statements.

Mostly, if you're doing "Enterprise" CMS (for whatever that term is worth) you should expect to have a learning curve that will only just begin to flatten out by the end of a significant project.

For your project, I'd suggest you try to figure out what you really need. If you think TurboGears (or any other framework) is a good fit, discuss some risk management strategies with your boss. Maybe a small pilot to start with. Adopting a new technology is risky. Many "large corporation" web sites are mission-critical these days.

For what it's worth. I like Plone, but I've only ever used it for non-corporate stuff. I don't personally know of any "Enterprise" implementations. At work I use Tridion, and I know of numerous implementations at that level. (If you're looking for a choice that will let you work in Python, Tridion isn't a good fit.)

Dominic Cronin