Revert search to old live search pattern

this was how i first saw the new search box. In my mental model everything below the box are results. So the search button looked like it was another type of result. I think design guidelines should prevent this kind of situation.
From my intuition the search button should be on the right next to the search box. Instead there is this search reset button. I only recognized it exits just now.

To my surprise google is also like this. It also has this weird search reset button that I never realized existed. The difference is, that google at least clearly distinguishes the search button from the results.

I think discourse did many things right from a UX perspective. But there are also some odd things. Sometimes changes are an improvement and sometimes they are just changes.

I think the root cause for this is, that changes are done in an ad hoc manner without a design system that is based on clearly defined guidelines. It grew from the intuitive knowledge its creators acquired over the years. The paradigms behind the UI decisions are not clearly verbalized and are made in a quasi dictatorial fashion.


A design system would be fully dictatorial, no? When it comes to this change specifically, what guidance could a design system have provided?

Are there examples of this? If this ever comes up feel free to ask about it on Meta, there’s some reasoning behind every change as far as I know… but it’s true that we don’t announce the reasons for every change beyond the commit message that made the change.

We’re quasi-dictatorial in that we’re the ones who will make the final call on what makes it into Discourse (someone has to), but there are a lot of factors that are considered. Performance was already mentioned, but input from our customers plays a major role because Discourse wouldn’t exist without them. We also operate Meta to specifically gather this type of feedback from the wider community of self-hosters, and we’ll lurk #site-feedback categories on large sites (especially large migrations from other platforms) to get an idea of how things are going for regular users.


right now this reasoning is based on paradigms that are not verbalized for the most part. It is the result of intuition and the discourse with customers. This strategy will avoid regressions and catastrophes like the loss of a customer for the most part. But it has its limits. There is no clear scale against which progress can be measured. So pragmatic KPIs like “How many users complained about / praised the change?” and “did it achieve secondary goals like improved performance etc?” will decide if a change was a success or not.
The issue is: potential users and potential customers cant complain.
A user interface is like a language. Our ability to understand this language is influenced by the culture we got socialized in. If we don’t verbalize the underlying paradigms we employ while creating these user interfaces we will embed our culture into these systems. This means that they are easy to use for people like us but not necessarily in general.
Benefits a design system might bring from an abstract perspective:

Consistent appearance and interaction, maintaining a familiarity to the user, can reduce the difficulty of learning, cognitive and operating costs, and improve work efficiency.

By having clearly defined categories of user interface components this confusion between “data display” components and a user action (for which a button might be used for example) would not have happened. If there was a page like this where all the different UI components and their purpose was listed a rational discussion could be had. It would also be good if these discussions would be held in public and weren’t just communicated through git commit messages.

1 Like

I just added a similar hint, but not in the placeholder. Given all the languages Discourse is translated in, a long string in the placeholder risks being cut off. Plus, as soon as you type, the placeholder is gone. Instead I went with a right-aligned hint in the search all topics/posts row:

This is also fixed alongside a few more minor bugs.

I will be working on a better solution for this use case, it’s on my todo list.


My experience of the within-topic search experience on meta right now is that it seems weirdly broken.

When I want to search within a web page, I’n trained to press ctrl F, type, and press enter. I understand why Discourse needs to hijack /enhance that for long topics.

What happens now when I press ctrl F on meta and type ‘theme’ into the search box is:

  1. it shows me a bunch of users (WTF) or tags (helpful)
  2. if I press enter, it shows me a bunch of other topics (WTF, I’m trying to search within topic)
  3. If I press “more” I lose the topic context altogether

My conclusion: you’re completely violating users trained expectations of how within page search works on the web.

(1) if the user has triggered search with ctrl F, default to within-topic search; but keep all topics search as default when the search is triggered in the way that other global navigation is.
(2) don’t show users by default, as mostly people are searching for topics.

I’m honestly puzzled why you used a sledgehammer for this nut; I’d have thought the performance impact of per-character searching could be handled by a 500ms delay before triggering search.


I am sorry, I am closing this for 2 weeks per:

Please open a new topic for constructive feedback around new improvements for the new paradigm.

This discussion has gotten off the rails.