Thursday, March 26, 2009

Emergent vs Deliberate, Push vs Pull

The Web 2.0 "Emergent vs Deliberate" struggle for control is not new, the discussions are at least a couple of years old. However, it is still very applicable inside the enterprise due to the lack of Web 2.0 features in business applications. Add to this that Information Architects - strongly supported by document and records management experts, prefer controlled vocabularies over social freeform tagging for knowledge management. Imagine del.icio.us enforcing a centrally controlled taxonomy, instead of just suggesting tags to users based on the wisdom of crowds. The suggested tags are emergent, their quality driven by all del.icio.us users that have tagged the resources.


The "Push vs Pull Systems" by John Hagel is a broader model that describes the transition from centrally decided and pushed tools and applications into a decentralized pull-based model where users themselves find and combine software to solve the business problem at hand. Companies will want to try to harvest the benefits of the freeform, emergent social collaboration tools, while being able to govern these tools and processes. The problem is that most business applications today are not designed to combine "deliberate" with the "pull model". As stated by Dion Hinchcliffe:

"The challenge will be learning how to apply these new models effectively to business while not strangling them with the traditional aspects of enterprise software that can greatly limit their potential and have led to poor outcomes and excessive structure in the past."

Typically, a central business development unit supported by a well-known management consulting company will decide on SharePoint for collaboration and management of knowledge and then use the push-model to drive the adoption across the company. I've seen this strategy in practice lately, and I can tell you that it takes a lot of effort to deliver something close to a "consumer web" experience. This combination of SharePoint, deliberate and push-model to enable Enterprise 2.0 poses several challenges as described in "Sharepoint and Enterprise 2.0: The good, the bad, and the ugly". Compare this approach with Excel, the most successful long-tail application ever inside enterprises, that empowers business users to create self-service situational software solutions.

You need to relax the idea of central command-and-control taxonomy and governance if you’re to leverage emergence in the information and people ecosystem of your company, partners and customers. What's more important? To enble users to solve business problems or to enable them to store gold-standard records of those problems?

Wednesday, March 25, 2009

Enterprise 2.0 Zen: Emergent Crystalization of Quality

I am a huge fan of the book "Zen and the Art of Motorcycle Maintenance" which looks into the metaphysics of quality. A central part of this is "crystalization" driven by quality, you have to have a sense of what's good and what's not. Crystalization separates useful from meaningless in perceived information, it applies quality.

The elevator pitch of Enterprise 2.0 is that it is freeform, emergent, social collaboration that draws on our collective intelligence to solve business problems. So what exactly is "emergent"?

The idea behind the notion of emergence is simple:

Individual agents, self motivated and operating according to simple rules, can suddenly produce patterns. In certain circumstances, these patterns can evolve into behavior that is intelligent.

Emergence is what happens when the whole is smarter than the sum of its parts.

[Emergence: the connected lives of ants, brains, cities and software by Steven Johnson]

It is micro-rules leading to adaptive macro-behavior. So emergence is like crystalization, it can produce patterns based on standards for interaction that may lead to good results - it is collective quality if you like.

Wednesday, March 11, 2009

WCF Queued Dual Router Updated

I've updated the source for the WCF Queued Dual HTTP Request Response Router to now support sending out-of-band fault and notification messages back to the consumer.


The added unified fault handling support for router and services is using ChannelFactory<T> were T is IOutputChannel to support generic one-way channel shapes. The same generic WCF channel shape is used for sending notification messages.

The messages sent over the IOutputChannel are created using Message CreateMessage(...) to keep things generic in the router and on the service end. The fault and notification messages on the consumer end are of course strongly typed.

Faults and notification messages are sent from service providers using a ThreadStart delegate to send messages on separate threads to avoid being blocked by ongoing processing. This code is in the RoutedResponseScope class.

The sample code also shows how to integration "unit" test async dual WCF request-response MEPs with static EventHandler<T> events using anonymous delegates and ManualResetEvent thread synchronization.

Download the router example code here. The code is provided 'as-is' with no warranties and confers no rights. This example requires Windows Process Activation Service (Vista/WinServer2008), MSMQ 4.0 and .NET 3.0 WCF Non-HTTP Activation to be installed.