
Hi Bjorn, Thank you, that is good to hear. Thank you for giving us the better API as well. Frederik On Thu, Jan 24, 2008 at 11:03:58PM +0100, Bjorn Bringert wrote:
Hi Frederik,
I agree with your comments about the headaches of Haskell library stability. I made the change because it seemed like the old library had no users. I should put my money where my mouth is, Network.CGI.Compat is now back in the cgi package.
/Bjorn
On Jan 22, 2008, at 18:28 , Frederik Eaton wrote:
Hi Bjorn,
Well, I don't know what the solution is. As I have said, I think it would be best to keep Network.CGI.Compat. That way, users of the old module just have to change the module name, plus they don't have to hack cgi-compat to get it to compile when cgi is already working.
A typical project of mine uses 10 or more packages, and something that makes me reluctant to use Haskell is the experience that after a few years I will end up having to maintain separate versions of significant numbers of those packages if I want something I wrote to stay working. Haskell is supposed to be good for writing large projects, but large projects need stable libraries or they become a maintenance nightmare. It's rather worrying to see that people seem to think that if I don't have time to participate actively in the mailing lists or upload stuff to hackage, then my code doesn't exist...
Maybe there is a high cost to keeping Network.CGI.Compat in the cgi package, but I don't see any reason other than an aesthetics, which seems like less of a priority than backwards compatibility.
Frederik
On Tue, Jan 22, 2008 at 05:31:01PM +0100, Björn Bringert wrote:
Hi Frederik,
(I'm CC:ing the libraries list, so that anyone who wants to have Network.CGI.Compat back in the cgi package can shout.)
That exact module actually used to exist in the cgi package as well (it implemented the complete API of the old Network.CGI), but after a few releases I removed it since it didn't seem to have any users. That was quite a long time ago, and you are the first person to complain.
The purpose of cgi-compat is actually not to provide Network.CGI.Compat, but rather to be installable on older GHC versions, hence the main module name Network.NewCGI.
I'm not sure if there is sufficient demand for adding Network.CGI.Compat back into the cgi package. The old Network.CGI seemed to have very few users, due to to it's restrictions. You can always get Network.CGI.Compat from here, and include it in your program: http://www.cs.chalmers.se/~bringert/darcs/cgi-compat/Network/CGI/Compat.hs
/Björn
Frederik Eaton wrote:
Dear Johannes, Thanks, that works for me. Bjorn, perhaps it would be easier to put these five lines in a module (Network.CGI.Compat?) in the new package, rather than having people maintain and download a separate cgi-compat package? Perhaps the two other functions in the old CGI interface can be implemented in terms of the new API as well? Best wishes, Frederik On Mon, Jan 21, 2008 at 09:50:46AM +0100, Johannes Waldmann wrote:
If you need the old "wrapper" function, then use something like this:
wrapper :: ([(String,String)] -> IO Html) -> IO () wrapper f = runCGI $ do
e <- getInputs a <- lift $ f $ e output $ renderHtml a
best regards, Johannes Waldmann.