Changes between Version 10 and Version 11 of WikiStart


Ignore:
Timestamp:
09/02/2007 12:21:31 AM (17 years ago)
Author:
Brian Warner
Comment:

wrap lines to 80cols, no visible changes

Legend:

Unmodified
Added
Removed
Modified
  • WikiStart

    v10 v11  
    22= Foolscap =
    33
    4 "Foolscap" is the name for the next-generation RPC protocol, intended to replace Perspective Broker. It has been under development (on and off) by Brian Warner for several years.
     4"Foolscap" is the name for the next-generation RPC protocol, intended to
     5replace Perspective Broker. It has been under development (on and off) by
     6Brian Warner for several years.
    57
    6 The current release is [/releases/foolscap-0.1.6.tar.gz foolscap-0.1.6]  ([/releases/foolscap-0.1.6.tar.gz.sig gpg sig]).
     8The current release is [/releases/foolscap-0.1.6.tar.gz foolscap-0.1.6]
     9([/releases/foolscap-0.1.6.tar.gz.sig gpg sig]).
    710
    811The two primary responsibilities of an RPC protocol are to:
    912
    10  1. serialize an object graph, and reconstruct a useful equivalent on the remote side
    11  1. allow the holder of a !RemoteReference in one process to invoke methods on a Referenceable in a different one
     13 1. serialize an object graph, and reconstruct a useful equivalent on the
     14    remote side
     15 1. allow the holder of a !RemoteReference in one process to invoke methods
     16    on a Referenceable in a different one
    1217
    13 In addition, there are details like object naming, connection establishment, controlling object serialization, reference lifetime, and error reporting.
     18In addition, there are details like object naming, connection establishment,
     19controlling object serialization, reference lifetime, and error reporting.
    1420
    1521== New features ==
     
    1723
    1824 * most inert Python types are serializable, including unicode and sets
    19  * clients and servers are implemented as [http://twistedmatrix.com/documents/current/api/twisted.application.service.html Services], which share connections when possible and are easy to shut down
     25 * clients and servers are implemented as
     26   [http://twistedmatrix.com/documents/current/api/twisted.application.service.html
     27   Services], which share connections when possible and are easy to shut down
    2028 * links are encrypted/authenticated by default (using SSL)
    2129 * all objects are accessed through secure/unguessable "FURLs"
    2230  * explicitly published objects can be accessed through well-known FURLs
    23  * you can declare method signatures (with "constraints", either in Interface classes or as method attribute/decorators)
    24   * this enables defenses against resource-consumption DoS attacks, including stack-frame-exhaustion attacks
    25   * (TODO) you can ask the deserializer about your current maximum memory/stackframe exposure, based upon what objects are visible and what methods they declare
     31 * you can declare method signatures (with "constraints", either in Interface
     32   classes or as method attribute/decorators)
     33  * this enables defenses against resource-consumption DoS attacks, including
     34    stack-frame-exhaustion attacks
     35  * (TODO) you can ask the deserializer about your current maximum
     36    memory/stackframe exposure, based upon what objects are visible and what
     37    methods they declare
    2638 * serializers for third-party classes can be registered using Adapters
    2739 * serializers are more "streaming" than in oldpb
    2840  * serializers can pause themselves, deferring serialization until later
    2941  * serializers can be paused when the network pipe is full
    30  * newpb is architected to make it possible to rewrite serializers/deserializers in C, for speed
    31  * object graph depth is limited by available heap memory, not available stack depth
     42 * newpb is architected to make it possible to rewrite
     43   serializers/deserializers in C, for speed
     44 * object graph depth is limited by available heap memory, not available
     45   stack depth
    3246
    3347== Show Me The Code ==
    3448
    35 The current release is available [/releases/foolscap-0.1.6.tar.gz here]. This is an alpha release, since the protocol has not been finalized, and incompatible changes are being made every few months. Older releases are available [/releases/ here].
     49The current release is available [/releases/foolscap-0.1.6.tar.gz here]. This
     50is an alpha release, since the protocol has not been finalized, and
     51incompatible changes are being made every few months. Older releases are
     52available [/releases/ here].
    3653
    37 The latest Foolscap code lives in a [http://www.selenic.com/mercurial/wiki/ mercurial] repository, at http://foolscap.lothar.com/repos/ . To retrieve a copy of the trunk use the following command:
     54The latest Foolscap code lives in a [http://www.selenic.com/mercurial/wiki/
     55mercurial] repository, at http://foolscap.lothar.com/repos/ . To retrieve a
     56copy of the trunk use the following command:
    3857
    3958{{{
     
    4160}}}
    4261
    43 There are two online source-code browsers, the native hgwebdir.cgi at http://foolscap.lothar.com/repos/trunk (which also has a [http://foolscap.lothar.com/repos/trunk?style=gitweb gitweb-style view]), and the Trac Mercurial plugin at the [/trac/browser Browse Source] link above. Both are pretty handy.
     62There are two online source-code browsers, the native hgwebdir.cgi at
     63http://foolscap.lothar.com/repos/trunk (which also has a
     64[http://foolscap.lothar.com/repos/trunk?style=gitweb gitweb-style view]), and
     65the Trac Mercurial plugin at the [/trac/browser Browse Source] link above.
     66Both are pretty handy.
    4467
    45 The documentation is in the [source:doc/ doc/ directory] and includes both the protocol specification and a short user's manual. Rendered HTML from the most recent release lives [/docs/ here], and [/docs/using-foolscap.html using-foolscap.html] is probably the best place to start.
     68The documentation is in the [source:doc/ doc/ directory] and includes both
     69the protocol specification and a short user's manual. Rendered HTML from the
     70most recent release lives [/docs/ here], and [/docs/using-foolscap.html
     71using-foolscap.html] is probably the best place to start.
    4672
    47 Some day, Foolscap may be shipped as part of the "Twisted-Core" distribution, but only after the protocol and code have stabilized a bit.
     73Some day, Foolscap may be shipped as part of the "Twisted-Core" distribution,
     74but only after the protocol and code have stabilized a bit.
    4875
    4976== Status ==
    5077
    51 Foolscap is not yet ready for production use. The [source:doc/todo.txt 'todo.txt'] and [source:doc/jobs.txt 'jobs.txt'] files contain some of the things that need finishing before it will be ready. Connection negotiation needs to be changed to use variable-length certificate digests and certificate chains and variable-length object names, various questions about making objects "giftable" by default or not need to be answered and implemented, and we need to acquire operational experience with Foolscap as a whole to think about usability.
     78Foolscap is not yet ready for production use. The [source:doc/todo.txt
     79'todo.txt'] and [source:doc/jobs.txt 'jobs.txt'] files contain some of the
     80things that need finishing before it will be ready. Connection negotiation
     81needs to be changed to use variable-length certificate digests and
     82certificate chains and variable-length object names, various questions about
     83making objects "giftable" by default or not need to be answered and
     84implemented, and we need to acquire operational experience with Foolscap as a
     85whole to think about usability.
    5286
    53 Release 0.1.6 (as well as older releases) are available in the [/releases/ releases directory].
     87Release 0.1.6 (as well as older releases) are available in the [/releases/
     88releases directory].
    5489
    5590== Links ==
    5691
    57  * Foolscap takes many ideas from the [http://www.erights.org/ E Language]. Foolscap is my attempt to make the concepts of E available to python+twisted programmers.
    58  * The Twisted wiki has [http://twistedmatrix.com/trac/wiki/FoolsCap a page] on Foolscap where this information used to live.
     92 * Foolscap takes many ideas from the [http://www.erights.org/ E Language].
     93   Foolscap is my attempt to make the concepts of E available to
     94   python+twisted programmers.
     95 * The Twisted wiki has [http://twistedmatrix.com/trac/wiki/FoolsCap a page]
     96   on Foolscap where this information used to live.
    5997
    6098