snapframework / snap

Top-level package for the official Snap Framework libraries, includes the snaplets API as well as infrastructure for sessions, auth, and templates.
http://snapframework.com/
BSD 3-Clause "New" or "Revised" License
455 stars 68 forks source link

reloading functionality without heist #28

Closed tcrayford closed 12 years ago

tcrayford commented 12 years ago

Currently, if I want to use the reloading functionality, I have to depend on the snap package, which depends on heist. This means I have to use an old version of blaze-html (yay, dll hell), if I want reloading (which all sites really want to use).

There are two options (as I see it) here:

a) move the reloading functionality outside of the snap package, so users can depend on it without depending on heist

b) stop the toplevel snap package depending on heist

I think the first is easier, and should be relatively easy to do.

mightybyte commented 12 years ago

I'm kind of inclined to leave things as-is. Option b is not very attractive. The whole point of the snap package is to integrate things, and Heist is one of the things we're integrating. I fully support your desire to use reloading functionality without using Heist, but your argument hinges on use of the absolute bleeding-edge blaze-html version. Historically I think we've kept up with new releases of major dependencies pretty well. The reality is that this choice between dll hell and not being on the absolute bleeding edge of development is a fact of life given the fast pace of today's Haskell ecosystem. So that reason alone isn't really sufficient for me to move the reloading functionality. In fact, the latest version of Heist already supports the newer version of blaze-html, so you could just build from source.

That being said, I discussed this with Carl (the guy in charge of the reloading code) and he was not completely opposed to the idea. I'm not opposed to the principle either. So if Carl doesn't get around to it, then I'll accept any pull requests for this that meet our quality standards.

mightybyte commented 12 years ago

Ok, Carl got this working and pushed to github today. It's in the 0.9 branch. We also have two new standalone packages called snap-loader-dynamic and snap-loader-static. Neither of them are required by the snap package and snap-loader-static does not depend on snap either. snap-loader-dynamic is only required if you build the default project template with -fdevelopment. This ended up being a really positive change because it eliminates the need to build snap with -fhint for those who want reloading. These changes will be available on hackage in the 0.9 release of Snap.

tcrayford commented 12 years ago

awesome. Thanks a bunch you guys :)