13

*NOTE: This is not a 'which is better' question!*

Wordpress and Joomla! are both awesome open-source CMSs.

What are the key differences

1) in the software architecture between Joomla! and Wordpress?

2) in the way in which extensions to the core (out-of-the-box) functionality are made? and

3) How the core and extensions are upgraded and updated?

  • 1
    As far as i know - 1.wp is not mvc and tend to be care about blogging features more than total website. 3. but upgrade process in wordpress is much better than joomla neglecting the wp plugins incompatibility. – dev-m Apr 22 '14 at 21:20
  • 2
    This comment is far too broad to give a specific or definitive answer (there are many answers that would be "right" - a good example of how not to write a question). Please consider rephrasing your question to be more specific. – Andrew Eddie Apr 22 '14 at 21:46
18

Both Wordpress and Joomla! are highly-regarded and each have there unique advantages when you compare them.

To answer your questions:

in the software architecture between Joomla! and Wordpress

  • Joomla is OOP (object-oriented) and MVC (an object-oriented design pattern).

  • Wordpress is written in Procedural code.

Procedural programming specifies the steps the program must take to reach the desired state, whereas object-oriented programming ("OOP") organizes programs into objects or data-structures and methods together with their interactions.

For simple programs, procedural code (think of a line-by-line sequence of commands) works great, but for large complex applications, procedural code can be harder to maintain - often resulting in what's called spaghetti code (i.e. when the line-by-line sequence of commands starts using many GOTOs, exceptions, threads or other branching constructs and it's flow becomes conceptually like a bowl of spaghetti). In other words, Procedural code starts off simple, but can become complex and tangled.

More complex applications can therefore be better structured with OOP and with MVC - a a more advanced style of programming that's much better suited to building really complex programs with a lot of moving parts.

Whereas procedural code may initially be easier to write and maintain for simple programs, OOP has advantages in that it can neatly pull together collections of variables (called 'properties' in OOP) functions (called 'methods' in OOP) into bundles - resulting in code that is tidier, easier to read, maintain and extend.

For most Wordpress applications (e.g. simple blogs), procedural code works perfectly well.

For more complex applications (e.g. those requiring user group permissions and those which use many integrate many extensions to extend features and functions), OOP is generally considered a much more elegant approach.

To sum up:

Worpress's software architecture (based on procedural code) has it's strengths in simplicity, but procedural code is not ideal for complex applications which robust extensibility.

Joomla!'s software architecture (OOP/MVC) may seem more complex, but when well-engineered, OOP/MVC actually makes it much simpler to extend an application's features and functions and to have all those extensions work together harmoniously.

If you want to understand the differences (at a basic beginner level), read PHP Procedural vs PHP OO vs PHP MVC by Peham Raza - he discusses the 'ins and outs' of each in way that makes it easy to better understand the benefits.

in the way in which extensions to the core (out-of-the-box) functionality are made?

  • Joomla added features with Module,Component,Plugins
  • WorPress uses plugin for it feature extending.
  • Joomla is strict in its module , plugin or component creation(you cannot simply upload the files via FTP and just activate, you have to do it with Extension installer).

How the core and extensions are upgraded and updated

  • Both are using almost same technique for the upgrade or updates.(They provide developers to create new features with extensions or template changes with override So basically no core files we need to edit on this situations so upgrade will improve their security patches and more.)

There is a saying Wordpress is not a CMS, but now days it is a CMS with all the features of Joomla and more.

WordPress is good for users that have less development knowledge, and Joomla for developers.

Hope its make sense.

  • 3
    MVC is not really the main architectural difference. The main difference is that Joomla is OOP and WordPress is not (so much). The both have an MVC paradigm but it's more obvious in Joomla because of the way we name classes. – Andrew Eddie Apr 23 '14 at 6:14
  • @AndrewEddie you are right. – Jobin Jose Apr 23 '14 at 6:16
  • Andrew - thank you. If we remove the reference to MVC, does this make the answer more accurate? – NivF007 Apr 23 '14 at 6:23
  • 1
    Your last sentence I would put it more like WordPress is often used by people not interested in development just the writing on their own or very small team. Joomla scales better when multiple people will work on the same page and a team build the site. (Both can also work in the other team size though.) – tristanbailey Nov 28 '14 at 19:14
6

I think to truly answer this question, you need to be extensively familiar with both WP and Joomla!. I'm Joomla! heavy and have only used WP a few times, so my answer may not be as full as you might hope.

WP is first and foremost, a blogging platform. It's set up for feeds of data. You have to go out of your way to move past the feed default to get a regular static Home page. It's not hard, it's just not default. If you know what you're doing, you can expand WP to move beyond the blogging platform, or if you download a template that has already done it for you.

Joomla is first and foremost, a CMS. It's built to hold a complete website, including blogging, straight from it's base core. Plugins help, they can get you a more customized experience for those who don't know how to create their own components and plugins. After all, why reinvent the wheel?

In my experience, WP is great for people who aren't developers, or who know just enough. Joomla on the other hand was built for developers, for people who want to create a fully customized front-end and back-end experience. I spent hours working in a WP template to force it to do what I wanted, which was frustrating when I'm used to building things the way I want them the first time with Joomla (we don't use templates - we have our own core Joomla that's stripped down to the basics and we build from the ground up).

If you pull up the FTP of WP and Joomla side by side, you can see how very different they are.

WP has this plugin area where you can search for plugins, choose and install. I believe you can also update from this same place. When you're in a plugin area, it will often tell you that an update is available.

Joomla uses Extension Manager where you can upload a downloaded plugin or component - I think there might be search functionality, but I honestly have never used it because I'm usually using JED to find what I need. This same area also offers you an update button where you can see all the available updates for what you have installed. Again, some components will tell you they have an update available, but not all of them.

The key difference I see is WP is made for users - they install a template, they can update, they can add, Joomla is made for developers, we do the installation, we do the updating, we build/add new features and functions. That's not to say it's not user friendly, but there are areas that I think are pushed out of the user's way because they are built for developers.

2

As you are talking about architecture, it does matter when you are building a portal or a complex website i.e. lots of inter-connected entities.

  1. Joomla source code is object oriented.
  2. Joomla code is very well divided i.e. applications, plugins, components.
  3. Most of the design patterns are followed in Joomla, e.g. Factory, Decorator, Dependency Injection, etc.

As a C and C++ developer when I adopted joomla, I loved it as it uses same set of standards rather then functions spoiling the global namespace.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.