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.