Ravioli Wiki

Consider that each page in Wiki is just like a class in an object-oriented language like Smalltalk or Java or C++. In fact, it's very close to being isomorphic.

Consider good class design:

Consider good page design:

Now, many operations are preserved under isomorphism such as RefactorMercilessly. In fact, you can apply RefactoringPatterns to Wiki pages. Consider RefactorByExtractingToPage as a transformation of ExtractClass.

RavioliWiki is an isomorphism of RavioliCode. Too many purposeless, unfocused pages with no real purpose in the system and a very low fan-in and fan-out rate.

See also AvoidClutterLinks.

So, now that Wiki has tens of thousands of pages, how many people would say it isn't RavioliWiki? Just look at how many pages have "see alsos" to pages with the exact same topic, but with another name. -- SunirShah

I think that RavioliPages? are great. It gives people a place to scrape irrelevant stuff into. If the pages aren't interesting they'll scroll off of RecentChanges soon enough and if they are, they'll have a place of their own where they can grow. In the meantime it's easier to keep the original page short and to the point because people will be a lot more comfortable moving stuff than they will be deleting it (although there is a place for that too). -- PhilGoodwin

Being short and focused is great, but you quickly build duplications as points are repeated over and over, page after page. It is already far outside the ability of a HumbleRefactorer, apparently, to link seamlessly with RefactoringWikiPages which would have served better than the newer RefactorFasterDeleteMore.

You know, if you ExtractClass this frequently and this mindlessly, your code will become insane. And I thought I was bad with a median class length of 200 lines (between .h and .cpp files) and five methods. Of course, I take great steps to ensure there are no redundant classes when I'm done. nudge, nudge, wink, wink, say no more.

I am not convinced the analogy RavioliCode / RavioliWiki works too well. Wiki now has > 7500 pages, and I don't think it would feel significantly more (or less) overwhelming if it had twice (or half) as many. 7500 classes... that would be a different story. --FalkBruegmann

I agree with Phil and Falk that the analogy here is really faulty. EwDijkstra complained that programming language was the wrong term, because they just ain't like human languages. I wouldn't go all the way with him on related issues but I think this is a very relevant point here.

I believe that one of the reasons that we have SoManyMoreWritersThanRefactorers? is that some of the original material on refactoring turned out to be unrealistic about how difficult it is to refactor Wiki really well, especially with the current level of new visitors and changes. We need more realistic guidelines. I put up RefactorFasterDeleteMore to make a small contribution to developing consensus on that more realistic picture. I'm also very grateful now for WikiRefactoringStories.

In Smalltalk I believe in short methods and, to a lesser extext, in short classes. On Wiki I would like much less text within (possibly) more pages. I believe that, as a general rule, short pages with the right links are more readable than longer ones. Our aim is to ImproveSignalAndReadability.


The dichotomy between natural languages and formal languages is only in their levels of adaptability and systematic constraints. However, the information capability is almost equivalent between the two (but not.. see GoedelsIncompletenessTheorem). I think it's one of the great failures in the pedagogy of computer science that students aren't subjected to a year's worth of InformationTheory. The page::object analogy is still sound because they both are information containers with names, roles, foci and responsibilities organized in a similar graph. Hence, they are still analogous, approaching isomorphic.

Without wishing to cast aspersions on anyone else's isomorphisms, I believe that we need to consider some other points if we are wondering why Wiki as a whole isn't as well factored as, say, the famous Smalltalk/Gemstone code at Chrysler. We could look at the following set of pages

Anyone want to vote on which has been the most significant? --RichardDrake

Umm... could it be that coding is about producing a program that has to run, has to be focused on meeting set requirements with a maximum of clarity and minimum of duplication and unnecessary effort, while Wiki is a mirror reflecting the opinions and thoughts of a wide community of different people?

I don't want to live in someone else's poem. -- JamesNoble

See also ProgrammingIsLife, QualityWithoutaName
CategoryWiki CategoryWikiMaintenance

View edit of August 13, 2005 or FindPage with title or text search