Before starting the backup utilities, its best to review any outstanding issues.
1. Tables
In the Swing client, tables can not display links. OK, what happens if you reference a topic? I think it should be a valid reference, and clickable.
So tables should be displayed using HTML.
2. Citations
Citations are inverted references. I want to work on them only after dealing with the above tables issue, but as they involve an inverted index they should be delt with before doing the database utilities.
Citations are needed for completness--they are an important part of a Wiki and should be completed before we say "its beta now".
3. Curly Brace Notation
As not all topic names need be proper wiki names, we need a way to identify references to topics within text when dealing with such a non-standard name. So we put {curly braces} around it. And double curly braces when a proper wiki name is NOT the name of a topic. And \{ and \} notation when the curly braces are simply curly braces.
4. Topic Creation
Lots of considerations here. Do we want to allow a Page to be created in the Ark directly? In a Cabinet? Or only in a Folder? Well, with a moderately deep structure (Ark/Cabinet/Drawer/Folder/Page), we probably don't want to force really deep structures. On the other hand, since documents can be held by topics at all levels, is there any advantage to having anything but Drawers in a Cabinet? Perhaps not, especially if we can move a Drawer, putting it inside another Drawer, and have it automaticly become a Folder.
Another big issue is child vs peer creation. In a directory structure, a create always creates a child. But in a wiki, a create topic always creates another topic (at the same level). But I don't think having createChild and createPeer is the right answer. Instead, lets have createFolder/createPage etc.. So if you are "in" a page and create another page, a peer is created. But if you are in a folder and create a page, it creates a child. Now if you are in a page and create a folder, then it should create a new folder in the same drawer. But if you are in a drawer, you can not create a page (not applicable).
OK then. These are the 4 issues I'd like to resolve before doing the database utilities. Completing them will (in one case) help stabalize the data structures, but mostly bring us ever so much closer to being done with alpha.
Bill