Now that we have considered
how users can help each other avoid bugs in GUI applications, we would look to think about ways in which users can have more control in software development.
One idea is to develop a system to help millions of users collaboratively build and evolve a specification for a GUI app.
For example, how would a million users specify a paragraph formatting
dialog box?
How would a million users specify the behavior of the cursor in a
scientific word processor with math formulas, tables, etc.?
Some issues:
- users may not agree; CollaborativeRank might help
- users can build the GUI (a partial spec) using something like Qt
designer and their combined work can then be used by the developers
directly; issue: how to automatically combine their suggestions into a
coherent GUI?
- non-standard GUI elements (e.g., the main view of a scientific word
processor), the specification by users can't be used directly; but it
probably should be visual and should be something that can be mixed
with a running GUI app (e.g., as a visual placeholder for something
that is not implemented yet)
Some connections to existing ideas:
- extreme programming: we could have users develop higher level visual test cases (e.g., before/after images of cursor movement); developers could then compete to satisfy those test cases; How do you automate a visual test case? Is machine learning helpful?
- intentional programming: like IP, we can focus features; application boundaries may be nebulous; perhaps we could have automated forking and merging of applications
- wikis: this is sort of like a wiki with visual placeholders for non-implemented parts
Is any of this novel?