Fundamentalism is a continuing historical phenomenon, characterized by a sense of embattled alienation in the midst of the surrounding culture, even where the culture may be nominally influenced by the adherents' religion. The term can also refer specifically to the belief that one's religious texts are infallible ...
Don't worry, I'm not going to talk about real religion, but rather about fundamentalism in computing. I first encountered this phenomenon in the 1980s, when I hung out with declarative programmers. (Imperative programs are evil! Declarative languages will overcome!) Since then, I've watched with interest as other true paths are progressively revealed and embraced by communities large and small.
One interesting contemporary example is Web
fundamentalism (aka REST), a creed that admits to only four operations, POST, GET,
DELETE, and requires that arguments to a remote operation be encoded in a URL. So if I want to request
something like "start running executable E with arguments 42 and 29 on
a 2 GHz processor with 2 GB swap space," I might say:
or (because I can encode things in URLs however I want):
I first encountered these teachings when we started working with Web Services as a technology for grid. We
noted that in our systems management applications, we frequently encountered the need to initiate, monitor, and
manage remote stateful activities, and proposed that these common
interaction patterns be codified in standardized Web Service
operations. The resulting Open Grid Services Infrastructure (OGSI)
achieved that goal nicely, and we and many others have found both it and its
successors, WSRF and WS-Transfer, etc., tremendously useful.
Most Web people were welcoming of this work: for example, the response to my keynote talk at WWW 2002, at which I described Grid as "use case for Web Services," was really positive--people seemed genuinely delighted to see Web Services being applied to challenging system management tasks.
However, OGSI upset the Web fundamentalists. We were codifying operations to manage "state," and furthermore using Web Services to construct the messages used to request those operations in a structured manner? These views were anathema to some. We had to (a) pretend that state did not exist and (b) transfer requests to operate on that (nonexistent) state in unstructured strings, with no provision for abstraction, name space management, composition, or any of the other methods developed for managing complexity in 60 years of computer science research.
Of course, there is method to this madness: for example, distributed systems are often more robust and scalable if state is maintained in clients rather than services. However, it is a big and unwarranted leap to say that because services should often be stateless, they must always be stateless. Similarly, because HTTP can be used to construct simple interfaces for some purposes, it does not follow that all interfaces must be constructed in that way. A hallmark of fundamentalism is a desire to apply simple rules ("programs are declarative," "there is no operation but POST", "services are stateless") to all situations. But computing is a large and varied world, with few opportunities for absolutist statements.
When I first met Web fundamentalists, I found them irritating, because they would not debate on technical grounds. However, they have ultimately proved to be entertaining. One never knows what outlandish thing they will say next!