Por lo general, cuando alguien pide alejarse de algo que está en uso generalizado, bien probado y verificado en muchas plataformas, es una expresión externa de un problema subyacente conocido como "olor a código" y la acumulación incontrolada de "deuda técnica" o "código deuda". El archivo GNU había acumulado una gran cantidad de deuda de código a lo largo de los años, y cuando una base de código no se mantiene adecuadamente puede llegar a un punto de ruptura (código heredado e incluso código heredado mórbido).
Normalmente, uno llevaría a cabo un proceso de reingeniería y refactorización a intervalos para mantener esto bajo control. Entonces, la verdadera pregunta que se plantea aquí es si se ha desarrollado una versión refactorizada de coreutils. Esto, por supuesto, incluye la posibilidad de un reemplazo absoluto (como un caso especial), al igual que Wayland se propone para X ... muchos de sus desarrolladores salen directamente del campamento X.
Mi sugerencia es entrar y refactorizar coreutils. Alguien tiene que hacerlo. Y quien plantea el problema de reemplazar coreutils: su idea, su proyecto.
Para este fin, aproveche cualquier automatización que pueda encontrar: refactorizar motores, como cscout, o cualquier cosa que aplique métodos de análisis / síntesis más avanzados (por ejemplo, redes conceptuales formales). Pero el análisis profundo sigue siendo un área relativamente nueva y abierta de investigación activa, y se cruza con la Inteligencia Artificial. (Un ingeniero de software de robot).
La mayoría de las utilidades ya deberían tener conjuntos de pruebas en su lugar, por lo que la validación se puede hacer con un cambio progresivo gradual + pasos de prueba de regresión automatizados; que puede ir bastante rápido (por ejemplo, 10 o más actualizaciones de revisión / día). Una complicación de este proceso ocurre si hay dependencias de hardware o software de bajo nivel en cualquier parte del paquete de software; ya que eso implica validación en múltiples plataformas. No sé mucho de eso hay en coreutils; debe haber algún tipo de separación entre el hardware o las capas de software de bajo nivel (por ejemplo, el número de lugares donde coreutils sabe qué tipodel sistema de archivos en el que se encuentra debe ser mínimo o, mejor, cero.) Los emuladores y las máquinas virtuales, que se utilizan para realizar pruebas multiplataforma, tienen limitaciones. Por ejemplo, Mac OS X está diseñado específicamente para obstruir la capacidad de emularlo o VM.