Okay, so you are out Pattern Mining. Where is a good place to start looking? Christopher Alexander tells us (in The Timeless Way Of Building) to look for things with that Quality Without A Name.
What software systems do we know of that approach
A Quality Without A Name? Those listed as a Software Masterpiece.
I think that the following attributes will be addressed well in a quality software system, regardless of whether it's a code library, toolkit or end-user product.
Usability - Is the system something that people enjoy using? Would they miss it if it was no longer available?
Readability - Is the intent of the system clear and well presented?
Configurability - Can the user adapt the system to his or her needs?
Profoundness - Does the system strike the user as special or unique, but at the same time, insightful and correct? For this I would prefer the term 'Resonance':
at all sorts of levels it rings true. Why not brilliance? After all, the most commonly used sense in this context is sight. (Damn audio thinkers...) :)
Note that in The Nature Of Order, written more than twenty years after The Timeless Way Of Building, Christopher Alexander gives a name to what he used to call "the quality without a name": wholeness.
Why are you calling this "Quality without a Name"?, shouldn't just Quality be a good name?
Because it's a quote from Christopher Alexander; see top of page.
I really think this is too metaphorical to be actually useful. Maybe if somebody explained what this quality is and how it is used giving an example, it would be easier to grasp.
Not useful? We're doing important work here! We're evolving a mythos for mythless programmers.
As to explaining QWAN, it can't be done: It's the work of the ineffable Goddess Qwan Yin! -- Paul Taney
Richard Gabriel's book Patterns Of Software (and Christopher Alexander himself, who wrote the preface) wrote much about this, for instance p. 140 "In Zen And The Art Of Motorcycle Maintenance (Robert Pirsig 1972?) we learn that there is a point you reach in tightening a nut, where you know that to tighten just a little more might strip the thread, but to leave it slightly looser would risk having the hut coming off from vibration. If you've worked with your hands a lot, you know what this means, but the advice itself is meaningless. There is a zen to writing, and, like ordinary zen, its simply stated truths are meaningless unless you already understand them -- and often it takes years to do that.''
So any explanation of such things can only work if it reminds you of your own experience on such a thing. If you have none, no explanation can communicate it to you.
Nor is this some kind of airy-fairy mysticism; it is utterly commonplace. For instance, no amount of explaining of the topics of either sex or love will make either understood to someone who hasn't experienced them.
I'd like to see the word "invisibility" in such lists, used in this special sense. Think of modern plumbing systems in comparison with Roman aqueducts. Modern plumbing is higher quality because its buried in the woodwork and never noticed; invisible...until it breaks. Conversely the Romans built their plumbing to be noticed; to impress. Thus the (a?) difference between immature and mature technology is that mature ones tend to disappear... in the above sense. -- Brad Cox
for more on invisibility in maturing technology, see world.std.com
No, this is not what Quality Withouta Name means. QWAN is the quality of living things. Living things are never readable, and often not usable for most of the world. They are configurable and profound. I think something like Emacs exhibits the QWAN more than something like CM-FORTH. CM-FORTH was designed by an expert; Emacs was designed by a community that shared a pattern language, and it evolved over decades, constantly changing and being reinvented. QWAN comes from piecemeal growth, not master plans. QWAN is primarily about life, and only secondarily about beauty.
There are two things that I've found supremely valuable in the patterns movement: the sharing of knowledge and experience, and the freedom to discuss software in these terms: "life", "beauty".
A recruiter asked me once what was the achievement of which I had been most proud, and I gave some terrible waffly answer about some project or other. But thinking about it afterwards, the answer really is: when I received some appraisal feedback from a colleague I greatly respected stating that "Keith has a highly developed sense of technical aesthetics". That may or may not be true, but that someone thinks so is nice, and that I was then working in an environment where people felt able to express themselves that way was even better. -- Keith Braithwaite
I believe there is a big difference between Quality Withouta Name and Quality. Items in the real world exhibit Quality Withouta Name. They have a use or an esthetic that communicates itself to people. Once the person realizes the Quality and names it, it becomes a Quality Witha Name. This Quality Witha Name represents the Quality Withouta Name, but is not the same.
For instance, suppose I had an idea. I think it's a good idea, so I communicate it to you. However, I use words to communicate that idea. You read the words and from it formulate a new idea. That idea is very similar to mine, but it is different. I have no way of communicating the exact idea to you. In fact, there may be no way for you to even represent the exact idea in your brain.
In the same way, an item (or a piece of code) can have a Quality Withouta Name. It may communicate an analogous Quality in our head, but that Quality is a reproduction, not the source.
So why is this important? When we are Pattern Mining, we are searching for a Quality Withouta Name. That is, a Quality that is intrinsic to the code, or problem, or whatever. We are not searching for a solution. A solution is an artifact of our own brain and thus is not directly related to the real life situation. We want to create our patterns from the source, not a copy.
Talking about beauty. I like to think that software that has the Quality Withouta Name is beautiful in some sense. The user interface certainly can be beautiful but for the architect and the programmer it is more the logical structures and the interaction of objects or modules that has beauty.
QWAN? I'm sorry but this doesn't make sense. I think Alexander is trying to invoke an instinctive aesthetic, which is reasonable, but I think one needs to be careful about making this an objective aesthetic, which I don't believe in. -- Richard Henderson
What's public so far about Alexander's soon (as in Real Soon Now) to be published work TheNature Of Order suggests that he is now, and maybe always was, very definitely talking about a objective, quantifiable even, notion of Quality.
Do you know of software that meets this criteria?
(Yes, this will be a very subjective collection of lists!)
-- Todd Coram
Don Knuth's TeX typesetting system (as presented in Tex The Program and The Tex Book): Initially confusing, but many of those who stick it out, it is an elegant and powerful tool. It can be frustrating at times, but I keep coming back for more. The source code is also a gold mine for programming techniques and algorithms.
Smalltalk-80: Inspiring. Elegant. Thought-provoking.
CM-FORTH. Chuck Moore's FORTH for his Novix FORTH microprocessor: Tight. Very small. Clean. Fast.
-- Todd Coram
I'm not so sure about TeX - I used TeX heavily for quite a while, wrote macro packages for plain TeX and La Tex, etc. The variable and rich lexical syntax gets in the way of using the system, in my opinion. La Tex tries to overcome some of this, so that you can focus on what you are doing, but still at times you must delve into the lower levels.
This may not go over well, but I believe that a certain subset of Adobe's current products have "the quality". Illustrator 8.0 and Photo Shop 5.0 are so well thought out in their user interaction, so orthogonal, that it just feels good to sit down and use them.
Unfortunately, Frame Maker 5.5 doesn't fit into this yet; it has much more of the feel of TeX, with many ways of doing things; you must master a great deal of arcane knowledge to use the system.
-- Garth Dickie
Years back, James Gosling's Unix Emacs clone hit these buttons for me. (Emacs Has Qwan) These days, exploration of Smalltalk-80 and its descendants continues to reveal deep, pleasing profundities.
-- Dave Smith
A couple of years ago, I created a small framework in C++. For over 2 months, I iterated over the design and code, laboriously trying to achieve some quality that "felt right." I succeeded, for the most part, and then had to put it all aside. Then I discovered the GoF book and software patterns in general.
I know that code has traces of the Quality in there somewhere. I think it's time to go dig them out. I'll probably find already documented patterns. If I find other solutions that bring about the "peace of resolution of the forces" involved, I'll document them here on Wiki in hopes that out there somewhere, someone else has done the same thing. And a pattern will be born.
(It seems to me that the Quality Withouta Name and Pattern Mining are very closely related!)
-- David Hooker
One of the early influences that took me into patterns was Tom Burrows' work on a proprietary language called Astra.
Astra was a reaction to the reductionism of Smalltalk and C++, and more generally to the reductionist nature of John Von Neumann's computational model. The language was influenced by diverse drivers:
Our customers needed ultra-reliable, fault-tolerant, software that could be updated in real time
Many of the people in the organization followed tenets of Zen Buddhism, and in particular, the Madhyamika school
Graphical interfaces were an important novelty of that era
In the spirit of the Zen thread, nature has no parts, and any attempt to parallel the beauty one finds in nature must break with the reductionism of objects.
Therefore, Astra has many first-class constructs (that are vaguely like constraints in a constraint language) to tie objects together.
It must be able to evolve; therefore, Astra is completely reflective;
It must be efficient and reliable and have natural relationships between cause and effects, instead of programming by side effects; hence, it shed the von Neumann computational model and used demand-driven data flow. Astra expressed data flow semantics in an applicative (rather than pure functional) style; however, like Smalltalk, the methods were polymorphic.
The computational cycles were triggered by external real-time events so, unlike most data flow languages of academic interest, Astra could handle real-time applications.
Because there were no side effects (no program state that didn't correspond to some world state or the need to remember an event), piecemeal growth was easy, even when the program was running.
You could literally program in patterns: constructs which, graphically, were a weaving of objects and the intelligent pipes that connected them.
Astra had a graphical form called GIL, which I still use today. One can write beautiful, minimalist programs in GIL and Astra - not minimalist in the sense of a cryptic APL program, but minimalist in the sense of capturing the structure of nature in ways that no single other programming language could.
I have never seen this beauty paralleled in any Smalltalk or C++ program I've since seen.
-- Jim Coplien
I would like to nominate Eclipse Ide. Deep and complex without being scary. Simple enough to let you get started quickly. Sometimes surprisingly smart ("How did it know that's what I was going to do?"). After two years working with it every day, still makes me jump up and run to my colleagues to show them a feature I found. Lets me change my way of working and take my productivity to the next level, yet it is not getting in the way of just doing my job.
I consider the fact that we are using Eclipse in our current project a perk.
I believe Quality Withouta Name is expressed in Buddhism by the image of A finger pointing at the moon.
The finger is not the moon; the map is not the territory; the signifier is not the signified... Once you get it the question becomes "So what?" (And the answer becomes Stop talking about it. Look! (psychology.wikia.com ))
QWAN is so trod upon by Western philosophers that these meta-metaphors just get quirkier 'n quirkier! Robert Pirsig's image of properly lubricating his motorcycle is used to good effect in ISBN0060958324. Derrida, going beyond Freud, uses the image of the (yin) veil which he terms hymen that can never be penetrated by the inseminating (yang) signifier or spur. This disconnect, says Derrida, forces a loss of meaning, which he terms dissemination. Strictly animal-realm metaphors... (Ah, ma petit tertre de joie...). Derrida said a lot of things.
More at Deconstruct Almost Anything
I find the Indo-Tibetan cosmology, The Abhidharma, rather more penetrating. I especially benefit from The Vidyadhara Chogyam Trungpa Rinpoche, eg. Glimpses of Abhidharma ISBN1-57062-764-9
And check Changes of Mind by Jenny Wade, ISBN0-7914-2849-4
The late computer scientist Alan Perlis warned his readers to ask periodically
Toward what end are you coding? "but do not ask it too often lest you pass up the fun of programming for the constipation of bittersweet philosophy." -- Paul Taney
I think John Vlissides' Unidraw Framework has always had that Quality Withouta Name. A beautiful framework of extendable, yet concrete design patterns that echoed the good ideas of Mac Draw, Mac App, and probably Hot Draw as well (I'm not sure of the relative chronology). A comprehensive and efficient set of classes that did something useful from the start (a vector-based drawing editor), while ready to be evolved into new things. An interesting contrast to the immutable software technology of TeX that still earned him a thesis out of Don Knuth's department.
I nominate Python Language. It took me a couple of tries to get over the bad bit of the learning curve, but then I gained control of the language and started writing code for the pleasure of it.
It's a long time since I've been motivated by the beauty of the code rather than the necessity of the functionality. -- John Farrell
Without a doubt, the J programming language (Jay Language) from Ken Iverson and Rodger Hui. It has an elegance, completeness, rigor, and power that is simply unmatched by any other programming language. -- Jim Russell
I've always found Macintosh Common Lisp to be an incredible development environment. The elegance of Common Lisp combined with a fast and groovy environment. I still haven't found the equal in oh-so-many-modern-IDEs. Problem is I cannot do good OO in CLOS. -- Jon Tirsen
Are you sure you are describing software with the Quality Withouta Name, or software with Elegant Simplicity?
Anyone attempting to discuss Quality Withouta Name really ought to have in their background a good reading of Zen And The Art Of Motorcycle Maintenance, and Lila An Inquiry Into Morals by Robert Pirsig. They are, first and foremost, about Quality. Or check out The Metaphysics Of Quality and Alexander Pirsig Connection pages for quick overviews.
Hmmm. Those both turned into active links, which I suppose I shouldn't find surprising. I'm glad to see someone else (Cameron Smith) thought of the link to Quality before I did. -- Peter Hansen
On the topic of Books About Quan, I'd like to recommend the Carlos Castaneda series "The Teachings of Don Juan". Most specifically when Don Juan talks about a nebulous phenomenon he calls seeing which he describes as a sense only in the loosest terminology (Kind Of Like This But Not?). When seeing one experiences a knowingness'' that can't be explained.
Or of course, one should be able to draw the analogy between Qwan and The Tao, that is of course if you could capture The Tao and get a dry-erase marker on it... -- Isaac Freeman
I think Wiki qualifies. Ward provided the usability and configurability, the rest of us are attempting to provide the readable profundities.
I don't know about software, but as a model of computation, I find that the Actors Model has this quality (in contrast to, say, the Turing Machine model).
I have only two problems with Quality Withouta Name:
It has a name
It isn't a quality
That it has a name should be obvious: we keep referring to it as "Quality Without a Name". It even has a nickname: QWAN. This is like those Clint Eastwood* movies where his character is "the man with no name" -- that is the character's name: it's even right up there in the credits!
That it isn't a quality is not obvious - it's controversial. One argument (which I happen to believe) is just that it's a substitute for "The Good". That is, Alexander takes statements like "That design is good" and rewrites them as "That design has QWAN".
This would be useful, if good were a quality (like round, or even easy-to-maintain). But 2,500 years of Western philosophy hasn't pinned good down to a quality, and 25 years of Alexander-speak hasn't pinned QWAN down to a quality. It's time to throw in the towel, and admit that an attempt to make the way we talk more useful has instead made it less useful.
(* Please don't Link Pattern his name unless you really think he merits a page on this Wiki.)
-- George Paci
* Profoundness - Does the system strike the user as special or unique, but at the same time,
insightful and correct?
I have never yet come across an ordinary person who considers any piece of software to be Profound. I don't think this is something worth looking for, except when we are looking directly at the internals of some software. It can only really be applied to libraries, toolkits and similar, where software experts get to look at, and perhaps see, some Profoundness.
I would suggest that the attribute of "profoundness" be replaced by something else when we are talking about end-user applications. Something that captures that feeling of delight when you "just use" a piece of software without thinking about it, without having to deal with quirky behaviour, baling-wire-and-duct-tape configuration or weird dependencies on obscure data formats. Something that speaks of a simple delight in using the system that quickly becomes taken for granted, so that the software soon becomes an invisible but valued part of the user's routine.
I cannot think of any instance where a non-technical user has expressed feelings like this about any piece of software. I would love it if you have and can mention them here.
-- Mike Morris
That's easy. The Internet. -- Anonymous Donor
The Internet is a piece of software? First I've heard that. Now if you were to claim the first browser or video/audio streaming software . . . . -- Paul Beard
Could you define "software" such that it excludes the internet? Even though I'm typically skeptical of trusting standard non-technical dictionaries' definitions of technical terms, here is Webster's idea of "software":
The programs, routines, and symbolic languages that control the functioning of the hardware and direct its operation.
Sounds like the Internet as a whole would qualify (Anyone have an Oxford English Dictionary?). Although I do question it's ability to fit the definition of Quality above -- Isaac Freeman
I cannot think of any instance where a non-technical user has expressed feelings like this about any piece of software. I would love it if you have and can mention them here.
My experience is almost exclusively with off the shelf ware, but I think of the first time a designer saw Page Maker in the mid-80s or an accountant saw Visi Calc as examples of things an end-user would see as profound. My own experience in editorial and design work informed my impressions of Page Maker as almost magical in how it extended one's abilities and simplified or eliminated pitfalls.
-- Paul Beard
There's talk here of beauty being one aspect of the Quality Withouta Name, but what about joy? I know that I'm on the right trail to uncovering a previously unrecognized pattern when I feel the unique joy that comes from a pattern.
My sense is that there are two kinds of quality talked about by Alexander. On the one hand, the quality without a name, and on the other hand, he wanted to create a vocabulary for patterns and believed that your pattern vocabulary at any one point indicated what kind of designs you would produce. So vocabulary, words, and names are important. One might call this "Quality With A Name" as yang to the yin of "Quality Without a Name."
Robert Pirsig has very similar views - as can be seen elsewhere on this Wiki. He also speaks of naming within a design. And he does so in a very clear, cogent, mathematical and practical way - a design can be divided in any number of ways. There are important lessons for software design here.
But Pirsig also expresses a sense of instantaneous subjective quality in Zen And The Art Of Motorcycle Maintenance. It is similar. Pirsig's "quality without a name" - is experiential and direct. It's existence doesn't rely on the blueprint disappearing in any real sense - but only in the subjective sense of the moment. The wind blows the hum of the engine toward your ear. When you look back, the blueprint can still be there.
-- Rich Katz
Uh, oh. I know we're in trouble when a bunch of pencil-neck geeks start talking about their work in terms of "art" and "esthetics" and such noise. Listen, kids: quality is a measurable characteristic. Phil Crosby defined this for us in 1961 when he came up with the Zero Defects definition of quality. Others have come up with all kinds of other measurement systems, but the theme remains the same: Quality Is Measurable. It's just a matter of defining what are the facets of the thing under examination we want to measure.
Your description the Quality Pattern just reminded me of a book by Trinh Xuan Thuan title "Chaos and Harmony". -- Isaac Freeman
Question: if quality is measurable, do we have a metric for ease of maintenance and enhancement?
Why doesn't anyone mention symmetry? Symmetry is a major metric of elegance in mathematics, physics, and if you look closely, in software. You don't always find perfect symmetry in the real world, but it is hard to comprehend the real world without the concept.
I think folks having trouble pinning down the QWAN are doomed. The Tao Te Ching starts right off in the first chapter:
The Tao that can be followed is not the eternal Tao. The name that can be named is not the eternal name. ...
If QWAN is a Taoist thing and Tao contains truth, then QWAN is perfectly fine when we can't really figure out what it is. IMHO.
Discussing things with my cousin, it occurs to me that this sort of quality is essentially internal self-consistency - not simply logical, but structural and stylistic. How much of a program, or whatever, follows naturally from its other parts. That's why its related to but distinct from things like good, beauty, symmetry, etc. Compare something like running quickly, which is a good thing to have but is not what most people would call this. The name wholeness, which was just mentioned here, I think supports this.
Howdy kids - as much a fan as I am of Chuang Tzu and Derrida and used to be of Robert Pirsig, I have to say that the French "Je ne sais quoi" (I don't know what) is a much more elegant way of conveying this idea than, well, just about anything else. That is, of course, provided one is familiar with the phrase.
... QWAN is the quality of living things. ... -- Keith Braithwaite
I think this is correct. There is nothing mystical about this quality as Alexander describes it. Alexander constantly uses phrases like "system X ... has more life than system Y". This "having life" is a synthesis of beauty and function. The only problem here seems to be that the English language has no good word for it. The words "lively" and "liveliness" could have been candidates, but it seems they do not sound profound enough for Alexander. In German, this problem does not exist; the words "lebendig" and "Lebendigkeit" are exactly to the point. So in German the quality actually has a name. -- Helmut Leitner
See original on c2.com