Skip to content
Alberto edited this page Oct 21, 2016 · 2 revisions

Hi, this is a letter that write for myself but dicected towards you, the Haskell community. I don´t know if I will publish it or not neither what I am going to write here. Just my thoughs that are in my head trying to be expressed.

I'm Alberto a person impressed by Haskell 10 years ago when i was looking for a good language with good meta-programming in order to do genetic programming. Looking for Erlang, I discovered Haskell. Later I wanted to create a distributed web site for electronic democracy and , how not, I though in Haskell. But slowly I lost interest in the application and was adduced by the technical challenges. That required to distribute very long running tasks , synchrornization transactions etc. Long history short, I developed MFlow which was probably the first fully composable framework where everithing: forms,page elements (widgets), navigations, where composable. It was and is the first and the only restful continuation based framework without the problems associated: big session states among others. It also could save, recover and continue long running computations. It used backtracking for navigations and exceptions, which added much flexibility for doing transactions, specially long running transactions.

At this time I was very puzzled by the fact that I was the only one creating new monad to solve such problems while most of the haskellers were happy with the already known monads.

MFlow was server side, but the server widgets could use JQuery to create dynamic interactions where only the widget is refreshed.

Later I discovered that a client side framework with almost identical EDSL than MFlow could be possible. I found a new way to express continuations so that i could combine events, form elements and DOM elements so that I could make reactive applications fully composable in the browser. A push based, composable reactive framework with no relation with Conal FRP.

http://tryplayg.herokuapp.com/try/todo.hs/edit

The problem of distributed computing in the way I envisioned it stayed unsolved. The hplayground monad managed continuations in a way that asynchronous and blocking IO could compose. If IO could compose then distributed computing could too.

So I developed Transient which handled everithing every effect in a composable way. That means a functional way. There is no better way to manage composability than transient. It could be another engine, another monad, but there could never be a better syntax, a better algebra to write programs than in Transient. There would be no language with a higher level than Haskell with the Transient EDSL.

So I believed that this was the End of History for computer science and software engineering. At any of the moments when I presented MFlow, HPlayground and Transient I though that the expert people in the community would acknowledge the achievement and I would need little effort to make it known, and I would gain a lot of people trying to collaborate in the projects since the advantages were evident.

I have been deeply disappointed by the fact that despite some exceptions, the reaction has been quite the opposite. I have found quite more support and interest outside of the Haskell community. Of course it is my fault. Marketing science does not flow trough my veins. I'm only a awkward and veteran programmer who came to certain realizations by trying and trying very hard with the experience of many years working in software development. Probably only divine inspiration can explain this.

But it is not only my fault. There is something wrong in the Haskell community. I have been thinking about this. I have managed different hypothesis. The most probable and the less scary one is as follows: While other languages are similar to an established city, Haskell is like a community of gold diggers and Western pioneers. There is a sentiment of community and good will. Everyone is looking for unexplored territories where settling. Even they have the hope of finding some gold mine. Not for the money, but by the adventure and pass to history as the ones that discovered it. Everything goes well until someone coming out from nowhere find gold and claim some territory.

And that is what transient does in some way. It hits in the foot of many haskellers. It is little insulting if Juan Doe dig in your yard and find the gold. YOUR gold. It is also disturbing for a settler who has Just invested in cattle and constructed his ranch to find a guy who has found better farming techniques.

The problem is that the Haskell community has found that it is better by staying as it is: Only trying but not very hard to find the gold. How else can be explained the poor utilization of haskell abstractions to solve real problems. It is a obnoxious to see everithing done as if only were four monadic effects under the Sun, which are four versions of the state monad. It is symptomatic that the advances in solving real problems like async or Haxl, comes from either veteran or peripheral haskellers who are not involved in the community very much. In some areas there have been a real setback like in the case of Web applications, where WASH a project of 2005, a continuation based framework, was way more advanced and functional than the ones that came later, with the exception of MFlow. Where are the promises of Haskell?

I have to say that I'm sorry. But this is the last time. I don't want to continue saying it. Nobody can undo what has been already done. I can not undo it. It is evident that composing everything algebraically and monadically is the goal of functional programming. And also is the goal of computer science and software engineering alike. Transient is here to stay. It is able to make all software modular, composable and reusable. It allows to program at the specification level. It can make quite literally make user requirements run.

This is not a farewell. This is a declaration of war. I got enough irritated with list folders and monadwriters. I lost my patience with category wannabee theorists. I don't like this inaction. I will do Transient to be sucessful with or without you even against you.