Ward Cunningham

Bill Venners interviewed me at the JAOO 2003 conference in Aarhus, Denmark and published the result in five parts on his artima site.

See also RichardDrakeInterviewsWardCunningham

I've written hundreds of wiki pages. These are some of my favorites ...

I also edit a lot of pages. The single most common edit I do is to place related comments together. The second most common edit is to delete the duplication that becomes obvious once comments are adjacent. This works because I, as editor, can rely on context that wasn't present when the contributions were made. My third most common edit is to remove "protocol words" that may be required in conversation but are not important to the future reader. For example, someone might start a post by explaining that they don't mean to offend. I would remove such an introduction and then edit the remaining comment so that it simply does not offend.

In my first programming job, I worked for DaveDodson at the PurdueComputingCenter. Dave would chuckle when he saw the students poring over their listings oblivious to the little trick that would make their programs trivial. Of course, he had to explain the tricks to someone.

I've used these patterns many times since.

When Wiki was new, I wrote a page about myself that sprawled over half a dozen page names describing various places I've worked. While editors have been kind enough to let those pages persist, authors have been wise enough to not follow that example. I've now brought all that content home:

Over the years I've learned a few things...

Highland High School

I learned to program while in high school in the middle sixties. My buddy JerryDijak? was learning to program in IITRAN using the teletype that had recently been installed in Mr Clark's math room. He explained that you wrote instructions for the computer to follow. Then he showed me the program he was working on. It was mostly incomprehensible, except for the occasional instruction like...

go to town
go to bed
I was fascinated that such instructions might make sense to a computer. I now know that they meant nothing, that Jerry had missed an opportunity to make meaningful labels, and that goto's are bad on principle. Still, I have a certain fondness for goto's since they got me started in computing.

Hi Ward, just wanted to say that it has always amazed me that programmers (and I am one of them), seem to universally condemn GOTO, yet it is in most languages I have used. If it is so horrendous why do we not just remove it from the syntax, or do we still find a guilty pleasure in finding uses for it?

Thanks for these pages; they are a pleasure to read. -- jss

Purdue University

The PDP-9 Room. I joined BillCroft and DaveKruglinski as a regular in the NineRoomAtPurdue. I wrote an animated football game that never quite worked. I felt like I'd been inching that beam along one statement at a time. Bill did an electrical circuit input program -- a diagram editor. He had better abstractions. He'd been studying IvanSutherland.

System Time on the CDC. ... watching the heavies... RichKovaric?, VicAbell?, RossGarmoe?.

Mechanical Engineering's Graphics Lab. ... had eight one hour periods to write a graphic editor ... trouble was a compile took 45 minutes ...

ARPAnet. ... they had a binder back then that listed every host, listed accounts and passwords, and suggested cool things to play with ... HarryChesley made a lot of friends. I remember his super hierarchical chat ... Harry and JimBesemer struggled for a while ProgrammingTheIliacIV.

Network Simulation. ... wrote a 5 page program that exhibited behavior I couldn't understand ... have produced many charts, graphs, reports and animations since ... still can't tell why it does what it does ...


I joined TekLabs out of school. I liked the name. It reminded me of BellLabs.

Tektronix did a lot of early microprocessor work in a system affectionately called a BoardBucket. Hardware guys would whip up all kinds of neat boards. There was even a MicroprocessorFair? where some were shown off.

But the board bucket wasn't going to scale to 16-bit processors. So JohnProvidenza built a few systems for us on the then emerging MultiBus? backplane. They were shared-memory multi-processors. John did excellent work. But a system's only as good as its components...

I wrote the operating system and most of the applications for this system. I was very good at debugging. A few lost souls would try to use an InCircuitEmulator? in this environment. They spent most of their time debugging the ICE. I used a handful of homemade tools...

Some were my own design. Others were by JeffBradford?. All were specially designed to work in the multi-processor environment. They were particularly good for hunting problems that weren't easily identified as hardware or software.

I got tired of working on small machines. I moved into integrated circuit design when that field started showing some respect for software guys. They were at least buying them big computers. I found designing with bare transistors to be much easier than prepackaged ICs. I studied chip architecture. I particularly liked the SystolicPriorityQueue? which I thought of while designing the PictureModelChip?.

I used Smalltalk to build a silicon compiler. I got more points for making something out of Smalltalk than I ever got for making anything out of silicon.

Wyatt Software

I left Tektronix convinced that I knew how to organize large programs as objects. I underestimated how distracting schedule pressure would be. Still, I managed to keep our development flexible enough to respond to unanticipated change. I used a process that we would now call refactoring. Over time I adjusted how we scheduled and explained that schedule to management. Here are a couple of documents written as the impact of what I was doing was starting to emerge in my thoughts.

Cunningham & Cunningham, Inc.

I've founded my own company, http://c2.com, which continues to host this site.

Microsoft and beyond

As of December, 2003, I took a position at Microsoft with the title Architect. I worked with a group I had consulted to for a year while they produced http://msdn.com/patterns. I know that some authors here have no good will for the company. Please remember I remained the same person. I also invited TipsForWardAtMicrosoft.

Are you going to relocate to the Seattle area, or continue living in PortlandOregon? [both -- Ward]

How does this affect future work on Fit, given that MicroSoft won't allow GPL work? [c2 owns fit and will continue to exist -- Ward]


I realized a long term ambition of working closely with BjornFreemanBenson. One cool thing to come out of the collaboration was the testing framework called swim and the documentation built on it called process explorer. We wrote about this for the PacificNorthwestSoftwareQualityConference: http://c2.com/pnsqc2007/paper.pdf.

October, 2005: WardCunninghamLeavingMicrosoft to work with the EclipseFoundation.



May, 2007: Ward becomes CTO of AboutUs

I also passed through a couple companies without staying long enough to learn much or have much impact. That doesn't mean I didn't make some good friends though...

Knowledge Systems

(Ward, I'm taking the liberty of writing this for you. Feel free to edit or change any misconceptions -- KyleBrown) For a very short time, Ward worked with the folks here at KnowledgeSystemsCorporation. In particular, he helped SamAdams, KenAuer and LynnFogwell develop an advanced/rebuilt version of HotDraw called Foundations. Alas, Ward did not stay long here on the east coast, as his beloved Pacific Northwest sang its siren call to him once again.

IBM Consulting Group

See WardAtIbm, a longish page that will require more careful refactoring.

Recent book purchases ...

Hi Ward. I would be honored if you'd drop by at BookShelved sometime - a short perusal of your "recent book purchases" list above convinces me that you'd like the place as well as bring your own special light to it. -- LaurentBossavit

Ward, I've just discovered BookShelved and been very impressed with it. Could I suggest the possibility of it becoming a SisterSite? If it was, I think that a lot of book pages that currently sit a little uncomfortably on Wiki might have a natural home. What do you think? -- EarleMartin.

Seconded. I've wanted this for a while but was afraid to ask. -- JoeWeaver

I agree, but I think it is a perfect medium for all books, including those that are OnTopic here and would provide an excellent taxonomy for some of this site's content. Another step in the refactoring of WikiDom as Pete would say. -- MarkTilley

[Please don't dump any and all wiki pages relating to books on BookShelved. We're building something quite unique (a living discussion) not scavenging content. Thank you.]

How about adding it to SisterSites?

Message from SaraLee: This is such a cool space. Count me in... Thanks. -- SaraLee

I have several patents. The government has put these online ...

I found this in a bio I wrote a few years ago. ...

I'm interested in large scale systems with distributed control. I take my inspiration from economics, politics, language, learning, culture and, of course, life itself. I'm most satisfied when I write software that borrows from such systems. I'm working on a distributed architecture that favors robustness over correctness. If you think you will miss correctness, consider these questions from the fields I mention:

A few elections ago a fellow I knew put up a web site with his own platform as if he were running for president. Of course some of his ideas were outside the reach of the office. But who cares? It was fun. Here is my version. Were I to run for president, this would be my platform.

More platform planks on immigration, environment, etc., to follow. No comments please, run your own campaign. -- WardCunningham

Some people felt compelled to leave comments despite Ward's request. They (the comments, not the people) have been moved to WardsPlanksDiscussion. (Moving someone's text off of their own HomePage, or labelling anything OffTopic on a HomePage, really seems inappropriate, perhaps even rude.) -- DanMuller

Questions for Ward about WikiWiki technical issues

Hi, Ward. Thank you for providing this Wiki! -- AndrewMartin

You're Welcome -- WardCunningham

It took me a while to realize that I had taken classes at PSU from your wife and business partner, KarenCunningham?. Her compiler course was excellent, but I missed out on her Object Oriented Programming class. I'm surprised she doesn't have a page of her own here. -- IanOsgood

You missed a good one. She founded our business teaching that one to corporate clients. And, yes, I too am surprised that she doesn't have a page of her own here. -- WardCunningham

She does now, of a sort: MrsCunninghamSavesTheDay.

See more WikiWikiKudos.

I've just with great interest read your discussion on PhotoWiki at http://www.wiki.org/wiki.cgi?PhotoWiki and had to write one immediately. It's at http://photowiki.ywp.d2g.com and written in my HtagLanguage just as the HtagWiki is. I would love to hear if I got close to the ideas you had about this concept two years ago. I hope you are still interested.

What was the inspiration for the simplified mark-up language that is used in Wiki? In the Python world, there's StructuredText and ReStructuredText that are in the same spirit, and I know that they were not inspired directly by WikiMarkup, but they were influenced by Python's use of meaningful whitespace. Any history pointers for WikiMarkup?

I copied some nroff conventions like preserving blank lines. The rest I made up on the spot. See WikiHistory. -- WardCunningham

Time, a lot of good will, a lot of understanding, a strong will to compromise and to understand the consensus, vigilance, a good strategy and a few deterrents are of essence and ultimately, yes wiki will work for us if we want it to work. But we have to work hard at it! But Wiki fails to work in very few specific problems though.

Hi Ward, I dropped a question on BlubParadox in response to something you said there. I imagine you might not have seen it so I thought I'd let you know here. But if you saw it and just don't feel like answering, that's cool too. -- PeterSeibel

Hi Ward, It would be helpful if the name S_Expressions were allowable/interpreted as a link to a page title; i.e. if "_" counted as a lower case letter. There is some discussion on the page EssExpressions, which no one considers to be a good name for Lisp "S-Expressions", and which someone recently renamed "SymbolicExpressions", but that name means many, many things beyond just Lisp S-Expressions.

And over the years when coding and using CamelCase, I've run across many instances similar to this where an underscore was really the way to go, to separate otherwise adjacent capital letters.

So what do you say, would it harm anything for underscore to count as lower case, thus allowing "S_Expressions"? thanks, -- DougMerritt

I'm the one who changed "EssExpressions" to "SymbolicExpressions". For now, I've reverted them all to "EssExpressions", if for no other reason than to make them consistent with "XmlIsaPoorCopyOfEssExpressions". If wiki is changed to interpret an underscore as a lower case letter, I'll gladly change EssExpressions to S_Expressions. Thanks --

Doug - wouldn't people then start using underscores to separate words? I mean, it would be tempting. Also, aren't WikiWords TheSimplestThingThatCouldPossiblyWork? -- EarleMartin

Good points. As for simplest, sure, things have worked without this change until now. On the other hand, there are these occasional troublesome cases. I have no problem with "CeeLanguage", but "EssExpressions" just doesn't look right, it always looks like a kludged hack workaround. I think it's because it doesn't begin with "S", whereas "CeeLanguage" does begin with "C". There are other cases that don't work well (not that I've kept a list). Is Ses instead of Ess too much of a perversion?

As for misuse of the proposed feature, it would be fairly trivial to limit its use to only the situation where underscore follows a single capital letter, so that e.g. Lisp_Language would fail the rule and not be recognized as a WikiWord, removing the temptation to start using this with abandon. -- DougMerritt

It bugged me when I first started lurking too, but now that I've gotten used to the WikiAlphabet, Ess looks more natural than S_. Besides, you could argue that

  (let ((S_Expressions EssExpressions))
(read-page S_Expressions)
(edit-page S_Expressions))
always looks like a kludged hack workaround, but thousands of SmugLispWeenies still deal. ;) -- JonathanTang

When did you first start lurking, anyway? Well, if there's only a couple of us that dislike the form "EssExpressions", then I suppose it's a losing battle (but so far only Jonathan has explicitly given a thumbs-down to my idea). I am actually surprised you say "Ess looks more natural", though. -- DougMerritt

Hrmm. I believe I found it through a comp.object post, which means during my summer job after freshman year. So summer 2002. I think my first edits were late last spring or early last summer, then I forgot about it for most of the semester. And I've found a general rule of syntax is that whatever you're most familiar with looks most natural. I see EssExpressions and EssAndKayCombinators and XmlIsaPoorCopyOfEssExpressions often enough that they're reasonably familiar, but I've never seen S_Expressions before. If it was S-expressions, though... -- JonathanTang

I think I'm beginning to grok that this will never happen, regardless of reasoning one way or the other, because Wiki is heavily oriented towards DoTheSimplestThingThatCouldPossiblyWork, regardless of whether it is imperfect or inconvenient or whatever. I'm not sure I entirely agree with that philosophy, but Wiki has proven that it is a workable way to go at some times in some circumstances. -- DougMerritt

Ward, a big ThankYou is in order. I think recent events here have been a real test of your wiki philosophies, and you have the patience of Job for dealing with it as you have. Until I saw WikiWikiSystemNotice, I've been half expected to see a notice one day that you'd either closed up the Wiki shop or else frozen it a la WhyClublet. -- TimLesher

WikiModerationWithPasswords / WikiModerationWithoutPasswords? -- PeterMerel


Clicking on http:quickDiff?WikiHelpDesk currently produces the message

Binary files /tmp/d20436.old and /tmp/d20436.new differ

Someone from Brazil had edited it to add a message to the bottom, and in the process garbage binary characters were added throughout. This gave diff indigestion. I cleaned it up, but diff still complains because the previous version has the garbage characters. -- DougMerritt

Ward, you said above "I intend to repair the translator for historical purposes only." However, you never did, and, in fact, you haven't changed Wiki in years except occasionally to add a feature. Is that your policy? To change nothing, even things that don't work properly?

Just to let you know, the link to the patterns list archive at http://c2.com/ppr/letters/ is now dead. -- EarleMartin

Copied from another page discussing edit wars etc:

This wiki is a perfect example of how not to administer a wiki.

For your goals, perhaps. For Ward's goals, this may be the perfect way to do it. Who knows? He certainly could do any kind of manual or automatic intervention he pleases. Since he mostly doesn't, you shouldn't be so sure you can guess what he is really up to.

Originally, he participated himself. Now he barely does. His old friends (first the patterns community, later XP folks) are long gone; the current crowd (like me) are basically squatters. The topical direction of the wiki is all over the map. There are any number of possible goals he has these days that might be quite different than what you'd guess.

For instance, maybe it's a long-running science experiment, and it would invalidate the results to do things differently prior to a pre-designated end. Who knows?

For clues, see NobleExperiment and BalancingReadersWritersAndEditors.

(I am of course thinking of Isaac Asimov's short story "The Jokester", where it was discovered that the existence of humor was purely an experiment imposed on humans by aliens - with a chilling conclusion to the experiment. ISBN 038541627X )

Some hours after posting that here, wiki had one of its rare outages and was down for something like 11 hours. I kept hearing Twilight Zone music...

Ward is to be among the "world-class" InvitedSpeakers? at OOPSLA 2004! His topic: "Objects, Patterns, Wiki and XP: All SystemsOfNames?also describes some "ArtfullyIncompleteSpecifications"

For more detail, see OopslaOhFour.

Ward gave a great keynote at OOPSLA 2004: WardsOopslaKeynote.

Ward, ThankYou for NewRecentChanges. It's a real help.

No comments please, run your own campaign? Like, that request held up for about 30 nanoseconds! :-)

I was just looking for more info on Wiki engine... and I wound up facing this mugshot of a guy w/ great but lunatic platform... too bad the election is over!! -- bp

VisualTour appears to be broken again, Dec 17, 2004. -- ElizabethWiethoff

Ward, thanks for fixing one the most useful features (serious!) - RandomPages. Was it broken because of the CodeWord? -- AalbertTorsius

See also:

Quoting from WikiDownload:

"The software that runs this wiki is not available (...) The only person who can tell you why it isn't available is its creator, WardCunningham."

Okay... why not? -- AnonymousDonor

Because he sells an improved version (QuickiWiki) with his book TheWikiWay. -- AnonymousAnswerer?

At least as likely is that it's too much trouble for Ward to package up the sprawling, constantly-changing code that runs this site in a way anyone else could install and use. -- AnonymousResponder?

Ward, perhaps you've seen this already: http://www.google.com/googleblog/2005/01/preventing-comment-spam.html. It could be done without destroying the GoogleLovesWiki property too: just add rel="nofollow" to outgoing links and keep it off internal page-to-page links. Though Sunir has an interesting argument against on MeatballWiki at NoFollow. -- JonathanTang

Ward DeleteWhenRead

I was using http://www.usemod.com/cgi-bin/mb.pl?WikiWikiWeb page as a means to discuss with others who are concerned with the future of wiki, while C2 is locked out from edits. A week later there have not been much activity on that page.

Some locked out people have started to use http://www.usemod.com/cgi-bin/mb.pl?ShortMessagesWikiWikiWeb for key requests, etc. Do you have another edit key that can be passed out by existing key holders?

Meanwhile if you can make sandbox exempt from your edit lock out scheme then new users can still experiment with concept of wiki. Also consider a note on FrontPage and WelcomeVisitors to inform occasional visitors of temporary changes, not many people know about WikiWikiSystemNotice (I first learned about it in 8 months or so earlier) -- DavidLiu

Is the OrphanPage WikiWikiPlans still pertinent? Asked a day earlier by

Ward please consider means to reclaim the GoogleLovesWiki reputation. I was looking for EDGE (GPRS) material and can no longer rely on GoogleSearch on C2 site to locate such information. This loss could contribute to excessive fragmentation of material in the wiki.

I would also like to have AutoPcn? permitted to be run again, if the original owner is willing to operate it. It would be good to have a watchlist similar to WikiPedia in action.

-- DavidLiu

Only thing I would add is to make the country have a WikiConstitution? editable by all with associated changes becoming laws effective immediately. I would also mandate all religions have WikiBibles?.

Hi Ward,

The conference planning wiki for the upcoming RecentChangesCamp in Portland is now up at http://wiki.recentchangescamp.org/.

Please feel warmly welcomed to contact me with any questions or suggestions: 503.641.6894

-- BrandonCsSanders

How do you correctly pronounce Cunningham in your name? Is "h" pronounced as in /cunning-ham/ or not as in /cunning-&m/ ? Or both allowable? (Sorry for my ignorance.)

A very nice article about Ward was recently published in the Oregonian ("The Web's Wizard of Working Together"):

In this article, Ward was described as "Old Growth in the Silicon Forest", a term that all his friends enjoyed.

Ward's etude for becoming a great programmer, WriteSmallButUsefulProgramsEveryDay. -- JuneKim

[See: WardCunninghamLeavingMicrosoft]

Ward - I'm a wiki/blog/RSS geek, and have implemented a company-wide pedia-like wiki at Intel with great success. People love it, and it's quickly supplanting the more complex and clunky tools for collaboration. I'm also a podcaster/videoblogger, both personally (http://www.tinyscreenfuls.com) and at Intel. Would you be interested in coming in to Intel to talk about wikis, open source, or another topic of your choosing? I was thrilled to learn that the inventor of the wiki lives almost literally in my backyard, and I'd love to meet you, and start some conversation at Intel.

You can contact me at jabancroft@gmail.com or 503.810.5365. I figured it was apropos to contact you via your wiki. :-) -- JoshBancroft

29 Nov 2006 Hi Ward

At work we're running a really old version of DevWiki. I was wondering how difficult it is to migrate from this to your latest version (supplied with the book if I understand it correctly)?

The truth is that the existing version works for us but would work so much better if we could manage versions and create some pages as Read-Only.

Thanks for the years of useful Wikiing we've had.


FYI Ward responds on this page extremely rarely (approximately never), although he sometimes responds to email. He's a busy guy, what can I say.

The wiki supplied with the book is the latest available, but is by no means the current running version, which is not available for a variety of reasons. I believe the book's wiki is considered interesting if you plan to hack the code, otherwise an actively supported wiki code base is probably preferable.

For a starting point on which wikis to consider using, see ChoosingaWiki - but be aware that such discussions are not particularly kept up to date; there are a truly bewildering number of wiki flavors these days.

I have only just found out that Mr. Cunningham has joined AboutUs. It is a terrible shame that a man with such ingenuity has turned his back on real Wiki development and joined an organisation which could simply be described as a 'Web Scraper' (see Wikipedia for the definition). They are not a real Wiki as their contents are built from the automated harvesting of other peoples hard work.

It is true that I work for a living and now work for AboutUs. Further comments on AboutUs policy should be directed to that site or the customer support they provide. -- WardCunningham

WardOne - the conference for those of you with a Ward Number equal to 1


Ward, how does it feel to have the word "wiki" in the organization that may just trigger WW3?


EditText of this page (last edited October 9, 2014) or FindPage with title or text search

Fit   Meatball   Why   Wikibase