Download Haskell in an Industrial Context

Survey
yes no Was this document useful for you?
   Thank you for your participation!

* Your assessment is very important for improving the workof artificial intelligence, which forms the content of this project

Document related concepts
no text concepts found
Transcript
Haskell in an Industrial Context
Andy Moran
Haskell, Galois, and the Future
• Galois’ use of Haskell: why and where
• Challenges in continuing to use Haskell
• How do we meet these challenges
– Some suggestions
Galois Summary
• Mission: Advanced technology development
for Information Assurance
• Expertise
– Crypto development and validation
– Multi-level and cross-domain security
– Secure middleware
• Capabilities
–
–
–
–
–
High assurance engineering
Abstract modeling & analysis
Application of relevant theoretical research
Rapid prototype development
Domain-specific language development
Corporate Background
• Founded in 1999; spun off from funded OGI
research
• Profitable last 8 quarters, >50% CAGR
• Funding
– Self-funded from revenues
– 90% employee owned
• 6 Active Projects
– Mix of research and product development
• Clients
– U.S govt, multiple primes
• 20 employees total
– 15 technical staff
– Additional contract employees and subcontractors
High Assurance Engineering
• High Assurance means:
– Formal and semi-formal specifications, designs, models
– Formal and semi-formal correspondence arguments
• Not necessarily mathematical proofs
– Traditional testing
– Many non-functional, non-technical requirements about:
•
•
•
•
Physical security of code
Software process documentation
Change management
Release management
• High Assurance is not complete formal verification
– Which is why we think we have a chance …
• It’s all about gathering evidence that the product does what it
should
– It’s not about proving that it always does
Galois and Haskell
• Galois’ focus is High Assurance development
• With two exceptions, every project we’ve ever done or are
now doing have uses Haskell
• We delivered tools that are being used heavily:
– Cryptol
– GUI debugger for a specialized chip
– Syntax extension tool for client’s own language (suped-up
Happy + OCaml P4)
• Our biggest project relies upon Haskell
– High assurance arguments predicated upon use of Haskell
• Another project is about Haskell
• All others benefit from using Haskell
Why Haskell: Technical Benefits
• Type system very strong, expressive
• Type system exposes effects
• Laziness encourages combinatorial design
– Natural for many problems, particularly compilers
• Haskell is very high-level
– Promotes design-level programming
• Haskell programs look like designs to non-practitioners
– Enables us to try out creative solutions that might not be
tractable with traditional languages
• Able to express more complex algorithms
• Design-level debugging
– Trivial bugs disallowed by type system
– Get straight to the real bugs
• We’re very familiar with Haskell
But these arguments do not a business case make!
The Big Win: High Assurance
• Haskell is close to its semantics
– Providing evidence for H.A. properties is
possible
– Haskell is amenable to formal techniques
• Haskell’s type system can express and enforce
desirable H.A. properties (such as data
separation)
• Good handle on H.A. correspondence
arguments:
– Specification, design, model: all in Haskell
Indirect Business Benefits
• High productivity:
– We can prototype products/tools very quickly
• Competition:
– Not many companies out there using Haskell as an
enabling technology
• Familiarity:
– Most of Galois has been using Haskell since day 1
• Possibilities:
– Allows greater scope for high assurance development
– We can build in more functionality, to higher assurance
• Quality of Staff:
– Haskell practitioners tend to be extremely bright
It’s Not All Beer and Skittles …
• There are problems with relying upon Haskell:
– Technical issues
– Support
– Long-term viability
– Customer needs
– Customer perception
– Staffing
– Special government client needs
Development Issues
• We’re surrounded by nails
– When all you’ve got is a hammer …
• Happily, it’s a Swiss Army hammer
• Debugging can be a pain
– Especially debugging in the IO monad
– Existing debuggers tend not to support language
extensions
• Libraries only scratch library writers itch
– Not designed with industrial applications in mind
• Haskell encourages “abstraction addiction”
– It’s very easy to get tied up in knots
– Too much abstraction leads to maintenance headaches
Support Issues
• Volunteer-based support for compiler only
– Can’t depend on getting that showstopper fixed in time to meet
your deadline
• We push GHC to its limits, and so expose problems in the RTS
• Without Sigbjørn Finne on the payroll, at least three of our projects
would have been held up indefinitely
– Threaded RTS, Asynchronous I/O for Windows, elusive GC bug
– No 24 hour hotline
– Only common platforms get any support
• No industrial-grade tool support
– Profilers limited; debuggers very limited
– Libraries not tuned for performance
– Libraries, language extensions documented mainly in research
papers, if at all
• GHC user manual gives reference-level documentation to extensions
– IDEs very limited
Long-Term Viability
• Reliant upon Simon and Simon
– What if they start working on Word 2006?
– Others starting to play larger role, but still
small handful of key players
• Still a research language
– Exists to be test bed for experiments:
• Language design (Template Haskell, exotic type
systems)
• Compiler implementation (eval-apply, CMM back-end)
– This is A Good Thing
• But we need a stable language too …
General Business Issues
• Customers see problems:
– How are they going to maintain the code we built for
them?
– Will this weird language even be around next year?
• Customer perception:
– “What’s Haskell?”
– “What’s Functional Programming?”
– “Functional programs are slow!”
– “Why is it better than Java?”
– “If it’s so great, why isn’t everyone using it?”
• Staffing:
– Not that many Haskell practitioners out there
– Currently, we also need U.S. citizens
Government Issues
• Pedigree of compiler source
– Corralled repository
– Who worked on it before corralling
• Security of compiler source
– Who has write access
– How is repository protected
• Physical (key card access to server room)
• Network
– How patches are vetted before being applied
• How many “trusted” eyes have reviewed compiler source?
• These questions are asked of any tool being used to develop
sensitive applications
– If tool source changes often, the burden is increased
– Especially if we also need to update formal arguments and
models each time there is a change
Are We Alone?
How Might We Solve These Problems
Together?
What’s Been Tried Before?
Why Didn’t It Work?
Haskell Consortium
• An affiliation of companies that use Haskell, together
funding
– Providing technical support for compilers and tools
•
•
•
•
•
Timely bug-fixes
Patch release management
Version, platform management
Keeping up with GHC patches
Evaluating GHC enhancements for inclusion
– Pursuing industrial-grade development
• Developing new tools
• Enhancing existing tools
• Developing experimental compilers, interpreters, runtime systems
• Funding could be augmented:
– Members’ clients? Government? Charity?