Vorschlag: Migration von ActiveModelSerializers zu Alba

Hallo, ich habe gerade bemerkt, dass Discourse eine ältere Version von ActiveModelSerializer verwendet.
Sie wurde vor fünf Jahren veröffentlicht und ich glaube nicht, dass das gut ist.

Es scheint, dass eine Abspaltung (Fork) von AMS geplant ist, aber es gibt eine bessere Lösung.
Mein Vorschlag hier ist die Migration von AMS zu Alba, einem JSON-Serializer, den ich erstellt und pflege. Obwohl Alba nicht 100%ig mit AMS kompatibel ist, ist die angebotene API ähnlich wie bei AMS und etwa 10-mal schneller als das neueste AMS.

Wenn die Maintainer der Migration zustimmen, werde ich einen PR senden.

4 „Gefällt mir“

Könnten Sie 2 oder 3 Endpunkte in einem PR ändern und einige Benchmarks ausführen? Das könnte uns bei der Bewertung helfen :smiley:

4 „Gefällt mir“

Ja, wie Falco erwähnte, müssen wir uns hier um 2 Bereiche kümmern:

  1. Plugin-Kompatibilität – viele Plugins erweitern Serializer, wir möchten Breaking Changes minimieren

  2. Leistung – Änderungen an Serializern müssen durch harte Daten untermauert werden.

Ich empfehle, sich einige der Serializer anzusehen, die auf Themen- oder Themenlisten-Seiten verwendet werden, und diese als Testgelände zu nutzen:

Verwenden Sie dann die „Vorher“- und „Nachher“-Werte von discoruse bench. Dies gibt Ihnen ein sehr genaues Gefühl für die erzielten Fortschritte.

Das Ausmaß der von uns akzeptierten Störungen im Ökosystem hängt stark von der Leistungsverbesserung hier ab.

6 „Gefällt mir“

Entschuldigen Sie die späte Antwort.

Ich glaube, es bringt Leistungsverbesserungen, daher werde ich ein Benchmark-Skript ausführen.

Ich wusste nichts von Serializer-Plugins. Ich habe ein Beispiel für Plugins gefunden, die den Serializer anpassen.

Hier scheint die Methode include_votes? eine magische Methode von AMS zu sein, da ich nirgendwo im Code sehen kann, wo sie verwendet wird. Ich denke, wir brauchen in solchen Fällen eine Migration, da Alba dieses Verhalten nicht unterstützt.

Die Aufrechterhaltung der Kompatibilität muss wichtig sein. Wenn ich Alba nicht mit vorhandenen Plugins kompatibel machen kann, ziehe ich es vor, nicht fortzufahren.

2 „Gefällt mir“

Das, was Sie suchen, ist add_to_serializer. Sie müssen keinen neuen Serializer erstellen.

Vielleicht hilft Ihnen das: Add to serializer only for staff and current user - #7 by paresy

Ah, danke, es sieht so aus, als ob es nur einige Hilfsmethoden definiert, die zurückgeben, ob das Plugin aktiviert ist oder nicht, und den Plugin-Body. Ich denke, ich kann es mit Alba kompatibel machen, lassen Sie mich es versuchen.

Entschuldigung. Ich habe mir das ursprüngliche Plugin nicht genau genug angesehen. Ich glaube, mein Hinweis ist vielleicht nicht so hilfreich, wie ich dachte.

Wenn Sie etwas zu bestehenden Serializern hinzufügen (z. B. ein Feld zum Post-Serializer), dann habe ich geholfen. Wenn Sie eine neue Route hinzufügen müssen, die ihre eigenen Informationen zurückgibt, dann müssen Sie etwas anderes tun.