Brian Foote is a researcher and software developer who has been involved with objects for over twenty years. His principal research interests revolve around how designing and building systems out of objects differs from building traditional systems. In particular, he is interested in how reusable objects and frameworks evolve within and beyond the systems that spawn them. His interest in how to best build, document, disseminate, and use these reusable artifacts is the basis of his interest in patterns.
He has written a number of patterns, some of which have found their way into the PLoPD volumes.
All of his patterns (and all of his other writings, for that matter) can be found on his homepage
He has a weblog too (who doesn't) at
Brian finds that the aggressive disregard for originality exhibited by the patterns community stands in refreshing contrast to the customary attitude of the NoveltyVampires
of academe [http://www.laputan.org/plop/vigor.html
] (if you click this link, don't miss the "diamond-in-the-rough" link). Like sampling in the popular music world, patterns can be seen as a quintessentially '90's intellectual movement that tolerates and even encourages the reexamination and even the plunder, with fresh ears, of existing material.
As one of the charter members of RalphJohnson
's fabled Smalltalk group at the University of Illinois, Brian was involved with some of the earliest work on domain specific object-oriented frameworks. You can track down and download some of his work on frameworks (as well as on other topics) through his homepage.
His interest in the relationship between objects and programming languages led to a deep involvement with object-oriented reflection. The ActiveObjectModel
discussion gives him hope that academia and industry might be finally be finding common ground in this area.
He first heard about patterns at the same OOPSLA '87 workshop (hosted by NormKerth
) that KenAuer
describes. His notes show that someone by the name of WardCunningham
described patterns as "asserting proven solutions", and contain an early version of the panes pattern language which I noted looked like a rule tree.
They also briefly note that Cunningham claimed that "outstanding success came from people with good domain knowledge and the freedom to explore", and that "reusable abstractions alone do not guarentee continued progress". They also note that Ward told the best software horror story I'd heard for a while at the time, but I didn't write down what it was.
On that same page of notes, there is a list of six reusable artifacts that had been developed at Xerox in Smalltalk, and presented at one of the tutorials: Rovers, which map Collections (now Iterators, I'd say), Mimics (which have the same signature as the object they are masquerading as), Enapsulators (which protect other objects), Teammates (which they called frameworks elements that worked together to solve a problem, as in MVC), Manager (a single object that manages a set of other objects), and Architect (which did who knows what). I was struck that this seemed right: you'd design and build reusable classes, give 'em evocative names, and spread them around. I'd love to get a set of the actual tutorial notes if anyone still has them. Who gave it? (I didn't attend the tutorial, I just snuck a look at the notes.) What's a good story without a little foreshadowing?
I ran into WardCunningham
the next year at OOPSLA '88, at another of NormKerth
's workshops. I recall sitting in back after watching one of the SADT/process carpetbaggers who'd descended on the then frontier of O-O tell people that if they built software the same old way, but with object oriented languages, they'd get reuse and productivity for free. I was appalled at the positive reception they received. As the room emptied Ward and Kent (who, like myself, were iconclasts Norm had put on the program to stir things up) started talking about this architect named Christopher Alexander who wrote this book that described how to build your own house the way you wanted by going down this list of "patterns", and making choices as you went. Wouldn't it be great to have something like this for software, said they.
I wish I could say the scales fell from my eyes at that moment, but the truth is that my belief at the time was that reusable abstractions <were> the road to continued progress. This belief led me to frameworks, reflection, and finally ... patterns.
Indeed, I still think that there is an intimate connection between our reusable abstractions, the medium we express them in, and the reusable artifacts that embody them. In hindsight these viewpoints look like two sides of the same coin.
I didn't think about patterns again until 1992 or 1993 when RalphJohnson
started circulating early drafts of the GangOfFour
book, as well as excerpts from Alexander's Books, APatternLanguage, and TheTimelessWayOfBuilding
, around our research group.
That is not to say that I didn't think about "patterns" (with a small-p). I think we all have a head full of them. Everyday programming was full of "tricks", "stunts", "hacks" and "moves" that you picked up from reading and writing code, talking about programming, and even standing in the shower. The medium we had then in which to express these notions was the code itself.
After years of reading technical prose and computer science literature, I recall being stuck by the romance and aesthetic passion in Alexander's writing. His notion of the noble architect-builders, who lived in what they'd built, and strove to make them places worth living resonated with me.
I was a little astonished when I first saw the GangOfFour
patterns. Not only was there nothing new there, but they had at least three references for each pattern to prove it. Surely such surveys of existing practice were not going to satisfy the NoveltyVampires
As it turned out, the GangOfFour
had slashed the Gordian Knot of Novelty. The power of having a collective vocabulary for design ideas cannot be denied. Expertise that we used to have to pan for a nugget at a time is now available by the bucketload. The GangOfFour
demonstrated that there is a huge audience for talking about how to make programs better.
Brian was conference chair of the PLoP '96 Conference. His most recent work on patterns, with JosephYoder
, is the provocative but nonetheless amusing BigBallOfMud
His PLoP '94 submission, with Bill Opdyke, began the process of cataloging what we think is a nascent pattern language comprised of patterns we've discerned in how objects evolve and change. Unlike some Wiki denizens, I'm a fervent believer in reuse. I believe reusable objects emerge from an iterative evolutionary process, that unfolds at all levels, and at different rates, within and beyond applications. I've stuck some URLs in the EntropyReduction
topic that discuss these ideas.
Like most researchers, he likes nothing more than to correspond with others about topics in which he is interested.
Brian is one of two dozen or so people who've attended every OOPSLA conference since 1986. Another is RalphJohnson