David A. Wheeler's Blog

Fri, 22 May 2009

I’d like to see this idea seriously considered and discussed:
By default, unclassified software which the government paid to develop
should be released to the public as
open source software
(unless there’s a good reason not to).

Why? Well,
If “we the people” paid to develop it, then
“we the people” should get it!
I think this idea fits into the good government ideal of data transparency;
after all, software is data.
Currently, we have a lot of waste and unnecessary
costs due to loss, re-development, and/or government-created monopolies.
The government is not a venture capitalist (VC); people who need a VC
should go to a VC.

Indeed, there’s a long history of U.S. laws specifically set up to
make data available.
Most obviously,
Freedom on information act (FOIA) requests make it possible to extract
information from the U.S. government.
17 USC 105
and
17 USC 101
prevents the U.S. government from claiming U.S. copyright on a work
“prepared by an officer or employee of the United States Government
as part of that person’s official duties”.
So this idea would be an extension of what’s already gone on.

Let me focus on research, and how this idea could help advance technology.
Think of all the advantages if software developed by U.S.-funded research
could be reused by other research projects and commercial firms.
For example, imagine if other researchers could simply
extend previous work by modifying previously-developed software,
instead of re-building yet another version from scratch.
Anyone could take commercialize the research making it more likely
that it would be commercialized instead of being lost in the archives shown
at the end of Raiders of the Lost Ark.
Some argue that giving sole rights is the only way to commercialization,
but that’s just not true;
open source software is commercial software, so this is
simply a different and fairer path to commercialization.
In contrast, the current system inhibits all kinds of technical progress;
Biere’s “The Evolution from LIMMAT to NANOSAT” (Apr 2004)
found that
“important details are often omitted in [research]
publications and can only be extracted from source code…
[Making source code available]
is as important to the advancement of the field as publications”.
Originally I thought of this idea for research software, and it’s
not hard to see why.
But when I starting thinking about the reasons for doing this —
especially “if ‘we the people’ paid to develop it, then
‘we the people’ should get it” — then
I realized that this principle applies much more broadly.

An
open government directive isn’t out yet, but they’re
clearly working on it.
Please submit this - and other ideas like it - to them.
I think there’s a lot of promise, but they can only enact and refine
ideas that they’ve heard of.
If you like this idea, please vote for it.

If this happened, I envision a two-stage process:
(1) release of the software as an archive (so it can be downloaded), and
(2) some of it will get picked up and used to start an active OSS project.
The second stage might not happen for many years after the first, and
that’s okay.
Some will ask “how will people find it”, but I think that’s the wrong
question.
There are many commercial search engines that can find code, but they
can only find stuff that’s web-accessible; let’s give them
something to find.

Perhaps this should be done in stages.
For example, perhaps it’d be best to start with software developed by
research.
Researchers are supposed to share their results anyway (under most cases),
and the lack of software release often inhibits research
(e.g., it’s harder to check or repeat results).
You could then broaden this to other types of software.

I’m sure there will need to be exceptions.
There would need to be some sort of guidelines to figure out
when to grant those exceptions, and those guidelines should be
developed though lively discussion.
Most obviously,
if it’s a special ingredient necessary for national security, then
it should be classified and not revealed in any form.
I would not expect weapon systems or intelligence software
to be released (though sometimes
generic functions developed in them could be released).
Export controls would still apply.
But the exceptions should be that: Exceptions.