Note: This is issue is part of #2721129: Workflow Initiative and is only meant for planning and governance sign-offs. Work will happen in child issues of this plan.
Target version for beta stability: Drupal 8.6
This phase will introduce the concept of workspaces through a new experimental module.
Content entities always belong to a workspace (there is one main exception, which is the user entity type). A workspace is a silo/container of content on a site. However, this phase mostly introduces the underlying concept with one single workspace available, without many supporting APIs around it (see later phases).
Implementation
- #2784921: Add Workspaces experimental module
- For more conceptual description of workspaces, along with full UI prototypes, see: #2732081: WI: Phase G2: Full-site preview with Workspace UI
- Further functionality (such as conflict management) will be done in: #2867707: WI: Phase H: Conflict management and local workspace merging support
Required before stable release
- #3088643: Mark Workspaces as a stable core module
- Possibly any other WI critical issues
Already completed tasks
Must-have
- #3000749: Layout builder overrides on a single content item not allowed in a workspace
- #3300639: Improve and add explicit test coverage for the workspace conflict validator
- #3154087: Translations created in a workspace are not shown in the admin content overview
- #3088870: Add missing REST and JSON:API test coverage for the workspace entity type
- #3092247: Prevent content from being deleted when there is an active workspace
- #3025785: Cannot create entity with image in a workspace
- #3101671: Add mechanism to have workspaces skip processing entity types
- #2986193: Workspace toolbar item fails WCAG Use-of-color at narrow breakpoint - WCAG level-A.
- #2935780: Remove the concept of a 'live' default workspace
- #3037136: Make Workspaces and Content Moderation work together
- #3062434: Track the workspace of a revision in a base field and convert the workspace_association entity type to a custom index
- #3062486: Add the ability to create sub-workspaces in order to enable the dev -> stage -> live workflow for content
- #3007661: Modernize the path alias system
Complete feature set
- #3242564: Workspaces can't be published from the command line
- #3129762: Creating an unpublished entity in a workspace does not set the workspace field on the revision
Finish integration with core modules
Should-have
- #2968165: Finish the Views integration
- #3273461: Add pagination to the workspace manage page
- #2940677: Support prefers-reduced-motion in off-canvas dialog - WCAG level-AAA.
Could-have
- #3154084: Warning when building an empty workspace tree
- #2968861: Add a way to revert (undo) a workspace
Required before beta release
Must-have
- #2958752: Refactor workspace content replication plugin system to three services
- #2949991: Add workspace UI in top dialog
- #2975334: Prevent changes that would leak into the Live workspace
- #2971699: Content Moderation and Workspace don't work together
- #2934354: Expose cacheability metadata in WorkspaceCacheContext
Should-have
- #2916780: Rename to "workspaces" - beta-deadline
Could-have
- ?
Sign-offs needed
Product manager
A product manager needs to sign-off on this plan because the concept of workspaces constitutes a significant addition to Drupal core.
Framework manager
A framework manager needs to sign-off on this plan as the above phases introduces very significant API additions.
Release manager
A release manager needs to sign off because the scope and impact of the work are significant for core.
Sub-system maintainers
The sub-system maintainers for the Entity API needs to sign-off on this plan as it significantly impacts the Entity API.
Sign-offs given
- Product manager - pending
- Framework manager - pending
- Release manager - pending
- Sub-system maintainers - pending
Comments
Comment #2
dixon_Comment #3
dixon_Making it clearer that we are still working on the plan.
Comment #4
dixon_Adding notes about needed sign-offs.
Comment #6
timmillwoodComment #7
dixon_Comment #8
dixon_Comment #9
timmillwoodComment #11
dixon_Comment #12
dixon_Comment #13
dixon_Comment #14
dixon_Comment #17
amateescu commentedUpdated the target Drupal version to 8.6.
The main implementation issue #2784921: Add Workspaces experimental module has received a lot of reviews already from framework maintainers, but this one says that all the sign-offs are still pending :)
Comment #18
amateescu commentedRevamped the issue summary so we can use this issue to track the path to beta stability for the new Workspace module.
Comment #19
amateescu commentedWe already know that we have two hard blockers for beta, and they are already included in the IS as "must have":
#2958752: Refactor workspace content replication plugin system to three services
#2949991: Add workspace UI in top dialog
Besides those two, there are few more open issues that need to be triaged into must/should/could have, but I'll leave that triage to a framework or release manager. These issues are currently open in the Workspace contrib module issue queue for the 8.x-2.x branch and will need to be moved to core once #2784921: Add Workspaces experimental module is committed.
#2968452: Add a way to execute a function in the context of a specific workspace
#2968165: Finish the Views integration
#2962764: Better explain _initialPublished process
#2934354: Expose cacheability metadata in WorkspaceCacheContext
#2926472: Add test for basic remote replication
#2924218: Clearing the persistent entity cache every time we switch between workspaces is super wasteful
#2916780: Rename to "workspaces"
Comment #20
amateescu commentedA few more followups that need to be prioritized in the issue summary:
#2968875: Bring back the query parameter workspace negotiator
#2968861: Add a way to revert (undo) a workspace
#2968850: Figure out use-cases for per-workspace permissions and provide them if needed
#2968856: Consider adding an option to "flatten" the revisions of a workspace before publishing it
#2968830: Figure out how to namespace link relations
Comment #21
catchComment #22
amateescu commentedComment #23
andrewmacpherson commentedAdding an accessibility should-have - #2940677: Support prefers-reduced-motion in off-canvas dialog.
This is already described in detail on the UI child issue #2949991-3: Add workspace UI in top dialog.
Comment #27
webchickA few of us jumped on a Zoom today to run through the current state of things and try and surface any remaining beta blockers. (There's a recording I'll try and figure out how to extract a bit later.)
Notes are at https://docs.google.com/document/d/1WD3_ujkxi492-U_sRe8dxq6Luc6cgBIdV3X2...
Here's what we came up with:
- #2949991: Add workspace UI in top dialog is still a beta blocker, but the demoed patch is looking close. There were a few additional "must-have" sub-points here which were:
- Make the space usage more compact; since much of the functionality of the full mocks isn't implemented yet, the extra space for looks confusing. Remove the space between active workspace name and the button/links below it. [must have]
- Add a link to show list of more Workspaces (another compact tab to the right of the 4 inactive workspaces with "Show all"). [must have]
- Remove "Status" column from overview page; relabel "Set active" to e.g. "Switch to $workspace" [must have]
- #2958752: Refactor workspace content replication plugin system to three services was already identified as a beta-blocker by @catch, and the team agrees.
- #2975334: Prevent changes that would leak into the Live workspace @plach also raised this one to a beta-blocker, at least from an API POV, as there are data integrity concerns with e.g. the live site's configuration being mistakenly overridden.
- #2971699: Content Moderation and Workspace don't work together @effulgentsia noted that at least some mechanism to address this is a beta-blocker, though it could be very simplistic, such as simply not allowing both modules to be turned on at the same time.
- #2934354: Expose cacheability metadata in WorkspaceCacheContext This one was also raised, as there could be information exposure concerns. A quick fix is fine for beta.
Additionally:
- #2916780: Rename to "workspaces" isn't a beta blocker, but it is a "beta deadline."
- #2931067: Add a ContentRepository config entity so we can store fully configured repository handlers, which can be reused for the upstream values of a workspace is currently blocked on a beta blocker (I believe #2958752: Refactor workspace content replication plugin system to three services) and may itself get escalated once that one is fixed.
Comment #28
webchickGot a couple of confirmations that what's written above is more-or-less correct, so updating the issue summary to reflect that.
Comment #29
plachLet's see some updated colors in the IS.
Comment #30
effulgentsia commentedSame as #29 :)
Comment #31
amateescu commentedMoved #2931067: Add a ContentRepository config entity so we can store fully configured repository handlers, which can be reused for the upstream values of a workspace back to the contrib module issue queue since we are removing repository handlers from core in #2958752: Refactor workspace content replication plugin system to three services.
Comment #32
effulgentsia commentedSorry for the noise, but just adding another comment to refresh the colors of the must-have issues in the summary. (prior to me saving this comment, all 3 are wrong)
Comment #33
amateescu commented@effulgentsia, I made all the must-have issues children of this one, so we can see the colors properly in the right sidebar block :)
Also, one more down!
Comment #34
plachAnd the last beta-blocker has been committed!
Release managers might still decide to remove Workspace from the 8.6.x branch before tagging alpha, since formally it's not been marked beta yet, but at this point I think there's no risk for it not to make 8.6.
Comment #35
andrewmacpherson commentedAdded #2986193: Workspace toolbar item fails WCAG Use-of-color at narrow breakpoint as a stable blocker. This was actually fixed in #2949991: Add workspace UI in top dialog, but it regressed before the final commit there. It addresses a WCAG level-A failure.
Also moving the other should-have accessibility issue from beta to stable (#2940677: Support prefers-reduced-motion in off-canvas dialog).
Comment #36
andrewmacpherson commentedFixing heading structure in IS
Comment #38
amateescu commentedFix component following module rename.
Comment #39
gábor hojtsyComing here from #3007166: [META] Stabilise and/or remove experimental modules as appropriate in/before Drupal 9 which is now also a parent :) While this issue looks like the best place to go for stability plans for workspaces, there is nothing listed yet in the issue summary for that. Needs a summary update :)
Comment #40
webchick@amateescu, @catch, @plach, @timmillwood, @Gábor Hojtsy, and I were on a call this morning to discuss the remaining roadmap items and path to stability in Drupal 8.
Here is the outline/notes/conclusions from the meeting: https://docs.google.com/document/d/1Tm_ipsHAo-TEHtNUNVPSbyz1lXBMmysWb0Ka...
TL;DR: In general, we are aiming to support APIs for things at this point to make stuff possible in contrib vs. radically changing the current UI to include things like e.g. diffing/merging, etc.
The biggest things to hit in 8.7 (mid-March code freeze) are:
- More revisionable thingies (taxonomy terms, menu items, files[?])
- Parent revision support (enables sub-workspaces)
- Safe editing API (allows co-existence with Workspaces and other core features such as Layout + Quick Edit)
- Conflict resolution API (allows detection of conflicts in core; enables contrib to build off it)
Then finish remaining issues either between alpha and RC (where they're self-contained to Workspaces) or in 8.8. Hopefully though with the above groundwork in place, most of the other issues should be fairly small in comparison.
Comment #42
webchickHm. Based on the current issue summary, at least, this module seems to be in pretty good shape! What more is left to get it to stable, and do you feel it is feasible to do it by 8.8?
Comment #43
amateescu commentedThe issues that I think are stable blockers are all the child issues of this plan, but maybe it's easier if I put them in the issue summary as well. And yes, definitely feasible for 8.8 IMO :)
Comment #44
catchAdding #3007661: Modernize the path alias system to the must-have section. While workspace module stability itself isn't really impacted in terms of the code base, it makes a big difference in terms of using the module.
Not sure how much of #2896457: Book/menu/path alias validation methods could point to the admin UIs and related issues as well but we should probably re-review them for the same reasons. This seems as much a product management as a release management decision, since it's about UX/feature expectations for what the module is expected to be able to do.
@amateescu pointed out these issues are also a problem for content_moderation - while this is true, we know that content_moderation is incapable of solving these issues by itself (unless it eventually uses workspaces as a backend). Whereas workspaces solves the issue of tracking multiple entity changes together, but can only do so once all core entities support revisions and publishing status properly.
Comment #45
sam152 commentedThere was a lengthy slack discussion about some of the potential issues with using workspaces as an engine for content moderation, but I'm afraid it would have been long purged by now. It might be worth spinning off a canonical issue for that so we can document some of the issues/wins with that.
In general though, for content authored inside the parent entity form (like menu links for example), content moderation does already support creating drafts for those entities. I think the same kind of integration could be applied to path aliases once the modernisation issue is in.
Comment #46
amateescu commented@Sam152, we can use this issue for further discussion on that topic: #2972622: Split the workspaces UI into a separate module
Comment #48
amateescu commentedAdding one more (and hopefully last) issue to the must have list: #3088643: Mark Workspaces as a stable core module
Comment #49
webchickI'm a little confused because the must-have list here lists #3007661: Modernize the path alias system, which still has issues outstanding?
Comment #50
amateescu commented@webchick, the sub-issues from #3007661: Modernize the path alias system that are relevant for Workspaces were only #2336597: Convert path aliases to full featured entities and #3007669: Add publishing status to path aliases, and they are done :) The other issues from the meta are all "should haves" for cleaning up after the initial conversion patch.
Comment #51
amateescu commentedFound and filed #3088870: Add missing REST and JSON:API test coverage for the workspace entity type.
Comment #52
amateescu commentedOops, I placed it in the wrong must-have list.
Comment #53
xjm@amateescu, @dixon_, and I discussed the roadmap and timeline more at DrupalCon Amsterdam. One of the other must-haves is to fix the few remaining "WI critical" issues.
We also discussed that we should be on a good track to fix them over the next several months along with the other remaining steps. Since this is about stabilization rather than new functionality, @catch and I agree that Workspaces can be marked stable in 8.9/9.0. (We agreed on that previously but I want to make sure it's clearly documented here.)
Comment #54
amateescu commentedUpdating the colors of the must-haves since most of them are fixed now.
Comment #55
lauriiiI noticed that Workspaces doesn't work properly on Safari and IE 11 while I was working on #3090904: Workspace drawer CSS fix for better consistency. Some of the UIs are more or less unusable on some browsers. We should add a stable blocking issue to test cross-browser compatibility of Workspaces and determine if any of the problems should be stable blocking issues. The browser support policy can be found here: https://www.drupal.org/docs/8/system-requirements/browser-requirements.
Comment #62
smustgrave commentedSince https://www.drupal.org/project/drupal/issues/3088643 is postponed.
Comment #63
amateescu commented@smustgrave, #3088643: Mark Workspaces as a stable core module is postponed on the list of issues from the issue summary here, so this one should be Active I think.
Updated the issue summary with the issues that will lead this module to a stable release, hopefully in Drupal 10.1.x.
Comment #65
amateescu commentedUpdated the IS and split up the remaining tasks into a single group so it's easier to scan what's left to do.
Comment #66
amateescu commentedThe most important issue that was blocking a few others is done, updating the issue summary.
Comment #67
catchJust noting the three issues currently tagged WI critical are all content_moderation issues so don't affect workspaces at all. Just committed two of the blockers, so moving them to the done section of the issue summary.
Comment #68
catchUpdating the done issues again - two more blockers down.
Comment #69
amateescu commented#3300639: Improve and add explicit test coverage for the workspace conflict validator ended up with the 'WI critical' tag because it adds the test coverage requested in #3091481: Add explicit test coverage for EntityWorkspaceConflictConstraintValidator, so moving it up to the must-have list.
Also adding #2968165: Finish the Views integration to the should-have list.
Comment #70
catchMoved the two completed must haves out.
That leaves no more must haves and three should haves.
Comment #71
amateescu commentedWorkspaces was just marked stable #3088643: Mark Workspaces as a stable core module, so.. 8 years later it's finally time to close this issue! :D