Alright, this might be another I’ve-already-seen-that-somewhere-on-the-web kind of article, but as we like to do things our own way here at Okoone, we felt like giving a brief, yet up-to-date, overview of some of the most important web technologies out there, cover some of their use cases, and help our readers get a good understanding of today’s web technology landscape.
So first, let’s start with a couple preliminary words on essential concepts...
Due to their distributed architecture (client / server), web applications typically combine two major components: a backend - that accesses, manipulates and stores the data (on a server), and a frontend - which is presenting it (on a client’s browser). Things have become a bit more complex recently (we’ll talk about recent trends in another article), but that’s essentially the way things work...
Content Management Systems (CMS)
Content Management Systems (CMS) are a type of web applications (deployed on a server) that are made to easily manage web content. CMS are ready-made web platforms that enable users to publish, edit, delete, organize and maintain content from a centralized web-based back office. CMS offer a lot of features that are ready out-of-the-box.
CMS are perfect for websites that need a whole set of common features: article and content editing and management, blog, forum, contacts, etc… CMS offer management through user-friendly administration panels, sometimes even directly from the frontend. CMS usually require integration, additional web development (to build custom content type and pages) and design (page layouts), but they provide a whole set of common features that are already developed. CMS are made to avoid reinventing the wheel.
There are a few major CMS out there with varying levels of flexibility (and complexity). All major ones are using PHP on the backend:
- Wordpress is by far the most used CMS out there. It offers a good (and growing) set of functionalities but is probably the least flexible one. Wordpress is fine for blogs, simple company websites, simple magazines, etc…
- Drupal is the CMS that offer the most flexibility but at the cost of a rather steep learning curve. Drupal is said to have framework-esque tendencies that enables developers to use bits of data in a lot of scenarios. Drupal is perfectly suited for complex corporate websites, magazines, etc...
- Joomla offers a good balance between Wordpress and Drupal, and proves to be good choice especially for web designers.
Some CMS are dedicated to a particular usage. For example, three CMS are widely used for eCommerce: Magento (PHP), Prestashop (PHP), Shopify (Ruby on Rails). This said, Drupal also has some eCommerce modules that enable that kind of eCommerce features (shopping cart, online payments, inventory management, etc…).
Other less popular CMS using different backend programming language are also available such as Typo3 (PHP), Concrete5 (PHP), Plone (PHP), Mezzanine (Python), LocomotiveCMS (Ruby on Rails), etc… They are also viable alternatives but their community is much smaller. They are nowhere as big as the 3 ones described above.
The drawbacks of CMS is that they can be rather inflexible as soon as you want things that are not supported out-of-the-box or through 3rd party community modules. This is where Web Application Frameworks kick in...
Web Application Frameworks (WAF)
When CMS are not flexible enough to reach the requirements of a final product, or when their whole set of content management features are not needed - so basically when you just need to build a tailored web app - Web Application Frameworks (WAF) are the way to go.
WAFs are software frameworks that are designed to support the development of dynamic websites, web applications, web services and resources. They don’t come with as many pre-developed features as with CMS so the starting point for development is much lower, but it's possible to build just about anything with them.
Web Application Frameworks aim at alleviating the overhead associated with common activities performed in web development. For example, many frameworks provide libraries for database access, templating frameworks and session management, and they often promote code reuse. They provide low level modules that guarantee the developers just enough bootstrap not to have to reinvent the wheel every time.
Web Frameworks also represent a great way to build a standard structure of the code following well know practises that allow developers to jump in the project and be proactive quickly. One of these widely adopted practices is the Model-View-Controller (MVC) which separates the data and logic (Model) from the representation of the information (View) and the communication between the two (Controller). However the downside is that Web Frameworks require deeper software development expertise and involve much more coding than CMS.
The choice between CMS and WAF is relatively obvious. CMS are almost always the way to go if their set of functionalities cover most, if not all, of the requirements for your new website. However, when it comes to specific functionalities that CMS doesn't provide out-of-the-box, WAF will often tend to offer a better suited solution and faster development. In order to make the right choice, the challenge resides in understanding precisely what needs to be done, and what each of the CMS and WAF provides to cover your requirements.
With CMS, things can get a bit tricky as the right candidate will depend on the amount and the quality of the modules available to cover the features you need. Looking at the themes available for each CMS is usually a good start to see which CMS offers the closest integration out-of-the-box. The size and activity of CMS communities is also an important factor to determine the right platform, this is why we’d recommend to stick to proven platforms such as Drupal, Wordpress and Joomla for enterprise websites and Magento or Shopify for eCommerce websites.
At Okoone, we keep a constant survey of all these different technologies to make sure we always design the most suitable software architecture for our clients. If you’re in doubt, we are here to advise on the right set of technologies for your project.