An agile protocol is a protocol that responds to changes, that can be changed frequently while the system is running.

An agile protocol typically consists of a metaprotocol such as the Samizdat protocol and modular subprotocols.

This is done to ensure that subprotocols can be written on a decentralised, distributed basis when there is a demand for updating protocols.

Usually this is to cope with new challenges to the protocol used, such as censorship or unreliable networks (P2P networks like Napster, Gnutella & Freenet).

Say for example, there are number of non-existant or hostile nodes on the network. With an agile protocol, you can get data from routes which aren't misbehaving.

This gives some noticable advantages, mainly in flexibility, censor-resistance, diversity and local adaption to conditions.

There is disadvantages, typically in speed, hostile nodes, etc. Currently, I am creating the samizdat protocol as an agile protocol based on the behaviour of argentinian ants, which have a swarm intelligence that can extend from italy to spain in a gigacolony.