In todays applications we display errors in message boxes, in log files or stderr (For non-programmers stderr is output specifically for errors).
The problem is, every program does this differently and the data is rarely collected optimally. This solution is to create a library with standard interface
that developers can use to report an error. The library would be provided a series of error definitions and these are callable from within software. (Similar to exceptions but outside the language) The library would then put error into a standardized format, database or log file.
The library should provide some message boxes for common error conditions. These should be as helpful as possible for users and may even include network fetched data. Perhaps a collapsed message box and an expansion button which would show a help page or a post from the community who fixed it.
The idea is to take the power of only letting developers solving the problem by letting others hep too.
A operating system service or user space program can then collect all errors and then
a) submit them to a central server so that errors can be solved by a community
b) send them to back to the software's defined developer infrastructure, using some kind of error protocol which could even submit to a bug tracker server side.
My theory is that statistical methods could be used to determine if a system setting, hardware or other running program is causing the error or conflict.
This idea describes a library but supporting programs could be made. The 'Problem solver' could be similar to Microsoft's Problems interface which is incomplete, it could provide solutions *when* an error occurs. For example,
a) cannot find file or program, other users found it here or obtained it here
b) file locked or access denied, display access permissions or what program has locked file
c) you did sequence of UI actions (menu->action->action) and caused crash 0xFFFF whatever, the community would then mark this as a 'bug' and you'd be told that.