Skip to content

Get rid of hidden modules

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 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.

Trac metadata
Trac field Value
Version 7.0.3
Type FeatureRequest
TypeOfFailure OtherFailure
Priority normal
Resolution Unresolved
Component Compiler
Test case
Differential revisions
BlockedBy
Related
Blocking
CC
Operating system
Architecture
To upload designs, you'll need to enable LFS and have an admin enable hashed storage. More information