-
Notifications
You must be signed in to change notification settings - Fork 12
Roadmap
This is my roadmap for the creation of a general Haskell IT platform
Serialization keeping internal references. Necessary for "organic" efficient logging and recovery
Need some refactorization
STM Database cache
completed
Logging, recovery of process state and workflow EDSL
need a rewrite of Patterns.hs using applicative combinators.
Server-side web framework and application integration platform.
It is the backbone of all the other functionalities
essentially completed
Practically finished, with extensible events. it is the EDSL of MFlow for composing pages, but running fully in the browser Therefore it is a Single page, client side framework. It uses Perch
is an EDSL with the syntax of Blaze.Html running in the browser, updating the DOM tree Run using the Haste compiler
-
purescript and
That could be done since the MFlow-hplayground EDSL it is rendering independent. Need a new instance of
FormInput
for GTK widgets basically. Since the EDSL used by MFlow and hplayground for the creation of widgets is fully composable, to have the same EDSL for some GUI toolkit would make this the first GUI toolkit ever that have composable widgets.
Extending it to run in Cordova/phonegap and all the cordova compatible smarphone frameworks. Done with configurable events.
Transient is intended to be a simple monad/applicative/monoid fully charged with all the possible effects that a programmer may need from the beginning. It is intended for newbies in order to experiment the full power of Haskell without the need to know about category theory, how to define monads or how to use monad transformers. It is intended to make people productive using haskell from the first week of learning. Since it will have all major effects, it will permit to program at the specification level. A detail of the philosphy behind is this:
https://www.fpcomplete.com/tutorial-edit/An%20EDSL%20for%20hard%20working%20IT%20programmers
I recently implemented the backtracking mechanism of MFlow using the Transient monad facilities by adding additional primitives without changing the monad instance.
Transient is essentially, the monad of hplayground. In the long term MFLow and hplayground will be integrated in Transient. Transient has now a basic console interface that permits the creation of fully composable services. Finally, this EDSL will execute and distribute programs in the cloud and interact with the user in web browser, GUIs and console applications depending on the capabilities and need of the user.
To Integrate MFlow and hplayground in a isomorphic framework
The page EDSL is the same in MFlow and HPlayground.
create a modifier
inBrowser :: Widget a -> View Html a
So that if the page fragment will be compiled as hplayground code and executed in the browser. Will seamlessly receive and send responses via AJAX
The Widget monad will be defined in MFlow as a "textualizer" of the haskell code:
let x= "hello"
y= "hi"
in inBrowser wlink x <|> getString y
Will be transformed into:
"wlink \"hello\" <|> getSting \"hi\""
Then this text output will be hplayground code, that will be compiled to JScript
The response will be returned by AJAX.
Compilations will be cached
addition of onServer
to hplayground to execute code in the server
will be implemented as a AJAX server service
A common EDSL for server and browser with dynamic inBrowser and onServer execution depending on runtime conditions and capabilities of server and browser.
Each sentence will have attributes of capabilities demanded: database query, display HTML, JS execution etc
server & client will have capabilities + dynamic attributes: server and client load etc
The EDSL will decide where the execute the code depending on the above capabilities & attributes
MFlow in the cloud using synchornization, autodeployment (moving code), automatic failover and distribution of request load and data. It will use an extension of the above mentioned web architecture for moving code and disgtribution of resources.
Use the MFlow de-inversion of control, backtraking, login and recovery to handle the weak coupling between cloud nodes.
The goal is an unified architecture for the Web an the cloud where the Browser is one mode node in the cloud and an unified haskell-embedded language for IT.