Prima di buttarsi a scrivere righe di codice in un qualsiasi linguaggio credo sarebbe bene pianificare un po' il funzionamento di questa applicazione, magari anche scrivendo degli esempi in forma puramente testuale.
Quel che non mi è chiaro (sarà perché di errori, sul mio Lucid Lynx, praticamente non ne ho mai visti

) è come sarebbe meglio organizzarne il funzionamento.
Nel caso più semplice ci potrebbe essere una lista di messaggi d'errore o problemi e, per ciascuno, informazioni di contesto (tipico di una versione o comune a tutte?), la causa e la soluzione.
Idealmente un database del genere si potrebbe costruire, con molta pazienza, andando a leggersi le discussioni taggate [RISOLTO] nelle board tecniche.
Ci saranno però, immagino, molti casi in cui uno stesso problema o messaggio d'errore può avere cause diverse e quindi anche soluzioni diverse; questi casi non sarebbero inquadrabili in uno schema così semplice, a meno di limitarsi ad elencare tutte le cause lasciando all'utente l'incombenza di capire quale sia quella vera. Per discriminare la causa potrebbe essere necessario fare delle verifiche, dare dei comandi da terminale, e a seconda del risultato procedere in modo diverso...
Per un certo periodo sono andati di moda i
sistemi esperti, strumenti software in grado di gestire conoscenze di questo tipo. Sono stati scritti sistemi esperti per la diagnostica sia medica che industriale; non mi sembra però che nessuno si sia affermato, e non sono a conoscenza di nessun 'generatore di sistemi esperti' free.
Insomma la vedo tutt'altro che semplice. Immagino che tu abbia già raccolto un certo numero di casi, messaggio d'errore o problema/causa/soluzione. Ripeto: prima di scrivere righe di codice, penso sia meglio metterli per iscritto e ragionarci sopra. Come dovrebbero essere presentati? Come si dovrebbe poter effettuare una ricerca?
Un'ulteriore complicazione è costituita dal fatto che ogni nuova versione porta con sé nuovi problemi e (si spera

) ne elimina di vecchi; quindi questo programma dovrebbe essere aggiornato costantemente.
Forse è troppo ambizioso pensare di gestire tutti i possibili messaggi d'errore e può essere conveniente, almeno all'inizio, limitarsi ad un sottoinsieme... che so, problemi all'installazione.