How to Move Forward
We each wrote down an idea on a notecard. Then we all stood up in an unorganized mass. On a signal we started a series of exchanges: Each of us would mill around and periodically exchange the card in our hands with the one in someone else's. After a while, a second signal would sound and we would pair up with a nearby person. Each pair would have a total of 10 points to allocate between the two cards we held. We did this for about 20 minutes, then we totalled the scores. For much of the rest of the day we discussed the results. Here are the ideas and the scores.
- Describe state spaces using the ultimate declarative language where everything is a relation. Next model its dynamics in terms of games. And forget about syntactic ugliness. Down with orthography! [20]
- Stop looking at software as goods - remove the commercial aspect as much as possible. [18]
- Develop a theory of programming languages from the standpoint of "language": i.e. philosophy, poetry, etc. (complementary to, rather than contradictory to, mathematical grammar and other established theories about programming languages). [18]
- Pinpoint some wrong uses of metaphors in computer science and/or programming. (E.g. "engineering," "desktop," "object," "component," etc.) [17]
- We should design an international "ACM - program - committee - history - of - CS - exam." Members of program committees should pass this test. [16]
- Work on a new computing model: for example, cellular homeostatic interactions through vocabulary exchange and merging. [16]
- Tinkerable software: Do what is required so that there are television programs, etc, that are analogous to home improvement shows, so that there are neighborhood experts in changing and improving programs like there are for houses, cars, etc. [16]
- I want to create a foundation for growing software, and allowing software to self-evolve, coupled with a system of ethical husbandry to guide the efforts of software horticulturists. [16]
- Figure out how to create software (that is, make computers do what we want) without writing programs. [16]
- People like SmallTalk and Lisp, but dislike Java - what's missing? Should joy be part of programming? How hard are new ideas to learn? [15]
- Find ways to empower all people affected by our systems:
- do no harm
- opt in
- software guild meme [15]
- What are the systemic forces affecting computing, be they Darwinian, commodification, or whatever? [15]
- We should articulate aesthetic principles that can be used to guide system structure in such a way as to liberate builders from the need to hyper-rationally consider many small elements. [14]
- Envision future worldwide software architecture as a system of adapting and collaborating agents. (= complex adaptive systems, Santa Fe Institute) [14]
- Build a model of cellular communication that continues to work when the author/machine is unplugged. Model at least 200 channels. [13]
- Zap bad user experiences. [11]
- What would a visual modelling tool (or programming language) look like that helps us deal with the multidimensional nature of software? [11]
- Use functional programming constructs that increase correctness. [11]
- Stop pretending, lying. Start telling the truth about what is possible, working. [10]
- Create a manifesto or code to encourage change, and marginalize failed concepts in an effort to create a new and evolving approach. [10]
- Program a real example of a piece of software that exemplifies all that we would like to see.[9]