Sugerencia: Migración de ActiveModelSerializers a Alba

Hola, acabo de notar que Discourse usa una versión antigua de ActiveModelSerializer.
Fue lanzado hace cinco años y no creo que sea bueno.

Parece que está planeado bifurcar AMS, pero hay una mejor solución.
Mi sugerencia aquí es migrar de AMS a Alba, un serializador JSON que creé y mantengo. Aunque Alba no es 100% compatible con AMS, la API que ofrece es similar a AMS y aproximadamente 10 veces más rápida que la última versión de AMS.

Si los mantenedores están de acuerdo con la migración, enviaré una PR.

4 Me gusta

¿Podrías cambiar 2 o 3 puntos finales a él en la PR y ejecutar algunas pruebas de rendimiento? Eso podría ayudarnos a evaluarlo :smiley:

4 Me gusta

Sí, como mencionó Falco, debemos preocuparnos por dos áreas aquí:

  1. Compatibilidad de complementos: muchos complementos extienden los serializadores, nos gustaría minimizar los cambios disruptivos.

  2. Rendimiento: el cambio de serializadores debe respaldarse con datos concretos.

Recomiendo examinar algunos de los serializadores involucrados en las páginas de temas o listas de temas y utilizarlos como campo de pruebas:

Luego, utilice las cifras “antes” y “después” de discoruse bench. Le dará una idea muy precisa del progreso realizado.

La cantidad de interrupción del ecosistema que estamos dispuestos a aceptar depende en gran medida de la mejora del rendimiento aquí.

6 Me gusta

Disculpa la demora en responder.

Creo que esto supone mejoras de rendimiento, así que ejecutaré un script de benchmark.

No sabía nada sobre los plugins de serializador. Encontré un ejemplo de plugins que personalizan el serializador.

Aquí, el método include_votes? parece un método mágico de AMS, ya que no encuentro dónde se utiliza en el código base. Creo que necesitamos alguna migración en tales casos, ya que Alba no admite este comportamiento.

Mantener la compatibilidad debe ser importante, así que si no puedo hacer que Alba sea compatible con los plugins existentes, prefiero no seguir adelante.

2 Me gusta

La magia que buscas es add_to_serializer. No necesitas crear un nuevo serializador.

Quizás esto te ayude: Add to serializer only for staff and current user - #7 by paresy

Ah, gracias, parece que solo define algunos métodos auxiliares que devuelven si el plugin está habilitado o no y el cuerpo del plugin. Creo que puedo hacerlo compatible con Alba, déjame intentarlo.

Lo siento. No me fijé bien en el plugin original. Creo que mi sugerencia podría no ser tan útil como pensaba.

Si lo que estás haciendo es añadir algo a los serializadores existentes (como añadir un campo al serializador de posts), entonces te he ayudado. Si necesitas añadir una nueva ruta que devuelva su propia información, entonces necesitarás hacer otra cosa.