On Sat, 2021-02-20 at 17:49 +0100, David Brown wrote:
> 
> 
> On 20/02/2021 16:46, David Malcolm wrote:
> > On Sat, 2021-02-20 at 15:25 +0100, David Brown wrote:
> 
> 
> > 
> > I think we need to think about both of these use-cases e.g. as we
> > implement our diagnostics, and that we should mention this
> > distinction
> > in our UX guidelines...
> > 
> > > Is it possible to distinguish these uses, and then have different
> > > default flags?  Perhaps something as simple as looking at the
> > > name
> > > used
> > > to call the compiler - "cc" or "gcc" ?
> > > 
> > 
> > ...but I'm wary of having an actual distinction between them in the
> > code; it seems like a way to complicate things and lead to "weird"
> > build failures.
> > 
> 
> Fair enough.

[...snip...]

How about the following addition to the User Experience Guidelines?

gcc/ChangeLog:
        * doc/ux.texi: Add subsection contrasting interactive versus
        batch usage of GCC.
---
 gcc/doc/ux.texi | 25 +++++++++++++++++++++++++
 1 file changed, 25 insertions(+)

diff --git a/gcc/doc/ux.texi b/gcc/doc/ux.texi
index fdba5da1598..28d5994d10f 100644
--- a/gcc/doc/ux.texi
+++ b/gcc/doc/ux.texi
@@ -86,6 +86,31 @@ information to allow the user to make an informed choice 
about whether
 they should care (and how to fix it), but a balance must be drawn against
 overloading the user with irrelevant data.
 
+@subsection Sometimes the user didn't write the code
+
+GCC is typically used in two different ways:
+
+@itemize @bullet
+@item
+Semi-interactive usage: GCC is used as a development tool when the user
+is writing code, as the ``compile'' part of the ``edit-compile-debug''
+cycle.  The user is actively hacking on the code themself (perhaps a
+project they wrote, or someone else's), where they just made a change
+to the code and want to see what happens, and to be warned about
+mistakes.
+
+@item
+Batch rebuilds: where the user is recompiling one or more existing
+packages, and GCC is a detail that's being invoked by various build
+scripts.  Examples include a user trying to bring up an operating system
+consisting of hundreds of packages on a new CPU architecture, where the
+packages were written by many different people, or simply rebuilding
+packages after a dependency changed, where the user is hoping
+``nothing breaks'', since they are unfamiliar with the code.
+@end itemize
+
+Keep both of these styles of usage in mind when implementing diagnostics.
+
 @subsection Precision of Wording
 
 Provide the user with details that allow them to identify what the
-- 
2.26.2

Reply via email to