Messaging as a programming model
eventuallyconsistent.net
eventuallyconsistent.net
Of course, this is just an opinion from someone who has been doing a lot of functional and declarative stuff these days with Javascript using underscore, d3, and angular, so your mileage may vary. :)
Though I would have to disagree with you about explicit data types. In static typed languages key to productivity is using data types and resolve most of the bugs at compile time as opposed to run time. It would be a bad call in this case to borrow advices that better apply to other environments.
Arcitechture and code seperated and only requests and representations gets passed around by a microkernel.
To me, the benefit of a pipeline is when each filter can register itself (e.g. an event queue), thus the entity generating it has no knowledge of where it is going or who is processing it. A key indicator of this is when order of execution doesn't matter. In the case of logging in, order is critical so something somewhere must control the order each filter is ran. At this point you might as well have a unit that orchestrates this process itself.
Creating pipelines for all of these scenarios seems like it would mean you're doing things consistently across your code base, which will hopefully make it easier to maintain. It also might make it easier to reuse code (you can share filters between different services).
I think this is much of the point behind this pattern, actually.
http://en.wikipedia.org/wiki/Actor_model#Actor_libraries_and...
Being C programmer at the time and rather repulsed by all that was missing in Occam yet enamored with the Transputer I designed a rather straightforward and easily understandable extension of C that fully incorporated CSP and could be compiled to either directly use the Transputer's hardware or to architectures that didn't have it. Alas the design died on a corner of my desk because I had "real" work to do.
I still think Hoare had a good idea and would love to see this author's work fully fleshed out and implemented.
The pipeline described in the article is very similar to ServiceStack's request pipeline (https://github.com/ServiceStack/ServiceStack/wiki/Order-of-O...) where Global, Service and Action Request and Response Filters allows composition of custom logic to be selectively applied at different levels of granularity and priorities.
ServiceStack's message-based design is what allows it to provide .NET's most succinct, end-to-end typed API without any code-gen or post-build steps. You're able to re-use the code-first DTO's services were defined with, as-is, inside clients. This has many benefits, message-based DTO designs are more resilient, and support the natural evolution of services. It's inherently simpler with less friction as client and server call-sites have symmetrical parity as the same DTO the client sends is transparently hydrated into services on the server.
Message-based design's are also inherently more re-usable as they encapsulate services in their most re-usable form, which is what allows the same service in ServiceStack to be called via HTML/Web, REST, SOAP, MQ endpoints in JSON, XML, SOAP 1.1/2, HTML, CSV, JSV, MessagePack and Protocol Buffers formats with no effort.
None of the articles I've found had any substance, but the it was fitting that hardware diagram[2] looks very similar to Bret's "vision from the 70s" :) [3]
[1] http://www.technologyreview.com/news/517876/ibm-scientists-s...
[2] http://www.networkworld.com/news/2013/080813-ibm-devises-sof...
Messaging has some cool properties. Static deadlock analysis. Potentially idem-potent design allowing response-less interfaces (e.g. send a state message instead of an incremental update; eventually state will settle). Transparent distributed processing. Queuing and fault tolerance, not for free but pretty easy.
It takes a mental wrench to move to this model, but I think its worth it.