Communications
Written: 1242594042|%e %B %Y, %H:%M (facebook pink)
Cleaning out an old notebook, I found this article that I wrote in 1999. Surprisingly, it still makes sense, so here, saved from the Delete button of history, is an analysis of Communications, and kind of a prediction of Facebook and Twitter.
Introduction
Collaboration and innovation stem from cheap communications but not all communication platforms are equal. As a manager I often see people struggle with inefficient or inappropriate communication platforms, and I direct them to use more effective platform, usually with good results.
The following section is my own analysis of what the differences are between various communications media, or "platforms", and what impact these differences have on groups. As far as I know this is the first attempt to analyse communications in this way, surprising since it is one of the essentials of our technological society, along with fire, pizza, and fermented starches served by wenches.
Communication Platforms
Let's look at the most commonly used platforms:
- Face-to-face: the most ancient platform, the basis for Greek democracy and when followed by the appropriate shared dinner, evening at the theatre or moving picture, and glass of red Bordeaux at a quite place around the corner, the continuation of our species.
- Written paper: though stone and baked clay could survive going through the washing machine, flattened papyrus stems were more portable, cheaper and ultimately the basis of organised religion, the modern state, and TV guides.
- Telephone: invented by Graham Bell in order to call his mistress, the concept of two cans separated by a very long cat rapidly caught the public imagination, especially when combined with a low, low monthly connection fee and easy-to-pay rate schedule. These days, phones are by definition mobile (at least in my study).
- Fax: invented by the Japanese in the 1970's so they could send pictures of Godzilla more efficiently, fax rapidly took over the business world because email had not yet been invented. Today fax is mainly used by producers of ink cartridges to promote the sales of ink cartridges for fax machines.
- Chat: the Internet version of the telephone, chat has morphed from many forms, including IRC, which was a significant improvement on all its successors. Internet chat is successful because on the Net, any dog can look like a thirteen year old girl.
- Web pages: the Internet version of the papyrus leaf, taking about the same amount of effort to hammer into usable material. The original web site was built for nuclear research but within 24 hours had been defaced by h4ck0rz who loaded it with porn and made $150,250 before the nuclear scientists took control again, and invented the password.
- Electronic documents, which range from simple text files to the elegant suit-and-tie called PDF. PDF is the only popular communication platform that was invented, and more importantly, not royaly screwed up in version 2.0, by a corporation. Graham Bell and his mistress do not count as a corporation.
- Email: still, after all these years, the most popular way to send electronic mail. Email has had many incarnations, from evil Unixy command-line mailers that asked, "Delete all email" on quitting, to point-and-drool web mailers that brought email and advance-fee fraudsters to the masses. Hotmail has paid for several nice villas along the beach of Lagos Island.
- SMS: we never knew that a few lines of text stuffed into the tail end of mobile phone data packets could become such a huge business. SMS produces half of mobile phone companies profits and two thirds of all family disputes when daddy sees the phone bill.
- Mobile mail: SMS chat for adults, epitomised by the Blackberry. Mobile mail combines the advantages of email with the portability of SMS plus full tax deductability as an essential business expense.
- Wiki, the hippie mutant offspring of web pages and web-based email. Someone said, "if we let anyone edit this page, can it be any worse than the web currently is?" and the surprising answer was, "no". Wiki sites are rarely beautiful, but prove the dictum that "many eyes make any problem shallow".
When we communicate, we have different, and sometimes conflicting needs:
- The cost of accessing the platform (which I'll call "accessibility").
- The cost of making a single statement ("unit cost").
- The informality of a statement ("informality").
- The lack of skill needed to use the medium ("simplicity").
- The speed of receiving and responding to a statement ("latency").
- The number of people we can reach at once at reasonable cost ("fanout").
- The reliability of the medium against tampering ("security").
- The likelyhood that our words can be used against us ("transience").
- The ease of storing and searching a dialogue ("archivability").
- The time we can take to respond to a statement ("escapability").
- The freedom we have to pretend we lost a message ("deniability").
- The freedom we have to hide our identity ("anonymity").
- The bandwidth with respect to non-verbal communications ("emotiveness").
- The ability to carry the platform with us ("portability").
Let's see how each of our listed communications platforms scores on these criteria, and let's score each platform from 1 to 5, where 1 is the least useful or desirable, and 5 is the most. We assume that the goal is to communicate with as many people as possible, as cheaply as possible:
. | F2f Paper Phone Fax Chat Web Etext Email Sms Mtext Wiki
--------------+--------------------------------------------------------
Accessibility | 1 2 5 4 4 5 3 4 5 3 5
Unit cost | 5 2 4 3 5 2 4 5 3 5 4
Informality | 5 1 5 2 5 2 2 3 5 4 3
Simplicity | 5 3 4 2 3 1 1 3 5 3 3
Latency | 5 1 5 3 5 1 2 4 5 5 3
Fanout | 3 3 1 3 1 5 5 4 1 5 5
Security | 5 4 5 3 5 2 1 3 5 4 1
Transience | 5 1 5 2 4 1 1 2 4 2 2
Archivability | 1 2 1 2 2 5 5 5 1 5 5
Escapability | 1 5 2 5 4 5 5 4 1 3 5
Deniability | 1 5 2 3 3 1 3 2 1 2 3
Anonymity | 1 3 3 2 5 3 4 3 1 2 4
Emotiveness | 5 1 4 1 3 1 1 2 1 2 1
Portability | 5 1 4 1 3 1 1 2 5 5 1
--------------+--------------------------------------------------------
Total | 48 38 51 36 50 35 38 45 43 50 45
We can see that the highest-ranking platforms, in my completely unscientific study are: phone (51 out of a possible 70), chat (50), and mobile text (50 as well). No single product does everything well, and people need to mix and match platforms to get some sanity into their world.
We can also see how different platforms suit different types of discussion. For example if we are negotiating a contract with a hostile or at least untrusted partner, we need high transience and deniability, so that we can negotiate freely, and touchy-feely so that we can use psychology and empathy, but when it comes to getting a real promise we need low deniability and high escapability. So, we need to meet face to face and get the words down on paper.
Take another instance, problem solving. This needs emotiveness, low unit cost, high latency, informality. Nothing else counts. The ideal platforms are thus chat, phone, and face to face. Don't try to solve problems by exchanging PDFs. It will not work, as the Napoleonic court system of written argumentation demonstrates painfully.
You'd think this was obvious, but people still try to use verbal contracts, or negotiate subtle arrangements by email. There are good reasons these don't work, not because people are stupid or liars (it is a temptingly accurate but still not sufficient explanation), but because the communications platforms are just not the right ones to get around the stupidity and dishonesty that is a vital part of every statement we ever make (especially when we think we are being clever and honest).
Don't take my figures too seriously - for one thing, there are many criteria that I've forgotten or ignored. For example - don't laugh - the ability to choose an item in accessorisable colours is a huge selling point for half the consuming public. For teenagers with no fixed place of work (and in most countries, no job), criteria such as portability totally outweigh any others, so a platform like SMS scores relatively low because we are generalising to an entire population. Ironically, those with the greatest need for mobile products are those with the least money.
Messing it Up
Surprisingly, people are often remarkably slow to use the "right" way of communicating. One of my great frustrations when I help a team to work together is to see people stubbornly trying to conduct meetings or solve problems or design specifications by email. (The right platforms would be face-to-face or chat, chat or face-to-face or phone, and paper or web). Don't get me started on phone conferences…
There are two main reasons people don't use the right platform in every situation:
- The "hammer" syndrome. When you know and like one platform you try to use it everywhere. Despite what you see in the movies, email does not work as a tool for seduction, unless you have William Sheakspeare's writing skills.
- The cost of alternatives. It is easy to say, "let's meet" but when the other party is in Los Angeles, and you are at number thirteen Oxford Street, London WC 1, it's not so easy.
Social Economics
Many people do not realise that humans organise themselves into structures that are predictable, highly formalised, negotiated, and ultimately defined by behavioural patterns that are embedded in our genetic code.
Whole political religions have been based on ignoring this fact, and worse, on trying to put people into structures that we can honestly call "unnatural". In the worse cases, the attempt to re-educate people into artificial organisational structures has resulted in famine, genocide, and destruction of entire swathes of societies.
People organise into structures that are driven by some basic economic principles:
- All wealth is created by specialisation and by trade between groups that have specialised in their particular areas.
- Trade is the exchange of goods, services, information, or knowledge, and wealth is the accumulation of goods, credit, information, or knowledge.
- The scope of trade is defined by available transports: sea, rail, road for material goods; communications platforms for information and knowledge.
- Fair trade requires accounting, rules, and a neutral but strong authority to impose these.
- Trade creates changes in wealth distribution that act to mix society.
The flux of families, towns, regions, and societies is driven by these factors, in cycles that are entirely chaotic, in the mathematical sense of the word. If we want to understand human history we can add two more principles:
- Over time, authority always becomes corrupt so that a society must revolt, stagnate and die, or go to war.
- Human activity eventually exhausts resources (water, trees, fish, minerals) so that a society must adapt, move, or collapse.
To a large extent the human mind has evolved a set of tools that are capable of creating very large organisational machines through the dual processes of specialisation and trade. To a large extent these machines are competitive, collaborative, destructive, aggressive, and in many cases, downright insane. But it's a great party.
Pink Fax Machines
The original and most striking specialisation in the human genome is the ancient split into female and male. Anyone who honestly claims that men and women are the same, bar the pressures and lessons of society, should re-read my sentence on stupidity and dishonesty. Equality is one thing we all should fight for but difference is what makes us successful, and interesting.
Understand the way we think, as men and as women, as young and old, and you understand the reason different people prefer different types of communications.
Let's look at some basic differences. These apply generally, not universally:
- Men prefer to command, to speak to many at once, to be anonymous and talk to strangers. Men generally use emotions less than women but are happier to travel to distant places and learn new technology in order to communicate.
- Women prefer to discuss and exchange information, to speak to other woman individually, and to know exactly who they are speaking to. Women do not like to learn new technology unless it's obviously useful.
Looking at the criteria for communications platforms, we can group criteria into those that are generally more important for women, those that are generally more important for men, and those we can safely assume are valuable to both genders:
- Accessibility, informality, simplicity, security, transience, and emotiveness are more important for women.
- Fanout, achivability, escapability, deniability, and anonymity are more important to men.
Unit cost, latency and portability are important to everyone, so we can take our criteria and remove those that are not important, giving us a gender-biased calculation of "favourite platform".
For men, we get this table:
. | F2f Paper Phone Fax Chat Web Etext Email Sms Mtext Wiki
--------------+--------------------------------------------------------
Accessibility | 0 0 0 0 0 0 0 0 0 0 0
Unit cost | 5 2 4 3 5 2 4 5 3 5 4
Informality | 0 0 0 0 0 0 0 0 0 0 0
Simplicity | 0 0 0 0 0 0 0 0 0 0 0
Latency | 5 1 5 3 5 1 2 4 5 5 3
Fanout | 3 3 1 3 1 5 5 4 1 5 5
Security | 0 0 0 0 0 0 0 0 0 0 0
Transience | 0 0 0 0 0 0 0 0 0 0 0
Archivability | 1 2 1 2 2 5 5 5 1 5 5
Escapability | 1 5 2 5 4 5 5 4 1 3 5
Deniability | 1 5 2 3 3 1 3 2 1 2 3
Anonymity | 1 3 3 2 5 3 4 3 1 2 4
Emotiveness | 0 0 0 0 0 0 0 0 0 0 0
Portability | 5 5 5 1 1 1 1 1 5 5 1
--------------+--------------------------------------------------------
22 26 23 22 26 23 29 28 18 32 30
And for women, we get this table:
. | F2f Paper Phone Fax Chat Web Etext Email Sms Mtext Wiki
--------------+--------------------------------------------------------
Accessibility | 1 2 5 4 4 5 3 4 5 3 5
Unit cost | 5 2 4 3 5 2 4 5 3 5 4
Informality | 5 1 5 2 5 2 2 3 5 4 3
Simplicity | 5 3 4 2 3 1 1 3 5 3 3
Latency | 5 1 5 3 5 1 2 4 5 5 3
Fanout | 0 0 0 0 0 0 0 0 0 0 0
Security | 5 4 5 3 5 2 1 3 5 4 1
Transience | 5 1 5 2 4 1 1 2 4 2 2
Archivability | 0 0 0 0 0 0 0 0 0 0 0
Escapability | 0 0 0 0 0 0 0 0 0 0 0
Deniability | 0 0 0 0 0 0 0 0 0 0 0
Anonymity | 0 0 0 0 0 0 0 0 0 0 0
Emotiveness | 5 1 4 1 3 1 1 2 1 2 1
Portability | 5 5 5 1 1 1 1 1 5 5 1
--------------+--------------------------------------------------------
41 20 42 21 35 16 16 27 38 33 23
So, I conclude that men will prefer mobile text, wikis, and electronic texts above all, while women will prefer phone, face-to-face, and SMS.
Again, don't take my opinions too seriously (I certainly don't). It's just one way of looking at things, and my real point is to demonstrate that platforms are different, for predictable reasons, and these reasons are useful to try to understand when we choose platforms for our own work or for others' work.
Let's get back to organisation. Men and women communicate differently, as we all know, and organise differently. It's not accidental that women have trouble in business structures since these generally use male communication techniques, except for meetings, which most men hate but many women enjoy.
The size of an organisational structure, and its dynamics, depends entirely on the mix of communications platforms that are available to its members.
It thus follows that the most effective organisation is the one with the most accessible and complete mix of communications platforms, so that its members can collaborate in whatever way produces the most specialisation, the most efficient communication, and thus the most wealth.
Comments: 2, Rating: 0
10 Principles for AMQP
Written: 1241352409|%e %B %Y, %H:%M (amqp community sermon)
Ten ways that AMQP can be made simpler, more backwards compatible, more interesting, and overall more enjoyable and successful for all who work on it and use it.
Introduction
The more you know about something, the harder it is to build it.
We went live with the first production deployment of AMQP (on OpenAMQ) at the end of 2006, handling about half a billion messages a day. It was a massive project: design a new protocol, build an industrial-strength implementation, and migrate a major application onto this new infrastructure. Two and a half years sounds a lot but in that time we made three complete redesigns of AMQP, and OpenAMQ, before we had designs that were simple enough to work reliably, and still do what was needed. Functional simplicity is the hardest aspect of design.
It's been hard to translate that success into a final AMQP specification. Part of the problem was failure to agree on what "final" meant. Part of the problem is that AMQP addresses a large problem that cannot be solved quickly. Part of the problem is that the people working on AMQP - including myself - were still building the tools and experience needed.
AMQP will not, in my opinion, be solved in one or two steps, nor in one or two years. The work that has been done already over four years is very important. It has already created a healthy market of competing, interoperable, messaging products. The AMQP/0.9.1 specification, which was published last year, raises the bar: it is lean, precise, coherent, and tested.
But AMQP/0.9.1 is not the final destination. As a contract of interoperability and stability, it's excellent, almost perfect. But it has a limited view of the problem, and it is still more complex than it should be.
The thing about infrastructure is that once it is in place, it is horribly expensive to fix. The complexity in AMQP/0.9.1, if not solved, will be multiplied many times when AMQP expands to cover the fully-reliable messaging, low latency, multicast, and other features we expect to see in AMQP/1.0.
Complexity is easy, simplicity is hard. My day job is to design simplicity by identifying and removing complexity. In this article I'll do that to AMQP, and identify ten areas where there is unnecessary, and in the long term dangerous, complexity, and in each case I'll provide recommendations for solving that complexity.
My ten principles for AMQP are:
- Make small pieces: AMQP should be a fabric of protocols, not one large protocol.
- A layered architecture: these protocols should form a clearly layered architecture.
- Delegate the design work: each protocol is a job for a small, competent team.
- Leverage the community: open the design process to anyone who wants to participate.
- Leverage competition: allow competing teams to make competing designs, at any level.
- Leverage the market: use adoption, over time, to identify which designs are best.
- Use natural syntax: the framing at each level should fit the needs of that level.
- Use natural semantics: the interactions between peers at each level should be simple.
- Push blame to the edges: brokers should never compensate for poorly-written applications.
- Deconstruct the broker: the architecture should support zero, one, or more brokers.
Since theory without practice is useless, the RestMS project acts as a demonstrator of most of these principles.
Make small pieces
AMQP is on paper a single protocol1. This makes it easier to market. It makes it much harder to improve, and the 0-10 specification shows this: it's 197 pages, compared to about 40 for AMQP/0.9.1. I've recommended since 2006 that we refactor AMQP into smaller pieces, each solvable by a small team of 1-3 people. For example, separate protocols for version negotiation, for control commands, for message transfer, for transactions. These pieces need freedom to evolve independently, so that experimentation can be cleanly (contractually) separated from standardization.
A layered architecture
AMQP has no clearly layered architecture. The refactoring of AMQP into small protocols must be based around a solid, coherent, layered architecture. This should be the core of what AMQP 'is', the fundamental agreement around which detailed designs can be built. The architecture should specify what each layer does, in terms of its interactions or interfaces with higher and lower layers. The goal of the architecture is to compartementalize innovation, to guarantee space for contributions, and to ensure the overall coherence of AMQP. The layered architecture is what defines the major version of the protocol.
Delegate the design work
AMQP is specified by a tiny, exclusve team. When a complex problem is broken into pieces, shaped by a clear architecture, it becomes possible for teams to work independently and asynchronously, on different pieces. This is the only way to solve large problems: break them down and let people specialize in different areas. The AMQP process is today a technical process. It should become an administrative one, defining frameworks for collaboration, and approving specifications when they emerge and have been proved.
Leverage the community
The AMQP process excludes expert user contributors. Given that messaging users are often highly competent engineers who at the least can act as "competent clients" for designers, this is a problem. There are only two justifications for excluding participation. One: it's legally complex. Two: it's technically unsafe. Both these can be solved, by defining suitable legal frameworks and by breaking AMQP into small pieces that anyone can experiment at implementing.
Leverage competition
AMQP aims to get one authoritative design. This assumes that there are no commercial rivalries, but there clearly are. Rather than suppress these, we can use them constructively by allowing more than one answer to any given problem. If one team proposes a way of delivering messages, and another team thinks it can make a better way, it should be allowed to. Perhaps the two teams can agree, but if they don't we should allow two answers to sit on the table at once. This enables competition, so better designs can emerge. It also forces layers to be more orthogonal, and validates the overall architecture.
Leverage the market
AMQP is shielded from market opinion. If users prefer a particular API, for example, that does not feed back into the AMQP process. But it should: market opinion, especially with open source products, is a very valuable indicator of quality. When it comes to protocol designs, quality valuation by the market can be measured by the number of independent open source implementations, and the number of users of such implementations. Rather than try to make quality decisions up-front, it is simpler to use a green-brown model where experimentation allows multiple "green" specifications that are pruned over time to leave a small number, or one, brown specification.
Use the natural syntax
AMQP uses binary framing for control commands ("Queue.Declare") as well as message transfer ("Basic.Deliver"). This is not ideal. Each piece should use the natural syntax. Command protocols should use text, not binary framing. This is how every successful IETF command protocol works. Text framing makes backwards compatibility trivial. There are no performance issues with command protocols, so parsing is not an issue. Text framing is easy to understand, easy to implement. Message transfer protocols should use binary framing, and can be significantly simpler than AMQP's current framing: smaller envelopes, no verbs, no channels, no dynamic addressing.
Use natural semantics
AMQP currently mixes asynchronous and synchronous conversations in one protocol. It makes the combined protocol complex, and it makes error handling tricky. When we split control commands and message transfer into two separate protocols we can make each simple. Control commands work best with synchronous, pessimistic dialogues: each request gets a success/failure response. Message transfer works best with asynchronous, optimistic dialogues: messages are sent with no confirmation, and reliability is layered on top, as higher level protocols based on acknowledgements and retransmissions, transactions, and so on. Messages can be batched, commands should not.
Push blame to the edges
AMQP currently pushes problems upstream. Application private queues are held on the broker. Slow consumers cause these queues to back-up, and probably the biggest issue for production use is that servers run out of memory, and crash. Applying flow-control to publishers is the wrong solution. Messages should be pushed without pity to the edges, and if these are too slow, that should count as a defect in the edge application, and handled locally: drop old or new messages, or raise a fatal error. Problems at the edge should not be allowed to move upstream, period.
Deconstruct the broker
Currently, AMQP considers a broker to be a mainframe: big, important, central. This is certainly one use case but it is a very bad design for high data volumes: one big central bottleneck. It is wiser to treat the broker as a host for arbitrary queues and routers, and to accept that in many cases, such applications optimally reside at the edges, not a central point. For example, holding private queues centrally makes brokers fragile, while pushing private queues to the edges makes brokers more robust (by pushing blame to the edges). Similarly, routing can be done at the publisher edge. Only the Wolfpack pattern (one-to-one-of-many) absolutely remands a central broker.
Conclusions
The AMQP protocol and process are complex in ways that make it difficult to build a Version 1.0 and which in the long run may affect the success of the AMQP project itself. I've outlined ten principles that will in my view solve the complexity. Most of these proposals are years old and have been made many times to the AMQP working group.
Comments: 3, Rating: 0
AMQP, Sea, Sun, and Desert
Written: 1239212115|%e %B %Y, %H:%M (amqp photos sandiego)
A brief report from the AMQP Conference at San Diego (AMQP'09) with photos of the event and the nearby Anza-Borrego desert state park.
We came to the fourth annual AMQP face-to-face, and the first one with a public conference. The organization by Matthew Arrot, Rita Bauer and the rest of his team was impeccable. You'll see from the first photo set, the USCD location was breath taking and we were spoilt with wonderful lunches, views, weather.
AMQP'09 was a unique event in many ways but mostly because it brought together such a diverse group of people, both an expanding AMQP work group, but also the core of a community of expert users. One of the weaknesses in the AMQP vision up to now has been that the "end user" has been represented only by large global businesses. At AMQP'09 the public seemed mainly to represent small teams, and their needs form an important part of the mix. iMatix is, of course a small team, but ironically our clients are all huge firms. Nonetheless, I often find the response of someone who has precious little time and money to spend on learning and using a technology more enlightening that that of someone with budgets.
The main reason for the public session on Day 1 was to present AMQP/1.0. Rafi and Rob did an excellent job presenting their work. Everyone who came to the event left with their own conclusions. Gone are the exchanges, just as everyone was starting to understand these. At one time on Day 2, the closed group was discussing "XML exchanges" for an hour or so, before I raised my hand to remind: "gentlemen, in 1.0 exchanges are gone." Our mental models take time to come to life, and they die hard.
In place of algorithmic exchanges that feed messages into a population of queues, we will have queues of messages that are scanned by a population of algorithmic links. While the design seems to work for mainstream scenarios, it is not yet clear exactly what this fixes from the 0.9.1 design. We lack a clear explanation of what is broken in 0.9.1, what the possible solutions are, and why the design chosen for 1.0 is the best solution. The argumentation, as one would say.
The argumentation is going to be needed, as more and more people invest in 0.9.1, and will continue to do so over the next year or so until AMQP/1.0 is mature enough to be supported by working products.
Some teams have exploited the exchange-binding-queue model elegantly: FastMQ's ZeroMQ does brokerless messaging by moving the exchange and binding to one peer, and the queue to another. It's unclear how this can work using the new queue-link model.
The difference between the old and the new models is, as far as I can see that the old model is easier to visualize as a flow of messages through exchanges into queues. The new model feels more like pointer manipulation. Maybe more efficient, but also more abstract. Given that it took several years to explain the old AMQP model (it is always totally obvious after six months of reflection), the extra effort needed to understand the new model may prove to be a problem.
People who are used to AMQP/0.9.1 should try to recall how they felt when first reading the exchange-binding-queue explanations. It was obvious, then it was not, and then after much re-reading, it became obvious again. Perhaps this was just alien technology. Or maybe these models are really hard work to understand, even (especially) when they are simple.
My in-progress judgement on AMQP/1.0 is that it looks good, but it is unclear why the changes were needed, and why an evolutionary approach was not possible. I'd have liked to have seen experimentation with the new model, using the existing AMQP/0.9.1 transport, for example. After all, it is trivial to define new classes in AMQP to work with a new set of broker-side objects. Or, I'd like to see the new proposed transport layer running with the existing AMQP/0.9.1 model. Bringing out a completely new AMQP model running on a completely new AMQP transport layer forces all implementers and users - brokers, clients and applications - to throw away their old code and move to new code, in one step. This seems designed to fail.
Having said this, if a new AMQP model is needed, or if a new AMQP transport is needed, we should make them. AMQP is still young enough to absorb this kind of change and if there were serious flaws with the exchange-binding-queue model, it's exactly the early adopters who will understand the need for redesign.
However: such change must be managed and its downstream impact must be minimized. It should be introduced in phases so that the new designs can be matured and validated by real use and competing implementations.
On the afternoon of Day 2 the group split into separate tracks, one to discuss technology and the other to discuss process, and legal aspects. Patents. It's a subject that causes distress because at their core patents (due to their cost and the risk they bring) are a game for large firms only. It is one of the few areas where large and small firms play in the same field, and whenever patents enter the picture the field tilts inexorably away from the smaller teams.
And like I said, it's the smaller teams that are key IMO to AMQP's success.
I'd like to report that the working group came to a firm decision to keep patents far away from AMQP but unfortunately this is not what happened. There were no decisions as such. There was no real criticism of Red Hat's act of patenting that famous XML exchange. Someone joked that one benefit of dropping exchanges in 1.0 was that this patent would become irrelevant.
However, standards committees are slow machines and the AMQP working group moves faster than most. We did make excellent progress on the idea that AMQP was more than one document, and consisted of a sort of ecosystem of specifications. We already have this, informally. The ecosystem is inevitable because AMQP is not a 100% solution. It needs supporting specs in all directions. Either vendors make these privately, with a chance of patenting, or they make them publicly, with a unilateral patent license such as the wiki.amqp.org site uses.
One can never stop a firm from patenting some extension to AMQP. But one can encourage firms to publish their specs in a form that precludes this. Not publishing the spec for functionality then becomes a clear statement of intent. Patents are an issue. but transparency around exactly what is safe goes a long way to solving that issue.
For a firm like iMatix, whether or not we invest in AMQP/1.0 depends very much on whether the AMQP process expands to include such an ecology of open, unilateral specifications. A big jump to new designs is one thing. A jump into a space that may have patent ambushes, quite another. If we're vocally sensitive to this issue it's because we've been hit by it before. In 2005, a meagre patent claim by Belgian firm AllisBlue caused us to exit the mobile applications market and abandon about Euro 250,000 and three years of investment into a mobile apps platform called SMS@. Any patenting activity around AMQP, no matter what the stated intentions are, is a threat to implementer and users of AMQP, and will keep smaller companies away from the table.
I'll continue to blog on this issue, and the progress (or lack of it) that the AMQP working group makes, over the next months and years.
On Day 2… well, on Friday I decided to skip class and head for the desert. The 9-hour jet lag and committee discussions on software patents began to turn my brain to mush. The state desert park of Anza-Borrego, the largest park in California, is just two hours' drive north-west from San Diego. A stretch of highway, and then a long windy trail over mountains and valleys, until one comes to this massive area surrounded by mountains.
When one drives in the desert, one uses an all-wheel drive and GPS. Halfway into Anza-Borrego my GPS died. My heart froze. GPS, while giving a godlike wisdom of where to turn, also makes one stupid. A paper map would make a good backup. In any case I had a gallon of water (89c at Walmart leaving San Diego) and stout shoes. Then I saw a small 'reset' hole on the GPS. Found tiny twig, inserted, pressed, and yay! GPS rebooted and I was safe again.
The hot and cold deserts, along with impenetrable rain forests, are those rare parts of the dry surface of the planet that have not been moulded by human activity. Some roads cross Anza-Borrego but mostly it's moulded only by nature: rising crusts, erosion from water and wind. The plain is hot and dry. The plants are all thorns and bristles. Many were in flower. The beauty of the desert flower is accentuated by its rarity in the dry landscape.
As one walks the hills, one is wafted by the scents of flowers and plants. One particularly sweet smell, a cross between sage and lavender, I traced to a small pine shrub which just had particularly fragrant leaves.
The air rustles with the noises of plants in the wind and the buzz of invisible insects. The ground is sandy where it's flat, rocky on the slopes. There are burrows of mice, or snakes. I saw neither. There are palms where the locals pump water up from the water bed. In places it comes up by itself, and springs dot the park. In the hills you see the work of flash floods, which carve out gullies in the rock. The desert comes alive at night but as the sun set I decided to find a place with a real bed.
I filled up and overnighted in a motel in Borrego Springs, a town of retirees with legs muscled from climbing the desert paths. Like the sheep the area is named after. I did not see any Borrego sheep, they hid well.
The empty wilderness contrasted with the utterly refined beaches of La Jolla (which, Rainey explained, is pronounced "la Hoya"). Neither felt anything like home, which is presently a calm street in the old canal zone of Brussels.
But one thing I realized: AMQP, like any city, and unlike the desert plains and mountains of Anza-Borrego, thrive or fail according to the diversity and energy of the people that inhabit it. It's people and openness, not technology, that make standards a success. And bringing together such a diverse and energetic group of people, the AMQP 2009 event smelled of success.



























































