The Feyerabend Project

In 1975, Berkeley philosopher Paul Feyerabend wrote a book called "Against Method," in which he said: of the most striking features of recent discussions in the history and philosophy of science is the realization that events and developments ... occurred only because some thinkers either decided not to be bound by certain ‘obvious’ methodological rules, or because they unwittingly broke them.
This liberal practice, I repeat, is not just a fact of the history of science. It is both reasonable and absolutely necessary for the growth of knowledge. More specifically, one can show the following: given any rule, however ‘fundamental’ or ‘necessary’ for science, there are always circumstances when it is advisable not only to ignore the rule, but to adopt its opposite.

In "The Invisible Computer," Donald Norman wrote, "...the current paradigm is so thoroughly established that the only way to change is to start over again."

The Feyerabend Project is my attempt to repair the arena of software development and practice. In the Spring of 2000, the Hillside Group invited its members to create a fictional event and invitation to it as a way to gather ideas for what Hillside should pursue in the future. My event and invitation was to the kick-off for the Feyerabend Project.

To begin thinking about how such a reinvention can take place, I have put together some small workshops: at ChiliPLoP, at EuroPLoP, at OOPSLA, and in Santa Fe.

Results for the Santa Fe workshop will be available someday. Here is the invitation to that workshop.

Wolfgang De Meuter, Pascal Costanza, Martine Devos, and Dave Thomas have put together a workshop at ECOOP 2002 in Málaga, Spain, June 10-14, 2002. People who wished to participate were directed to this call for position papers.

Pascal Costanza, Wolfgang De Meuter, Martine Devos, and Dave Thomas have put together a workshop at ETAPS03 in Warsaw, Poland, April 12 - 13, 2003.People who wished to participate were directed to this call for position papers.

Richard Gabriel and Joseph Bergin put together a Feyerabend-related workshop at OOPSLA 2002. Here is the call for participation.

Richard Gabriel, Kirstie Bellman, and Janet Holmes have put together a Second Extravagaria Workshop at OOPSLA 2004. Here is the call for participation.

Richard Gabriel and John Gribble have put together a Third Extravagaria Workshop at OOPSLA 2005. Here is the call for participation.

Richard Gabriel, Linda Northrop, Doug Schmidt, and Kevin Sullivan have put together a Ultra-Large-Scale Systems Workshop at OOPSLA 2006. Here is the call for participation.

Richard Gabriel and Kevin Sullivan have put together a Fourth Extravagaria Workshop at OOPSLA 2008. Here is the call for participation.

The ChiliPLoP, EuroPLoP. and OOPSLA workshops have already taken place and their results are available: ChiliPloP results, EuroPLoP results, OOPSLA results. See if you’d like to come to one in the future.

I’ve put together some steps you can take to prepare generally for one of these workshops. The Call for Participation for OOPSLA 2001 is helpful as well.

The paper "The Design of Parallel Programming Languages" might be illustrative of the kinds of thinking that could go into the Feyerabend Project.

In 1985, Allen Newell wrote this following about programming languages and psychology:

Millions for compilers but hardly a penny for understanding human programming language use. Now, programming languages are obviously symmetrical, the computer on one side, the programmer on the other. In an appropriate science of computer languages, one would expect that half the effort would be on the computer side, understanding how to translate the languages into executable form, and half on the human side, understanding how to design languages that are easy or productive to use.... The human and computer parts of programming languages have developed in radical asymmetry.

[Newell, A. and S. K. Card (1985). "The Prospects for Psychological Science in Human-Computer Interaction." Human-Computer Interaction. 1(3): 209-242].

In 1981, John Backus wrote the following:

While it is perhaps natural and inevitable that languages like Fortran and its successors should have developed out of the concept of the von Neumann computer as they did, the fact that such languages have dominated our thinking for twenty years is unfortunate. It is unfortunate because their long-standing familiarity will make it hard for us to understand and adopt new programming styles which one day will offer far greater intellectual and computational power.

In 1999, Gerald Jay Sussman wrote the following:

Computer Science is in deep trouble. Structured design is a failure. Systems, as currently engineered, are brittle and fragile. They cannot be easily adapted to new situations. Small changes in requirements entail large changes in the structure and configuration. Small errors in the programs that prescribe the behavior of the system can lead to large errors in the desired behavior. Indeed, current computational systems are unreasonably dependent on the correctness of the implementation, and they cannot be easily modified to account for errors in the design, errors in the specifications, or the inevitable evolution of the requirements for which the design was commissioned. (Just imagine what happens if you cut a random wire in your computer!) This problem is structural. This is not a complexity problem. It will not be solved by some form of modularity. We need new ideas. We need a new set of engineering principles that can be applied to effectively build flexible, robust, evolvable, and efficient systems.
In the design of any significant system there are many implementation plans proposed for every component at every level of detail. However, in the system that is finally delivered this diversity of plans is lost and usually only one unified plan is adopted and implemented. As in an ecological system, the loss of diversity in the traditional engineering process has serious consequences for robustness.
This fragility and inflexibility must not be allowed to continue. The systems of the future must be both flexible and reliable. They must be tolerant of bugs and must be adaptable to new conditions. To advance beyond the existing problems we must change, in a fundamental way, the nature of the language we use to describe computational systems. We must develop languages that prescribe the computational system as cooperating combinations of redundant processes.

There were some active Wikis on the old server. Try looking here.