With dotCMS 23.10.24.0, we marked our second Long-Term Supported major release of 2023. After long months of toil, we breached the water’s surface like the noble orca — our emergence brief, majestic, and concerning to nearby sailors — before splashing back into the depths of our codebase.
It’s natural, then, to ask: “What’s This Version’s Deal, and Should I Upgrade to It?”
As it happens, that’s what I’ve come to discuss! You and I are powerfully simpatico at this moment, surfing a common wavelength to the shore. We’re hanging ten — no, more: a frankly bizarre number, in fact. Probably an AI artifact. Don’t think about it.
And don’t think about the orcas; they prefer seal meat, anyway.
What’s New Since 23.01 LTS?
dotCMS 23.01 LTS was a landmark release. However, on our journey, all landmarks share a common destiny: to be passed. And with loping strides have we passed them, fulfilling the destiny of the old in the arrival of the new. It’s sort of a twofer. (Or, if we’re counting by individual changelog items, hundredsfer.)
A Page Turner
The web runs on Pages, so we’ve improved how Pages are run.
The Pages Tool offers a hub for every Page in your system, whether created as traditional singletons or troves of URL-mapped content. Create, sort, or filter your Pages; access them via Edit Mode; or even bookmark your favorites for a quicker return. And should you wish to alter content on the current Page alone, rather than every Page on which it appears, you’re in luck: We’ll prompt you with that choice!
We’ve also rolled out new previewing options: URL-mapped content comes with a Preview button, for immediate viewing in Edit Mode — and the Preview link in Edit Mode will render the Page in a new tab, exactly as an end user would see it.
These and still other changes have made Pages easier than ever to build, edit, wield, brandish, and so on. After all, it’s not our place to limit what verbs you point at your Pages.
Block Editor Editing
For your rich content, we’re providing the finest of rides with the most versatile of chauffeurs.
The Block Editor field, the flagship feature of 23.01 LTS, continues to evolve. New additions to the field’s default toolkit include video blocks to accommodate local files or YouTube embeds, marks for subscript and superscript text styles, and other tweaks polishing the general look and feel.
Beyond the base field itself, development has stretched into the fourth dimension. The Block Editor is now fully compatible with the content history tab, allowing side-by-side diff-style comparison between content versions.
Finally, and most radically: Your ability to customize the Block Editor now goes beyond user-defined block-rendering behaviors — new remote extensions allow you to craft fully original block types, custom interface elements, or behaviors.
“Who edits the editor?” It sounds rhetorical, but au contraire: you do!
APIs on the Prize
If APIs are the first thing on your mind, that’s encouraging; it means I can make corny jokes about curling you a high-five. But first, to business.
dotCMS contains more than 500 REST API endpoints, serving an enormous breadth of operations and use-cases. One recent change affects every single one of those: pagination. A new top-level property in the response object allows you to specify page numbers and results per page. Voila! Your arbitrarily large content stores remain tractable.
Other new behaviors might be narrower, but no less straightforwardly handy. Some new tricks include:
Creating plaintext files via string
Accessing content related by one or even two steps to Page-embedded content
Counting how many Pages include a piece of content
Using minimum or maximum dimensions when resizing through the image processor
And still more. Want to see associated themes while listing Templates? Done. Want to access a Content Type using a host and path name? You can, but more importantly: Of course you do, because nobody likes looking up host and folder identifiers. Nobody.
Whether headless or hybrid, if you’re hurling calls at endpoints, we’ve got your interests at heart.
Beautiful Utilities — Beautilities, If You Will
Recent months have included a lot of bodywork on the dotCMS interface: visual fixes, enhancements, and even total redesigns.
High in the running for “most improved physique” is our Template Designer, which can bench press boxes, row out rows, and squat columns as never before. Having received a full overhaul, it’s not only prettier, but more intuitive and responsive in its drag-and-drop behaviors. The only thing plain about it: It just plain feels good to use.
But before we rush to award it a medal, consider also the updated Content Type builder. Similar to its Template-focused cousin, this tool is simultaneously breezier and more beautiful, its visual update paired with smoother interactions. And its Add to Menu button allows you to create a back-end menu navigation item for that Content Type at a click.
Improvements lurk everywhere, from Containers to the content comparison tool, from site selectors to the user-action dropdown, and still more. You’re certain to see something good.
A Command Performance
As we all know, inside of every CMS is a tiny gremlin responsible for making sure things end up in the right tubes or drawers, or so the engineering team alleges. Whereas they are unruly creatures prone to biting, I do not personally interact with our engineers. Still, I will trust the fevered scrawlings they leave — now mostly legible and profanity free — on every mirrored surface.
I will relate some of these to the best of my ability:
We’ve shortened our startup times through a number of optimizations, such as altering how Vanity URLs load.
Querying time on large Workflow tables has improved by orders(!) of magnitude.
The speed and efficiency of our metadata fetching has been significantly boosted.
We’ve written new listeners to secure a better diagnostic view of database driver operations.
Thumbnail generation throughout the system is both faster and more consistent.
Not sure about this one: “No longer creatures of Self, we see through many eyes and think with many teeth, ever falling toward Aldebaran.” I think this means we’ve improved our cache-invalidating behavior.
Yeah, I’m getting a thumbs-up on that. Cool!
The Obligatory “And More” Section
Look, I get it: I say “and more” a lot. It’s a problem, but it’s not my problem; it’s our problem, and it’s a good one to have. This embarrassment of riches naturally spills into miscellany, defying convenient narrative theming for the stalwart blog author. But these features stand on their own merits.
Consider the new Secrets Viewtool: Now you can pass sensitive data to Velocity scripts as a variable, without that data ever touching the VTL file; the information lives instead within the Apps integrations. If your scripts send tokens to external APIs, you can doubtlessly already see the benefits of this!
Running a dotCMS cluster? New session-sharing libraries allow easier serialization across servers, and restarting an entire cluster is as simple as hitting a checkbox before restarting one server.
A new Edit Mode Anywhere option allows you to run EMA on a configured path rather than an entire site. If you plan to use a single-page app for just a single section of a site, this is your ticket.
And the list goes on: Rules can now be conditioned on HTTP methods; define your own responses to GET, POST, PUT, and the rest of the gang. Static push-publishing can now target any Simple Storage Service endpoint, rather than just Amazon S3. We’ve supplied new Kubernetes probes, for those who celebrate. Et — and I cannot emphasize this enough — cetera.
There’s really something new to see everywhere you look.
Developer and Technical Notes
The time has come to discuss matters a bit more dry: stuff like build management. I’m sure I’ll see most of you in the next section, though!
Our gradual transition away from Gradle and toward Maven continues apace. This has been a slow and steady process, but we’re seeing the light at the end of the tunnel. We’ve also improved code coverage via SonarQube; this is likewise an ongoing process.
We’ve stripped out a number of older and disused libraries — Hazelcast, jaxws, JGroups, and others. Some dependencies have instead been updated, such as the H2 engine, the Apache Tika metadata toolkit, and XML serialization via XStream.
Importantly, MSSQL support has been deprecated, following in the footsteps of Oracle and MySQL; from 23.10.24 LTS onward, PostgreSQL will be the only database system dotCMS supports. If migration is necessary, self-hosted users should refer to the migration guide in our documentation, while those using dotCMS Cloud can contact their customer success manager.
Arguably the most exciting bit of dependency news is still in its preliminary stages: We are looking toward the possibility of upgrading to Java 17 — or, potentially, 21. When that time comes, trust that we’ll grow real loud about it, in possible violation of at least one municipal noise control ordinance.
Plunging Farther Back
Whether a fad or a trend with genuine staying power, the cold plunge — i.e., submerging one’s body in icy water, on purpose — is sweeping the social-media health discourse. I, a savvy and topical soul, shall exploit this fact by taking the coldest plunge of all: into the past, in flagrant violation of classical thermodynamics. This is because, as I hear it, some folks reading this might be running a version prior to 23.01 LTS.
In other words, you might get even more out of an upgrade than already mentioned. To put it lightly, that is downright nifty. Pardon my language.
Just a brief sampling of some new features gained in the move from 22.03 to 23.01:
New fields: Block Editor and JSON fields
New viewtools: Dotcache opens new doors with generic object caching
New playgrounds for testing out API calls or Velocity code
A whole new OSGi plugin framework
Those are, of course, the merest tip of this iceberg. And if you’re even farther back, it’s not the only one. Here are just a few more never-before-seen features, if you’re running 21.06 or earlier:
The Template Designer
The Edit Mode Content Palette
The content history tab
Headless widgets
We can’t list them all here, or we’d risk hypothermia. For a more detailed rundown, check out our post on 23.01 LTS.
But Also Looking Forward
A note on the future, too: Typically LTS releases receive a variety of updates that focus on essential maintenance — bugs, security patches, and suitable backported enhancements. However, in this case there is one forthcoming major feature already slated for addition to 23.10.24 LTS via patch release: Experiments.
Say you’ve got a site update planned — a new layout, new copy, a graphical overhaul. Maybe you’ve faced a heated internal debate over banner art; you knew this might happen when you picked those macro-lens closeups of spiders. Nevertheless, amid endless possibilities, the core question remains the same: Will it suit your audience?
With Experiments, you can conduct live A/B testing on a Page: Serve the candidate page to a random sampling of your audience, and then keep whichever version wins the right kind of engagement. Promote or retire the spiders accordingly.
This feature is in the process of beta testing right now; for more information, or to get an early start with it, contact your customer success manager as soon as you please!
Proceed to the Head of the Line!
dotCMS 23.10.24 LTS represents both the LTS debut of a number of this year’s agile-release features, and the steady improvement of others you may already know. We hope you’ll come join us up front and avail yourself of all the new features, conveniences, and optimizations in this: the latest and greatest of dotCMS’s line.
Of course, you may also be reading this at some later date, by which time there is an even later and/or greater version. If so, by all means, go check that one out instead.
Still, in that case, it’s sweet of you to visit this old piece. I would offer you a butterscotch, but alas, butterscotch blossoms have been extinct for at least a century. Also, I may not be able to transmit candy verbally; I admit I have not tried.
Either way, thanks for stopping by. Look forward to our next LTS designation some time later this year!