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.
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.