Note: An alternative skin, TW4MW (work in progress), is available from the user preferences.

Dev talk:TiddlyWeb

TiddlyWiki Community Wiki

Jump to: navigation, search

(This page used to contain a bunch of notes that have seen either been implemented or dropped in favor of real TiddlyWeb implementation. See elsewhere for more information. The below is left for future reference.)

Contents

[edit] Synthesis From Some Meetings

This is some synthesis from yesterday's meeting. Please review for accuracy. The above meeting notes still need attention.

After hours of discussion, a model distills out.

  • The unique URI for a tiddler includes a bag name.

> /bags/{bag name}/tiddlers/{tiddler names}

  • We don't, at this time, need a UUID.
  • A bag has an owner, who describes (and is perhaps described by) a security policy which is an attribute on the bag. The security policy defines access controls and the like. How these policies are written, stored and used is yet to be determined.
  • A TiddlyWiki, here on known as a workspace, is populated by a recipe, which is a list of one or more {bag + filter}.

[edit] From Scratch Workspace

Johnny goes to some website and wants to create a workspace.

That workspace is represented by a recipe, which is generated by a to be determined UI. That UI requires the ability to enumerate and search bags, select bags, and define filters to apply to selected bags. The resulting collection of recipe rows is the recipe and may be saved for later reuse.

Once the recipe exists, the workspace can be torn off into the browser. Tiddlers are included, either whole or with enough information to allow lazy loading. Plugins that are to be activated may not be lazy loaded but instead must be present at time of tear off.

Once operational, the workspace behaves in the usual tiddly way until editing happens:

  • When saving an existing tiddler, the tiddler goes back in its original bag, with conflict handling. If it can't be saved to its old home, it may optionally be saved to the workspaces default bag.
  • If an edit creates a link to a tiddler not in this workspace (at the time of tearoff) the system must go to the server to find if it exists now. The recipe is used to direct a look up. The last line of the recipe is checked first, then the previous line, repeating until found or never found.
  • If the workspace is offline, the same reconciliation process must be performed at sync time. New content goes in the default bag.
  • When a tiddler is saved, this is done as a PUT to the bag. Usual content-type is JSON.
  • Searching: local first, then follow the reverse recipe. Indexing content is yet to be figured out.

[edit] Starting From Blank Tiddlywiki

Johnny has an empty.html with enough backstage to access a bag machine. Now he wants to gather content and plugins from multiple servers. Locally a recipe is built up and fulfilled. This recipe is available for later save to a server.

If plugins are being sucked in, they are not yet executed. The page must be refreshed from network or disk in order for plugins to work.

Once the recipe is satisfactory it may optionally be saved to a server or the HTML file saved to disk.

A recipe can contain bags from multiple servers.

[edit] Additional Notes

The normal use case is that some users wants to compose a worksapce from some famous bags that they have heard about. Create a workspace is a matter of selecting those bags, not worrying about filters and the like. A recipe may sometime just point to one bag.

Who owns and utilizes a recipe? Is it one user? Is it likely then that there will be lots of duplicate recipes?

To facilitate finding bags, they should have a description.

It might be interesting to make a wikrad that works on tiddly content.

[edit] Open Questions

[TBD]

[edit] RFE

[edit] "CordonBlue"

FWIW this is what I suggested as "CordonBlue" in the google group: "A repository where TWs could be built from scratch using the groups aggregated resources."
"For e.g. [having saved TWs that are populated by Plugins I want; the editor on Giffmex.org/WebViewtwExample is a case in point I upload the empty.html's that I've collected.
Those go into a directory and get ginsu'd.
A menu is generated.
I select from that collection and the chimera is produced [using Cook in the background?] for me to download."
The point being, to provide a click/save interface.

Personal tools