Undertaking a web development project is a complicated process. Many of our potential clients are overwhelmed by the various technologies, acronyms, and buzzwords floating around the industry today—and we don’t blame them.
One of the most common debates in web development today is the use of development frameworks versus CMS platforms. And then there’s the debate of which to use.
My goal in this post is to create some clarity as to what these tools are and how you can best choose what works best for you.
Specializing in custom CMS solutions means we often have to answer the same question: “If the CMS is custom, are you building it from scratch each time?”
The answer is complicated and to an extent, it is both yes and no.
Obviously, every customer is going to have different workflow requirements, meaning they will require custom approaches to how they create, manage, and distribute content. So to answer the question in this regard: Yes, we’ll be creating your management portal and tools just for you. However, in the vast majority of cases, we are indeed starting with some sort of development framework, which technically means that no, we’re not starting completely from scratch with your project.
Confusing, right? To understand what this means, we have to define what a development framework is—and what it isn’t. Development frameworks are meant to make the development of web applications faster and easier to accomplish. You may hear the term “tech stack” referred to by developers or other technologists. Web applications, which is basically what a content management system is, require a variety of tools to function. Those tools working in conjunction are what we refer to as the “tech stack”.
First, all applications require an actual server—a computer that is powered by an operating system such as Windows or Linux. Applications utilize a web server such as Microsoft, IIS, or Apache. Data for web applications is stored in database platforms such as SQL Server, MongoDB, or MySQL. And to tie them all together, some scripting or development language is required. The most popular languages that you hear about today (in no particular order of preference) are .NET, PHP, Ruby, or Java.
Yes, for those of you with experience in web development, I’m leaving many out. But rest assured, we know there are many more available options!
So with those components building out a “tech stack,” what does a development framework do? In short, development frameworks make the usual tasks required by all applications easier to accomplish quickly because they already have a repository of code or a modular approach to those problems.
To put it another way. let’s make an analogy of building a house. You utilize a variety of materials to construct a building. These items are analogous to a development language such as PHP. The functions that are included in a programming language are your studs, your wall systems, your wiring and outlets, etc.
A development framework will make construction of your house easier because you’ll have the most common items already built for you, ready to be integrated together. This analogy actually works pretty well because this happens all the time with home builders and even commercial builders. Prefabricated parts come in pieces and the local builder puts them together.
Now, you may be wondering if this is the same as off-the-shelf CMS platforms and how they extend themselves via plugins, modules, or extensions. This is actually quite different. Just like a modular home comes in pieces and speeds up the process, it still needs finishing and touch-up. That finishing and touch-up will be customized to the end-user’s requirements. This methodology is how a “custom” CMS can be built on top of a framework. In our practice, we take the customer requirements and make them a reality by utilizing snippets of code that were prefabricated. Putting those pieces together creates custom software, software made specifically for you.
To give a more specific example directly related to web development, a developer may utilize a framework such as Ruby on Rails, which includes many common use cases for applications built with the Ruby language. When building out the application, the developer won’t have to write code to connect with a database, handle user sessions, save files to a server, or similar. Those functions are already provided for. The developer simply must tie the functions together and apply them to a display layer, or front-end presentation.
Granted, I’ve oversimplified the process, so if you are a developer, I apologize!
Development frameworks today are plentiful. There are literally hundreds to choose from. Ruby coders love the Rails framework. Other frameworks exist that utilize Ruby, but they are far from as popular as Rails. PHP developers have the largest selection of frameworks. Popular options are Laravel, which is now the leading framework of choice for PHP-focused application developers. Other choices include Symfony, Zend, CodeIgniter, Yii, and literally hundreds more. Microsoft developers have .NET, which is Microsoft’s framework based on their own techniques and language. And of course, Python, Java, and even front-end technologies have frameworks available to choose from as well.
So with a development framework defined, what makes up a CMS platform?
In a nutshell, a CMS platform is a complete system that can be installed and then, almost immediately after that process is completed, be used to create, edit, and publish web pages. This means they are already completed, assembled code that perform a variety of tasks mostly centered around content management.
These systems all allow for extensibility via the use of software plugins, modules, or extensions, depending on the platform. These third-party pieces of software are designed to be easily installed and integrated with the CMS, enabling website owners to quickly add new features.
This is where frameworks and CMS platforms differ. Frameworks are extended via more code. CMS platforms are extended via more software.
Now, most CMS platforms allow you access to amend the code yourself. However, given the complexity of these systems, such modifications should be undertaken most carefully. Because of this, it is not recommended you build complex functionality on top of an off-the-shelf CMS platform.
To expand on that, most of the popular CMS platforms such as WordPress are not designed to be development or application frameworks. As such, it is always important to remember what the core focus of a CMS platform is. WordPress started as a blogging engine. Attempting to build a complex SaaS application on top of it would be foolish. Likewise, if you’re building a simple informational website for your small business, it may not make sense to utilize a development framework.
Either way, it’s crucial to remember what each tool is designed to do as you go through the process of deciding on a route forward.
What is right for you?
A lot of this depends on what you are trying to accomplish. As I’ve said, building a complex application on top of a CMS platform is, more often than not, a foolish endeavor.
CMS platforms have massive security problems, mostly because they are large, bloated pieces of software. Development frameworks perform much better from a security perspective, as they are smaller, lightweight, and are not trying to do all things for all people. They are just what they are named: frameworks. You utilize these tools as a foundation for what you are building. Therefore, the ability to customize them to your requirements is exponentially greater compared to a CMS platform.
I always advise new or potential clients to carefully consider their goals and objectives. Again, if you are making an informational site or a document-rich website, by all means, choose a WordPress or Drupal installation as a base. However, if you are building out a complex series of tools to produce content or have an extremely proprietary content management and distribution plan, a framework with custom tools will take you much further than attempting to modify a CMS made for another purpose.
Once you have figured out if you need a CMS or a framework, you can then narrow down from there which to choose specifically. For CMS installations, let the core, fundamental reason the CMS exists be your guide. WordPress: built for bloggers, then became a more well-rounded CMS; great for small businesses. Drupal: built for websites with large volumes of content or complicated taxonomies. Each platform has its own pros and cons, but rest assured, there is no one “best” CMS for every use case.
With development frameworks, it’s best to decide on a tech stack and then work backwards. Often, this may be dependent on the developer you choose. It is a fair thing for a developer to have a favorite framework. Because they are so basic and customizable, it isn’t an issue that a developer has expertise in only a single framework and won’t give you options (as opposed to CMSs, where many a developer has experience with only one platform and will try to convince you it’s a fit, even if it may not be!).
My advice is to research both the developer you are speaking with and their recommended framework. If the developer is reputable, ask them a few key questions to gauge their ability to understand your business requirements and future plans. Ask about the capabilities of the framework, the longevity of the system (beware of a HOT framework, which may not survive too long). And for sure, ask to see examples of not only their work, but also other applications running on the framework. This will all save you headaches later on.