2006-05-07
| Revision History | ||
|---|---|---|
| Revision 1.3 | 2006-05-07 | AW |
| Cleaned up use cases and feature list. Restructured contents to make the document more readable. | ||
| Revision 1.2 | 2006-05-03 | AW |
| Added variant WEB to component FRONTEND. Revised architecture following propositions by Thomas Comiotto. | ||
| Revision 1.1 | 2006-05-02 | AW |
| Project decomposition and features. | ||
| Revision 1.0 | 2006-04-28 | AW |
| First initial draft. | ||
Abstract
Specification of the Yulup project.
Table of Contents
Yulup is always based on the most recent Firefox version and therefore provides the same functionality. If a webpage offers an introspection link (see Introspection ...) then Yulup would request the introspection from the corresponding server and would present the operations allowed on this webpage (e.g. editing, versions, annotations, ...).
Yulup can also be used (beside browsing the web) as a standalone editing tool of arbitrary XML with customized styles applied. Offline editing would be supported.
Usecase UC1. Open File from your desktop and Save to your desktop.
Usecase UC2. Browse to webpage, open webpage from server (e.g. WebDAV and checkout/lock on server, depending on server functionality), edit, save back to server (checkin/unlock...).
Usecase UC3. Open local file, Save/New to server.
Usecase UC4. New webpage (from template on server) on server.
Usecase UC5. Edit whilst being on-line.
Usecase UC6. Edit whilst being off-line. Needs to save local temporary version with meta-data (server URL, schema/RelaxNG, style, ...).
Usecase UC7.
Edit in Source Mode. Add/delete text, add/delete elements, add/remove Schema-specific styling (like <b> or <tt> in XHTML), add/remove CSS styling.
Usecase UC8.
Edit in WYSIWYG Mode. Add/delete text, add/delete elements, add/remove Schema-specific styling (like <b> or <tt> in XHTML), add/remove CSS styling.
Usecase UC9. Validate document.
Generally speaking one has the possibility to edit existing "documents", either from a remote server or from the local desktop, or to create a new document based on a template provided by the remote server or located on the local desktop.
Yulup should allow plain/semi-structured text editing with a "common" formatting, which means no XML Schema attached.
Usecase UC10. Start with XML and additonal "common" formatting.
Usecase UC11. Start with plain text resp. semi-structured and add tags according to selected schema, but retain style or allow to select style according to schema in case such a style exists (Similar to CSS ...!).
Usecase UC12.
Add/remove "common" styling derived from Schema (e.g. <i> in XHTML and <emphasis> in DocBook). Requires a mapping from these "common" styles to the specific Schema in use.
Usecase UC13. Apply multiple schemas allowing entanglement for internal representation.
Usecase UC14. Automatic insertion of tags through training, derived from style. Insertion controllable by stepping through the document.
Usecase UC15. Insertion (e.g. by Copy and Paste or Drag and Drop) of links to other assets.
Usecase UC16. Insertion (e.g. by Copy and Paste or Drag and Drop) of blobs (e.g. images, ...). (NOTE: mapping between input and schema!)
Usecase UC17. Insertion (e.g. by Copy and Paste or Drag and Drop) of Schema-foreign elements.
Usecase UC18. Insertion (e.g. by Copy and Paste or Drag and Drop) of (semi-)structured text (e.g. from Word, OpenOffice, ...) or pre-formatted clobs (e.g. program listings). (NOTE: mapping between input and schema!)
Usecase UC19. Word/OpenOffice functionality/usability (return means new paragraph!).
Usecase UC20. Word/OpenOffice interoperability: ODT, WordXML, etc. document import/export.
The decomposition serves the purpose of partitioning the project into implementable features. Note that a single usecase may need support from the front end as well as the back end, therefore a usecase may consist of several features in different components. It follows that in order to implement a usecase, features in the front as well as the back end must be implemented; the implementation though only has to be done in one variant of a component to have the usecase working for this variant. Therefore, the variants of a component are independent.
The project consists of three components: the front end, the back end, and a connector component. The front end component is divided into three variants: the editor integrated in a web browser, as a standalone editor, and a web-based, browser-independent variant. The back end can be run either locally on the same client as the front end, or on a remote host if the connector component is available.
The front end component is responsible for the handling the view. FRONTEND performs tasks like rendering the document, supplying user interaction facilities, etc. Note that all thre front ends can work with either a local BACKEND or a remote BACKEND.
Note that the FRONTEND UI is separated from the document views entirely. This makes it possible to implement the UI using either XUL (for Mozilla Platform based browsers), JavaScript or e.g. Flash.
Feature F1 (UC1, UC3, UC6). UI to open document from file system.
Feature F3 (UC2, UC10, UC11, UC13). UI to open document from CMS.
Feature F4 (UC2, UC3, UC10, UC11, UC13). UI to save document to CMS.
Feature F5 (UC4). UI to create new document from template from CMS.
Feature F6 (UC7). Source Mode view.
Feature F7 (UC8, UC12, UC15, UC16, UC17, UC18, UC19). WYSIWYG Mode view.
Feature F9 (UC9). Widget to visualise results of Schema validation.
Feature F10 (UC14). Toolbar to train automatic tag inserter.
Feature F11 (UC14). Toolbar to guide step-wise automatic tag inserter.
Feature F12 (UC7, UC8). Choice of different keybindings (e.g. gettext/Emacs-style, etc.)
Feature F14 (UC20). UI to import document from file system. Ability to specify target output format (e.g. XHTML, DocBook, etc.).
Feature F15 (UC20). UI to export document to file system. Ability to specify target output format (e.g. WordXML, ODT, etc.).
The browser integrated variant of FRONTEND is a XUL widget which integrates seamlessly into web browsers based on the Mozilla Platform. BROWSER must be able to work with up-to-date versions of Firefox and SeaMonkey (formerly Mozilla Suite).
The standalone variant of the FRONTEND can be used as a standalone editor, independent of a web browser. Like the browser integrated version, STANDALONE is based on XUL.
The back end component comprises the controller and the model. BACKEND contains the application logic and performs tasks like text insertion/deletion, ID tagging, XSLT processing, validation, etc. BACKEND runs either locally on the client, or remote on a different network host if a remote connector (CONNECTOR) is available.
BACKEND is also responsible for discovering and instantiating a suitable CONNECTOR, if the back end runs on a remote host. This must be completely transparent to FRONTEND.
Feature B1 (UC1, UC3, UC6, UC10, UC11, UC13).
Open document from file system (file://).
Feature B1.1 (UC1, UC3, UC6). Open well-formed XML document from file system.
Feature B1.2 (UC6, UC10). Open potentially associated meta-data from file system. Meta-data may be CMS information, XSLT, CSS and Schemas.
Feature B1.3 (UC11). Open ill-formed XML document from file system.
Feature B1.4 (UC13). Open entangled XML document from file system.
Feature B2 (UC1, UC6, UC10, UC11, UC13).
Save document to file system (file://).
Feature B4 (UC2, UC3, UC10, UC11, UC13). Save document to CMS.
Feature B5 (UC4). Fetch document template from CMS.
Feature B6 (UC7). Edit in Source Mode.
Feature B7 (UC8, UC12, UC15, UC16, UC17, UC18, UC19). Edit in WYSIWYG Mode.
Feature B7.1 (UC8). Add/edit/delete text nodes.
Feature B7.2 (UC8). Add/edit/delete elements.
Feature B7.3 (UC8). Add/remove Schema-specific styling.
Feature B7.3.1 (UC8). Provide toolbar to select from Schema-specific styles.
Feature B7.3.2 (UC8).
Provide list of Schema-specific elements which represent styling (e.g. <i>, <tt> or <b> elements in XHTML) for each Schema in use. A "styling-element" is an XML element which is usually employed to solely convey styling information.
Following is a list of Schema-specific styling-elements considered useful to be added to the FRONTEND. Extend this list if you find more useful Schemas.
Feature B7.4 (UC8). Add/remove CSS styling.
Feature B7.4.1 (UC8). Provide toolbar to select from predefined CSS styles.
Feature B7.4.2 (UC8). Provide list of predefined CSS styles. These lists may be independent or associated with a given Schema.
Following is a list of CSS styles considered useful to be added to the FRONTEND. Extend this list if you find more useful styles.
Feature B7.5 (UC12). Add/remove "common" styling derived from Schema in use.
Feature B7.5.1 (UC12). Provide toolbar to select from Schema-derived "common" styles.
Feature B7.5.2 (UC12). Provide a mapping between a set of "common" styles and the corresponding elements of the Schema in use.
Following is a list of mappings from a "common" style set to specific elements of Schemas which are considered useful to be added to the FRONTEND. Extend this list if you want more mappings available.
Feature B7.6 (UC15). Insertion of links to other assets.
Feature B7.7 (UC16).
Insertion of blobs. Requires a mapping between "common" blobs and the the Schema-specific elements which represent such blobs (e.g. <img> in XHTMl and <imageobject> in DocBook).
Following is a list of mappings from "common" blobs to Schema-specific elements which are considered useful to be added to the FRONTEND. Extend this list if you want more mappings available.
Feature B7.8 (UC17). Insertion of Schema-foreign elements.
Feature B7.9 (UC18). Insertion of (semi-)structured text or pre-formatted clobs. Requires a mapping between every input source and the Schema in use.
Following is a list of mappings from input sources to Schemas considered useful to be added to the FRONTEND. Extend this list if you want more mappings available.
Feature B7.10 (UC19). Word-processor style usage.
Feature B8 (UC7, UC8). Content Assist, providing suggestions for element names, attributes names and attribute content.
Feature B9 (UC8). Retrieve XSLT.
Feature B11 (UC9). Retrieve Schema from Schema server. Note that the Schema server may be the CMS or some other unrelated host on the network.
Feature B12 (UC9). Validate document according to associated Schema.
Feature B13 (UC20). Import document. This requires import filters which translate the input format to a specific XML format
Following is a list of import filters which convert the input document to a specific XML format. Extend this list if you want more filters available.
Feature B14 (UC20). Export document. This requires export filters which translate a specific XML format to the specified output format
Following is a list of export filters which convert a specific XML format to a specific output format. Extend this list if you want more filters available.
Feature B15 (UC7, UC8). Spellchecker with support for different languages.
Performance.
Scalability (scales well with the size of documents / numbers of nodes in a document).
Stability.
Internationalization/Localization (language, date/time, ...).
Accessibility.
Ease of installation.
Synchronized with Firefox release plan/development.
Public collaboration space (hosted either by Wyona or an external service, accessed by using a subdomain of wyona.com or a specific TLD). Provides svn repository, bugzilla, project website and documentation.
Should we keep the source editing mode simple and stupid (i.e. only have the trivial operations of add/edit/delete of text nodes, elements and attributes), or should we add features like link insertion, etc.?
Implementation language (Java (also interesting for SERVER), C++, etc.)
Amount of reuse (Etna project, Mozilla Platform, etc.)
License (GPL, GPL+Commercial, LGPL, MPL, etc.)
Date of going public
Branding