Home | Blog | Software | Reviews and Features | Forum | Help | Donate | About us
topbanner_forum
  *

avatar image

Welcome, Guest. Please login or register.
Did you miss your activation email?

Login with username, password and session length
  • December 03, 2016, 07:56:46 PM
  • Proudly celebrating 10 years online.
  • Donate now to become a lifetime supporting member of the site and get a non-expiring license key for all of our programs.
  • donate

Author Topic: Anyone interested in some serious look at internals of CMS systems?  (Read 6708 times)

mouser

  • First Author
  • Administrator
  • Joined in 2005
  • *****
  • Posts: 36,406
    • View Profile
    • Mouser's Software Zone on DonationCoder.com
    • Read more about this member.
    • Donate to Member
Is anyone here interested in (and qualified for) doing a serious look and comparison of the internals of various CMS systems?

I'm more interested in examining and comparing the various ways that the different CMS systems structure their databases -- manage users, groups, permissions, content, profile information, etc.

Anyone interested in such a thing?

I've been working off an on on a large project to build a cms-like system (YUMPS), and i've decided to take a bit of a step back and survey how different CMS systems handle these kinds of issues, in an attempt to make something that is as good as it can be.

I was thinking maybe someone might want to join me in surveying the state of the art solutions, and then possibly starting from scratch.

I've been rethinking my approach to YUMPS and am considering taking a step back and focusing more on describing the system from a pure database api, language neutral standpoint.

I know it's a long shot but I thought I would ask if anyone here might be interested in such a project.

skwire

  • Global Moderator
  • Joined in 2005
  • *****
  • Posts: 4,664
    • View Profile
    • Donate to Member
Re: Anyone interested in some serious look at internals of CMS systems?
« Reply #1 on: February 13, 2013, 04:00:36 PM »
Just for the record, I don't know the first thing about such things.  Well, maybe the first...but my knowledge of such drops off a cliff after that.   ;D

Stephen66515

  • Animated Giffer in Chief
  • Honorary Member
  • Joined in 2010
  • **
  • Posts: 3,129
    • View Profile
    • Donate to Member
Re: Anyone interested in some serious look at internals of CMS systems?
« Reply #2 on: February 13, 2013, 04:05:16 PM »
Quote
Is anyone here interested in (and qualified for) doing a serious look and comparison of the internals of various CMS systems?

What he means is:

Is anybody here interested in (and stupid enough) to completely lose all sense of morality, and also lost the will to live, by doing an in-depth comparison of some of the most boring, and tedious code, ever.

 ;D

Rover

  • Master of Smilies
  • Charter Member
  • Joined in 2005
  • ***
  • Posts: 630
    • View Profile
    • Donate to Member
Re: Anyone interested in some serious look at internals of CMS systems?
« Reply #3 on: February 14, 2013, 12:15:03 AM »
@Mouser  Were you asleep when you posted this?  :P

I know this has been torturing you for a long time.  I think you need to be a little more selfish about your goals.  General comparison of CMS's will be an academic exercise in the general study of synergistic relationships for high impact effectiveness.*

Any CMS you look at will have features and flaws.  The one you learn the best is probably the one that you will be most effective with.  If yumps is feeling like it doesn't fit the bill, take a step back, re-think it and be willing to admit you were wrong. 
If you're really stumped, search for some design patterns that have already solved the problem.  If you can't find any existing, break the problem down into smaller chunks.  IMHO, all of the CMS problems have been solved; user interface and RAD effectiveness are the only variables.

So, now that we've gotten the obvious stuff out of the way, what's the problem that you're trying to solve?  ;)


*No, it doesn't mean anything.  :P
Insert Brilliant Sig line here

mouser

  • First Author
  • Administrator
  • Joined in 2005
  • *****
  • Posts: 36,406
    • View Profile
    • Mouser's Software Zone on DonationCoder.com
    • Read more about this member.
    • Donate to Member
Re: Anyone interested in some serious look at internals of CMS systems?
« Reply #4 on: February 18, 2013, 09:09:49 AM »
Rover,

I can't disagree with any of your comments -- but in this case I was really just thinking that it would be useful to try to survey the different kinds of INTERNAL structural choices that different CMS/socialnetwork software systems chose, and why.  How do they represent users and groups, etc.  It's not so much in an effort to solve a problem as much as it is a desire to understand the different strategies chosen to see if one approach stands out as better than the rest.

Rover

  • Master of Smilies
  • Charter Member
  • Joined in 2005
  • ***
  • Posts: 630
    • View Profile
    • Donate to Member
Re: Anyone interested in some serious look at internals of CMS systems?
« Reply #5 on: February 18, 2013, 10:29:56 PM »
Hey M,

As I re-read my post, I realize it may have come off as somewhat of a put-down.   :huh:  I trust that you remember the respect and admiration I hold for you and read it with my "mental" intent. :)

Internal Structural choices?  Is this an MVC vs. "everything else" quest?  I'm not doubting your desire, just trying to understand.

This almost feels like a which web development framework is best discussion and I'm sure that's not your intention.  It just gets really foggy sometimes in the Web Dev world. :)  At least for me.

I'm currently suffering from Analysis Paralysis for PHP Dev.   Zend, Pear, Cake, Yii, etc. etc. ad nauseum.

For the sake of mouser's goal... please reply to any comments of mine re: PHP frameworks in a new thread. ;)
Insert Brilliant Sig line here

mouser

  • First Author
  • Administrator
  • Joined in 2005
  • *****
  • Posts: 36,406
    • View Profile
    • Mouser's Software Zone on DonationCoder.com
    • Read more about this member.
    • Donate to Member
Re: Anyone interested in some serious look at internals of CMS systems?
« Reply #6 on: February 18, 2013, 10:41:50 PM »
I guess the kind of thing i was interested in is more internal structural decisions like:
  • How is the plugin/extension system designed?
  • How is the installation system designed?
  • How are users, and more importantly GROUPS of users represented in the database?
  • How is the permission system handled?
  • How is upgrading handled?
  • How are hooks and events handled?
  • How is translation handled?
  • How is logging handled?
  • How is security handled and what kinds of options exist for monitoring and dealing with problems?
  • What kind of support for versioning exists?
  • What kind of choices were made about what to build into core vs. what to write as extensions?

Rover

  • Master of Smilies
  • Charter Member
  • Joined in 2005
  • ***
  • Posts: 630
    • View Profile
    • Donate to Member
Re: Anyone interested in some serious look at internals of CMS systems?
« Reply #7 on: February 19, 2013, 09:35:53 PM »
I guess the kind of thing i was interested in is more internal structural decisions like:
  • How is the plugin/extension system designed?
  • How is the installation system designed?
  • How are users, and more importantly GROUPS of users represented in the database?
  • How is the permission system handled?
  • How is upgrading handled?
  • How are hooks and events handled?
  • How is translation handled?
  • How is logging handled?
  • How is security handled and what kinds of options exist for monitoring and dealing with problems?
  • What kind of support for versioning exists?
  • What kind of choices were made about what to build into core vs. what to write as extensions?

WOW!  Each of those could almost be a Thread Topic of their own.

I've been pretty impressed with  some of the designs I've seen in the past.  I like the model where you include skeleton hook files at various stages of the page build.  That seems to let you handle upgrades, plug-ins, versions and translations.  It also tends to scatter your logic across dozens of files, so you really have to know where your going to make changes.  Something like this:

Code: Text [Select]
  1. ....
  2. include(main_menu.php.inc);
  3. include(post_main_menu_hooks.php.inc);
  4. ....

where post_main_menu_hooks.php.inc would contain something like:

Code: Text [Select]
  1. [std include validation and setup]
  2. // Add your post main menu hook includes here:
  3. include(sample_menu_hook.php.inc); // contains nothing -- just a sample

You can do the same for language, etc. 

Group, permissions and users have been badly handled from most of the examples I've seen.  A module that can integrate with anything would be the best. ;)

I have some ideas on users and groups but I don't like them because they're extremely tedious.  It would basically require non-public information to be listed by element (Table or Field) with Group Membership requirements to View or Edit.  (You could add RO and RW fields)

I always get intimidated by the scope of the project when I think about it too much. :)
Insert Brilliant Sig line here

Rover

  • Master of Smilies
  • Charter Member
  • Joined in 2005
  • ***
  • Posts: 630
    • View Profile
    • Donate to Member
Re: Anyone interested in some serious look at internals of CMS systems?
« Reply #8 on: February 20, 2013, 11:25:38 PM »
Alright Mouser, yes I am.  If only for the (possibly foolish) belief that CMS should be easy.

I have a couple of Internet sites and maintain several Internal sites for various and sundry web content sharing.  Every time I start thinking about how to integrate I get sick.  From an enterprise perspective, every CMS I have seen is woefully inadequate.  Oh sure, I can add 37  plug-ins (that may or may not be compatible) to instantiate adequate control and authentication, but the first time I apply a zero day patch, 1/2 of my plug-ins break.

There OUGHT to be a better way!  Web is supposed to be easy.  It's mainframes that are hard... right?

How do you propose we investigate, evaluate and potentially improve upon our target CMS's?  (You know I value your thoughts/insights)
Insert Brilliant Sig line here

kwacky1

  • Supporting Member
  • Joined in 2008
  • **
  • Posts: 182
  • i am Cody's cousin
    • View Profile
    • CrazyLittleWebsite
    • Donate to Member
Re: Anyone interested in some serious look at internals of CMS systems?
« Reply #9 on: March 28, 2013, 08:28:07 AM »
I feel like a broken record whenever CMSs are mentioned on DC, so please excuse me while I climb on my horse.  ;)

Quote from: mouser
  • How is the plugin/extension system designed?
ModX is basically a framework, one of it's greatest features are the use of what they call chunks and snippets, a chunk is simply a piece of html and a snippet a piece of php code. These pieces can be inserted anywhere in to your template which makes life incredibly easy. Extensions/addons are usually just a collection of chunks and snippets. One of the features added for Revolution 2.0 was a transport system that means you can easily build a package that can be simply installed by the user.
Plugins, separate again, can be event driven, for example before or after a page is rendered. When the event happens, so does your plugin.

Quote from: mouser
  • How is the installation system designed?
Most CMSs I've had experience with are pretty much the same, you have a wizard based interface that does a few pre-req checks, gets the database info and then executes a sql script to create the tables and update any config files.
If, however, you go with their cloud offering (yes, they do have a free dev account), installation is done in seconds at the click of a button.

Quote from: mouser
  • How are users, and more importantly GROUPS of users represented in the database?
In Evolution 1.0, users and groups were a bit strange but in Revolution 2.0 they've gone for ACLs. It can be a bit much to get your head around when coming from the old way, which was strange, but simple. But I find that it makes more sense.
As for the database structure, to me it makes sense.
Users are in a table that is pretty much just username and password.
An attributes table contains the other bits and pieces like email, phone, etc.
Then a groups table that contains the groups you've defined
and a table that links users to groups as a user can be in more than one group.

Quote from: mouser
  • How is the permission system handled?
Permissions are a collection of policies, the policies define what a user can and can't do, like edit a document, view certain menu items.

Quote from: mouser
  • How is upgrading handled?
Download new package, upload to host, re-run setup, wizard handles the upgrade process.
Via ModX Cloud? click a button, done in seconds.

Quote from: mouser
  • How are hooks and events handled?
As mentioned above in relation to plugins. Certain events are defined, when you create or install your plugin you select which events will trigger your code.

Quote from: mouser
  • How is translation handled?
Revolution 2.x really went all the way with this. There is full lexicon management, you can change any word you like.
So to start with, all words are seperated into namespaces for various parts of the system.
In the lexicon directory you have a folder for each language and each language has a set of php files which define the value of each string... eg
$_lang['help_title'] = 'Help';
On top of that any changes to the default lexicon are stored in the database, meaning you can revert any change quite simply and if you want to call documents Bananas, then go ahead and do so.

Quote from: mouser
  • How is logging handled?
The api has a logging method which logs to a file, you can call the method with flags like error/warning/info from any of your custom scripts. The log file can be viewed/cleared via the management intercace.

Quote from: mouser
  • How is security handled and what kinds of options exist for monitoring and dealing with problems?
This is more a process kind of question I'm guessing. The team seem pretty committed to squashing vulnerabilities, I'm not sure what monitoring goes on internally.

Quote from: mouser
  • What kind of support for versioning exists?
Out of the box, none really, but as with most things in the CMS world, there is an Add-On available.

Quote from: mouser
  • What kind of choices were made about what to build into core vs. what to write as extensions?
I like this question, because not every CMS can be for everybody so a line has to be drawn somewhere as to what's included out of the box and what gets bolted on afterwards.
First and foremost, ModX is a framework, what it does out of the box is give you incredible flexibility.
One of the things v1.0 did poorly, was blogging, out of the box, 2.0 is not too crash hot either (ie. it's not wordpress), but one of the lead developers wrote and add-on. Install it, and bam, now you have full on blogging.
Another thing left out of the box in 2.0, TinyMCE, because you don't have to use TinyMCE if you don't want to but it is the most popular addon download.

I hope that's piqued your interest, feel free to ask me more technical/direct questions on any part you wish to know more about.

All of this info is drawn from my personal experience, I'm just an avid user who's been developing web sites with all sorts of crazy requirements since I first discovered ModX in 2008.

kwacky1

slyskawa

  • Supporting Member
  • Joined in 2008
  • **
  • Posts: 2
    • View Profile
    • Donate to Member
Re: Anyone interested in some serious look at internals of CMS systems?
« Reply #10 on: March 29, 2013, 09:36:19 AM »
I've been using CMS's since 2001.  I started with E107, tried Joomla, Drupal, MoinMoin, GetSimple and am currently trying TikiCMS.  My recommendation would be to pick a couple of the more mature CMS's and look at the changes they've made for their major release (1.0 to 2.0).  All of the CMS's I've used have had growing pains and have found out the hard way that the way they were doing things was not the most optimal way.  Instead of comparing one CMS to another, compare the same CMS over major versions and see what changes they've made.

Grouping and prioritizing your questions may help getting the information you are looking for.  Groups, users and permissions are all related in some CMS's.  A user is assigned to a group, groups are given permissions, permissions are additive so each user starts off in a group that has minimal permissions.  What goes into the core is a design issue, so again, I would look at how various CMS's have changed what they put in the core rather then compare one CMS's core offerings to another CMS's core offerings.

mouser

  • First Author
  • Administrator
  • Joined in 2005
  • *****
  • Posts: 36,406
    • View Profile
    • Mouser's Software Zone on DonationCoder.com
    • Read more about this member.
    • Donate to Member
Re: Anyone interested in some serious look at internals of CMS systems?
« Reply #11 on: March 30, 2013, 09:17:57 AM »
Quote
Instead of comparing one CMS to another, compare the same CMS over major versions and see what changes they've made.

That's a clever idea for a way to get additional insights.

mouser

  • First Author
  • Administrator
  • Joined in 2005
  • *****
  • Posts: 36,406
    • View Profile
    • Mouser's Software Zone on DonationCoder.com
    • Read more about this member.
    • Donate to Member
Re: Anyone interested in some serious look at internals of CMS systems?
« Reply #12 on: April 11, 2013, 10:00:30 AM »
I apologize for not following up on this more.. But I'm ready to get serious about it.

Rover -- and anyone else -- do you feel up to diving into this stuff seriously?  Anyone interested in writing a paper comparing CMS internals?

Jammo the OrganizedFellow

  • Supporting Member
  • Joined in 2006
  • **
  • Posts: 212
    • View Profile
    • OrganizedFellow
    • Donate to Member
Re: Anyone interested in some serious look at internals of CMS systems?
« Reply #13 on: August 18, 2013, 09:21:37 AM »
I've been absent for a long time here.
I've had great success with ProcessWire CMS. OpenSource, on github, powerful, unlimited custom fields. I left ExpressionEngine for it months ago. Still learning it though, but has a handy jQuery style API.
As an aspiring web developer/designer, it is a constant struggle to cope with my ADHD + Hypomania/Bipolar Disorder.

The slow growth of my web dev projects is eclipsed by my patience, understanding and desire to learn AS MUCH AS POSSIBLE as I slowly progress.

X_____jamjammo_____

mouser

  • First Author
  • Administrator
  • Joined in 2005
  • *****
  • Posts: 36,406
    • View Profile
    • Mouser's Software Zone on DonationCoder.com
    • Read more about this member.
    • Donate to Member
Re: Anyone interested in some serious look at internals of CMS systems?
« Reply #14 on: August 18, 2013, 09:35:47 AM »
Welcome back Jammo  :up:

zaq.tech

  • Participant
  • Joined in 2010
  • *
  • default avatar
  • Posts: 8
    • View Profile
    • Donate to Member
Re: Anyone interested in some serious look at internals of CMS systems?
« Reply #15 on: August 19, 2013, 09:21:54 AM »
Hi Mouser,

Could you tell me please which CMS will be analyzed?

I've always been interested in doing something similar.

Thanks.