PEG fenpdf_v1_spec_1--tjl: FenPDF v1 first specification

Author: Tuomas J. Lukka
Date-Created:2003-07-28
Last-Modified:2003-08-13
Revision: 1.14
Status: Incomplete
Stakeholders:benja, mudyc, humppake
Scope:Major
Type:Policy

We need a common vision for what FenPDF 1.0 will look like. Currently there are lots of good ideas, but several people pulling in slightly different directions.

Everything in this PEG is very much under discussion - if you see something you don't like, say it

Issues

Introduction

This is a PEG that's different from most - it changes the whole perspective. Instead of looking outwards and pushing the envelope, this PEG tries for the first time to actually contain a complete working system.

This PEG will select what goes in and what does not for FenPDF 1.0.

Not having something in this feature set does certainly not mean that it's abandoned or that it's a bad idea: it just means that we will not include that functionality into FenPDF 1.0 even if it is implemented, in order to keep things simple or for some other reason.

FenPDF 1.0 is kind of a "director's cut" (a term Ted sometimes used), and it's expected that there will be parallel versions, with different names and identities that do almost the same thing but differently. These are good for experiments and competition is healthy -- the same components can be assembled differently by different people.

This spec is extremely conservative as to which features are taken in. We need a working baseline 1.0 that remains the same and functional. We need to get using is asap. The policy is that we take in exactly what has to be there for a working FenPDF. Including TREETIME or something like it is because all points of the system must remain reachable.

This is the first spec PEG - once accepted, the specification here will be moved to the main docs/ directory and be amended only through future PEGs.

Note that evolution of the FenPDF PEG is not the only way to add new features and e.g. canvas / document types. FenPDF is only the first applitude we will try to settle. There will be others (fencode, fenwrite, ... ?) which will operate within the same graph.

Implementation

The FenPDF 1.0 client shall be implemented in a new file, org/fenfire/bin/fenpdf10.py. This means that buoying is still free ground for experiments.

It is really strict that this new demo shall never refer, directly or indirectly, to any lava code.

This means that before 1.0 release, all code in lava that is needed has to be PEGged and accepted.

Structure

In a sense, this the most important part of this PEG: this part specifies the structure that will be used within our research group when test-using fenpdf. No other RDF nodes will be allowed in the common data base, until the next version of FenPDF (1.1?), or v1.0 of some other applitude is defined.

Everyone may use their own user interfaces, but the shared structure is set in stone here.

RDF

The structure behind FenPDF consists of the RDF structure in CANVAS2D, FF, RDF (type), and STRUCTLINK.

As long as FenPDF is the only applitude used, all other RDF words are either randomly generated urn-5 words or literals.

This means that the structure is:

  • Canvases containing nodes at specific locations
  • directional links between nodes
  • contents for the nodes

Xanalogical

As this is FenPDF, version 1.0 will support only text and page spans. Content links will not be supported, only transclusions. For text spans, URN5 text spans will be used - storing the keystrokes in their own blocks is an extra complication for now.

User interface

While the Structure is an important issue, the user interface is the most difficult one. There are several possible directions and we need to select one for FenPDF 1.0 --- one that we will provide as a backwards-compatibility option in later versions of FenPDF if it is seen to be good.

Requirements

  • Need to be able to easily get whole PDF zoomed, without bg, easily movable

  • Easily get 2-view mode for linking

  • should be possible to figure out without manual

  • easy to insert new PDFs - error handling?

  • buoys carefully tuned: no clutter, easy to understand and control

    • debug mode: show where buoy locations come from!
  • easy switch between fullscreen and windowed mode - window size taken into account naturally

Foci

Two foci, shown on top of each other.

Buoy placement

There are several different kinds of buoys in this system:

Canvas-Canvas

These are directed and can occur on either side. The buoy should show some context but not too much to avoid going to too small zoom.

These are shown for structlinks and nothing else.

Canvas-PDF Transclusion
Always to the right. Max. 20 pages of the whole document are shown.
PDF-Canvas Transclusion
Always to the left Here, enough context needs to be shown since the transclusion is just the same as the anchor.

Treetime interface

Show small buoy-like things at very edge of screen horizontally for next and previous canvas.

Bindings

Left mouse button:

click
go to. If clicked on a text node in the focused view2d, add an insertion cursor.
click + drag on focused view2d
pan. If on node with insertion cursor, move the node
click + drag on a selection in focused view2d (PDF only)
drag into other view (Canvas) for creating transclusion
shift + click + drag on focused view2d

select

On PDF view, select rectangle

On canvas view, select part of text

ctrl + click + drag
move nodes and transclusions

Right mouse button:

click + drag on focused view2d
adjust zoom. Up = zoom out, down = zoom in.
click
context menu

middle mouse button:

click + drag anywhere
move view separator up / down
click on focused view2d
X11 paste to insertion cursor

Keys: insert text and move insertion cursor. If no insertion cursor, make new node on last-clicked / moved view.

This state could be shown by, e.g., crosshairs.

Context Menus

On struct-connected buoys: "Unlink this buoy"

For any object, "Delete this X" where X is "Text", "Paper", "PDF file", "transclusion", "structlink"

Visible buttons

Action buttons everywhere:

Home

Menu

The menu contains

Import PS/PDF

New paper

Save

Quit

Toggles everywhere:

Show bgs

Toggles in pdf mode (i.e., when a PDF node is focused):

Reading zoom

This means that there will be 3 or 4 buttons there always.

The buttons shall be placed to the upper left corner, stacked vertically.

Some space between action buttons and toggles.

Versioning / Merging

At first, in research use, merge using CVS for the RDF.