Problem/Motivation
In #3159848: [Policy] Always install Drupal with Standard on the UI, pared down of use case specific elements (content types, node listing, commenting, theme) we are making the standard install profile and recipe more of a starting point without use case specific elements. One thing that's not in the standard profile but assumes the intent of the standard profile is the default /node listing in node module, which is created as a view. This is present on Drupal sites even if they don't intend to have a simple blog like listing and some people forget to remove it or disable it.
Also Olivero has special handling of the /node view and presents a welcome guide until you have promoted content which is confusing to some people. We plan to not enable Olivero in the Standard profile anymore in #3590882: Standard profile should not include Olivero anymore, should provide guidance on how to get started as a next step after this, so we need to decouple the welcome message which is otherwise tied to the "frontpage" view in core currently.
Steps to reproduce
Install with the standard profile before and after this MR :)
Proposed resolution
- Disable the
/nodeview by default. Removing it would be very tricky due to lots of test dependencies. Also this view gives meaning to the "promoted content" checkbox in entities which we don't plan to remove currently. - Rename this view from Frontpage to Promoted content. #3593281: Rename "promoted to front page" to "promoted" already changed "Promoted to frontpage" (for the checkbox field) to "Promoted" on nodes.
- Move the welcome message to the Standard profile as a one-off message. This leaves no trace on the site later. and does not need complicated steps to get rid of it.
- Update all the tests to explicitly enable the promoted content view where they need it. Most tests also need a route rebuild so the routes become available from the view.
- Update the Olivero nightwatch tests to test the front page instead of the
/nodepage because the welcome text now appears on the front page (for testing scrolling).
Remaining tasks
Review!
User interface changes
New default front page in the Standard profile is not a node listing but the user (login) page, same as Minimal. On a fresh install, it displays a welcome message which goes away like other messages on page reload or clicking away.
BEFORE:

AFTER:

Promoted content view available as disabled, don't need to disable it if you don't want to use it (no content leakage anymore in Drupal core if you forget to disable it).
Enabling the "Promoted content" view is now a choice, so when there is no promoted content the welcome message is not the task of Olivero anymore and thus the empty text from the view shows up.

When the promoted content view is enabled, nodes that are promoted still show up in the promoted content view under /node. Olivero retains the styling of this:

Introduced terminology
This introduces "Promoted Content" (for the listing) instead of "Frontpage".
#3593281: Rename "promoted to front page" to "promoted" already introduced "Promoted" (for the status) instead of "Promoted to frontpage".
API changes
None.
Data model changes
None.
Release notes snippet
The node listing page is not the default frontpage of Drupal's standard profile anymore. Node module still provides this view (which also serves an RSS feed), but it is now named "Promoted Content" (promoted_content) instead of Frontpage (frontpage) and is disabled by default.
The installer does not add a generic congratulations message at the end of installation, distributions / profiles need to do this on their own. See the Standard profile for how it adds an installer task at the end of the installation and adds a message.
LLM disclosure
LLM was used to accelerate the development of this MR, everything was deeply reviewed though.
Issue fork drupal-3572350
Show commands
Start within a Git clone of the project using the version control instructions.
Or, if you do not have SSH keys set up on git.drupalcode.org:
Comments
Comment #2
gábor hojtsySummary was based on slack discussion with @catch, so added him to the contribution record :)
Comment #4
gábor hojtsyI should disclose that my contribution on this issue is LLM assisted (and closely reviewed).
Comment #5
gábor hojtsyRetitling new target discussed with @catch, instead of removing the view, making it disabled to start, since that lowers the required test changed significantly. It is still not the default Standard front page anymore in the MR. Will see if we get to a complete MR sooner with this. Fingers crossed.
Comment #6
gábor hojtsyI believe this is now down to a random fail :) Yay! Please review!
Comment #7
gábor hojtsyHeavy issue summary update.
Comment #8
gábor hojtsyComment #9
gábor hojtsyAdding a before screenshot too.
Comment #10
needs-review-queue-bot commentedThe Needs Review Queue Bot tested this issue. It no longer applies to Drupal core. Therefore, this issue status is now "Needs work".
This does not mean that the patch necessarily needs to be re-rolled or the MR rebased. Read the Issue Summary, the issue tags and the latest discussion here to determine what needs to be done.
Consult the Drupal Contributor Guide to find step-by-step guides for working with issues.
Comment #11
gábor hojtsyComment #12
gábor hojtsyComment #13
acbramley commentedLeft some comments
Comment #14
acbramley commentedActioned my own feedback, I used ClaudeAI to refactor the trait.
Comment #15
gábor hojtsy@acbramely: woah, thanks for the refactor, I think this makes it much easier to read and review :) Yay! I think all your changes look great.
Comment #16
gábor hojtsyAdjust parent to implementation issue from policy issue.
Comment #17
dwwNot a super thorough review, but spotted a few things I wanted to open threads about. Not worth NW over any of them.
Comment #18
needs-review-queue-bot commentedThe Needs Review Queue Bot tested this issue. The merge request has merge conflicts and cannot be merged. Therefore, this issue status is now "Needs work".
This does not mean that the patch necessarily needs to be re-rolled or the MR rebased. Read the Issue Summary, the issue tags and the latest discussion here to determine what needs to be done.
Consult the Drupal Contributor Guide to find step-by-step guides for working with issues.
Comment #19
gábor hojtsyRebased, green again! Also resolved all concerns from @phenaproxima.
Comment #20
needs-review-queue-bot commentedThe Needs Review Queue Bot tested this issue. It fails the Drupal core commit checks. Therefore, this issue status is now "Needs work".
This does not mean that the patch necessarily needs to be re-rolled or the MR rebased. Read the Issue Summary, the issue tags and the latest discussion here to determine what needs to be done.
Consult the Drupal Contributor Guide to find step-by-step guides for working with issues.
Comment #21
acbramley commentedFixed attribute
Comment #22
needs-review-queue-bot commentedThe Needs Review Queue Bot tested this issue. It no longer applies to Drupal core. Therefore, this issue status is now "Needs work".
This does not mean that the patch necessarily needs to be re-rolled or the MR rebased. Read the Issue Summary, the issue tags and the latest discussion here to determine what needs to be done.
Consult the Drupal Contributor Guide to find step-by-step guides for working with issues.
Comment #23
acbramley commentedComment #24
gábor hojtsyMore screenshots to issue summary based on how the current MR looks like.
Comment #25
acbramley commentedI asked claude to analyse the diff in the StandardPerformanceTest since there are so many changes in there, it did a great job, here's the summary:
@gábor hojtsy the changes to the invalidation test look great
Comment #26
gábor hojtsyExplaining updated view empty state in Olivero in the issue summary UI changes :)
Comment #27
gábor hojtsyUpdated release notes snippet and introduced terminology to be precise :) Hope that helps with reviews. Fingers crossed.
Comment #28
berdirDid a first review.
Comment #29
gábor hojtsy#3593281: Rename "promoted to front page" to "promoted" is now in, so we can adjust this issue.
Comment #30
gábor hojtsyOk I have it rebased and fixed up again. Now the main thing left is if we should keep this new route or move the guidance back to special casing in Olivero templates. In the new case we would be special casing the template for the user login and user profile templates page to put admin guidance on them if the front page is not yet modified. Should we?
Comment #31
quietone commentedI found an issue yesterday that I think is suitable as a child issue here. It is old, so perhaps outdated, I am not sure. #270919: UB Usability : Labeling Front Page
Comment #32
gábor hojtsyI played around with the idea to moving the welcome text back to Olivero and I think I found a good / nice way. The route/default checking trickery still needs to happen somewhere, but its now back to the theme. I shortened the text as such long prose is just not practical when the message is side content on the page and not the main content. It is shown for logged out (as currently with Olivero before this MR) and logged in (also as currently with Olivero) on the default front page, until it is changed (currently Olivero displays it until you have promoted content for the view we are disabling in this MR). I think this also looks visually as good as Olivero can :)
Comment #33
needs-review-queue-bot commentedThe Needs Review Queue Bot tested this issue. It fails the Drupal core commit checks. Therefore, this issue status is now "Needs work".
This does not mean that the patch necessarily needs to be re-rolled or the MR rebased. Read the Issue Summary, the issue tags and the latest discussion here to determine what needs to be done.
Consult the Drupal Contributor Guide to find step-by-step guides for working with issues.
Comment #34
gábor hojtsyOne thing that we need to consider is that now the /user/login is a perfectly valid default route that someone would want to keep (assuming its a backend only site let's say), so then a theme setting to disable this would be more appropriate :) While this only affects for this issue Olivero and Olivero is nto expected to be used on backend only sites I don't think, the pattern we set here will be going into potentially other themes, such as Default admin when in the next step we not enable Olivero in Standard anymore (at which point we need to port this message to that theme too). However that issue is #3590882: Standard profile should not include Olivero anymore, should provide guidance on how to get started.
Comment #35
lauriiiThat design is very surprising to me. I would not expect that type of content to show in the footer of a site. Is this not something that should be rendered as a one time message after installation?
Comment #36
gábor hojtsy@laurii: that is certainly an option!
Prior to this MR in Olivero as you can see in the issue summary and changeset there is a welcome template that is shown on any request on the frontpage view of the site until there is promoted content. More specifically
core/themes/olivero/templates/includes/get-started.html.twigis included incore/themes/olivero/templates/views/views-view--frontpage.html.twiglike so:So prior to this MR with Drupal core Olivero, if you change your front page to
/node/1, this message will keep being displayed on/nodeuntil you disable that view or somehow make the view not have empty results (change criteria or promote a node). This is the pre-MR experience:I think the motivation is that if the message goes away on a page reload, then people will have a harder time getting started.
We can also say that the special logic message is too much of a hassle and just chuck all of it or even less of it into the initial message that shows to the user, which is currently "Congratulations, you installed Drupal!" (which goes away on page reload).
Comment #37
gábor hojtsy@lauriii: I tried updating the initial ephemeral message as you suggested. The first sentence is already in the installer.
If there is agreement that this UI is the way to go we need to extend the install profile API to specify the message somehow in PHP, as this is currently generated as-is with the distro name only, so the links, etc. will not make sense for Drupal CMS or other distros this way. But first it would be nice to agree that this is indeed what we would want:
For comparison what we have now is not ephemeral, you can read it multiple times, refer to the links and it "only" goes away once you promote a node or do something else to that view:
Comment #38
pameeela commentedNone of this applies to Drupal CMS, we don't include the frontpage view and we control the messages that show post install (including silencing the first warning about file permissions).
FWIW I think it makes more sense as a one-time message. The current implementation is pretty confusing, I remember struggling to figure out where it was coming from, and the fact that it magically disappears when you create content is not really expected. I guess I am the type of person who would try to figure out how to delete it before doing anything else.
Comment #39
gábor hojtsyMoved the welcome message to a one time message only emmitted by Standard profile now. Also as a consequence removed the generic distro message from the installer, so this would be an "API change" of sorts where distros are now expected to display such a message if they want to. I think that is very sensible TBH, they would also likely be more verbose than the built-in message and this way they don't need to undo / work around that.
This also means installs of the Minimal profile do not get this message but that wonderfully fits into the spirit of the Minimal profile :)
I also further simplified the message text here, do not mention the content type creation and front page setting, since every single other link is some grand source of truth and there is no guarantee you would want to start with creating content types and front page and also since this is a one off message now, I don't think people would methodically open the links in new tabs, so to use this for step by step instructions is IMHO not a good fit. I think that's fine though.
Comment #40
gábor hojtsyUpdated issue summary to message approach, new screenshots for empty view since the view empty text changed in another issue. Also adding the installer message change to the "API changes" and the release note snippet.
Comment #41
needs-review-queue-bot commentedThe Needs Review Queue Bot tested this issue. It fails the Drupal core commit checks. Therefore, this issue status is now "Needs work".
This does not mean that the patch necessarily needs to be re-rolled or the MR rebased. Read the Issue Summary, the issue tags and the latest discussion here to determine what needs to be done.
Consult the Drupal Contributor Guide to find step-by-step guides for working with issues.
Comment #42
gábor hojtsyAfter I created the empty view screenshot I recognized that the title and empty state needed adjustments too. Done.
Comment #43
quietone commentedTagging as this is needed for #3590882: Standard profile should not include Olivero anymore, should provide guidance on how to get started, which is a task for deprecating Olivero.
Comment #44
smustgrave commentedLarge MR :)
With the MR applied I did a fresh install, assuming they're the only ones affected
Is core/modules/node/tests/src/FunctionalJavascript/NodePerformanceTest.php in scope of this issue? Seems to be the focus on discussion so wonder if it should be it's own.
Comment #45
gábor hojtsyThe way the node performance test came in is that the /node view does not logically fit anymore in the StandardPerformanceTest as it is not a standard feature anymore :) If that is blocking this too much we can try to move it back to StandardPerformanceTest (despite not being Standard), but the default front page that StandardPerformanceTest tests is also changed here so that needs to be kept changed in the test either way, which is what triggered to have a separate /node performance test. I think probably @catch and @Berdir have solid ideas for what it should be, I just don't fully grasp it :D
Comment #46
berdirI'd say NodePerformanceTest is in scope in that it needs to happen or we lost test coverage that we do not want to lose. Only alternative would be doing that first as a blocker, but it would still require significant changes here I think then, so kind of pointless. It's not really a new test, it's just moving the existing StandardPerformanceTest::testCacheInvalidation() to a separate test class and should be doing the same thing.
I want to have a closer look at the resulting StandardPerformanceTest to see if the result still makes sense or if there are more bits that could be removed or should be adjusted to test something meaningful.
Comment #47
gábor hojtsyRetitle based on final(?) implementation and also fix up issue summary again. All threads in MR are resolved too :) Hint hint!
Comment #48
needs-review-queue-bot commentedThe Needs Review Queue Bot tested this issue. It fails the Drupal core commit checks. Therefore, this issue status is now "Needs work".
This does not mean that the patch necessarily needs to be re-rolled or the MR rebased. Read the Issue Summary, the issue tags and the latest discussion here to determine what needs to be done.
Consult the Drupal Contributor Guide to find step-by-step guides for working with issues.
Comment #49
gábor hojtsyComment #50
needs-review-queue-bot commentedThe Needs Review Queue Bot tested this issue. The merge request has merge conflicts and cannot be merged. Therefore, this issue status is now "Needs work".
This does not mean that the patch necessarily needs to be re-rolled or the MR rebased. Read the Issue Summary, the issue tags and the latest discussion here to determine what needs to be done.
Consult the Drupal Contributor Guide to find step-by-step guides for working with issues.
Comment #51
gábor hojtsyAll thread resolved now :)
Comment #52
berdirHopefully last performance related comments, we're getting there.
Comment #53
gábor hojtsyAll outstanding concerns resolved again, thanks @berdir for your thorough review. Also minor updates to issue summary.
Comment #54
nitinkumar_7 commentedI have tested on local and I can see a pipeline failure here (#887456, PHPUnit Unit (Core): 8.6-ubuntu) but not getting this issue on local.
Also checked the performance numbers @berdir raised above and they look addressed now : the cache get/set counts in StandardPerformanceTest match what was discussed.
Comment #55
acbramley commentedThis is looking good to go now, nice job everyone!
Comment #56
gábor hojtsyRebased the MR, still passes fine :)
Comment #57
larowlanLeft a review on the MR - a couple of minor questions.
Thanks for working on this, it will be great to not have to remember to turn this view off on new projects 🎉
Comment #58
needs-review-queue-bot commentedThe Needs Review Queue Bot tested this issue. It no longer applies to Drupal core. Therefore, this issue status is now "Needs work".
This does not mean that the patch necessarily needs to be re-rolled or the MR rebased. Read the Issue Summary, the issue tags and the latest discussion here to determine what needs to be done.
Consult the Drupal Contributor Guide to find step-by-step guides for working with issues.
Comment #59
acbramley commentedI really wanted to re-RTBC this but have a couple more comments :(
Comment #60
acbramley commentedGo go go!
Comment #62
larowlanCommitted to main, moving to 11.x for backport
Created and published a change record.
Comment #63
larowlanActually published 2 change records
Comment #65
xmacinfoThis is quite impressive.
Thank you everyone!
Comment #67
gábor hojtsyOne of the change records were not published. I updated teh other one also with more info.
Working ont he D11 backport but its tricky because some base test changes need backporting too apparently.
Comment #68
gábor hojtsyRather than backporting the taxonomy base test here, let's get #3591220: Convert functional tests in taxonomy module to kernel tests committed first, so we don't collide IMHO.
Comment #69
gábor hojtsyBackport updated following the landing of #3591220: Convert functional tests in taxonomy module to kernel tests. The only fail that remains is also on 11.x itself pretty consistently. Please review.
Comment #70
smustgrave commentedQuit a large MR but appears to be a good backport. The failure is on settings_tray which I don't think is related to this.
Comment #71
needs-review-queue-bot commentedThe Needs Review Queue Bot tested this issue. It fails the Drupal core commit checks. Therefore, this issue status is now "Needs work".
This does not mean that the patch necessarily needs to be re-rolled or the MR rebased. Read the Issue Summary, the issue tags and the latest discussion here to determine what needs to be done.
Consult the Drupal Contributor Guide to find step-by-step guides for working with issues.
Comment #72
quietone commentedThe branch/version of the change record needs to be updated when this is committed to 11.x
Comment #73
quietone commentedThe branch/version of the change record needs to be updated when this is committed to 11.x