Over the next two years Haskell will have a lot more users, including many in commercial settings. We at FP Complete spend a lot of time interviewing and studying current and potential users, and at the recent ICFP gathering in Copenhagen many attendees encouraged me to talk more about what we have learned.
The great news is that people really like Haskell. It’s an outstanding language, and very applicable to a number of business problems, especially those requiring these key Haskell benefits: • Productivity: fast prototyping, efficient implementation, little time spent debugging, easier and more agile maintenance and reuse • Correctness: concise accurate code, type safety at compile time • Performance: Multicore and parallelism, without introducing bugs and without low-level coding
Several industries value those key benefits, such as • Finance, pricing, and trading • Data analysis, including static/file/database, as well as dynamic/stream/periodic analysis • Platform makers: CPUs, GPUs, operating systems, etc. • High-performance computing (HPC), aka supercomputing • Internet services: mobile and Web applications
That’s exciting: these are several of the world’s leading industries, with a lot of projects and developers. So Haskell has plenty of potential users already. But top developers in well-funded industries are used to top tools — so they have a long wish list.
Users tell us they need libraries, tools, and some DSLs — reusable pieces of software that make people more productive. Educational materials are also important. Quality, support, predictability, learnability, and interop are all mandatory. Here are some of the requests that come up most frequently or most strongly.
The community resources, especially the component libraries, are incredibly valuable, but need to be strengthened and curated: providing ways to understand which are the most popular and best packages, and which have owners and maintainers. Users want to understand where to get support, where to give feedback and make requests, and what level of responsiveness they can expect from any package’s maintainers. And online resources should be reliably up, accurate, and secure.
An easy cross-platform IDE for learning and for daily productivity is a must. The option to use a thorough IDE is a given with most languages, and it is time for Haskell to catch up. Michael Snoyman is taking the lead on this issue for FP Complete, working with several contributors. Contact him if you want to help.
Debugging, tracing, more profiling, general help understanding and working with laziness and memory management. These Haskell features are powerful and can isolate the user from needless detail — but for some people this detail is not needless.
Error messages could more clearly pinpoint the source of a mistake and how to fix it. Bartosz Milewski and others have commented on how the conciseness and abstract power of Haskell makes it tricky for the compiler to guess what else you might have meant. Deep solutions will be challenging, but tactical solutions will help.
Haskell cross-platform support is a good start, but needs to be more thorough, especially on Windows, which is more popular with corporate users than with the academic community, and more mobile devices. Similarly, Haskell needs to be better at working with other middleware, languages, and applications. Haskell has to work well in a hybrid networked environment, rather than on individual machines running pure Haskell apps in isolation. Companies have made huge investments in their libraries, network services, and management systems, especially around .Net and Java, and we become much more valuable by connecting to these. Single-language apps are less common than many researchers imagine, and deployment and interop issues much more common.
Extreme scalability work is very far along, but needs to be completed — working with many cores and with a variety of clusters and clouds. We are very close. Haskell will be competitive in the big leagues.
Busy users want to be shown how to make typical useful apps without reinventing the wheel. Educational resources online are very good, but need to be very much better, including curation, quality control, maintenance, and more: not just for beginners, but also for intermediate users solving nontrivial business and IT and technical problems, and even some advanced users. Libraries should include accurate docs, meaningful samples, tutorials, and cookbooks.
Release management is hard and needs to keep improving, including versioning and package management. The clarity provided by the Haskell Platform is a big plus, and we need to expand in this direction: providing predictable updates that guarantee compatibility with past releases (unless otherwise documented), a comprehensive set of features with a single install, full compatibility among all the included libraries, and correct behavior across all supported platforms. Simon Peyton-Jones suggests that commercial users may need different releases from researchers, emphasizing stability over the newest experimental features. Where priorities must be set, they should take into account market share — for example, what portion of developers use Windows 7 or call Java components.
We are writing and integrating code! We’re hard at work on our very first tools, which will be in beta before the end of the year, taking a bite out of the work items suggested above. As you can imagine, Web support and IDE work are high on our list. We’re also working on some resources to help people get started with Haskell more smoothly and easily.
We are offering Haskell training services for corporate customers, both directly and with our partners. And soon we will be offering get-started and get-productive consulting services, for companies that want to accelerate their teams beyond just classroom work. If you want people at your company to learn Haskell, we would be glad to help.
We are also exploring ways to help the community with gathering and curating educational materials. More on this and other initiatives will be announced over the next few months.
We believe FP Complete has a role to play in getting this great community’s work adopted by many, many more users, and we appreciate the votes of confidence in our company from leaders throughout the community. Haskell deserves big success, and the winners will be not only developers, but all the people who get to use on-time, reliable, and high-performance software written in this outstanding language.