What is a CCK? Content Construction Kits are used to create custom posts/pages/entries on a CMS (Content Management System). This article compares the CCK systems for Joomla.
There are a couple of components that are filed under CCKs for Joomla. Below are the ones I'll be comparing today.
First, a disclaimer: I am a PHP dev who specializes in Codeigniter, and Joomla/K2. I'm not affiliated with any of these companies, but I tend to have a bias towards K2 and Codeigniter. K2 is my general benchmark in this review. I've been using K2 for about 2 years. So if you think that I'm wrong about something, don't be offended. Just my stupid opinion of what I saw.
K2 and ZOO are built more for informational websites (most websites) while Seblod, Fabrik and Cobalt more or less allow you to make up your own data structure. What matters for us at Y-Designs is the ease of use (for end-users), ease of design (for designers), ease of configuration and customization (for devs and site maintainers), and future prospects for the project (watching commit/release intervals!). I'm only spending max 1 hour on each CCK (all with a clean install of Joomla from the start) to look around and get an impression. The hour limit is meant to reflect the relative learning curve. I’m not the brightest, nor the dullest so hopefully this will help.
How I tested all extensions:
- Latest Joomla 3.0 series
- Latest version of all Components being compared
- On the same server around the same time
- No optimization or caching
- Bone stock otherwise
Just so you understand my perspective and goals, below are my expectations:
- Good dev/designer documentation like Codeigniter's User Guide (From a designer's / developer's perspective)
- Configuration layout/option isn't more complex than K2 (From a site admin's perspective)
- A detailed tutorial I would provide to the client/end-user can explain how to add an item/entry in less than 3 pages of PDF. (From end-user's perspective)
The points that I'll try to cover in this comparison:
- Product Summary and First Impressions
- Documentation (or the lack thereof)
- Configuration/Installation (and also extensions/plugins to the system)
- Perspective as an End User/Maintainer
- Perspective as a Dev/Designer
- Memory usage and speed (Joomla Global Config Debug Option)
Points I won't be covering:
- Individual extensions/plugins for each CCK
- If the CCK claims to have application builder functions, I won't be exploring that. This is a CCK review.
We'll first be looking at Fabrik. Fabrik weighs in at 5.8mb for the version we're using (3.1b) which is pretty hefty for any Joomla Component. This system allows you to use existing tables or new tables you make via MySQL. Very handy for a developer who wants to show data straight from an existing database using Fabrik as a View-Controller (in the sense of a MVC).
At first glance, the website seems pretty plain and doesn't seem to contain a lot of info except in the forums. This happens to not be the case though. They do have their documentation in a wiki format (http://fabrikar.com/wiki/index.php/Main_Page). Their wiki docs is actually nice for an OSS project. I was able to apply joins to the two tables and relate them correctly in no time. Also the system has a nice link from "help" button in the Administrator to their wiki site which explains what each part does. The documentation was done on the wiki using a slightly earlier version.
I found that they have a subscription based support system: http://fabrikar.com/subscribe They seem to offer better documentation through the subscription (PDF manuals). At the time of the writing they just updated their website to include a "Free Subscription" option which includes "Video Tutorials". Hopefully those are the new video tutorials!
The system has a lot of plugins/extensions. Unfortunately, it looks like most of them are for J1.5 (Dunno if they're completely compatible with 2.5). I didn't have time to go and install everything since I have limited time so you guys will have to figure this part out.
FOR END USERS/SYSTEM MANAGERS
Since Fabrik calls itself more of an "application builder" than it does a CCK, this part is a bit hard to define for the end user. The end user experience of submission forms and data views are very simple without any skinning. The data views allow you to add new records and sort existing ones. For some reason, I had a hard time pulling up the detailed view for each record (again a time limit issue).
Below are some terms that may come in handy:
- Lists: Lists are like categories. They keep records together and allow you to do joins between the records within the configuration for each list.
- Forms: Data entry counterpart to the lists. They allow you to enter data from the front end.
- Groups: Fieldsets for the forms.
- Visualizations: Used to create charts, maps, calendar and other visual data from the data sets present.
- Packages: Allow you to package your existing forms, groups, lists, etc to a installable form.
- Connections: Governs the connection the the databases. You can connect to databases besides the one that runs your site.
- Schedule: Allows you to run a cron jobs straight from Fabrik
FOR DEVS AND DESIGNERS
Make your own DB structure
The most convenient part of Fabrik for me was the ability for me to create a DB structure on MySql on my own. This allows for maximum flexibility in terms as a developer. This obviously means that it takes more time for someone who isn't a developer. The system even allows you to make joins quickly between the different DBs.
The devs for the project seem to be working on a video series for Fabrik aimed at Developers: http://fabrikar.com/wiki/index.php/Fabrik_%27Real-Life%27_Application_Tutorials (unfortunately the last edit was on March of 2012) What I saw in the video tutorial seems to show that Fabrik is really capable if you know the system.
Templating is done via MVC overrides just like everything else in Joomla. It doesn't seem to be a whole lot different from other components. The system also has a way to add custom CSS and JS for each template.
Cobalt is lightweight in terms of package size, but it seems to have more features. It turns out that the system is broken up into many smaller pieces so the core is smaller. In addition to the main component and the required Media Pack, the system requires each field type to be installed. These fields are for each entry types. A field can be anything from text, to email, to dates, to images. You have to go through their website to find all the field types you need.
Its good that they have docs, but its not well laid out like Codeigniter's documentation. http://www.mintjoomla.com/community/knowledge.html
Documentation seems to be pretty thorough. They even have very specific use case scenarios laid out: http://www.mintjoomla.com/community/knowledge/user-item/43-sergey/118-sql-source-in-fields-like-select-checkbox-.html
(Above link is for Hikashop integration).
FOR END USERS/SYSTEM MANAGERS
To configure the system you need to first create a section. A section is a master category of sorts. Once you make a "Section", you can create a "Category" within that section. This is where it got a little confusing. There is a link on the "Section" entry called "Category". This will take you to the category list. You can then create a category.
Once you've made your section/category, you can create a type. A type defines what a record will be like within that section/category. This is pretty cool. Again the system does the same thing it did with the section/category setup. You'll need to click on the Fields link on the Type record. You'll be taken to an interface that allows you to add a new Field to your Type. As mentioned before there are multiple Fields which you can assign to each Type. This is ultimately what makes this CCK a very capable system.
In addition to having configurable content types, the system has an audit trail/version control so that you know exactly what's been happening with the system. This is definitely a key feature missing from the other CCK systems.
Records are the entry within the system. They belong to Section/Categories and are defined by the Types/Fields.
Records can be placed from the front end with ease (permissions can be used to control who can submit records).
The records are fully searchable and sortable by different parameters on the backend.
- In addition to Types/Fields the system allows you to add Votes/Rating and Comments to each Record
- Packer System allows you to pack up your site's Types/Sections, etc for redistribution. (I haven't tried this at all)
- Tags: Works on all the Records
- Version control/audit systems for records
DEVS AND DESIGNERS
First of All: A Metric Ton of Configuration
Cobalt has a lot of configuration it has to go through before it can be deployed. I can see how it would take a long time to get the system placed into action. The configuration/backend will overwhelm any Wordpress end-user or dev! That said, a lot of these features are things that don't exist on other CMS/CCKs. Having that baked in is nice.
I think the system is good for intranet use or for a very complex site structure, but I almost question its over-flexibility. I would almost question the time it would take me to write something of a similar nature for a specific task from scratch. It might be quicker to do it through Cobalt, but I would also wonder how long it would take another dev to figure out exactly what I did within Cobalt (obviously documentation on the initial dev's part would be key).
Like most other CCKs listed here, MVC overrides seem to be the templating method. Because of the amount of configuration allowed, it has tons of files that need to be edited. Below is a link to templating in Cobalt.
I think it would be good if these guys released a full MVC View override package like K2 does for their system.
This system impressed me right away. It was clear what it was trying to do and it made sense. The backend is very nice. Seblod is a component that allows us to add new fields and even the ability to post-process form inputs to the Joomla Article system (com_content). Instead of creating an all new component like all the other CCKs do, this one piggybacks on the Article system (com_content) for input. It can also modify other Joomla systems such as the Category system, User system and the User Group system.
It isn't the best docs, but it does have its own way of organization. I wish the docs were more straightforward and organized by version numbers.
FOR END USERS/SYSTEM MANAGERS
Just like the Joomla Article System
All you have to do is use the article system to do everything. You can add an article just like you would on Joomla and It-Just-Works(tm)! The cool thing about this is that it really allows you to separate the Dev/Design work from the end-user. This means that there isn't a lot of mix-up and mis-configuration that happens with users. Also, using an existing Articles system (familiar to most Joomla users) allows for easy transition.
Click, Assign, Drag and Drop - Great for System Maintainers
Talk about making it easy. I was impressed with the "Form & Content Type Manager". The system allows you to click a "+" sign for a new field, assign its purpose (text, textarea, wysiwyg, image upload, etc) then you just drag and drop the new field into the appropriate spot. The "Position" button brings up a nice modal window that explains where all the positions will be in the output.
The "Fields manager" system was equally nice. It allows you to create specific field types that might be slightly different from the default fields provided. The only thing to note is that the "Fields manager" system will take over the Article system so you have to be absolutely aware of what you're doing before installation.
DEVS AND DESIGNERS
Templating in Seblod is a bit different from other CCK systems. This means that unlike most CCKs which use MVC overrides Seblod has you create a template folder for each unique page. This doesn't mean that you don't need a normal Joomla template at all. The template you create for Seblod will reside in the JDOC "component" area of your Joomla template like all other components.
Check out the below links for templating.
From what I could see, it looks like this is the weak spot for Seblod. It is able to do a lot of things in a flexible fashion, but at the cost of the View/Templating system. Adding complexity for Front-End Devs/Designers can be a huge deterrent for adoption. The template system appears a bit cluttered to me, though so do most templates until I understand what’s going on.
I know this thing inside and out. I don't need to use it to write a review on it. K2 is one of the most popular content management replacement systems for Joomla. I would say that it is closer to a CMS than it is to a CCK. It does have an "Extra Fields" system which could allow it to be filed under CCK. In fact, we use the "Extra Fields" system within K2 extensively on our website.
Unfortunately this is the weakest point for K2. Documentation has not been that great. They do have a lot of answers on their forums though. If you continue to getk2.org you'll see that the documentation section is pretty thin.
That's why we decided to have an entire section of our Tutorials/Blog sections based on the lack of documentation for K2. (We're working on a K2 templating tutorial which will be released soon!) Fortunately, K2 is straightforward if you know how to read a PHP view file.
FOR END USERS/SYSTEM MANAGERS
The Advanced Joomla Article System
The interface is pretty straightforward. It’s pretty much like any Posts/Category system; just like files and folders. I would say that K2 is like an advanced Joomla Articles system; nothing too fancy so you don't get too confused. The "not too fancy" setup is what makes it accessible unlike many of the more advanced CCKs with a more complex setup. If you want to learn more about K2, you can go straight to our Tutorial section under our Support page.
Lots of Options
There's tons of options and it’s sometimes too much, but often times perfect. What? Well, with K2 you don't have to install 5 plugins to get the job done like you do in Wordpress. No need for custom fields or social media integration plugins; these features are built in. If you don't like what comes stock with the system, all you have to do is modify the template a little bit and you're there. For example, we often replace the stock social buttons with the AddThis Bar. The system allows you to copy the template settings between categories for easy changes. If a certain item needs a setting turned on/off you can easily do that per item.
DEVS AND DESIGNERS
The great thing about K2 is how it uses standard Joomla MVC view overrides to template the pages. Pretty straightforward and easy to use, all you have to do is copy the default template provided by getk2.org and place it inside the "html" folder within the template. We'll be doing a detailed tutorial on this later this month/early next month. I would say that the simple templates make K2 a winner.
Wow. What an awesome component! It really defines what a CCK should be for both Users and Developers. I was awed by the well organized system. Its as if Seblod and K2 had a kid. While Seblod's templating is pretty intimidating, it has a very flexible custom fields system. K2 has a well thought out templating structure with a semi-limited fields structure.
Zoo allows you to define your own types/fields. It even allows you to have different item types within a single application.
Easy and without clutter. It’s as good as the User Guide for Codeigniter. I was particularly impressed by its depth and the details they go into. I would say that Zoo has the best documentation out of all of the CCKs here.
FOR END USERS/SYSTEM MANAGERS
The interface is very easy to use and understand. I think a lot of people will be pleased to see that the interface has nothing to do with the rest of Joomla, which is often a bit old school (J2.5 and below) or a bit Fisher-Price (J3 and above). This might be a problem since it does stray from the convention thus causing some confusion for some users.
App Based System
The entire Zoo system is based on the idea of "Apps". An app can be a blog, a web page/collection of pages, product catalog, documentation or anything else you might think of. I really like how the "App" idea is organized as well. On top of that, the Article Submissions System is pretty cool too. This is a one up on K2.
FOR DEVS AND DESIGNERS
Like I was talking about earlier, I think these guys really have this down.
I like the fact that they give you a nice templating lesson. K2 definitely didn't do that. It seems that they do have a lot of separate files to deal with which might become a hassle, but definitely better than most other options present here.
One interesting thing to note, the system stores the templates outside of the Joomla "templates" folder so it is decoupled from a specific template. This means that you'll have to create a separate template folder within the /media/zoo/applications/APP/templates folder. This might come in handy for some people, but I think it should have been in the "html" folder within the template (I do understand that the creators probably wanted things to be "app" specific rather than template specific).
Final Verdict and Performance
I think that each system has a place and a use that is specific. Not all of these systems are built for the same purpose; that's why they exist. To be honest, I felt like I was comparing Apples and Oranges most of the time.
My Last 2 Cents
The first three are closer to what I think of as a CCK (Content Construction Kit) or an App Builder. These are meant more for developer/system integrator types. They are meant to help you build systems which require many specific fields without much coding.
The last two are much closer to a replacement CMS system on top of Joomla. They're meant more for front-end devs/designers. K2 and Zoo are packaged for ease of use and mostly built for informational websites. I was pleased to find how capable Zoo is, even though not all the apps were available (without purchase). I couldn't tell you much more. I looked through the Zoo app folders and it looked like it would be pretty easy to create a Zoo App on your own.
If given a task to develop something that required customization above what K2 can do, as a developer, I would most likely tackle it with a MVC based PHP app (Nooku? Codeigniter?). I think Seblod is pretty darn cool and I really liked how it stuck with using Joomla's Article system. If I had more time I would like to explore that a bit more.
The first two systems, Fabrik and Cobalt are good for system integrators but I as a developer personally don't see a use. I think that if I needed that many custom inputs with a lot of complex scenarios, I might was well develop it on my own. Writing code might be easier than clicking and configuring for hours. I can see its use if the data to be entered was pretty straightforward. Also, I think that my perspective might be skewed since I only had an hour with each system (except for K2 which we use here everyday).
I think the two systems I would like to learn more about from this comparison are Zoo and Seblod. I definitely see their strengths and will see if they match our needs. I will of course continue to use K2 as I think it hits a great balance for most of my clients.
The Not So Scientific Performance Figures
Below is a table of performance figures for each CMS based on a single listing for an item (using the Joomla debugger here):
Above figures come from bone stock default settings so it shouldn't be used to draw any conclusions, but it does tell you the general size of each project and the potential overhead it might carry.
The above benchmarks were done on a shared server, so you shouldn't really take the microseconds as an indication of real performance. The memory size and the query numbers are a lot more telling of the systems here.
I used Joomla 3 and the latest versions of each system for this review as of April 5~22nd. (5 big components take a long time to review!)
I'll repeat my disclaimer: I am a PHP dev who specializes in Codeigniter, and Joomla/K2. I'm not affiliated with any of these companies, but I tend to have a bias towards K2 and Codeigniter. K2 is my general benchmark in this review. I've been using K2 for about 2 years. So if you think that I'm wrong about something, don't be offended. Just my stupid opinion of what I saw.