Git-based CMS: What It Is, and Why You Need It
Software projects around the world today rely on Git for source code management. The productivity gained from this distributed version control system is just one of the reasons why it has had such a massive impact on the software development world.
Fortunately, the popularity of Git can be extended to more than just managing source code. It can also be beneficial in creating and managing dynamic digital experiences as part of a CMS.
Content management initially fell under the purview of the marketing department, but as time has gone on, things have changed. Audiences relate to engaging experiences in a variety of ways beyond a static content asset, on a variety of devices, and they want it on time and relevant to them.
This means software development and cloud operations are just as important as content creation and publishing. A modern CMS must serve everyone from marketers to developers and operations on the quest towards building digital experiences.
What’s the answer?
A Git-based CMS.
What Is a Git-based CMS?
When traditional CMS platforms were built to make it easy for marketers to work with, they lacked the flexibility that made it easy for developers. Modern developers are used to continuous integration and continuous delivery (CI/CD) processes that help increase workflow productivity. This concept, derived from DevOps, creates a continuous workflow that allows developers and operations to function together seamlessly, dramatically raising productivity for software-based systems.
Unfortunately, traditional CMS platforms use centralized databases and content storage services that not only limit but also dictate the overall capabilities of the content repository and the CMS. On the other hand, a Git-based CMS can provide much better version control of all content and configuration, along with the software source code that drives the dynamic content experiences.
So, why is a Git-based CMS the best option for your organization?
Here are some of the reasons.
Why Choose a Git-based CMS?
Event-Based, Multi-Object Versioning
Traditional CMS platforms have limited single-object versioning capabilities. They track single-object graphs or rely on clunky data structures for relationship tracking.
This works for simple blogs and websites, but for the dynamic digital experiences companies require today, a traditional CMS can fall woefully short. Content delivered today needs a more sophisticated CMS, for example, one that supports “time-machine” preview, multi-object reversion and content/code base branching.
Multi-object versioning has been successfully used in the software development world as a result of Git, and can be extended to the content management space. A modern CMS approach built on Git can track “the entire state of the universe on each change.” With this level of version detail, a Git-based CMS can provide real previews at any point in time, make intelligent decisions about what must be reverted, and support a host of branching and workflow needs.
On a related note, Git is a file based versioning system. Storing content as files is not only necessary, but the file based approach has several major advantages. Because we’re dealing with files, content is easy to move among environments (Dev, QA, Prod, etc.) and migrate between systems. It’s much easier to integrate the content with other 3rd party systems, such as for language translation, e-commerce, and marketing automation.
Databases aren’t easily distributed geographically or in a versioning and workflow sense. For companies that require a CMS with global distribution and high availability, this can present a challenge.
Software source code control management (SCM) systems let teams of developers work on a single code base together without stepping on each other’s toes. In earlier systems, this meant a centralized model acting as a single source of truth.
A centralized system works well for smaller teams but fails for larger projects. A single centralized system can’t scale. This is why Git was created, to make it easier and scalable for multiple teams of developers working together.
Today, most CMSs have the same challenges of the earlier, centralized SCM systems. Because content and code are inseparable from modern digital experience applications, the CMS is a mission critical component of any and all digital experience solutions. Therefore, a distributed repository for content management is now an imperative.
Git allows developers to have their own local and intermediary repositories that are all born from a parent repository. This makes distributing developers easy, it makes concurrency simple and most importantly to us, it distributes the versioning and workflow which makes “flowing” code to and from these independent repositories possible, fast and easy.
The same approach developers use to make and promote source code changes can be used by a Git-based CMS to move code forward and content back among environments (Prod, QA, Staging, Dev, etc.). It also allows developers to work locally and still be part of the CMS. That means they can use the tools they know and like, and they are not working on an island. The best way to make a developer love the CMS is to let them work with the CMS without having to work in the CMS.
Scalable Content Publishing
Git mechanics make content publishing truly scalable.
When a repository is set at a specific version, every file is present and in the proper state for that version. As commits happen in a repository, a new data structure gets created with the changes for the commit. There is no action taken on any of the previous versions and it’s completely immutable.
The point is that two repositories on two different machines with the same commit ID are mathematically guaranteed to be the same. That’s an extremely useful mechanism for versioning but it also is a very large helping hand in publishing. A Git-based CMS can publish content based on Git commits. If you want to know if an endpoint on the other side of the world is the same as what you expect, you only have to compare the commit ID(s).
In today’s elastically scalable, globally distributed world you can have any number of servers. You need the means to make sure they are all in sync. Git’s internal mechanics give us just that. A Git-based CMS will have the capacity to scale geographically across an elastic cloud and at the same time make 100% certain that remote instances are consistently running the same version of content and code.
In the early days of the Web, the world moved a lot slower. A single pipeline of features got the job done and the CMS was less of a bottleneck. Today, in contrast, digital channels are at the core of many organization’s strategies for serving the customer better and beating the competition. The organization that moves the fastest often wins—Agility is key.
Meanwhile, infrastructure costs have gone down while development costs continue to rise. Balancing costs with volume and speed of innovation is a major challenge of our day. Today it’s all about great DevOps. To make DevOps really work with CMS you need to be able to branch.
Developers and IT operations have long since figured out that they need to be able to work in teams, isolate work, and control the order in which work is merged into the critical path for go-live. The CMS track runs right alongside the traditional development track, and at some point, it merges and the last few steps require the CMS.
The fact is that today, we need that same agility all the way through the CMS and right up to the very last step of production deployment. Even if the majority of your development is outside the CMS you still need to integrate. And here is where branching is key.
Git natively supports branching, so a Git-based CMS enables content authors and developers to work on features separately in branch-based sandboxes without getting in each other’s way. This allows them to not only experiment but also keep things ticking over quickly. Branching that is enabled by a Git-based CMS can dramatically increase productivity and drive rapid innovation.
Crafter CMS: The Best Git-based CMS for Your Business
A Git-based CMS lets your content authors and software developers work together seamlessly to deliver the high-value digital experiences your audience needs. A distributed repository allows your developers to work locally with the tools they already know while offering support through Git-based branching and workflow. Versioning, workflows, publishing content, and code together all happens in one place, keeping your entire team happy. Crafter’s Git-based CMS enables you to do just that.
Content authors can work without interruption from developer code deployments, maintaining process flow, and speed. No other CMS platform can support this unique DevContentOps process. It’s too difficult for them to move content between environments or developers, preventing distributed teams from functioning at their best.
If you’re searching for a CMS for modern enterprise purposes, one that allows you to enable distributed software developers and content teams to work seamlessly together to drive innovation, then a Git-based CMS is what you need.
Dive deeper into why you should consider a Git-based CMS like Crafter CMS by downloading our guide.
Russ Danner is VP Products at Crafter Software and is responsible for product management, product development and support, and client and partner success. Russ brings over 20 years of software architecture, design, and implementation experience. Prior to Crafter Software, Russ was Web Experience Management Practice Director at Rivet Logic and project lead for the open source Crafter CMS project.