RFC 0024 - Implement The New Backoffice #34
Replies: 11 comments 30 replies
-
Very impressive RFC! Agree this is the best direction - and fits nicely with the two prior RFCs. Likes: backoffice as separate package from core CMS, Web Components, documentation. Concerns: TypeScript (that’s just a pill I’m going to have to swallow), number of dependencies (Lit, etc...). Looking forward to following along. And to be clear, I have no real concerns with the RFC, more just my own lack of experience with the tech stack proposed. |
Beta Was this translation helpful? Give feedback.
-
This may be out of scope, but I had hoped to see a local caching strategy for the Umbraco backoffice. Did any of these teams (internal or community) discuss utilizing IndexedDB as a layer of cache? This isn't a simple request, but done right could reduce the number of repetitious & redundant calls made during the editing experience. Low hanging fruit: caching just a few things like the trees for content and media could end up saving editors a lot of time. |
Beta Was this translation helpful? Give feedback.
-
Before I dig in to the RFC, does it explain why unification of the technology for both platforms using something like Blazor wasn't chosen? It would be great to stay within the .NET world as much as possible. |
Beta Was this translation helpful? Give feedback.
-
Why we are NOT choosing X frameworkI just want to put an answer out there to the question: "Why don't you go with X framework?" as we have been asked that question many times. Umbraco CMS is a piece of software that you install for perpetuity on a given computer/server. It is built with Microsoft's .NET technology, and the .NET Runtime can function on this machine for a prolonged period, eventually failing due to major updates of the OS, which can also be postponed. The current backoffice is built using a series of frameworks and libraries to produce custom elements for the browser. The libraries also control other aspects of the browser such as navigation, animation, and hooks into various APIs of forms and validation. All these tools depend entirely on the browser of the visitor at any given time - now and in the future. All these browsers exist in and consist of a dynamic environment, and that is bound to change. This means that, even though you may be able to install Umbraco CMS on your server and be ensured that the backend keeps working, there are no guarantees that the backoffice frontend will work 5 years from now, simply due to the nature of browsers and their maintainers. Security is another issue; any external library that we install must be maintained and updated regularly whenever a new CVE is published. This is more easily done on an auto-updated product such as a SaaS product, but with Umbraco CMS being an installed product, we do not have that luxury. Umbraco 7 was released in 2013 using the new-at-the-time AngularJS framework. This framework is now considered end-of-life as of January 2022 and will no longer receive updates. We can and we will build a new backoffice, but there are a lot of old installations out there essentially risking their safety due to a choice (albeit a good one at the time) we made 8 years ago. We can do better than that. JavaScript frameworks are all doing essentially the same thing: Producing custom elements with syntactic sugar, and also added benefits of having built-in routers, state machines, and stores. The latter can easily be abstracted into a series of minor libraries (if not already supported by the browser). The former (custom elements) now exist as a native browser API known as Web Components. Many frameworks also now support exporting their components as Web Components ensuring, that all components can communicate through a common API. Building our software with Web Components - a native web standard - ensures that our software works and will keep working for at least a longer period than any external library will. The APIs will keep getting updated along with the browser itself, patching any security vulnerability along the way. So why are we not choosing a framework? Because we do not have to 🚀 |
Beta Was this translation helpful? Give feedback.
This comment has been hidden.
This comment has been hidden.
-
If you're not using any form of framework, then how are you going to deal with things like data binding, routing, filtering etc. Basically all the features that frameworks provide that handle this? For instance, currently AngularJs makes filtering of data in real-time and two-way binding very simple to achieve. Won't you inevitably end up writing your own framework? Then you'll have to document it so people extending the back-office don't keep reinventing the wheel. This is all non-trivial. Then you'll have to maintain it, fix it etc. before you can even start doing the "proper" work. And if you don't, then people will just start throwing in their own favourite frameworks to packages, which will make the back-office bloated. How are you going to avoid that? I would have thought picking an existing lightweight framework to "glue" the components together and give people something common to use would be a better idea than rolling everything yourself. |
Beta Was this translation helpful? Give feedback.
-
This is why I asked about Blazor. It's built-in, and is a .NET/C# technology. We've built whole apps with it, in production, and it's great. |
Beta Was this translation helpful? Give feedback.
-
There's a number of places I could make this comment related to the new backoffice. So first want to say that I totally support the idea of a web-component based backoffice - which I've been a fan of for some time and also presents some great opportunities. As someone who has engaged recently with a lot of elements with the backoffice and how it's constructed - the idea of just a general wholescale rewrite is very appealing. When I've been diving into the code of the backoffice I generally spot a lot of inconsistencies and areas where things have been pieced together primarily because they 'work' to some extent but haven't been consistently labelled or applied in the same way. Take for example the different sections from Content through to Settings - inspecting the left hand column and reviewing the code really highlights some of these inconsistencies where components that look the same and do the same thing - are not coded in the same way. So this approach is really most welcome...but.. What I would like to see is more methodology in the approach. By this I mean adopting a set of principles on how the components and hence backoffice is written. I've already seen some areas that to me, represent problems going forward. I'm a huge fan of BEM for example which represents a method of providing a descriptors to a components respective parts and if done well - how it fits together - something that really makes for improving the experience of trying to identify how things are scoped and put together. I'm not arguing necessarily for BEM - but I am suggesting a similar approach be adopted. I totally support the idea of avoiding frameworks - but methodology is distinctly different to framework (although often some can conflate the two). Lastly putting my accessibility hat on - and very much related to the previous point - everything needs to be built according to accessibility principles. This will impact upon the direction you may wish to take with areas - and will require some real thinking 'outside the box' - but at the same time it represents a real opportunity to put Umbraco ahead of the pack. The point being - and something that after chatting with some people who just don't 'realise' the ambition - is that the whole backoffice should be usable.. not just the editor experience.. but everything. Being blind or having some other impairment - shouldn't be something that prevents you from being a developer - and hence we need to remove anything that may represent a barrier to that ambition :) |
Beta Was this translation helpful? Give feedback.
-
I would like to give my point of view regarding security. I would like to request to research the possibilities of having the new backoffice fully Content-Security-Policy compliant. If we can do this, then Umbraco will be the first CMS (99% sure) that can be used for even the highest security requirements and this will be of huge benefit to the Cloud and Heartcore services as well. Google paper (and bible) |
Beta Was this translation helpful? Give feedback.
-
The RFC has been accepted and merged 🎉 Thank you all for the input and feedback - it's been fantastic to see the level of engagement and you've really helped sharpen the RFC for implementing the new backoffice. It's a good foundation for the work ahead of us. You'll hear a lot more about the project in the coming months! |
Beta Was this translation helpful? Give feedback.
-
Request for Comments: The new backoffice
Read the full RFC document here.
Back in March, we began talking about the implementation of the new backoffice. We also promised that there would be an RFC concerning the project, so today we are happy to announce that the final RFC (Request for comments) for the new backoffice has been published!
How do I contribute?
You do not have to understand the proof of concept or any of the technologies to contribute. The most important thing is that we don’t want to miss anything, so everything goes in terms of clarifications, questions, suggestions, and so on.
Please do the following things if you want to contribute:
A little bit of history…
This RFC is the culmination of three other RFCs where we initially outlined the project, then went on to describe the need to build a UI library, and lastly, defined what the extension API would look like.
Read more here:
This RFC is the final one for the backoffice, and you could say we are finally gluing everything together to present how to do the actual implementation of the new backoffice.
The new RFC
This RFC consists of a document with the specifications and a proof-of-concept application you can download and try out for yourself.
The RFC document
This document touches on a lot of subjects regarding the implementation of the new backoffice. A lot of choices need to be made for a web application, and we have tried to talk not only about those choices but also about what it means to the CMS as a whole.
The proof-of-concept
We have decided to publish a proof-of-concept application along with the RFC document this time around. The application can be installed and run on your machine, and you can read the source code freely. The application demonstrates a few things on how to implement the backoffice, namely:
Read the RFC in its entirety here and make comments down below 👇
🗓 The RFC will be open for comments and considerations until Friday the 29th of July 2022 and will be evaluated (accepted/rejected) thereafter
Beta Was this translation helpful? Give feedback.
All reactions