Speak Freely
End of Life Announcement

by John Walker
January 15th, 2004

The time has come to lower the curtain on Speak Freely. As of August 1st, 2003, version 7.6a of Speak Freely (Unix and Windows) was declared the final release of the program, and a banner was added to the general Speak Freely page and those specific to the Unix and Windows versions on the www.fourmilab.ch site announcing the end of life. No further development or maintenance will be done, and no subsequent releases will be forthcoming.

On January 15th, 2004 all Speak Freely documentation and program downloads, along with links to them on the site navigation pages, were removed from the www.fourmilab.ch site, and accesses to these files redirected to this document. On that date the speak-freely and speak-freely-digest mailing lists were closed and their archives copied to off-line storage and deleted from the site. In addition, the Speak Freely Forum will cease operation, along with the Echo and Look Who's Listening servers previously running at www.fourmilab.ch. Ports 2074 through 2076 will be firewall blocked for the fourmilab.ch domain, with incoming packets silently discarded. As of January 15th, 2004, all queries, in whatever form, regarding Speak Freely will be ignored. An historical retrospective on the program may eventually be published on the site.

Questions and Answers

Why did you do this?
The time has come. Speak Freely is the direct descendant of a program I originally developed and posted to Usenet in 1991. The bulk of Speak Freely development was done in 1995 and 1996, with the Windows version designed around the constraints of 16-bit Windows 3.1. Like many programs of comparable age which have migrated from platform to platform and grown to encompass capabilities far beyond anything envisioned in their original design, Speak Freely shows its age. The code is messy, difficult to understand, and very easy to break when making even small modifications. The Windows and Unix versions, although interoperable, have diverged in design purely due to their differing histories, almost doubling the work involved in making any change which affects them both.

To continue development and maintenance of Speak Freely, the program requires a top to bottom rewrite, basing the Unix and Windows version on an identical "engine," and providing an application programming interface (API) which permits other programs to be built upon it. I estimate the work involved in this task, simply to reach the point where a program built with the new architecture is 100% compatible with the existing Speak Freely, would require between 6 and 12 man-months. There is no prospect whatsoever that I will have time of that magnitude to devote to Speak Freely in the foreseeable future, and no indication that any other developer qualified to do the job and sufficiently self-motivated and -disciplined to get it done exists. In fact, the history of Speak Freely constitutes what amounts to a non-existence proof of candidate developers.

Even if I had the time to invest in Speak Freely, or another developer or group of developers volunteered to undertake the task, the prospects for such a program would not justify the investment of time.

What do you mean--isn't the Internet still in its infancy?
If you say so. The Internet, regardless of its state of development, is in the process of metamorphosing into something very different from the Internet we've known over the lifetime of Speak Freely. The Internet of the near future will be something never contemplated when Speak Freely was designed, inherently hostile to such peer-to-peer applications.

I am not using the phrase "peer to peer" as a euphemism for "file sharing" or other related activities, but in its original architectural sense, where all hosts on the Internet were fundamentally equal. Certainly, Internet connections differed in bandwidth, latency, and reliability, but apart from those physical properties any machine connected to the Internet could act as a client, server, or (in the case of datagram traffic such as Speak Freely audio) neither--simply a peer of those with which it communicated. Any Internet host could provide any service to any other and access services provided by them. New kinds of services could be invented as required, subject only to compatibility with the higher level transport protocols (such as TCP and UDP). Unfortunately, this era is coming to an end.

One need only read discussions on the Speak Freely mailing list and Forum over the last year to see how many users, after switching from slow, unreliable dial-up Internet connections to broadband, persistent access via DSL or cable television modems discover, to their dismay, that they can no longer receive calls from other Speak Freely users. The vast majority of such connections use Network Address Translation (NAT) in the router connected to the broadband link, which allows multiple machines on a local network to share the broadband Internet access. But NAT does a lot more than that.

A user behind a NAT box is no longer a peer to other sites on the Internet. Since the user no longer has an externally visible Internet Protocol (IP) address (fixed or variable), there is no way (in the general case--there may be "workarounds" for specific NAT boxes, but they're basically exploiting bugs which will probably eventually be fixed) for sites to open connections or address packets to his machine. The user is demoted to acting exclusively as a client. While the user can contact and freely exchange packets with sites not behind NAT boxes, he cannot be reached by connections which originate at other sites. In economic terms, the NATted user has become a consumer of services provided by a higher-ranking class of sites, producers or publishers, not subject to NAT.

There are powerful forces, including government, large media organisations, and music publishers who think this situation is just fine. In essence, every time a user--they love the word "consumer"--goes behind a NAT box, a site which was formerly a peer to their own sites goes dark, no longer accessible to others on the Internet, while their privileged sites remain. The lights are going out all over the Internet. My paper, The Digital Imprimatur, discusses the technical background, economic motivations, and social consequences of this in much more (some will say tedious) detail. Suffice it to say that, as the current migration of individual Internet users to broadband connections with NAT proceeds, the population of users who can use a peer to peer telephony product like Speak Freely will shrink apace. It is irresponsible to encourage people to buy into a technology which will soon cease to work.

But isn't the problem really the lack of static port mapping, not NAT?
(If you don't understand this question, please skip to the next.) Correct, but experience has shown that a large number of installed NAT boxes either cannot map an externally accessible port to an internal IP address and port, or those who install the boxes do not provide their customers adequate information to permit them to do this. Given the trend, discussed in the last question, toward confining individual Internet users to a consumer role, I believe fewer and fewer users will have the ability to statically map ports as time goes on.

Isn't there some clever way to work around these limitations?
Not as far as I can figure out. As long as a NAT box only maps an inbound port to a local IP address when an outbound connection is established, I know of no way an Internet user can initiate a connection to a user behind a NAT box. With sufficient cleverness, such as the "NAT fix" in the 7.6a Unix version of Speak Freely, a user behind a NAT box can connect to one who isn't, but if both users are NATted (and that's the way things are going), the only way they could communicate would be through a non-NATted server site to which both connected, which would then forward packets between them.

So why don't you just set up such a server?
Because no non-commercial site like mine could possibly afford the unlimited demands on bandwidth that would require. It's one thing to provide a central meeting point like a Look Who's Listening server, which handles a packet every five minutes or so from connected sites, but a server that's required to forward audio in real-time between potentially any number of simultaneously connected users is a bandwidth killer. The www.fourmilab.ch site has 2 Mbit/sec bidirectional bandwidth, about 50-75% of which (outbound) is typically in use serving Web pages. If we assume 1 Mbit/sec free bandwidth, then fewer than 70 simultaneous Speak Freely half-duplex GSM conversations would saturate this bandwidth, half that number if they're full-duplex. Besides, as soon as you set up such a server, within hours it would come under denial of service attacks mounted by malicious children and their moral and intellectual adult equivalents which would render the server unusable to legitimate users. Further, the existence of such server(s) would represent a single-point vulnerability which is the very antithesis of the design of the Internet and Speak Freely. Anybody who thinks through the economics and logistics of operating such a server on a pro bono basis will, I am confident, reject it on the same grounds I have. If you disagree, go prove me wrong!

But won't NAT go away once we migrate to IPv6?
(If you don't know what IPv6 is, please skip ahead to the next question.) First of all, any bets on when IPv6 will actually be implemented end-to-end for a substantial percentage of individual Internet users? And even if it were, don't bet on NAT going away. Certainly it will change, but once the powers that be have demoted Internet users from peers to consumers, I don't think they're likely to turn around and re-empower them just because the address space is now big enough. Besides, the fraction of users who care about such issues, while high among those interested in programs such as Speak Freely, is minuscule among the general public.

Why January 15th, 2004?
January 1st would have made more sense, but I was out of town then, and I don't like to make major changes to the site while I'm on the road. There's no special significance to the date.

Can I go on using Speak Freely?
Certainly, Speak Freely is in the public domain; you can do anything you like with it. But as of that date I'm not having anything more to do with it.

Can I distribute copies of Speak Freely to other people?
Certainly; see the previous answer. You're free to distribute Speak Freely in source or binary form to anybody you like, post it on your Web site, etc. subject only to whatever governmental restrictions may apply to distribution of the encryption technology Speak Freely employs.

How will I be able to find people once your Look Who's Listening server shuts down?
You can exchange IP addresses with people you wish to call via ICQ, instant messages, E-mail, chat systems, etc. If somebody wants to start a public Look Who's Listening server they're welcome, but history is not encouraging. While the Fourmilab LWL server has run continuously for 8 years, no other public server has lasted more than a year before disappearing.

How can I test without a public echo server?
Beats me. If the need is sufficient, perhaps somebody will set one up, but, as with LWL servers, they never seem to last very long.

Why all the dramatics of an "end of life" announcement?
The fate of most free software projects is "abandonware"--the developer loses interest, burns out, or becomes occupied with other projects and simply leaves the software as-is. In fact, this happened with Speak Freely a few years ago, and the consequences were distasteful. Unix workstation vendors routinely issue end of life announcements to inform customers that as of a given date, or software release, or new hardware platform, an existing product will no longer be supported. This gives those using that product time to weigh the alternatives and decide how best to proceed. Given that the Internet is in the midst of a structural change (widespread adoption of broadband with NAT) which destroys the 30 year old Internet architecture on which Speak Freely (and other true peer to peer programs) relies, I thought it more responsible to withdraw the program in this manner (while, as with a workstation end of life announcement, permitting satisfied users to continue to use it indefinitely) rather than let it wilt and die as the dark pall of NAT falls upon the Internet.

Don't you have an obligation to whatever?
Nope. Writing software and giving it away doesn't incur any obligation of any kind to any person. I've been working on this program off and on for more than 12 years. At my age (don't ask, but if I live as long as Bob Hope did, I'm more than half way to the checkered flag), the prospect of spending another five or ten years dreaming up clever countermeasures to an Internet that's evolving to make programs like Speak Freely impossible, in a climate where creating a tool some people find useful and giving it away only invites incessant malicious attacks upon it motivated solely by nihilism, for a shrinking user community forced to master the ever-growing complexity all of this requires does not appeal to me. Programs, like people, are born, grow rapidly, mature, and then eventually age and die. So it goes. If somebody disagrees and wants to step in, they're more than welcome, but such a person has yet to appear over the entire history of Speak Freely.

By taking down the Speak Freely site, aren't you throwing away all the work invested in the program?
No. While I cannot in good conscience encourage people to become new users of Speak Freely nor developers to invest time in working on it, the entire state of the program as of the final release will remain available indefinitely on SourceForge as separate CVS archives for the Unix and Windows versions. I will make no further additions to these archives, but others are free to download them for their own private development purposes and/or create new projects on SourceForge to develop derivative programs in whatever form they like.

Anything more to add?
It's been fun. Take care.

Speak Freely Afterlife Development Project

A development project has been registered on SourceForge with the goal of continuing development of Speak Freely. Anshuman Aggarwal and Johannes Pöhlmann, creators of this project, hope to attract developers to continue to adapt Speak Freely to the challenges it will face in the future. I am not involved in this project, but if you're interested in contributing to Speak Freely, please visit the project home page and volunteer for the effort.

The Digital Imprimatur

Fourmilab Home Page