Functional Programming

Functional Programming

Functional Programming

Sep 24, 2012

What do commercial users want from Haskell?

What do commercial users want from Haskell?

What do commercial users want from Haskell?

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.


Haskell delivers outstanding value

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.


Commercial users want us to keep expanding

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.


What is FP Complete doing to help?

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.