John-Philip Johansson
Nov 19, 2019
(14 votes)

Introducing Episerver CMS Labs

Episerver CMS Labs are CMS add-ons that solve a big problem in a small way, where the "happy paths" of a user flow are tested and fixed, while other paths and scenarios are left aside. The Labs are open sourced on Episerver's GitHub account so that you can contribute fixes to the scenarios that block your use cases. The main purpose of Labs is to validate potential features before implementing them fully and supporting all of Episerver CMS' complex features.

Episerver CMS is a complex application. Any feature added needs to work together with all existing features. This creates a lot of moving parts that must be taken into consideration when designing a new feature; it has to work from a user experience point of view as well as a technical architecture one. Supporting language management, content approvals, and projects, are the three most time-consuming aspects of CMS to support in any new feature.

The release method, by publishing a NuGet package that needs to be installed, means that clients tend to be some minor version away from the latest. This means some feedback on anything new can be very quick from our engaged community, especially EMVPs, which is great, but the main work in form of bugs and support cases, which might show us how a feature should have been arrive very late - often when we've moved on to another feature. This also means that we need to release without any known bugs, as users will have to live with them until their installation is upgraded.

Those two aspects mean that when we need to tackle a very big problem, it is hard for us to validate our ideas "in the wild" without doing a fully fleshed-out and working solution. To counter this, the Episerver CMS UI team is experimenting with "Labs" add-ons. These are open sourced add-ons released on the Episerver NuGet feed, and the main user paths are verified with QA, but leaving out most complex scenarios and edge cases. They will focus on a complex usage area each, and can include one or more proposed solutions. We encourage the use of these add-ons, and appreciate feedback. Ultimately, we will gather usage data from them to properly validate which solution will make it into the main CMS UI product, or released as a fully-supported CMS add-on.

Our first Labs is Block Enhancements (NuGet, blog post on v0.1.0) and has been well received, from what we currently can gather. The download numbers are respectable for such a new package. :) Each release has been well met in the comments section (blog posts on v0.2.0, v0.3.0, v0.4.0, and v.0.5.0). It focuses on simplifying block publishing, and shows seven (!) ways to tackle that complex usage. Without supporting Content Approval sequences and Projects... Now we're reaching a point where we need to understand which of these seven ways should be supported fully, as supporting all of them would take a very long time and potentially bloat the user experience, as we do not know how they overlap or replace each other in a user's regular work day. We are still considering the different ways we can get this understanding. Either way, it's an exciting time!

For Labs to be a succesful way for us to validate solutions, they need to be used. So download EPiServer.Labs.BlockEnhancements now and help us out in the GitHub repo!

Legal notice

There are a few things you should expect from each release:

  • Functionality may be added, removed, or change.
  • Labs projects have not been through the same quality assurance process as the versioned products and, in some cases, may show unexpected behaviour.
    • The Episerver CMS UI team notes that:
      • the scenarios in the Readme of each CMS Lab's repo will be verified and supported us
      • the Labs add-on may or may not work with other add-ons, we are not testing them
      • any such issues found, such as scenarios outside of the the Readme, can be fixed by the community by submitting a Pull Request on the Github repo
  • The software may not work on all environments.
    • The Episerver CMS UI team notes that:
      • Although it should work on base installations of CMS UI in Chrome and Firefox
  • There is no Episerver support; however, we will gratefully receive all feedback
    • The Episerver CMS UI team notes that:
      • Issues created on Github will be triaged, and if accepted, fixed by us

Existing packages with the same name

There are some packages that have been previously released with the Labs monicker, such as "EPiServer.Labs.LanguageManager" and they will still be around. The CMS UI team will make it clearer by prefixing future packages with "EPiServer.CMS.Labs", and consider republishing "EPiServer.Labs.BlockEnhancements" as "EPiServer.CMS.Labs.BlockEnhancements".

Nov 19, 2019


Benjamin Dean
Benjamin Dean Nov 20, 2019 06:43 AM

Love this idea, it makes it very clear what is part of the core product and not.

From my side it would be good to know if these will make it into the core product at some point or if they will always be independent as well as should they be used in production?

The reason i ask is that the Language Manager addin is a lifesaver and we see that as a core epi offering to augment the platform but that has been a Labs item forever and the functionality of it, atleast the majority of it is fundamental to most sites that use multiple languages and as such it would be very nice to see this more integrated, for example the "Translate" button for other language variations is misleading and to change that to "Localize" and then give users the options to create blank or start from other language version would be a big plus.

Keep up the labs!, it would be great to see labs form for all major parts of the framework

John-Philip Johansson
John-Philip Johansson Nov 21, 2019 08:10 AM

Labs is meant to allow us to try out the solutions we think are right but need proof before investing more in it. We might be wrong, and if we are we shouldn't be putting it in the core product. If no one uses it, we will never know, and the solution will never make it to the product. But if it's used and proves to be right, then we'll turn it into a core feature or a fully supported regular add-on. If it's working for you please use it, even in production - just be aware of the limitations, and that you have access to the source code if something's urgent (and we appreciate contributions).

As noted at the bottom of the blog post, LanguageManager is confusing as what I presented as Labs is much newer than that add-on. I think we should just rename LanguageManager to remove the Labs part, but that would require everyone to re-install it and we're unsure if you (the community) are ok with that?

Arild Henrichsen
Arild Henrichsen Nov 21, 2019 10:53 AM

"that would require everyone to re-install it and we're unsure if you (the community) are ok with that?"

It's a breaking change for sure, but I view it as any other upgrade in our CMS/Commerce projects. If you want a new version of a product/package, you'll have to (at the very least) update the package in your project, recompile and re-deploy. If someone is using (and loving) the previous Labs packages, they'll take the time to do that. Making the package naming scheme less confusing trumps the minor inconvenice of having to update and re-deploy the package. 

John-Philip Johansson
John-Philip Johansson Nov 21, 2019 01:57 PM

Sound good to me! If anyone has any complaints about re-installing LanguageManager, please direct your enquiries to Arild 😁 We're considering calling it EPiServer.Languages as that's the official name, or change the official name to Language Manager, depending on what has the least domino effect.

Antti Alasvuo
Antti Alasvuo Nov 21, 2019 06:26 PM

LanguageManager really should be part of the core product or an officially supported add-on and the naming should be fixed so that it is not confused with the new "Labs" add-ons.

I'm totally fine with reinstalling the newly named package.

Benjamin Dean
Benjamin Dean Nov 22, 2019 07:47 AM

Completely fine with a rename, it makes sense!

John-Philip Johansson
John-Philip Johansson Nov 22, 2019 08:59 AM

@antti, LanguageManager is actually a officially supported add-on... Clearly need to rename it :D

Karen McDougall
Karen McDougall Oct 8, 2020 11:50 AM

In case you missed it: all the Episerver labs products and features are now all nicely presented since September 2nd here: There are some lovely things there as you know. Some are beelining it in to the core as we speak. Hurray! Enjoy!

Please login to comment.
Latest blogs
Improve error handling for visitor groups

In CMS UI 12.15.0 we added several improvements in handling errors for visitor groups. The visitor group list and detailed visitor group page will...

Linh Nguyen | Dec 8, 2022

Optimizely SendGrid SMTP host is deprecated

SendGrid is a services for sending email that is included in Optimizely DXP. Previously was the recommended SMTP server to use,...

Tomas Hensrud Gulla | Dec 4, 2022 | Syndicated blog

Hosting Optimizely CMS 12 on Docker Engine

Since Optimizely CMS can now be deployed as a Docker container, here is a demonstration of building, running and scaling an Optimizely CMS 12 site ...

Stefan Holm Olsen | Dec 4, 2022 | Syndicated blog

How to use CacheTagHelper with content areas in Optimizely CMS 12

I might be going out on a limb here - if you have a better solution, feel very free to share it!  Upgrading your Optimizely web application from .N...

Andreas J | Dec 2, 2022