longterm goal
This commit is contained in:
parent
3e35fe0226
commit
a6fbf20671
1 changed files with 32 additions and 0 deletions
32
doc/todo/ditch_yesod.mdwn
Normal file
32
doc/todo/ditch_yesod.mdwn
Normal file
|
@ -0,0 +1,32 @@
|
||||||
|
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
|
||||||
|
currently support TH, etc.
|
||||||
|
* 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:
|
||||||
|
|
||||||
|
1. Uploadd a yesod-lucid to hackage. (done)
|
||||||
|
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.
|
Loading…
Add table
Add a link
Reference in a new issue