= Foolscap = "Foolscap" is an RPC protocol for Python+Twisted, providing a capability-based security model and flexible serialization. It is intended to replace Twisted's native "Perspective Broker" RPC system. Foolscap has been under development (on and off) by Brian Warner for several years. Download it here: [/releases/foolscap-0.4.2.tar.gz foolscap-0.4.2] ([/releases/foolscap-0.4.2.tar.gz.asc gpg sig]) or from its [http://pypi.python.org/pypi/foolscap/0.4.2 PyPI page]. It is released under the MIT license (see source:LICENSE for details), which is the same license as Twisted uses. == NEWS == * 19-Jun-2009: git-over-flappserver tools added to tree: use a FURL to update/pull from a remote Git repository * 16-Jun-2009: 0.4.2 released, with a new "application server", making it safe and easy to remotely run specific commands or move files into a specific directory * 13-May-2008: The recent Debian OpenSSL bug affects Foolscap: see DebianOpenSslBug for details. == Features == The two primary responsibilities of an RPC protocol are to: 1. serialize an object graph, and reconstruct a useful equivalent on the remote side 1. allow the holder of a !RemoteReference in one process to invoke methods on a Referenceable in a different one In addition, there are details like object naming, connection establishment, controlling object serialization, reference lifetime, and error reporting. Foolscap also provides a logging system which offers severity-triggered "Incident Reports" of the events leading up to a problem, which can be written to local disk or sent to a remote log gatherer. In addition, a log-retrieving tool can be attached to an application's "flogport" to retrieve recent events and subscribe to new ones. FoolscapFeatures has a detailed list of features, including a description of the main differences between Foolscap and Perspective Broker. == Documentation == Start with [/docs/using-foolscap.html using-foolscap.html] for a conceptual overview and basic tutorial. There are other manuals [/docs/ here], including portions of the protocol specification. Detailed (but somewhat hard-to-navigate) API docs are located [/docs/api/index.html here]. The links above refer to the most recent Foolscap release. All documentation lives in the source tree's [source:doc/ doc/ directory], so look there for the latest (not-yet-released) version. == Show Me The Code == Both current and older releases are available in the [/releases/ /releases directory]. The latest 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: {{{ hg clone http://foolscap.lothar.com/repos/trunk foolscap-trunk }}} 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. Some day, Foolscap may be shipped as part of the "Twisted-Core" distribution, but only after the protocol and code have stabilized a bit. == Status == The Foolscap wire protocol has been stable for about two years. There are changes and improvements I'd like to make to it, but they will probably be made in a compatible fashion. The protocol has several places for version negotiation, making this easier to achieve. 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. == Links == * 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. * The Twisted wiki has [http://twistedmatrix.com/trac/wiki/FoolsCap a page] on Foolscap where this information used to live. == Projects Using Foolscap == * [http://allmydata.org/trac/tahoe Tahoe], a secure robust distributed filesystem, uses Foolscap for all inter-node communication * [http://ipython.scipy.org/ IPython], an "enhanced interactive Python shell, uses Foolscap for its parallel computing features * your name here! please add your own Foolscap-using project link here == Trac Hints == The old Trac starting page was moved to OldWikiStart For a complete list of local wiki pages, see TitleIndex.