Estamos en proceso de migrar una gran comunidad en Discourse desde vb3.
Muchos nombres de usuario, alrededor de 1.200, contienen el signo de exclamación “!” y no pude encontrar ninguna opción para volver a habilitarlo.
Ya habilitamos “nombres de usuario unicode” sin éxito.
¿Hay alguna solución lista para este problema?
No tomé la decisión, pero hay muchos sistemas para los que un ! no es un carácter válido para un nombre de usuario. Es muy probable que si intentaras permitirlo en un plugin (o en una bifurcación, lo cual sería una muy, muy mala idea si alguna vez quieres actualizar Discourse de nuevo), será difícil.
El ! tiene significados especiales en varios contextos y sospecho que si simplemente cambias el validador de nombres de usuario, muchas otras cosas se romperán.
Entiendo. Sin embargo, es algo que debería abordarse. Todas las demás soluciones de BB permiten ese carácter en el nombre de usuario y es común en las comunidades de juegos. El nombre de usuario y el ID de usuario deben mantenerse como entidades separadas para no tener tales limitaciones. Tenemos alrededor de 95.000 miembros y contactar a 1.200 de ellos para que cambien su nombre de usuario va a ser una verdadera PITA (Pain In The Ass). ¡Gracias por la ayuda de todos modos!
He realizado docenas, quizás más de cien importaciones. Presto mucha atención a las personas que preguntan sobre importaciones aquí. Esta es la primera vez que recuerdo que alguien se queja de ello.
Puedes decirle a todos que prueben tanto su nombre de usuario como su dirección de correo electrónico (a muchos de ellos tampoco les resultará familiar). Es muy probable que tengas otros nombres de usuario que hayan cambiado.
Esto te dará todos los nombres de usuario que cambiaron:
Probablemente será mucho más que solo signos de exclamación. Parece una limitación extraña, ya que puedes usar esos caracteres en cualquier otro lugar.
Cabe señalar que los nombres y los nombres de usuario no son lo mismo. Los nombres de usuario se utilizan en las rutas de las URL, por ejemplo:
https://meta.discourse.org/u/pfaffman/summary
Un signo de exclamación no es un carácter válido en una URL, mientras que caracteres como ?\u0026 tienen propósitos especiales en la estructura de la URL y, por lo tanto, tampoco pueden formar parte de un nombre de usuario. Esto no es específico de Discourse, cualquier sistema que utilice el nombre de usuario en la estructura de la URL tiene que respetarlo.
Un nombre de usuario no puede contener un signo de exclamación, pero el nombre sí puede, lo que puedes priorizar en la interfaz de usuario.
Además de esto, los nombres de usuario están pensados para usarse en @menciones, por lo que se espera que los nombres de usuario sean sencillos y fáciles de escribir; es por eso que solo permitimos caracteres ASCII por defecto (aunque eso se puede ampliar a Unicode con la configuración unicode_usernames, aunque todavía sin puntuación).
Tenga en cuenta que ese script de migración utiliza la clase base del script de migración no masiva, que hace esto con cada registro de usuario generado por el método que enlazó:
que elimina cualquier carácter no válido de los nombres de usuario.
Hay muchos lugares en el código que asumen ciertas cosas sobre los nombres de usuario (análisis de @menciones, cambio de nombres de usuario, etc.), que es la razón por la que aplicamos estas restricciones.
Como dice Stephen, los nombres de usuario no son el lugar para mostrar la personalidad del usuario; los campos de nombre y distintivo sí lo son
Todavía hay bastantes casos marginales que son difíciles de gestionar de esta manera.
Los nombres no son únicos, si damos prioridad en el diseño al nombre, puedes imaginar cómo iría en un tablón de mensajes lleno de adolescentes inmaduros que juegan y trolean todo el día
Está perfectamente bien decir que podría ser un problema de baja prioridad, aun así, es algo que claramente podría beneficiarse de algo de reflexión y trabajo y, sin duda, no es una “característica” o algo que dé una ventaja sobre poder elegir un nombre único sin fuertes limitaciones como cualquier otro software de tablón de anuncios que ha existido.
¿Te importaría compartir algunos de los proyectos de CMS de código abierto que has utilizado? Podemos echarles un vistazo y ver cómo manejan los permalinks y las referencias de usuario, aprender de sus esfuerzos.
Aunque… me pregunto si los Sistemas de Gestión de Contenidos (CMS) son exactamente el mismo grupo que los Foros Comunitarios.
Además, la mención de caracteres especiales que se codifican no es algo exclusivo de CMS, es simplemente codificación estándar: Percent-encoding - Glossary | MDN
vBulletin 3 no tiene esas características y vBulletin 5… No tengo idea si siquiera tiene la característica, ya que es un software que claramente se ha quedado atrás en términos de características modernas.
Cuando mencionas a alguien en Discourse, aparece una sugerencia automática. No hay necesidad de preocuparse por tener que escribir el apodo completo.
Editar: Finalmente, significa que la sugerencia decodifique la lista de nombres de usuario antes de sugerirla si realmente lo deseas, o codifique la entrada (el usuario que escribe la parcial) para que pueda buscar el nombre de usuario apropiadamente.
Quiero decir, podemos discutir sobre cuánto trabajo y esfuerzo requiere, pero no sobre si es posible.
En cualquier caso, no sé si es solo que los medios son malos para transmitir el estado de ánimo, pero todas estas respuestas recientes se sintieron un tanto “hostiles”. La gente viene a meta.discourse para pedir ayuda y sugerir cosas para mejorar. Si no estás de acuerdo, puedes simplemente ignorar el hilo y seguir adelante.
Además, olvidé añadir. Si hay PRs abiertos para Discourse, puedo intentar trabajar en ello en un fork y abrir un PR. Es cierto que no soy un desarrollador de Ruby, pero tengo varios años de experiencia como ingeniero de software / ingeniero de plataformas. Estaré encantado de intentar contribuir
Solo actualizo para el futuro, ! no es algo prohibido en las URLs como se mencionó anteriormente. No sé de dónde provino esta idea.
Sin embargo, Ruby parece usar ? y ! en sus funciones, lo cual es algo extraño para ser honesto (al menos en mis más de 20 años de ingeniería de software), pero cada lenguaje tiene sus propias cosas
Lo que podría indicar por qué ! está prohibido. Tendré que investigar más a fondo el código fuente de Discourse para entender si este fue un problema específico que no se pudo resolver o simplemente algo que se prohibió de forma exagerada para evitar posibles problemas entre nombres de usuario y Ruby volviéndose loco en algunos casos extremos.
Lamento revivir este hilo antiguo, pero tengo el mismo problema y supongo que |, [ y ] también son caracteres ilegales para los nombres de usuario y no se pueden habilitar de alguna manera.
Estoy a punto de migrar un antiguo foro de juegos de phpBB3 a Discourse y muchos nombres de usuario son como Clan|Nickname o [Clan]Nickname.
Editaría el script para buscar esos y reemplazarlos con un carácter legal como _ o -. Creo que simplemente los eliminará. Puedes mirar el código del nombre de usuario sugerido.
Cuando migré mi primer foro a Discourse, noté que los caracteres ilegales, comenzando con espacios vacíos, pero también otros, fueron reemplazados por _. Pero en este foro, el carácter ilegal más común era el espacio vacío y no muy a menudo, por lo que no era el problema que ahora podría ser. De todos modos, esto no puede ser un impedimento. Quizás ingrese el nombre de usuario antiguo en el campo de nombre. Ya veremos, cuando resuelva el otro problema de que mi contenedor de importación no se compila…