Discussion of PersonalCategories
Eventually, a similiar kind of metadata could be used to implement most of the ViewPoint ideas. (Instead of categories, the metadata would contain the name of an alternate page to display.)
After a bit more thought, PersonalCategories could be a nice intermediate step between wikis and the full ViewPoint idea. Many of the issues are the same as they would be in ViewPoint--in a sense PersonalCategories is a MultipleView system for metadata.
Benefits and likely problems:
Ideas to discuss include:
- Filtering vs. reducing/removing.
- Unpopular categories.
- Unfair categories.
I have an idea I'm going to call an InterestMap...
It struck me that there's another way of implementing this. Instead of storing category information with each page, why not store page information with each category? I.e., each category is stored as an array of page names.
Categories may thus even be stored next to pages in the PageDatabase. You might name them something like <tt>@CategoryPolitics</tt> or <tt>@JohnDoe:Favorites</tt> so they can be distinguished from ordinary pages.
An advantage of this is that all the wonderful rules of editing and versioning and expiration that apply to pages now automatically apply to category lists, for no extra charge.
A second advantage is that it might be extensible for other purposes. For example, someone wants to be able to write Greek text just by typing in the English transliteration. One possibility under this scheme would be for her to create the "category" <tt>@JaneDoe:logos</tt> to contain the Greek text for some word she wants to write, and then transclude that in a page using notation like <tt>##JaneDoe:logos##</tt> or somesuch. You could also perhaps transclude a category list (e.g., <tt>##JohnDoe:Favorites##</tt>) to display a RecentChanges listing for that category's pages.
Just tossing this idea out for criticism and refinement. -- anon.
I think there are (at least) two separate ideas here. The first idea (a list of pages for each category) is planned as an optimization. While pages have categories, one will often want a list of all the pages containing a certain category (like all the pages marked JohnDoe=Favorites). Such a list could be done by searching each page for the category, but it would be slow.
The current UseModWiki plan for categories (probably in 0.92) is to have a cached category->pages mapping. (This mapping will be stored separately from the page data, but can be reconstructed from the category information in each page.)
The second idea is quite similar to the SectionedPage ideas. Sections are already versioned and expired in the test 0.90 code. Editing will usually be different for each kind of section. For instance, most category editing will (probably, not finally determined) be done using two small text-regions--one for adding categories and one for removing them. This allows many people to edit categories without significant conflicts (redundant adds or removes are ignored, other changes are done in the order submitted).
For wiki-specific needs (like a greek text section), one could use a section which has some special knowledge of the text to be processed. For instance, a greek-entry section could allow multiple methods of text entry, and might even translate between different methods. See SectionedPage for some of the old transclusion ideas too. I may be more open to "transclusion" of sections within the current page, as that does not violate my "1 page per normal read request" development policy. --CliffordAdams
I think for my wiki I'm going to try thinking through an implementation that is based on categories-as-pages instead of categories-in-sections. [Later] See what became of the idea at Tavi:TaviCategories.
As to a Greek text section, I merely used that as a concrete example. It's probably a poor example for transclusion. ;-) My wiki actually supports Greek (or any Unicode) characters everywhere. Explanation: a request was made to devise some way to type Latin characters and have Greek characters appear. Typing (Latin) text to transclude a page that contained Greek symbols was my inspiration, and could be used in this case for Greek words that were oft-repeated.