Code Search for Developers
 
 
  

usecases.wml from gzz at Krugle


Show usecases.wml syntax highlighted

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
   "http://www.w3.org/TR/html4/strict.dtd"> 
<!--
        NOTE! This file uses WML 2.0.1

        PLEASE PLEASE PLEASE don't edit .HTML. Edit .WML!!!! Actually,
        it's more important for you since your changes will be LOST FOREVER
        if you edit the .HTML files.
 -->

<html>
 <head>
  <title>ZigZag use cases</title>

#include '../wmlinc/article.wml'
#use wml::fmt::xtable

 </head>
 <body>

<!-- 
        Make d.foo into <code>d.foo</code> so we don't have to explicitly
        do it whenever we talk about dimensions.
-->
<substdims>

<h1>ZigZag Use Cases</h1>
<pre>$Id: usecases.wml,v 1.11 2001/07/30 16:26:43 tuukkah Exp $</pre>

Written by <br>
<b>Tuukka Hastrup</b> <br>
<b>Tuomas J. Lukka</b> <br>
(add your name here if you do any significant modification)

<toc>

<warn>

<h2>Introduction</h2>

<p>
The following should become an extensive list of ZigZag use cases. From a 
list like this, one can find out which other features are needed for a specific
feature. Also, many times there are various sensible definitions for some
feature, in which case one can consult this list for relevant viewpoints.

<p>
Whenever several implementation possibilities are given, it easily happens that
they are assessed solely based on the latest considerations. I hope that this
list will be of help in remembering the earlier considerations too. 

<p>
The list begins with some needs the user has, and as new system parts
are introduced, we try to see their cases too.

<p>
In the end of cases, there is possibly some entries marked with an 
asterisk (*), each providing a suggestion for implementation of the features.

<p>
Please comment on anything you don't agree with and insert new viewpoints you
consider meaningful. As the comments are agreed on, the results shall be
reflected in the case. In case of a non-trivial feature, the comment should
probably induce a new, corresponding case.

<h2>Cases</h2>

<h3>to use ZigZag</h3>
<ul>
<li>users can use ZigZag wherever they want (through a <em>client</em>)

<li>they can give some ZigZag to people using other systems

<li>themselves they don't need to use anything else

<li>* Scalable multiplatform implementation: an OS, an application, an applet
</ul>

<h3>client starts</h3>
<ul>
<li>client needs to know screen settings

<li>client gets the newest version of the settings the user had last time

<li>for this, client needs to know the user

<li>client displays the <a href="#workspace">work space</a> on the screen

<li>* a client space with some slices?
<tjl> I don't think slices have anything to do with this, really...
    Also, why can't I just switch between settings easily and start where
    I previously left off? Why would the client fix me into some set of 
    settings?
    We don't want to go down the X road of reading user preferences at
    startup and then remaining with them. Everything has to move fluidly
    at all times.

</ul>
<h3 id="workspace">work space</h3>
<ul>
<li>user can create data sets and export and import them to the work spaces

<li>within work space, user can edit and view several of these data sets

<li>* a compound space of slices?

</ul>
<h3>data set</h3>
<ul>
<li>user handles created data in sets, closely related data in one set

<li>a set can be exported from a work space in which it was created
and imported into other work spaces

<li>what is considered to be related can change according to viewpoint. The
user can thus operate data between sets: include in several sets, move from
one set to another

<li> when the users operate on the data, the system should manage data set 
borders accordingly

<li>* a slice?
<tjl>It has to be easy to make new small overlapping sets of cells, send those
and compare and integrate changes made to them elsewhere.
The division <b>must not be forced to be hierarchical</b>.
Having a piece of data in only one set or one hierarchical set path
is way too constraining.
</ul>
<h3>screen settings</h3>
<ul>
<li>a data set that tells everything the client needs to know about
user's preferences
<ul>
<li>windows
<li>configuration parameters (fonts etc.)
<li>bindings
<li>cursors
<li>positions
<li>work space
</ul>
<li>some of these the user will want to share between several screen settings

<li>users can switch from screen settings to another ones whenever they want to

<li>* a set of nested slices?
    <tjl> I don't see this having that much to do with slices; sharing
	settings can be done simply in the structure.

    <tuukka>I see the initial slice mainly as a way to select which settings
	to use. This way, we don't have to take them as command line 
	parameter(s) or ask the user while the client's loading.
    <tjl> What "command line"? What "loading"?
	It's going to be a full OS. It has to be easy to switch between these.
	How would you specify the "initial slice"?
    <benja> It would be nice if it weren't a full OS only, rather, everything
	from an applet to a browser plugin to a standalone "application" to
	a booting OS. I do want to run it as an OS, but I also want to write
	interactive media with it distributable to Windows PCs (not that I
	wouldn't like people to use ZZ rather than Windows, but I don't want
	to wait for it). I think gZZ can really be made scalable and running
	on many platforms.
    <tjl> That has been my intention all the time (Tuukka: this 
	probably qualifies as a use case ;).
	I just meant that assuming that there is something around zigzag
	where you can give parameters on how to "boot" it
	is a bit too restrictive.
    <ajk>Another possible phrasing: "It's going to be embedded.  Embedded systems
        start at the Big Bang and run forever.  There is no startup-time command line."
        (I happen to agree with RMS: I want to use GZZ in addition to,
        not instead of my current systems.)
</ul>


<h3>export and import</h3>
<ul>
<li> data sets exported from a work space can be imported potentially into 
any other work space    

<li> user has a chance to limit access and types of access to specific 
users or groups of users

<li> during export, possible dependencies to data outside the set are 
considered: user has chance to hide (remove) references, incorporate more
of the data to the set, or let the dependencies stay marked 

<li> such external data include
<ul>
<li> primitives, dimensions, libraries
<li> references related to specific data types
<li> personal notes
</ul>

<li> during import, dependency problems are solved: user can leave dependencies
unsatisfied, bring more data as an other set or suggest alternative resources
to satisfy the dependencies
</ul>

<tjl> what about mediaserver, when I 
    publish a part of previously completely private block. Does it need
    to be physically copied (YUCK).

<h3>management of data set borders</h3>
<benja>One of the hardest problems here is that a set must grow "naturally"
when its contents are edited: if I have some text in "Chapter 7" and
"unfinished scenes," and I enter some more text there, both sets must grow 
to include that text. But a new connection to something may either be an
extension of what's already there, or an annotation or link that doesn't belong
to it-- my note on the scene above is part of my work on "unfinished scenes,"
and I want to see it when I look at that set, but it is not part of Chapter 7,
and I do not want it to be included when I publish Chapter 7 on my website.
<ul>
<li> when user edits data, the data set borders are changed accordingly

<li> when a new cell is created, all related sets grow to include it

<li> a new connection may bring parts of several sets together, and user
is consulted in what to include in respective sets
</ul>

<h3> 

<h2> Priorities of computer use. </h2>
    <tuukka> I don't know if we should concentrate on <em>computers</em>.
            Instead, would it change your meaning if it was changed to
            use of ZigZag? Or use of information technology? We're going to
            see ZigZag in PDA's and such, and I consider these extremely
            important. (Tell me about "information appliances", huh :-S

    <tjl> This section currently lists the things I want to do with
	    my computer, in approximate priority order.
	    Please add your ideas or different prioritizations.

    <p>
    First, for solo applitudes used by one person (of course, 
    using these collaboratively must be possible as well)
    <ul>
    <li> Text editing
    <li> Scanned images
    <li> Figures
    <li> Programming (Clang, Java, ...)
    <li> Reading PDF, PS
    <li> Math formulas, graphs
    <li> Hifi audio playing
    <li> Presentations - animation, graphics
    <li> WWW
    <li> Database-like stuff -- contacts
    <li> 3D graphics
    <li> Searching large amounts of text
    <li> crypto
    <li> composing music
    <li> games 
	 <benja> Starting with a ZigZag-based Sokoban :)
    <li> desktop publishing (YUCK)
    <li> cute animations / screensavers ...
    <li> calendar
    <li> video
    </ul>

    <p>
    Then, communication.
    <ul>
    <li> email
    <li> irc
    <li> cvs (both real cvs and cvs-like functionality)
    <li> common space / cooperation
    <li> GO
    <li> usenet news
    <li> video meeting
    </ul>

    <benja> OK, what I really want to do are interactive media. Not these
	I'm-interactive-because-you-click-me-and-I-jump-up gizmos, but 
	media actually <em>interacting</em> with the user. I want really
	really powerful high-level scripting supporting multiparadigm 
	programming including logical programming and other arcane things, and
	first and foremostly the possibility to interface everything in the
	easiest way, not one that follows the system's conventions, because
	current systems don't lend themselves towards expressing human 
	thought-- and programming systems are no exception. Besides, sometime
	I would really like to have Flash-like vector animation because it
	makes things look so much better, but unlike Flash it must be fully
	programmable (otherwise I'm better of without it). And I want to
	deliver it all as a browser plugin as long as that's popular. :)

    <benja> Summarizing:
    <ul>	
    <li> text viewing and editing (simple, but supporting transclusion)
    <li> programming (Clang, lots of different strange ones)
    <li> browser plugin or similar way to get users of locked-in systems
    <li> (sometime) Flash-like animation.
    </ul>

    <tuukka> I'd like to see <i>reasonable computing</i>:
             <ul>
             <li> user interfaces that don't lock the user data into a 
                  predefined form
             <li> preservation of human entered data whatever the situation 
                  or "crash" 
             <li> possibility to automate everything one would like to do 
             (small problems with small solutions, big problems with bigger 
             ones). 
             </ul>

    <tuukka> ZigZag promises pretty much on this area. As means to get to these
             results, I'm interested in:
             <ul>
             <li> identity: All data has an identity in form of the cell, which
                  can be used to represent complex relations (where is the 
                  borderline: d.clone - d.implements - d.cursor?)
             <li> spreadsheet paradigm: spreadsheet programs are popular for
                  various unrelated tasks (not to mention a notebook and 
                  a pencil), and similar characteristic of ZigZag
                  suggests this could be taken advantage of
             </ul>

    <tuukka> Actual application areas I think would be good for ZigZag at 
             first:
             <ul>
             <li> messenging: email/news, instant messenging (Jabber client?)
             <li> a super spreadsheet
             <li> program authoring tools
             </ul>
</substdims>
 </body>
</html>

<!--
        vim: set syntax=html :
-->



See more files for this project here

gzz

An implementation of Ted Nelson's ZZstructure. ZZstructure is a new type of programming platform for structured data.

Project homepage: http://savannah.nongnu.org/projects/gzz
Programming language(s): C++,Java,Python
License: lgpl21

  Makefile
  usecases.wml