id	summary	reporter	owner	description	type	status	priority	milestone	component	version	resolution	keywords	cc	os	architecture	failure	difficulty	testcase	blockedby	blocking	related
5094	Get rid of hidden modules	mcandre		"I'm writing a Haskell script to automate logging into my university's authentication system. This problem lends itself to web scraping. Just request an HTTPS page, fill in the forms with username and password, and click submit.

The [http://hackage.haskell.org/package/shpider Shpider] package is a wrapper around the popular C scraping library Curl. While the author went to some effort to Haskellize the many technical options one can supply to a Curl operation, he put all the constructors for the options in a hidden module.

How does this impact a Shpider app? It means the app can't do ordinary things like specify a useragent string or set a connection timeout. Each of these is important: Until the app logs the user into the university portal, he cannot access the Internet. But the app needs to access the Internet to verify the login portal's SSL certificate. Shpider has an option for this, but the option's constructor is only available as a hidden module in the Shpider package.

I could go on about the need to circumvent artificial permissions, but here the developer isn't even using them correctly. {{{CurlUserAgent}}} exists, but it's worthless unless it's exposed to code in outer modules.

Please consider dropping support for hidden modules. Coders write around them anyway, because they need to, because they're an inconvenience."	feature request	closed	normal		Compiler	7.0.3	wontfix		dcoutts	Unknown/Multiple	Unknown/Multiple	GHC rejects valid program					
