RFCs are a way for Atlassian to share what we’re working on with our valued developer community.
It’s a document for building shared understanding of a topic. It expresses a technical solution, but can also communicate how it should be built or even document standards. The most important aspect of an RFC is that a written specification facilitates feedback and drives consensus. It is not a tool for approving or committing to ideas, but more so a collaborative practice to shape an idea and to find serious flaws early.
Please respect our community guidelines: keep it welcoming and safe by commenting on the idea not the people (especially the author); keep it tidy by keeping on topic; empower the community by keeping comments constructive. Thanks!
RFC dates:
- Publish: February 13, 2024
- Discuss: March 6, 2024
- Resolve: April 24, 2024
Summary of the project
To make page creation & collaborative editing easier, we are in the early stages of testing Live-Edit Pages in Confluence Cloud. Live-Edit Pages will not have a separate editor and view interface. Users will be able to see all changes in real-time, without the need for the page to be published. Publish will be optional.
We are launching an Early Access Program, where apps will have some limitations, that we will expand on below. We want to be clear: this is very early testing, and is not representative of the final state of Live-Edit pages.
We plan to make many changes along the way that incorporate feedback and what we’ve learned over time. We are particularly keen to incorporate your feedback on any impacts Live-Edit Pages will have on apps that we may have missed, as well as how we can best support your apps in Live-Edit Pages.
Problem
Page creation & collaborative editing in Confluence today requires many clicks and page loads (edit, publish, update, etc). Solving this problem will help customers save time, collaborate more seamlessly, and help expand the adoption of Confluence (and its apps) throughout organizations.
Proposed Solution
To make page creation & collaborative editing easier, we are in the early stages of testing Live-Edit Pages with customers.
Live-Edit Pages are continuously editable for users with editing permissions, without any additional clicks to enter or exit the editing mode.
- When visited, Live-Edit Pages are editable without any extra clicks, displaying edits in realtime. Users with view-only permissions cannot edit, but can still see others’ realtime edits. Live-Edit Pages will not have separate editing and viewing interfaces.
- When created, Live-Edit Pages do not start as drafts. They are immediately created as pages with a default title (“Untitled page X”) that can be updated.
- When created, Live-Edit Pages are “open by default.” In other words, other teammates in the space will be able to view and edit the page, as well as search for it & see it in the sidebar, without it ever being published. Users can, of course, update permissions for the page after creating it.
- “Publish” is still available for Live-Edit Pages for pages that require more formality or version control, but is optional and one click removed in the
...
menu. This means that it’s likely that many Live-Edit Pages are only ever accessed in editing mode. Users will also be able to convert a published page back to Live-Edit. - Once published, published pages work the same as today. They are viewed in a rendered state, require a click to edit, and are updated via additional publishes.
- Live-Edit Pages will still maintain version history in “Page history,” but each version will be the result of automatic “snapshots” taken after each unique edit session.
- Given the above, “Share” becomes the primary call-to-action for a Live-Edit page.
Given this is a large change to page creation in Confluence, we are holding an Early Access Program with ~20 customers to test our assumptions.
- Customers in the EAP will be able to create “Collaboration” spaces within Confluence, where all newly created pages will be Live-Edit. In the future, other types of spaces will likely be able to have Live-Edit Pages created in them as well.
- Customers can also create “Knowledge base” spaces, which behave the same as normal spaces today, with all newly created pages being standard published pages. Pre-existing spaces will be unaffected and continue to behave the same as normal spaces today, treated as “Knowledge base” spaces. Live-Edit Pages can be moved into “Knowledge base” spaces.
- During this EAP, apps will have significant limitations with Live-Edit pages (listed out below).
Again, this is very early testing, and not representative of the final state of Live-Edit pages. We want your feedback on how apps and Live-Edit pages should work together in the future. To that end, we will:
- List the EAP limitations that we know exist and how we’re thinking of handling them in the future, open to your comments.
- In parallel, open up a Partner Early Access Program, so you can directly test and understand the impacts of Live-Edit Pages on your apps. Sign up for the Live-Edit Pages Partner Early Access Program here.
EAP Implementation details:
The following definitions will be used to describe the implementation.
- View page / renderer: the static rendered mode that users land on once a page is published. Uses Atlaskit Renderer.
- Editor: a separate component that enables building page structure and collaborative editing. Uses Atlaskit Editor core.
Instead of a separate content renderer, Confluence will use the Editor for an always-live combined view and edit mode. This means that by default there will not be a static view mode, rather, the Editor component will be re-used and extended. Even users with view-only permissions will be able to see the document updates in real-time.
Confluence will continue using the same underlying page
content type. Upon creation, we will immediately create both the current
and draft
versions; rather than starting with an unpublished draft. The draft
status version of the content object will be the source of content loaded into the editor. Background “snapshots” will be created after a period of inactivity on the document, which copy across changes from the draft
object to a new current
version. This snapshotting allows version history, notifications, indexing and retrieval of the content by macros. Unlike unpublished drafts, Live-Edit Pages will be open by default upon creation and visible across the product. Again, these behaviours are what we have for the EAP and are subject to change in the future.
An explicit publish action will not be required for Live-Edit Pages, therefore, we expect a change in user behaviour, whereby a subset of pages are never published. However, we don’t yet know what the ultimate proportion of always live-edit pages versus published pages will be. Note that the intention will be for publishing Live-Edit Pages to closely match previous behaviour, including for apps (e.g. macros, publish conditions, webhooks, events).
Impacts to Apps in EAP
Connect Webhooks / Forge Events
For EAP, Live-Edit Pages will send a page created
event immediately upon creation (Forge & Connect Webhook). This behaves differently than non-Live-Edit pages, where the create event is sent upon first publish.
Background snapshots will trigger a page updated
event (Forge & Connect webhook).
Under consideration: We are considering having Confluence emit a new event when background snapshots are created in Live-Edit Pages, and reserving the pre-existing update event to fire only when a user explicitly triggers a publish/update.
Extension Points
Live-Edit Pages EAP will not roll out with the various web item integration points that are available on the view page. Specifically, web items & panels: System Content Metadata
, System Content Button
, Secondary Content Action
, Page Metadata Banner
and atl.page.metadata.banner
. Only the previous editor integration points will be supported for the Live-Edit Pages EAP - System Editor Precursor Buttons
and atl.editor.savebar
.
Under consideration: We are planning on adding support for a subset of the existing view page web items and panels in Live-Edit Pages.
Macros
Currently, all macros (built by Atlassian, vendors, and customers) only have full usability & interactivity on the view page as they only show a preview in the editor. This means a large number of macros will not be fully supported within the Live-Edit pages EAP.
For the EAP, we are making a subset of simple Atlassian-built macros functional in the editor by allowing their contents to be clicked in the editor (for example, making links in the Children display macro clickable while editing). For the EAP, when a macro that is not fully supported in Live-Edit pages is inserted into a Live-Edit Page, we will show a flag to the user that informs them so, and that they can publish their page in order to display the macro properly.
Certain macros have additional complexity due to Javascript event conflicts with the Editor - for example, input fields, like in the Atlassian-built Live Search macro. Bodied extensions currently only show their nested content in the editor, and the “rendered” view cannot be displayed in the editor. We are aware that many app macros use bodied extension content as a configuration for their display.
Under consideration: We are considering allowing Connect/Forge macros to have a setting that allows their contents to be clicked in the editor. The ideal end-state is that all macros (Atlassian-built, vendor-built, and customer-built) in Live-Edit will be WYSIWYG and fully interactive, without a need to publish to see the final macro content.
Additionally, we are planning to improve the UI for macros in the editor to make them appear more seamless with the rest of the content. These enhancements will apply for vendor macros as well, and we are collecting feedback separately here: RFC-33: Modernized macro styling while editing in Confluence Cloud.
Changes to the publish workflow
Since Publish is removed as a necessary action for users to share and distribute Live-Edit Pages, this means that publish conditions are no longer a prerequisite before pages are distributed. This changes the use-case for publish conditions.
Rest API’s
Existing page REST APIs will still function, given that Confluence is still representing Live-Edit Pages with the same page
content type. A new “unpublish” API will be introduced and it will be made public post-EAP.
Live-Edit Pages and draft/published pages will be differentiable via the content API by the subtype
field. Currently the subtype
is not available on the v2
API. This is not considered a stable API and the representation of Live-Edit Pages may change. Apps should not be querying the subtype at this time.
Asks
- What do you think about the early proposals to handle app limitations in Live-Edit Pages listed in this RFC?
- Are there any other areas, use cases, etc that we are missing?
- What other feedback do you have to make apps and Live-Edit Pages work best together in the future?
- Sign up for the Partner Early Access Program if you are interested in directly testing your apps in the early EAP environment.