Links: The Next Thing in Functional Programming?

On 6 April 2005, I attended the Links meeting in Edinburgh, Scotland. It was an interesting day, and I heard lots of interesting thoughts about future work, but one awkwardness was that different participants seemed to have wildly different goals. I thought it might be useful to try to identify these goals. Here are my candidates: All these goals are worthy, but it seems unlikely that a single project can accomplish them all. And except that making ourselves relevant might require a big community effort, the goals seem largely unconnected. Each goal has its own individual interest, however, and I discuss them below.

The next functional language

I'm quite keen to work on the next functional language. A consolidation, especially if it simplifies what has gone before, could provide a new platform for the next leap forward. It might be a good way to get a new generation of implementors to join our community. And at least across the Haskell and ML communities, there seems to be unusually good agreement about fundamentals. Such agreement is relevant because at minimum, we want something that current functional programmers can use for their next project. This minimum is also a good maximum: a consolidation effort is most likely to succeed if it is aimed not at the masses but at the ICFP community, where we know what we're about. Unifying current practice is difficult enough without venturing into domains we don't understand.

Making functional programming relevant

How do we make functional programming relevant in the real world? Constructing an important, useful artifact is a good strategy. But I have grave doubts about doing a language: I would rather build Unix than C. I also worry about web programming as a domain. As Olin Shivers said, that ship has already put out to sea: we would have to deal with a huge pile of existing standards, middleware, entrenched practices, and who knows what else. (No fun!) By the time we get our act together, will the whole enterprise have ossified to the point where it is impossible to change anything? Will it still even be important? As Fritz Henglein suggested, I would rather work on a new problem, such as peer-to-peer programming or sensor-network programming.

A community effort

Independent of whether we ever make functional programming relevant, I'm game for a big community effort, primarily because I really enjoy this community and the people in it. Benli Pierce pointed out that the community we're talking about is a community of researchers. If we are going to do something, either it needs to lead to lots of research results, or it needs to be a lot of fun. We can't do it only because there's a chance of affecting practice. (Phil argues that if we do affect practice, it will have huge benefits feeding back into everyone's research. But to affect practice depends on so many random events that the chance is small, so even if the potential payoff is huge, we can't afford to invest a big effort on this chance alone.) I would love to see a much broader discussion of what might be a big, fun project we could do together. I'm not convinced a new language is the right project---we might have more fun doing something serious with the languages we already have. For example, suppose we build a really good library with excellent mechanisms for packaging and distribution. Can we give functional programmers the CPAN experience, only better? Or to take another example, sensor-network research is currently done on top of something called TinyOS. TinyOS is small enough that our community could replace it with something written in a functional language---but there are many hard problems to be solved.

Web programming and services

Finally we come to programming with the web. While I personally am not motivated by this goal, it seems an honorable one. But it also seems like a goal that doesn't require a huge group. I bet around three senior people, working with students and junior colleagues, could do something really interesting with a single language that unifies the browser, server, and database layers.

Closing thoughts

It was a pleasure to spend a day thinking about the long-term future instead of just the next paper or the next proposal. There are lots of interesting and exciting things to do. I hope we can develop mechanisms for like-minded people to find each other, so that each of the goals articulated at the meeting can be pushed forward.
Back to Norman Ramsey's home page.