<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML//EN">
<html>
<head>
<title>Piper Ends</title>
<style type="text/css">
<!--
BODY { background: white; }
H1 { background: lightskyblue; justify: center; }
H2 { background: lightskyblue; }
H3 { text-decoration: underline; }
P { margin-left: 2em; }
-->
</style>
</head>
<body>
<h1>Piper Ends and Goals</h1>
<h2>Abstract</h2>
<p>This document tries to explain what the ends of Piper are. In other
words, it tries to answer the following questions: What is the intended
usage? What will piper be good for? What do we agree it can be bad at? What
piper capabilities are needed to get piper to be as useful and easy to use
as we expect it to become? What will the user see in terms of features? How
will the user(s) use it?</p>
<h2>Status of this document</h2>
<p>This document is work in progress. Please post your feedback to
<em>vsh-general@bioinformatics.org</em> for futher discussion.</p>
<p>TODO: read through the ML archives to find relevant things that will help
in fleshing out this doc.</p>
<h2>Overview</h2>
<p>Piper is meant to be a visual shell, providing the user with a GUI and a
pipe mechanism to glue programs together. Piper exhibits several key
advantages over the old unix shell: distribution (as in distributed
computing), P2P capabilities (for resources discovery), non-linearity
(scripts are networks of pipes and not a sequences of pipes), artificial
intelligence aware, etc.</p>
<p>Let's examine each of these features in detail...</p>
<h2>Piper features</h2>
<h3>Visual shell</h3>
<p>System that let one graphically build programs by linking nodes.</p>
<p>Piper will let one glue and reuse existing programs.</p>
<p>For now refer to Jeff's presentation of <a href="#jeff-Aug2000">Aug 2000</a>
and <a href="#jeff-Oct1999">Oct 1999</a>, to the
<a href="#website-intro">Piper's website introduction section</a> and to
the <a href="#command-compilation">command-compilation</a> description.</p>
<h3>Distribution</h3>
<p>Programs can naturally be executed on different hosts.</p>
<p>Explain how this will work for the user.</p>
<p>compare to the use of <em>rsh</em></p>
<h3>Peer-to-Peer</h3>
<p>What is P2P used for?</p>
<p>Resource discovery, instances/host coordination.</p>
<p>Read the <a
href="http://bioinformatics.org/pipermail/vsh-general/2000-November/001082.html">[piper]
Universal Description, Discovery, and Integration</a> thread in the mailing
list archives.</p>
<h3>Non-linearity</h3>
<p>XXX: find better term?</p>
<p>In a shell, pipes let one build sequences of commands, but not network of
commands without any difficulty (think of <em>tee</em>)</p>
<p>XXX: what about flow control that seemed to exist in Loci?</p>
<h3>Artifical Intelligence Aware</h3>
<p>Offers an AI toolbox of algorithms or other approach? Possible
algorithms: genetic programming, rule-based system, etc.</p>
<p>What would they be used for? Find examples where AI algorithm/techniques
are useful in Piper. Do they need to be part of Piper? Can't these algorithm
be nodes that would be linked in Piper to process Piper internal
information? Export internal information or implement
reflexivity/introspection as in Narval?</p>
<h2>Working material</h2>
<p>Here are pieces of information for those who would like to participate in
solving the big puzzle "what should piper do?".</p>
<h3>Website abstract</h3>
<p>Piper is a peer-to-peer (P2P) distributed workflow system. It is an
independent, GNU-based project which brings the power and flexibility of the
GNU/UNIX command-line interface (CLI) to the graphical user interface (GUI)
and Internet-distributed computing.</p>
<p>Networks, programs, files, widgets, and so on, can be
Internet-distributed components represented in a GUI as the nodes of a flow
chart. The user can join nodes via lines that depict links for data flow,
procedural steps, relationships, and so forth.</p>
<a name="command-compilation">
<h3>Overflow command-compilation</h3>
</a>
<p>More info about "command compilation" and "what will using existing
commands and programs be like?" <a
href="http://www.bioinformatics.org/piper/documentation/command-compilation.html">http://www.bioinformatics.org/piper/documentation/command-compilation.html</a>.</p>
<a name="jeff-Aug2000">
<h3>Jeff's Aug 2000 presentation</h3>
</a>
<p>Jeff put on-line the slides of a presentation he gave in august 2000. The
most interesting ones, relatively to Piper's use and features are:
<ul>
<li><a href="http://www.bioinformatics.org/piper/documentation/bosc2000/slide_02.html">Paradigm</a></li>
<li><a href="http://www.bioinformatics.org/piper/documentation/bosc2000/slide_03.html">Node = location + I/O</a></li>
<li><a href="http://www.bioinformatics.org/piper/documentation/bosc2000/slide_04.html">Link nodes' I/O</a></li>
<li><a href="http://www.bioinformatics.org/piper/documentation/bosc2000/slide_05.html">Nodes have GUIs</a></li>
<li><a href="http://www.bioinformatics.org/piper/documentation/bosc2000/slide_06.html">Distributed: local/remote nodes</a></li>
<li><a href="http://www.bioinformatics.org/piper/documentation/bosc2000/slide_07.html">View = node GUIs instead of nodes network</a></li>
<li><a href="http://www.bioinformatics.org/piper/documentation/bosc2000/slide_08.html">Distribution/Collaboration</a></li>
<li><a href="http://www.bioinformatics.org/piper/documentation/bosc2000/slide_09.html">Reuse existing prog, Scripting/Programming language</a></li>
</ul>
</p>
<a name="jeff-Oct1999">
<h3>Jeff's Oct 1999 presentation</h3>
</a>
<p>Describes the older <a
href="http://www.bioinformatics.org/piper/documentation/scientific-apps.html">Loci Project</a>.</p>
<h3>Website FOCUS & GOAL section</h3>
<p>Connect...
<ul>
<li>Multiple objects</li>
<li>With multiple links</li>
<li>Of multiple types and protocols</li>
<li>Between multiple computers</li>
<li>Using multiple user interfaces</li>
</ul>
</p>
<a name="website-intro">
<h3>Website INTRODUCTION section</h3>
</a>
<p>Piper has two key components: an XML language for dynamically assembling
components across networks to construct new components and a graphical
interface that makes this trivial for end users. Piper plays an even larger
role in the GUI and networks than pipe plays in the command line.</p>
<p>...</p>
<h4>Piper is transparent component glue</h4>
<p>Enter Piper. Piper, like pipe, moves the processes of gluing components
from C and and C++ code to the user level. <em>Piper uses XML rather than C
or C++ to describe how components are related to each other. </em>For
example, if an email component talked to a spell checker component, this
would be represented in an XML document as a relationship between two
components. When this document was loaded at runtime, Piper would
dynamically create the relationship.</p>
<p>Piper provides a simple graphical representation of component
relationships that users can easily manipulate. Rather than use the "|"
symbol, Piper uses simple lines and arrows to connect different components
together and then allows users to change and add to these connections at
will.</p>
<p>Piper is significantly richer than the traditional world of pipes. The
goal of Piper is to be a complete XML component language that allows users
to construct any program they need from a set of components located anywhere
on the Internet.This gives tremendous power to the user.</p>
<p>Piper is multidimensional in that one component can have multiple
connections to other components, though this is not displayed above. When a
set of Piper components is finished, users can create a BlueBox user
interface to the components. The resulting program will then be accessible
from any platform that BlueBox has been ported to.</p>
<h4>Piper Paradigm</h4>
<ol>
<li>Everything is a component.</li>
<li>Every component can accept (input) or produce (output) data, or do both.</li>
<li>Components can be connected or "piped" according to their input and output
of data.</li>
<li>All components have a network "location." Components can therefore be refered
to as "loci."</li>
<li>Nodes are only represented locally, if possible.</li>
</ol>
<h4>Benefits of Piper</h4>
<ul>
<li>Easy to use graphical environment.</li>
<li>A set of connected Piper components form a new Piper component.</li>
<li>Programs can be dynamically reconstructed.</li>
<li>Programs are transparent.</li>
<li>Data and work flow can be easily managed throughout a network.</li>
<li>Users can view current data and work flow throughout networks with
windowlets.</li>
<li>Gives users power.</li>
</ul>
<h3>Narval</h3>
<p>From the list archives:
<ul>
<li><a href="http://bioinformatics.org/pipermail/vsh-general/2001-February/001247.html">Comparing combination/flow/input-output mechanisms in current Piper and Narval</a></li>
<li><a href="http://bioinformatics.org/pipermail/vsh-general/2000-October/001053.html">First mention of Narval on Piper's list</a></li>
</ul></p>
<hr>
<address><a href="mailto:nico@logilab.fr">Nicolas Chauvat</a></address>
<!-- Created: Sat Feb 17 11:50:29 CET 2001 -->
<!-- hhmts start -->
Last modified: Sat Feb 17 15:04:04 CET 2001
<!-- hhmts end -->
</body>
</html>