Est. 2001 Advanced

Surf

A concurrent research language recorded as appearing in 2001 and now dormant - and a case study in a language whose only surviving trace is its catalog entry, buried beneath a decade of unrelated software that shares its name

Created by Not publicly documented - no paper, technical report, thesis, release, or project page naming an author or sponsoring institution for a concurrent language called Surf has been located

Paradigm Concurrent (per the catalog record; no surviving specification describes the concurrency model, whether message passing, shared state, dataflow, or something else)
Typing Not documented in any surviving public record
First Appeared Around 2001 (the year given by the catalog record under which the language is preserved; no independently datable artifact has been located to confirm it)
Latest Version None documented - no versioned release, distribution, or repository is publicly recorded

Surf is recorded as a concurrent programming language for research use that first appeared around 2001 and is now dormant. That sentence contains nearly everything that can be stated about it with confidence, and this page is honest about why: no specification, implementation, paper, technical report, thesis, manual, or project page for such a language could be located in the web searches, encyclopedia and catalog lookups, and academic-index queries conducted for this article.

Surf’s case is made much harder by its name. Unlike a rare coinage, “surf” is an ordinary English word that has been attached, over the last three decades, to a submillimetre astronomy package, a foundational computer-vision algorithm, a minimalist Unix web browser, a Dutch national research-network organisation, a Rust HTTP client, a Go scraping library, a Python RDF mapper, and (in the near-miss form Surfer) a commercial contour-mapping program - none of them programming languages, and all of them better indexed than any 2001 research prototype could hope to be. Most entries in this encyclopedia reconstruct a language from its surviving artifacts. This one documents the rarer situation of a language known only from its catalog record, and treats the gap itself as the subject: what the record says, what its classification would have meant in 2001, which other SURFs it must not be confused with, and what its disappearance says about how research software is lost.

What the record says

The catalog entry that preserves the language records five facts:

FieldRecorded value
NameSurf
Year2001
ParadigmConcurrent
CategoryResearch
StatusDormant

That is the entire documented corpus. Each value should be read with the caveat that none of them has been independently confirmed against a primary source, because no primary source could be found in any archive searched. The year in particular should be treated as approximate. Catalog compilers of obscure languages typically take a date from a single paper, report, or bibliography citation, and a citation year is not necessarily the year a language was designed, first implemented, or first released - for a research language, those three dates are frequently years apart.

It is also worth noting what the record does not say. It gives no creator, no institution, no country, no implementation language, no host platform, no syntax family, and no expansion if the name is an acronym. Those absences are why this page asserts nothing about them.

What the classification would have meant in 2001

Two things can be inferred from the record. Both are labelled here as inference, not fact.

“Concurrent” plus “Research” describes a specific and unusually crowded genre around 2001. The turn of the millennium was a high-water mark for concurrency research in programming languages, driven by three forces converging at once: the maturation of process calculi as a design tool, the rise of the internet as a programming target, and the first serious industrial reckoning with the semantics of shared-memory threads.

On the theory side, the pi calculus and its descendants had become the standard vocabulary for describing mobile, communicating processes, and languages were being built directly on top of them. Pict, from Benjamin Pierce and David Turner, had shown in the mid-1990s that a full programming language could be given a pi-calculus core. Fournet and Gonthier’s join calculus had produced a second lineage, realized in JoCaml and later carried into mainstream languages by Microsoft Research’s Polyphonic C#. Abadi and Fournet’s applied pi calculus, presented at POPL 2001, extended the framework to reason about cryptographic protocols. Concurrent constraint programming had its own line running through Oz and the Mozart system, whose 1.0.0 release had appeared in January 1999.

On the industrial side, 2001 is the year the Java community formally admitted that its threading model needed rebuilding: JSR 133, the revision of the Java Memory Model, passed its review ballot between 29 May and 11 June 2001 and formed its expert group on 12 June, beginning work that would not reach Final Release until 30 September 2004. Erlang, already open-sourced by Ericsson, was demonstrating that lightweight processes and message passing were a production technique rather than a research curiosity.

A concurrent research language appearing in 2001 therefore had an obvious ecological niche - most likely a small, calculus-derived language with first-class channels or a variation on message passing, implemented as a compiler or interpreter attached to a thesis or a research group’s ongoing project. That establishes plausibility. It establishes nothing whatever about which part of the niche Surf occupied.

Research languages of this kind have a characteristic failure mode, and Surf’s status matches it. The typical concurrent research language of the period existed as a compiler on a departmental FTP server or an early project web page, documented in a conference paper and perhaps a technical report, maintained for the duration of a grant or a doctorate. When the grant ended or the student graduated, the page went stale, the server was retired, and the language survived only in citation lists. Dozens of languages from this era are known today from a single paper. Surf, if the record is accurate, is one that lost even that.

Not to be confused with

Because the name is so heavily reused, it is worth being explicit about what this language is not. All of the following are documented, and none is a concurrent programming language from 2001.

NameWhat it isWhy it is not this language
SURF - SCUBA User Reduction FacilityA Starlink Project astronomy package by Tim Jenness and John F. Lightfoot of the Joint Astronomy Centre, Hilo, Hawaii: a set of ADAM tasks for reducing demodulated data from the Submillimetre Common-User Bolometer Array on the James Clerk Maxwell Telescope. Its programming interface is described in System Note SSN/72.2 (dated 10 July 2000) and its version 1.6 user manual in User Note SUN/216.8 (dated 3 April 2003, copyright 1997-2000 and 2003).It is a data-reduction application with a library API, not a language, and it has no concurrency dimension. It is nonetheless the most confusable entry here, because it is a documented computing “SURF” that was actively developed and documented across exactly the years 2000-2003
SURF - Speeded Up Robust FeaturesA local feature detector and descriptor in computer vision, published by Herbert Bay, Tinne Tuytelaars, and Luc Van Gool and presented at the 2006 European Conference on Computer Vision. Partly inspired by SIFT, it uses an integer approximation of the determinant-of-Hessian blob detector over an integral image, and an application of it is patented in the United States.It is an algorithm, not a language, and it postdates the recorded year by five years. It is also the single largest obstacle to searching for anything else called SURF
surf (web browser)A minimalist web browser for Unix-like systems developed for suckless.org (credited to Christoph Lohmann, with Enno Boland and other suckless contributors among its developers) and first released on 10 September 2009. Written in C on WebKitGTK, it has no graphical controls at all and is driven by keyboard shortcuts and X window properties; configuration is done by editing a header file and recompiling.It is an application released eight years after the recorded date, and it is a consumer of concurrency at most, not a language for expressing it
SURF (Netherlands)The Dutch national cooperative for ICT in education and research - the organisation behind SURFnet, the country’s national research and education network - which by its own published history was set up as the SURF foundation on 25 March 1987 by fourteen Dutch universities, with SURFnet bv established on 1 January 1988. It is based in Utrecht.It is an organisation, not a language. Its long presence on the web means a large share of results for “SURF” plus any research term point to it
SURF (HOPL entry)The online HOPL encyclopedia does record a language named SURF, identified there as a CAD language existing in three versions.It is a computer-aided-design language, not a concurrent one, and HOPL’s entry gives no year at all, so nothing in it matches 2001. If the encyclopedia record and the HOPL record refer to the same thing, then the paradigm and category in the record are both wrong; more likely they are simply two different things sharing a short name
surf (Rust crate), surf (Go library), SuRF (Python)Three unrelated modern libraries: an HTTP client framework from the http-rs group, whose crates.io name was first published on 9 April 2019 (as a Tide helper crate) before becoming the client; a stateful programmatic web-browsing library for Go; and SuRF, an object-RDF mapper built on RDFLib, listed on the W3C Semantic Web wiki.All are libraries in other languages, all postdate 2001, and none is a language in its own right

Alongside these, the ordinary sense of the word - surfing the web, surfing waves, surf music, surfactants, surface science abbreviated in citations - accounts for the overwhelming majority of results for the term.

What could not be verified

In the interest of transparency, and so that a future editor with better sources can pick up where this page leaves off, here is what was searched without result:

  • General web search, under “Surf” and “SURF” combined with programming language, concurrent, concurrency, process calculus, pi calculus, coordination language, research prototype, thesis, and 2001, with results about the SURF algorithm, the suckless browser, surfing, and surface science filtered out
  • Wikipedia (including its full-text search API and its list of concurrent and parallel programming languages, which contains no Surf) and Wikidata, whose entity search for “Surf” returns the Dutch organisation, the browser, the sport, several albums, an asteroid, and no programming language
  • dblp, searched for publications titled or keyworded with Surf in combination with language, concurrent, and calculus; every pre-2010 hit concerns geometric surfaces or unrelated work
  • The Esolang wiki, whose search API returns zero hits for “surf”, establishing that the language is not an esoteric one under this name
  • FOLDOC, which has an entry for surfing in the Internet sense and none for a language
  • PLDB, the large community language database, which has no concept page for surf
  • The online HOPL encyclopedia, which was reachable and does contain a SURF - catalogued as a CAD language in versions 1 to 3, with no concurrency or research classification and no 2001 date. This is the closest thing to a catalog match found anywhere, and it does not match
  • Starlink’s own documentation, which was reachable and confirms that the SURF of that period is the SCUBA User Reduction Facility, not a language

No match was found in any source that could be reached. Accordingly, this page asserts no creator, no institution, no concurrency model, no type system, no syntax, no implementation status, no platform support, and no influence relationships in either direction. If the language survives anywhere, it is most likely in a conference or workshop paper that search engines index poorly, in a doctoral thesis under a title that does not lead with the language’s name, or under an expanded acronym that a search for the bare word “Surf” cannot reach.

Why it matters

It may seem odd for an encyclopedia to keep an entry it cannot substantiate. There are two reasons this one stays, and both are the point of the site.

Research languages disappear faster than commercial ones, and 2001 is recent enough that this should be surprising. A dormant research language from 2001 is not an artifact of the pre-web era. It was born into a world that already had the arXiv, CiteSeer, SourceForge, and departmental web pages - a world where preservation should have been nearly automatic. That a language could be catalogued as existing in that world and still leave no retrievable trace twenty-five years later says something uncomfortable about how thin digital permanence actually is. Project pages on university servers vanish when a domain is reorganized. FTP archives are decommissioned. Workshop proceedings that were never assigned a DOI fall out of the indexes. A COBOL dialect from 1968 with a printed manual in a library is, in a real sense, better preserved than a 2001 research compiler whose only home was ~student/surf/ on a departmental machine.

A common word is a preservation risk. Naming a language “Surf” in 2001 was reasonable - it was evocative, short, and, in a computing context, not yet heavily taken. Within five years it had been claimed by one of the most cited algorithms in computer vision; within a decade, by a widely used Unix browser; within two, by packages in Rust, Go, and Python. Every one of those made the original less findable, and none of them did anything wrong. Preservation is not only about keeping the artifacts, it is also about keeping the metadata that lets someone find them again - and a four-letter dictionary word with no author, no institution, and no acronym expansion attached is metadata that has already failed. The lesson generalizes: if you want your work to be findable in twenty years, give it a name that nothing else will want.

If you have primary information about this language - a paper, a thesis, a technical report number, an acronym expansion, a research group, or a memory of using it - it would be genuinely welcome; a single surviving artifact would let this page be rewritten into a real history.

Timeline

2000
Context for the name, and a documented near-miss: the Starlink Project publishes System Note SSN/72.2 describing the programming interface of SURF, the SCUBA User Reduction Facility, by Tim Jenness and John F. Lightfoot of the Joint Astronomy Centre in Hilo, Hawaii, dated 10 July 2000. SURF is a set of ADAM tasks for reducing data from the Submillimetre Common-User Bolometer Array on the James Clerk Maxwell Telescope. It is an astronomical data-reduction package with a documented API, not a programming language - but it is the closest thing to a documented computing 'SURF' active in the exact period the catalog assigns to the language
c. 2001
Reported first appearance of Surf, a concurrent research language. The year comes from the programming-language catalog entry under which the language is preserved; no paper, report, manual, release announcement, repository, or project page that would independently confirm the date, the creator, or the sponsoring institution has been located
2001
Context for the reported origin year: concurrency is a live research front. Martin Abadi and Cedric Fournet present 'Mobile Values, New Names, and Secure Communication' at POPL 2001, introducing the applied pi calculus. In the Java world, JSR 133 - the revision of the Java Memory Model - passes its JSR Review Ballot between 29 May and 11 June 2001 and forms its expert group on 12 June 2001, work that would not reach Final Release until 30 September 2004. The same year sees Walter Bright release the first version of D on 8 December 2001. A new concurrent research language appearing in 2001 is entirely plausible; that context is all the catalog entry establishes
2003
Name collision, not this language: Starlink User Note SUN/216.8, the version 1.6 user manual for SURF - SCUBA User Reduction Facility, is issued on 3 April 2003 with a copyright covering 1997-2000 and 2003. This is the mature form of the astronomy package, and the reason a search for 'SURF' in the 1997-2003 window returns submillimetre astronomy rather than programming languages
2006
Name collision, not this language: Herbert Bay, Tinne Tuytelaars, and Luc Van Gool present SURF - Speeded Up Robust Features - at the European Conference on Computer Vision. This local feature detector and descriptor, inspired by SIFT, became one of the most cited results in computer vision, and it is the single largest reason the bare term 'SURF' is now effectively unsearchable in a computing context
2009
Name collision, not this language: surf, the minimalist WebKit/GTK web browser developed for suckless.org - Wikipedia credits Christoph Lohmann as author, with Enno Boland and others among its developers - is released on 10 September 2009. Written in C and controlled entirely through keyboard shortcuts and X window properties rather than graphical controls, it is the best-known piece of software simply called 'surf' among Unix users
2019
Name collision, not this language: the name 'surf' is first published to crates.io on 9 April 2019 (version 0.0.5, at that point a helper and middleware crate for the Tide web framework); the name is later carried by the http-rs group's HTTP client framework. Together with the Go web-scraping library of the same name and SuRF, a Python object-RDF mapper built on RDFLib, it completes the crowding-out of the name in general software search
2026
As of September 2026, searches of the public web, academic indexes, Wikipedia and Wikidata, the Esolang wiki, FOLDOC, dblp, PLDB, and the online HOPL encyclopedia locate no surviving artifact of a 2001 concurrent language named Surf - no specification, implementation, paper, manual, or project page. HOPL does record a language called SURF, but it is catalogued there as a CAD language in three versions, with no connection to concurrency or to 2001. The language is catalogued as dormant

Running Today

Run examples using the official Docker image:

docker pull
Last updated: