Di solito, quando qualcuno chiede di allontanarsi da qualcosa che è in uso diffuso, ben testato, verificato su molte piattaforme, è un'espressione esteriore di un problema di fondo noto come "odore di codice" e l'accumulo incontrollato di "debito tecnico" o "codice debito". L'archivio GNU ha accumulato una quantità abbastanza grande di debito di codice nel corso degli anni e quando una base di codice non è adeguatamente mantenuta può raggiungere un punto di rottura (codice legacy e persino codice legacy morboso).
Normalmente, si effettuerebbe un processo di reingegnerizzazione e refactoring a intervalli regolari per tenerlo sotto controllo. Quindi, la vera domanda che viene posta qui è se è stata sviluppata una versione refactored di coreutils. Questo, ovviamente, include la possibilità di una sostituzione totale (come un caso speciale) - proprio come Wayland è stato proposto per X ... molti dei suoi sviluppatori escono direttamente dal campo X.
Il mio consiglio è di entrare e refactoring coreutils. Qualcuno deve farlo. E chiunque solleva il problema della sostituzione dei coreutils: la tua idea, il tuo progetto.
A tal fine, approfitta di qualsiasi automazione tu possa trovare: motori di refactoring, come cscout, o tutto ciò che applica metodi di analisi / sintesi più avanzati (ad esempio reticoli concettuali formali). Ma un'analisi approfondita è ancora un'area relativamente nuova e aperta della ricerca attiva - e attraversa l'intelligenza artificiale. (Un ingegnere del software robot.)
La maggior parte dei programmi di utilità dovrebbe già disporre di suite di test, pertanto la convalida può essere effettuata con una modifica progressiva graduale + passaggi di test di regressione automatizzati; che può andare piuttosto veloce (ad es. 10 o più aggiornamenti di revisione / giorno). Una complicazione a questo processo si verifica in presenza di dipendenze hardware o software di basso livello in qualsiasi punto della suite di software; poiché ciò comporta la convalida su più piattaforme. Non so molto di quello che c'è nei coreutils; dovrebbe esserci un qualche tipo di separazione dagli strati hardware o software di basso livello (ad es. il numero di posti in cui coreutils sa quale tipodel filesystem su cui è installato dovrebbe essere minimo o, meglio, zero.) Gli emulatori e le macchine virtuali, utilizzati per eseguire test multipiattaforma, hanno dei limiti. Ad esempio, Mac OS X è specificamente progettato in modo da ostacolare la capacità di emularlo o VM.