2015-08-05 02:49:39 +00:00
|
|
|
I'd like to move away from using yesod for the web app, for a number of
|
|
|
|
reasons:
|
|
|
|
|
|
|
|
* It's by far the largest use of TH in git-annex, and TH is of course very
|
|
|
|
painful for the android port, other builds like debian mips that don't
|
2016-01-01 20:02:11 +00:00
|
|
|
currently support TH, etc. (Update: mips does support it now, it seems!)
|
2015-08-05 02:49:39 +00:00
|
|
|
* I think it's responsible for at least 50% of the executable size, and I
|
|
|
|
suspect a lot of that is unncessary bloat for parts of yesod that
|
|
|
|
git-annex doesn't really use.
|
|
|
|
* Hamlet constantly annoys me by rejecting any file that contains tabs.
|
|
|
|
**Rage**
|
|
|
|
* Hamlet contains code that's not really haskell, but looks a lot like it.
|
|
|
|
This is a continual frustration when dealing with the hamlet files.
|
|
|
|
* I find that Hamlet does not lend itself to being refactored, everything
|
|
|
|
is essentially an IO action with side effects of generating html, so
|
|
|
|
can't really bring proper FP tools to bear.
|
|
|
|
|
|
|
|
At the moment, servant seems like the nicest place to end up. Just as type
|
|
|
|
safe as yesod afaik, and very lightweight and simple and rather awesome.
|
|
|
|
|
|
|
|
As for the html generation, lucid seems like a good way to do it. Just as
|
|
|
|
fast as hamlet, and pure haskell code.
|
|
|
|
|
|
|
|
Game plan:
|
|
|
|
|
2016-01-01 20:02:11 +00:00
|
|
|
1. Upload a yesod-lucid to hackage. (done)
|
2015-08-05 02:49:39 +00:00
|
|
|
2. Get servant, lucid, maybe yesod-lucid, packaged in Debian
|
|
|
|
3. Start converting individual yesod Handler Html to Handler LucidHtml.
|
|
|
|
This will ditch the hamlet. This is by far the most work, but it can be
|
|
|
|
done incrementally w/o breaking the build.
|
|
|
|
4. Once all the hamlet is gone, remove the rest of the yesod stuff and
|
|
|
|
re-implement the routing etc with servant.
|