Become a MacRumors Supporter for $50/year with no ads, ability to filter front page stories, and private forums.

Mitthrawnuruodo

Moderator emeritus
Original poster
Mar 10, 2004
14,423
1,063
Bergen, Norway
Background:

I "inherited" a "home made" php/mysql based CMS a couple of years ago, and most of my work since has been maintaining and further developing it for a small local company. Now, fun as it has been, it's getting more and more frustrating, not only whenever I need to add features, lots and lots of features, but also in the day-to-day maintenance of all the different versions (there's not two sites that even remotely running the same "version"** across several different servers at different web hotels, which periodically breaks parts of the system through system updates, and we just recently had a serious security breach on our main web hotel).

Today I finally got "my own" web server (Apache/2.2.3 (Debian) PHP/5.2.0-8+etch7), and we'll be migrating the customers over when I've tried it out a bit.

One of the things I'm also interested in doing over the next couple of months is to re-make the CMS: more reliable, safer, more expandable, etc. and I've been advised from a few different people that I should look into and possibly choose myself a framework, instead of hand coding everything. So...

What framework to choose?

I'm looking for something fairly stable, open source (or affordable), secure and easily configurable and expandable. (In short: I want it all! ;))

I've been just barely peeking at a couple of PHP frameworks: CodeIgniter, CakePHP and symphony, but I'm really equally intrigued by the Python framework Django. I've been wanting an excuse to get into Python for a long, long time... At this point I'm not very interested in going into Ruby on Rails or back to Java, but if it meats all other requirements I'm willing to listen to everybody.

** I'm using the term loosely, as it doesn't really have a version system... it doesn't have much system at all, especially after I've been messing with it for more than two years... :p
 

Mitthrawnuruodo

Moderator emeritus
Original poster
Mar 10, 2004
14,423
1,063
Bergen, Norway
what are your functional requirements?
I'm not sure what you mean...? I've tried to sum up what I want to do above... and I don't really care how it works as long as it's capable of helping me make my CMS...

I've never used a web programming framework before, and are still learning, so if you think I need a set of "functional requirements" I'm needing a bit more on what exactly you mean by it (also since it's a phrase I never encountered at school or later). If you can examplify it a bit I'll whip up a list in no time... ;)
 

Lyle

macrumors 68000
Jun 11, 2003
1,874
1
Madison, Alabama
Just curious, what is it about your situation that prevents you from just using an existing CMS (e.g. Drupal or Joomla)?
 

Mitthrawnuruodo

Moderator emeritus
Original poster
Mar 10, 2004
14,423
1,063
Bergen, Norway
Just curious, what is it about your situation that prevents you from just using an existing CMS (e.g. Drupal or Joomla)?
Mostly branding... ;) :p

To be more serious, it also has to do with flexibility and philosophy. My employers (and - to some degree - me, too) have very clear idea of how our CMS should be (and without going too far into their business strategy: what I've seen of the demos of "ready made" CMSs and eCommerce systems wouldn't really fit us, at least not at the moment).

But, as I said above: two different people have asked me to look into web programming frameworks, to reduce the level of hand coding required, and since I know absolutely nothing about those frameworks (didn't really go into anything similar either when I took a CS engineering degree or later at University), so I thought I'd ask here to see if anybody else had any experience with them...

So, to specify the question, then maybe: Does anybody have any experience with Django? Or CodeIgniter, CakePHP and/or symphony? Or can you recommend other similar frameworks that I should look into? :)
 

zimv20

macrumors 601
Jul 18, 2002
4,402
11
toronto
I'm not sure what you mean...? I've tried to sum up what I want to do above... and I don't really care how it works as long as it's capable of helping me make my CMS...

functional requirements are what the app does, from a user and business perspective. what you laid out initially are more or less technical requirements.

i get that you don't want to give away too much info by specifying what it needs to do, but to simply state functional requirements as "it does CMS stuff" is a little vague. at which point i'd say, "what's wrong with joomla?"

speaking of which, with enough design skills and work, i think it's possible to almost completely hide the fact you're using joomla.
 

Mitthrawnuruodo

Moderator emeritus
Original poster
Mar 10, 2004
14,423
1,063
Bergen, Norway
functional requirements are what the app does, from a user and business perspective. what you laid out initially are more or less technical requirements.
Ok, then... I'll give it a try...

I need to be able to define user groups and a basic permissions system, with users more or less like this:
- admins: make new "chapters", add to, delete and edit EVERYTHING!
- editors: can make new pages (ordinary and special) and edit all their own pages within certain chapters
- specialists: Can typically get access to some very limited functions, and maybe have their own page that they can edit
- users: can register and change their profile, maybe even have a "members page" where they can edit the page contents at will

I've been using TinyMCE as a wysiwyg editor for page contents, which is quite nice.

I need to be able to let, at least admins and editors (but quite possibly all), to upload images (would be great with some basic manipulation) and other files (potentially different files to different locations), somehow, preferably in a more secure way than our current form based system (which needs the destination folders to have 777 as permission, with the potential, and unfortunately quite real, security disaster that involves).

Anything else... nah... depending on the client they might want different things, the last couple of years I've customized our existing CMS in many ways, 100% customized to the clients specifications**, and made a couple of slightly different light-weight internal forum and news systems, a few different very basic shopping cart systems, newsletters with personalized login for recipients (that's the main engine for our "spam system" ;)), quite a few contests (where people answer questions and/or upload something) some with unique identifying codes for entries, etc. etc. etc.

** The thing I've noticed with ready made systems is often that you often need to do stuff in a certain way/with some limitations, and many clients just won't understand, and much less accept, why they cannot have things exactly as they want it, and do I like better to just make things from scratch than to poke through a ready made system and try to get that to do whatever it is I want, and I think a framework might help me by providing a basis to build on, rather than a system to modify... or am I completely on the wrong track here...?

i get that you don't want to give away too much info by specifying what it needs to do, but to simply state functional requirements as "it does CMS stuff" is a little vague. at which point i'd say, "what's wrong with joomla?"
I know... it's a bad combination when I really don't know much about the thing I'm asking about and need to be a bit careful about what I'm saying at the same time. But I hope my above points helps a bit... :eek:

Anyway, the problem is that there are so many to choose from, that I need just a heads up on which I should look closer on, since covering/testing all would take forever.

speaking of which, with enough design skills and work, i think it's possible to almost completely hide the fact you're using joomla.
Now, that wouldn't be quite right... would it...? ;)
 

zimv20

macrumors 601
Jul 18, 2002
4,402
11
toronto
what you want from the user accounts is quite close to what you get with joomla, but not perfect. the drupal system is tweakable to that, though, so i'd start there. a lot of what you want you get for free, and from what i understand it's highly customizable (i've built a joomla site, but only tinkered w/ drupal, fwiw).

btw, here's an example of a joomla site which doesn't look like a joomla site:
http://neofuturists.org/

if they implemented SEO it's be pretty hard to tell it's joomla, imho.
 

zimv20

macrumors 601
Jul 18, 2002
4,402
11
toronto
i should add:

i'm using joomla 1.0.x. From what i understand, joomla 1.5 has more flexible user levels, so that would probably be worth checking out on your end.
 

Jeromie

macrumors member
Jan 28, 2005
50
0
I can't say anything about the various PHP frameworks or existing CMS products, but I've used Django to build what is essentially a very specialized CMS.

A few points about Django:

  • Like any framework, it takes a little while to wrap your head around the way everything is tied together, but once you get going things make sense.
  • If your model design is good (essentially your database design) it's easy to add features and reuse code.
  • The documentation available on the web site is excellent.
  • I find it to be pretty fun to use, but that's partly because Python is my favorite language to code in.
  • The built in authentication system is useful, but may not do everything you want it to. As with pretty much everything else in Django, it's not too hard to add functionality.

There's a lot more to be said about it, and if you have any specific questions I'd be happy to answer them. I like Django, and plan to use it more for future projects.
 

AmbitiousLemon

Moderator emeritus
Nov 28, 2001
3,415
3
down in Fraggle Rock
I've used just about every major (and many minor) CMS systems out there as well as managed a web server deploying nearly every open framework.

I haven't found any CMS or framework I like.

Most CMS systems (joomla, drupal, et al) produce really ugly html. Coming to all of this from the design/html side of things I can not tolerate bad html. Most force you into organizing things the way the CMS designers want you to - which most often means you need to think of your site as a blog and work around that. (Speaking in generalities here so there are exceptions).

Rails is pretty amazing. But deployment and framework upgrades are an absolute nightmare. IMO the system is just too immature at this time for serious production systems.

Similarly Radiant (a rails based CMS) is absolutely amazing - but is just too immature. Each upgrade to rails and to radiant and any of the gems it relies on results in nightmares.

In terms of frameworks though, rails seems to be the most mature and the one with the best community behind it - cake, turbogears, et al are neat but not as mature and suffer the same sort of problems rails does. If you have dedicated servers I think rails is your best bet if you want to go with a framework.

This is a pretty interesting video put out by the Plone people comparing J2EE, Plone(Zope), Rails, Django, and TurboGears. Whether you agree with them or not its a pretty darned interesting watch:
Plone Comparison

I'm sorry I don't have any good answers for you. I've struggled with this issue myself for years now and have websites with just about every solution. Moving forward though I've picked rails and despite constant headaches still feel it is best.
 

milkshake

macrumors newbie
Oct 5, 2007
1
0
First I would say *definitely* go the framework route, they do what a CMS does but without getting in the way.

Having a bit of experience with both Rails and CakePHP, I would say the choice between frameworks is moot. Many frameworks have copied the Rails approach, or arrived at a similar solution. So the skills you learn are mostly transferable.

It also depends on the context, knowledge of the language, hosting options... If the site is locked into an old-skool host, go with a PHP framework, if you're starting from scratch, give Rails or Django a spin.
 

cube

Suspended
May 10, 2004
17,011
4,972
You're ruling out Java, but I would look at Lenya because it's based on Cocoon.
 

werther

Suspended
May 15, 2006
108
0
@ambitiouslemon

that video was interesting, however the rails part could have been better. I do not know the other frameworks so I cannot remark on them. For what he wanted to do there was no reason to actually make the SQL tables within MYSQL. He could have simply generated a model and migrated the database. Eliminating the headaches of having to know all the tedious naming conventions that go along with making mysql tables for rails. The rest of it though, regarding rails, I believe was spot on.
 
Register on MacRumors! This sidebar will go away, and you'll see fewer ads.