<!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>