Discourse für Blogs, Reddit-, X- oder Facebook-ähnliche Endlos-Scrolling-Plattformen nutzen

Ich starte dieses Thema, um meine Reise zu dokumentieren, während ich versuche, Discourse zu einer visuell ansprechenderen, kontinuierlich scrollbaren Plattform zu machen – etwas, das dem Browserlebnis näherkommt, das von Reddit, X und Facebook angeboten wird.

Ich werde dieses Thema nutzen, um zu teilen, was ich versuche, was funktioniert, was nicht, welche Komponenten ich verwende und welche Probleme ich auf mich zukommen. Hoffentlich hilft es auch anderen, die Discourse für etwas jenseits eines traditionellen Forenlayouts verwenden möchten.

Der Ausgangspunkt für dieses Projekt war die 90–9–1-Regel.

Sie besagt, dass auf den meisten Social-Media-Plattformen, Blogs usw.:

  • 90 % der Nutzer hauptsächlich stöbern und Inhalte konsumieren.

  • 9 % gelegentlich reagieren, liken, teilen oder kommentieren.

  • 1 % aktiv die meisten Inhalte erstellen.

Natürlich variieren die genauen Prozentsätze je nach Community, aber das Prinzip bleibt relevant: Die meisten Besucher sind Leser, keine Mitwirkenden.

Discourse ist hervorragend darin, die 9 % und die 1 % zu bedienen. Es ist um Diskussionen, Antworten und aktive Beteiligung herum aufgebaut. Allerdings möchte ich es auch für die viel größere Gruppe attraktiv machen, die einfach nur die Seite öffnen und interessante, frische Inhalte stöbern möchte.

Was ich versuche zu bauen

Ich möchte Discourse nutzen, um einen visuell ansprechenderen, kontinuierlichen (Doom-Scrolling-)Feed ähnlich wie bei Reddit, X oder Facebook zu erstellen.

Das Erlebnis würde idealerweise so aussehen:

  • Die Startseite öffnen und sofort einen Feed mit relevanten Themen sehen.

  • Nahtlos von einem Thema zum nächsten scrollen.

  • Den Inhalt des Themas vorschauen, ohne eine separate Seite zu öffnen.

  • Bilder, Videos und Auszüge direkt im Feed sehen.

  • Liken, merken oder antworten, wenn etwas die Aufmerksamkeit erregt.

  • Vorher gescrollte Inhalte automatisch aus dem Weg räumen.

  • Später wiederkommen und frische oder ungesehene Themen sehen, statt jedes Mal dieselbe Startseite.

  • Den Feed schrittweise personalisieren, basierend auf Kategorien, Tags und Themen, mit denen der Nutzer interagiert.

Manche könnten das als „Doom Scrolling“ bezeichnen, aber es ist auch einfach die Art und Weise, wie eine riesige Zahl von Menschen heute Online-Inhalte konsumiert. Sie können dutzende Beiträge lesen, ohne jemals zu kommentieren, und sind dennoch echte Nutzer, die Aufrufe generieren, Links teilen und potenziell jeden Tag zurückkehren.

Warum mit Discourse bauen?

Discourse bietet bereits die meisten schwierigen Teile:

  • Nutzerkonten und Profile

  • Kategorien und Tags

  • Likes, Lesezeichen und Benachrichtigungen

  • Vertrauensstufen und Moderation

  • Erstellung von Themen und Antworten

  • Verfolgung von gelesenen und ungelesenen Beiträgen

  • Empfohlene und verwandte Themen

  • Ein ausgereiftes System für Plugins und Theme-Komponenten

Was fehlt, scheint ein Feed zu sein, der primär um Entdeckung und passiven Konsum herum gestaltet ist. (Discourse wurde offensichtlich nicht so konzipiert.)

Wo ich bisher stehe

  1. Ich begann mit dem fantastischen Redditish-Theme von @awesomerobot, das ich forken musste, um verschiedene Aspekte bearbeiten zu können, wie z. B. das Entfernen der benutzerdefinierten Seitenleiste. Ich habe auch das CSS stark bearbeitet, um es so zu gestalten, wie wir es wollten.
  2. Die Aktivierung von Nested Views war ein Muss, da dies den für diese Art von Site benötigten Stil abdeckt.
  3. Ich habe ein YouTube-artiges, scrollbares Menü erstellt, das alle Kategorien und benutzerdefinierten Links anzeigt. Ich habe Custom Top Navigation Links verwendet, um Links anzupassen und hinzuzufügen.
  4. Ein Modal für Themen-Vorschauen war ein Muss, und ich begann damit zu designen, aber die Legende @Don baute eine bessere Version, die hier zu finden ist.
  5. Eine statisch gecachte rechte Seitenleiste überall war ein Muss, also begann ich mit right sidebar blocks und erstellte dann eine Theme-Komponente, um sie auch auf Themen usw. anzuzeigen.
  6. Mit custom header links (icons) fügte ich einen „Beitrag erstellen“-Button in den Header ein, um den Container aufzuräumen.
  7. Bilder in Beiträgen zentriert mit einem unscharfen Hintergrund, um es ordentlicher aussehen zu lassen (ähnlich wie bei Reddit).
  8. Die Themen-Auszüge auf 150 Zeichen festzulegen und sie zwischen Titel und Bild auf den Themenkarten anzuzeigen, war ein Muss (ähnlich wie bei Facebook und X).

Die nächsten Schritte wären ein dedizierter Feed, der:

  1. Mit aktuellen Inhalten aus einem definierten Zeitraum beginnt, z. B. den letzten 14 Tagen.

  2. Themen aus Kategorien und Tags priorisiert, denen der Nutzer folgt.

  3. Beliebte oder trendige Themen für die Entdeckung einmischt.

  4. Aufzeichnet, wann ein Thema tatsächlich angesehen oder überrollt wurde.

  5. Die Priorität bereits gelesener Themen reduziert, ohne sie dauerhaft zu verstecken.

  6. Direkte Reaktionen und Antworten aus dem Feed heraus erlaubt.

Dies würde traditionelle Themenlisten oder Diskussionen nicht ersetzen. Es wäre eine zusätzliche Möglichkeit, denselben Discourse-Inhalt zu entdecken und zu konsumieren.

Folge der Reise

Ich werde dieses Thema fortlaufend aktualisieren, während sich das Projekt entwickelt, einschließlich der Komponenten, die ich teste, der Änderungen, die ich vornehme, und der Hindernisse, auf die ich stoße.

Ich würde auch gerne von jemandem hören, der etwas Ähnliches versucht hat, insbesondere bezüglich:

  • Ob vorhandene Daten zur Leseverfolgung dies unterstützen könnten.

  • Wie ein Feed für anonyme und neu registrierte Nutzer funktionieren könnte.

  • Wie viel Personalisierung erreicht werden könnte, ohne einen komplexen Empfehlungsalgorithmus einzuführen.

  • Ob kontinuierliche Themen-Vorschauen erhebliche Leistungsmängel verursachen würden.

Das Ziel ist es, anzuerkennen, dass die stillen 90 % ein wichtiger Teil einer Community sind, und ihnen ein Erlebnis zu bieten, das darauf ausgelegt ist, wie sie das Internet tatsächlich nutzen.

Die Testseite, die ich für dieses Projekt verwenden werde, ist

https://www.m8wtf.com/

11 „Gefällt mir“

Das gefällt mir sehr – ich bin dabei. Ich habe mir deine Demo kurz angesehen, und sie ist großartig! Ich schaue mir das an, wenn ich mal Zeit habe.

4 „Gefällt mir“

Wir haben versucht, Discourses Unified New-Seite als Startseite zu nutzen, da sie genau den Feed zu bieten schien, den wir wollten. Dazu ein Plugin, das Beiträge aus /new entfernt, sobald der Nutzer sie im Viewport vorbeigescrollt hat. ( @Don hat das zum Laufen gebracht.)

Die Verwirrung entstand dadurch, dass ich Discourse immer mit einem etablierten, angemeldeten Konto getestet habe, sodass meine Unified New-Seite immer voller Beiträge war. Ich hatte nicht vollständig verstanden, wie sie für völlig neue Nutzer funktioniert.

Nachdem wir ein neues Testkonto erstellt hatten, stellten wir fest, dass Unified New völlig leer war, da ältere Themen für diesen Nutzer nicht als „neu“ galten. Das bedeutet, dass sie derzeit nicht den gefüllten Startseiten-Feed bereitstellen kann, den wir geplant hatten.

Wow, vielen Dank für den Kommentar und das positive Feedback. Ich weiß, dass das nicht ganz deine Sache ist und dem widerspricht, wofür Discourse eigentlich gedacht war.

@don arbeitet an einem neuen Plugin, das ein neues /feed-Stil-System und eine Startseite einführt. Dabei werden Nutzern tatsächlich neue Beiträge angezeigt, die dann entfernt werden, wenn ein Nutzer sie beim Scrollen (mithilfe des Viewports) überspringt. Wenn alle Beiträge gesehen wurden, erfolgt eine Weiterleitung zu /latest. Dies ist noch in Arbeit.

1 „Gefällt mir“

Ein riesiges Dankeschön an @don und sein neues, noch nicht veröffentlichtes Plugin – der Feed funktioniert jetzt so, dass Benutzer immer frische Inhalte sehen. Die Antworten verhalten sich allerdings weiterhin wie zuvor: Sie verschwinden nicht, wenn sie außerhalb des sichtbaren Bereichs liegen.

Neue Benutzer sehen sich beim Registrieren alle Beiträge der letzten 14 Tage an, dies kann jedoch über die Standardeinstellung „Zeitraum“ auf der Startseite angepasst werden.

2 „Gefällt mir“

Als Nächstes steht die Entwicklung einer Komponente/eines Plugins auf der Agenda, um den Feed zu personalisieren, etwa so:

Feed-Score =

40 % Interessen
25 % Aktualität
15 % bisheriges Verhalten
10 % Beliebtheit auf der Seite
10 % Zufall/Entdeckung

Ein Feed würde dann beispielsweise so aussehen:

WARDOGS Early Access startet am Donnerstag
Neues PS5-Update verursacht seltsamen Controller-Bug
Jemand baut einen E-Scooter mit 113 km/h
Netflix bestätigt neue Inbetweeners-Folge
Glasgow-WTF-Geschichte
Zufällige beliebte Food & Drink-Geschichte

Für einen neuen Nutzer könnte es so aussehen:

25 % Gaming
15 % TV & Film
15 % WTF News
15 % Tech
10 % Food & Drink
10 % Sport
10 % Wheels & Thrills

Danach, wenn sie 30–50 Beiträge durchgescrollt haben, beginnt sich ihr Feed anzupassen.

Oder ich habe auch darüber nachgedacht, eine Komponente zu erstellen, bei der sie sich bei der Registrierung ihre Interessen auswählen, z. B. Kategorien:

Wofür interessierst du dich?

:check_box_with_check: Gaming
:check_box_with_check: WTF News
:check_box_with_check: Tech
☐ Politik
:check_box_with_check: TV & Film
☐ Sport
:check_box_with_check: Wheels & Thrills
☐ Food & Drink

Das wird Zeit und Testen erfordern

1 „Gefällt mir“

Ich mag es, dass man auf dem Handy durch das Tippen auf ein Thema eine Vorschau in einem Sheet bekommt und dann entscheiden kann, ob man tiefer einsteigt oder es schließt und im Feed weiterscrollt. Gute Arbeit!

1 „Gefällt mir“

Das liegt an @dons Theme-Komponente :wink: Topic Preview Modal

2 „Gefällt mir“

Was ist das Ziel dieser Reise? Ein Theme, ein Component oder etwas Vereinheitlichtes? Ein Theme, das mit Components gebündelt ist, und so weiter?

Ich habe seit Jahren auf etwas wie das gewartet. Die UX von Discourse hat mich jedes Mal davon abgehalten, es zu nutzen. Sie ist … wirklich nicht … so toll, wie Discourse an sich ist.

Ich wünsche dir viel Glück auf deiner Reise.

Deine Demo sieht auf dem Mobilgerät großartig aus.

1 „Gefällt mir“

Es wird einen Guide geben :slight_smile: Ich werde alle Komponenten, die ich erstellt habe, auf GitHub hochladen, zusammen mit Links zu Komponenten, die andere bereits erstellt haben oder gerade erstellen. Es würde sich falsch anfühlen, alles in einem Paket zusammenzufassen, da andere einen großen Beitrag geleistet haben.

Genau das. Das Backend ist großartig, und genau deshalb nutze ich Discourse, um zu sehen, ob ich etwas Anständiges schaffen kann, das nicht wie das übliche Discourse aussieht.

1 „Gefällt mir“

Es gibt einige Themes, die Komponenten bündeln. Vielleicht solltest du das in Betracht ziehen. Und universell vielleicht Lucide-Icons verwenden?

1 „Gefällt mir“

Sieht wirklich gut aus. Es gibt ein theme-creator, mit dem man den Op in Beiträgen nach dem Eröffnungsbeitrag dekorieren kann.

Okay, ich schaue mir gerade ein anderes Thema mit Antworten an. Ich sehe, dass du vielleicht schon Don’s TC Author Badge nutzt.

Sehr schöne Arbeit.

2 „Gefällt mir“

Nein, das ist ein paar benutzerdefiniertes CSS, das ich vor der Installation verwendet habe.

1 „Gefällt mir“

Wie in Topic List Previews (TLP)?

Gutes Beispiel hier: https://www.starzen.space/

Nicht wirklich, eher Backend- als visuelle Themen.

1 „Gefällt mir“

Ah, okay, ich wurde durch diese Aussage auf einen bestimmten Pfad gelenkt. Wenn ich TLP anhand deiner anderen Anforderungen bewerten würde:

  • Die Startseite öffnen und sofort einen Feed mit relevanten Themen sehen.

    :white_check_mark:

  • Nahtlos von einem Thema zum nächsten scrollen.

    :white_check_mark:

  • Den Inhalt des Themas vorschauen, ohne eine separate Seite zu öffnen.

    :white_check_mark: (obwohl es hier noch ausbaufähig ist – ich habe an einem Discourse-Fork gearbeitet, der eine deutlich ausgefeiltere Version davon bietet)

  • Bilder, Videos und Auszüge direkt im Feed sehen.

    2/3 :slight_smile: (ich habe an einem Discourse-Fork gearbeitet, der eine deutlich ausgefeiltere Version davon bietet, die Live-Videos in der Themenliste abspielt :+1:)

  • „Gefällt mir“ setzen, Lesezeichen setzen oder antworten, wenn etwas deine Aufmerksamkeit erregt.

    :white_check_mark:

  • Bereits gescrollten Inhalt automatisch aus dem Weg räumen.

    :white_check_mark:

  • Später wiederkehren und neue oder noch nicht gesehene Themen sehen, statt jedes Mal dieselbe Startseite.

    :white_check_mark:

  • Den Feed schrittweise personalisieren, basierend auf Kategorien, Tags und Themen, mit denen der Nutzer interagiert.

    :cross_mark: Noch nicht, aber die Backend-Grundlagen sind vorhanden.

Übrigens, das war schon einmal Thema, z. B. hier:

Ich habe sie alle gelesen, aber niemand hat es tatsächlich gemacht.

1 „Gefällt mir“

Ich kenne mindestens eines, aber es ist quelloffen.