David A. Wheeler's Blog http://www.dwheeler.com/blog David A. Wheeler's weblog. en Open government: Default release as OSS and Open Access http://www.dwheeler.com/blog/2010/02/28#open-government-ideas Sun, 28 Feb 2010 22:49 GMT <p> <a href="http://opengovtracker.com/">U.S. government agencies are soliciting ideas</a> on how to make them more transparent, participatory, collaborative and innovative. </p> <p> <b>Please support proposals to release government-funded works by default as open access (for research papers) or as open source software (for software).</b> An example is the proposal to the National Science Foundation (NSF) called <a href="http://opennsf.ideascale.com/a/dtd/26920-7046">Public funding = Public viewing</a>. This proposal recommends that publicly funded projects must be published as open access and all data and code shared as open source software. Please vote for this, make helpful comments, and so on. Similarly, please vote for and/or add similar proposals for other agencies where they apply. </p> <p> If "we the people" pay for research and development, then "we the people" should normally get the results. I can see the need for exceptions &mdash; particularly for classified works &mdash; but those should be <i>exceptions</i>. In short, I think this kind of proposal makes sense. </p> <p> As I've commented before, <a href="http://www.dwheeler.com/blog/2009/05/22#default-release-oss"> Government-developed Unclassified Software should by default be released as Open Source Software</a>, and <a href="http://www.dwheeler.com/blog/2009/12/13#open-access-2009"> research papers produced from U.S. government funding should be open access</a>. So please make sure that U.S. agencies know this. Thanks. </p> Free/Libre/Open Source Software's big win: Jacobsen/JMRI v. Katzer http://www.dwheeler.com/blog/2010/02/22#jacobsen-jrmi-katzer Mon, 22 Feb 2010 15:56 GMT <p> There&#8217;s been a major legal victory for Free/Libre/Open Source Software (FLOSS): Jacobsen v. Katzer. Articles like <a href="http://itmanagement.earthweb.com/features/article.php/3866316/Bruce-Perens-Inside-Open-Sources-Historic-Victory.htm"> Bruce Perens&#8217; &#8220;Inside Open Source&#8217;s Historic Victory&#8221;</a> and <a href="http://www.consortiuminfo.org/standardsblog/article.php?story=201002190850472"> A Big Victory for F/OSS: Jacobsen v. Katzer is Settled</a> give many of the specifics; here is a quick summary. </p> <p> Bob Jacobsen is a high-energy physicist who developed (as a hobby) the <a href="http://jmri.sourceforge.net/">Java Model Railroad Interface (JMRI) Project</a>. JMRI is a set of FLOSS Java tools for configuring and controlling model railroad trains. Matthew Katzer used loopholes in the law to patent ideas that Jacobsen and others had created and publicly discussed first, domain-squatted, tried to embarass Jacobsen to Jacbonsen&#8217;s employer, and used part of Jacobsen&#8217;s JMRI software in Katzer&#8217;s own product without complying with the JMRI license (by not providing the required credit). The <a href="http://jmri.sourceforge.net/k/summary.shtml"> JMRI has a short summary of this unpleasant fight</a>, as well as lots of details and court papers. </p> <p> What&#8217;s impressive was that Bob Jacobsen stuck through a very hard series of events. At first the court didn&#8217;t seem to understand FLOSS at all, and Jacobsen was handed some very unpleasant defeats. At one point, Jacobsen had to pay over $30,000 of his own money. </p> <p> But Jacobsen persevered, and won critical rulings and a final settlement that is really a complete victory for him. In 2008 the <a href="http://www.cafc.uscourts.gov/opinions/08-1001.pdf"> United States Court of Appeals for the Federal Circuit vacated the district court&#8217;s ruling and held that the terms of the Artistic License (a FLOSS license) are enforceable</a>. The court said, &#8220;Open source licensing has become a widely used method of creative collaboration that serves to advance the arts and sciences in a manner and at a pace that few could have imagined just a few decades ago&#8221;. On February 18, 2010, the parties finally settled. Among other terms, Jacobsen has won $100,000, Katzer is forbidden to use Jacobsen&#8217;s software, and the two patents at issue have been disclaimed. What&#8217;s more, the rulings stemming from this case have created a precedent that FLOSS licenses are legally enforceable, eliminating a lot of uncertainty, and because there is a final settlement it is not possible to appeal the case. Strictly speaking, the precedents do not automatically apply everywhere in the U.S., but even where they do not strictly apply, they will still have a strong weight. </p> <p> This result is critically important to FLOSS. If FLOSS developers could not enforce their licenses, the probable result would be that a lot of such software would never be written. The <a href="http://jmri.sourceforge.net/k/docket/cafc-pi-1/ccc_brf.pdf"> Amici Curiae brief by Creative Commons Corporation et al.</a> and the <a href="http://www.softwarefreedom.org/news/2009/jun/15/jacobsen-amicus-brief/"> Software Freedom Law Center Amicus Brief in Jacobsen v. Katzer</a> both do a nice job explaining why getting this ruling right was so important. </p> <p> So, my hat&#8217;s off to Bob Jacobsen. Through his persistence, he&#8217;s made the world better for all of us. </p> California: Open Source Software is Okay! http://www.dwheeler.com/blog/2010/01/09#california-oss-ok Sat, 09 Jan 2010 13:07 GMT <p> The California state government has officially declared that it&#8217;s okay to use open source software inside the California state government. On January 7, 2010, the <a href="http://www.cio.ca.gov/Government/IT_Policy/ITPL.html"> California Office of the State Chief Information Officer (OCIO) released Information Technology Policy Letter (ITPL) 10-01, titled &#8220;Open Source Software Policy&#8221; </a>. A key purpose of ITPL 10-01 is to &#8220;formally establish the use of Open Source Software (OSS) in California state government as an acceptable practice&#8221;, and the first sentence of its policy statement is that &#8220;The OCIO permits the use of OSS&#8221;. It even includes the <a href="http://www.opensource.org/docs/osd"> ten-point open source definition (OSD) as promulgated by the Open Source Intiative</a>, to make sure that there&#8217;s no misunderstanding. </p> <p> I think this is a big deal. Officially saying &#8220;it&#8217;s okay to use free/libre/open source software (FLOSS)&#8221; is really important before FLOSS can get widespread use in governments. Most technologists already understand the potential advantages of FLOSS, but they encounter a lot of resistance when they try to use or develop FLOSS in large organizations like governments. Far too many middle managers are instinctively afraid of change from &#8220;the way we&#8217;ve always done it&#8221;. For example, they may be afraid of unseen problems, or afraid their bosses will rake them over the coals later. Far too often the middle managers have misunderstandings about FLOSS, too. For example, many managers still believe the myth that &#8220;you can&#8217;t get support&#8221; and are unaware of the many companies that <i>do</i> provide such support. Companies that make competing proprietary products are delighted (of course) when governments don&#8217;t consider their competition... but in an era of tight budgets, it doesn&#8217;t make sense for governments to ignore competing (and often less expensive) products. When top officials give official &#8220;top cover&#8221; permission to consider FLOSS, then the technologists and middle managers are far more likely to fairly and honestly consider them. </p> <p> Also, the fact that it&#8217;s California matters. The <a href="http://en.wikipedia.org/wiki/Economy_of_California"> economy of the California</a> is larger than most countries (if it were a country, it would be third through tenth in the world depending on how you measure it). Anything the state of California does can influence other states and countries; acts like this further legitimize the user of Free/Libre/Open Source Software (FLOSS). </p> <p> Of course, the state of California isn&#8217;t the only government organization to release a memo officially declaring that it&#8217;s okay to use free/libre/open source software (FLOSS). Just looking inside the U.S., the <a href="http://cio-nii.defense.gov/docs/OpenSourceInDoD.pdf"> U.S. DoD did this in 2003</a>, the <a href="http://www.whitehouse.gov/omb/memoranda/fy04/m04-16.html"> Office of Management and Budget (OMB) released a somewhat similar memo in 2004 that applied to the entire U.S. federal government</a>, the <a href="http://www.doncio.navy.mil/PolicyView.aspx?ID=312">U.S. Navy did this in 2007</a>, and the the <a href="http://cio-nii.defense.gov/sites/oss/">U.S. DoD released clarifying guidance in 2009 re-emphasizing this point</a>. And that&#8217;s only a few examples from U.S. government organizations; the examples from around the world are legion. It&#8217;s really difficult to get people to change what they do... as you can tell from the number of times that various U.S. federal government organizations have had to state and re-state it. Still, they really do have an effect. Official policy statements that FLOSS is used, such as the one California just released, are a necessary first step to changing things from &#8220;the way we&#8217;ve always done things&#8221;. </p> Moglen on Patents and Bilski http://www.dwheeler.com/blog/2009/12/31#moglen-bilski Thu, 31 Dec 2009 10:48 GMT <p> <a href="http://www.isoc-ny.org/?p=1009">Eben Moglen has a very interesting presentation on patents (including comments on Bilski)</a> that was originally presented on Nov. 2, 2009. <a href="http://www.dwheeler.com/essays/software-patents.html"> Software patents and business method patents have been a disaster for the U.S. and world economy</a>, and he has some interesting things to say about how we got here (and how it could be fixed). </p> <p> One interesting point he made, which I hadn&#8217;t heard before, is that there is a fundamental conflict between the patent system and the <a href="http://en.wikipedia.org/wiki/Administrative_Procedure_Act">Administrative Procedure Act of 1946 (aka the APA)</a>. Nearly all of the U.S. government must obey the APA before creating new rules and regulations. According to the APA, U.S. agencies must keep the public informed, provide for public participation in the rulemaking process, establish uniform standards for rulemaking and adjudication, and provide for judicial review. In particular, agencies normally have to perform a cost-benefit analysis. </p> <p> But the patent system pre-existed the APA. Patents, since they are government-created monopolies, can constrain people in the same ways that any other rule or regulation can. However, the government does <i>not</i> follow the APA to determine if each proposed patent should be granted. Instead, the old patent process was essentially grandfathered in instead, as a special exception to the APA. Because the APA is not considered when examining each patent, <i>no one</i> in government asks the normally-required question &#8220;How will each proposed patent be publicly reviewed before it is granted?&#8221;. Patents on ideas that are patently obvious are routinely granted, in part because there is no public review before they are granted and because the patent office (by policy) ignores most information available to the public. All because the patent-granting process is <i>not</i> required to enable public participation in the rulemaking process, in this case, the process for permitting the granting of a patent. Also, when examining a patent to determine if it should be granted, no one asks normally-obvious questions like: <ul><li>&#8220;What is the result of the cost-benefit analysis for this patent? Is there good evidence that granting this government-created monopoly would have societal benefits that greatly exceed all of that monopoly&#8217;s costs to society?&#8221; </li> <li>&#8220;If the costs exceed the benefits, what is the smallest term that could be granted in which the benefits to society exceed their costs?&#8221;. </li> </ul> </p> <p> Because the patent system predates the APA, all potential harms to society from a patent are completely ignored during the patent examination process. If patents were individually considered as new regulations under the APA, such questions would need to be carefully considered. That&#8217;s an interesting point Moglen makes. </p> <p> It&#8217;s my hope that the Supreme Court will clearly <a href="http://www.dwheeler.com/essays/software-patents.html">stop software patents</a>. We shall see. </p> U.S. research should be open access http://www.dwheeler.com/blog/2009/12/13#open-access-2009 Sun, 13 Dec 2009 19:24 GMT <p> <a href="http://blog.ostp.gov/2009/12/09/ostp-to-launch-public-forum-on-how-best-to-make-federally-funded-research-available-for-free/"> The Office of Science and Technology Policy (OSTP) has launched a &#8220;public consultation on Public Access Policy&#8221;, to see if research funded by U.S. grants should be made available as open access results</a>. I think this is important &mdash; I believe publicly-funded unclassified research should actually be made available to the public. </p> <p> Historically, the U.S. pays a fortune for research, the results are written up as papers for journals, and then various publishers acquire total rights to these papers and charge exorbitant monopoly fees for them. The result: Most U.S. citizens cannot afford to see the research their taxes pay for. </p> <p> The basic question here is really straightforward: Should publicly-funded research results be made available directly to the public instead? Or, should private companies continue to gain ownership over publicly-funded results, for either nothing or a tiny fraction of the public&#8217;s costs? </p> <p> A small number of journal publishers and societies strongly want to keep things the way they are, of course. It makes sense from their point of view; everybody likes free (or nearly free) money! Historically, this arrangement was created because it can be expensive to publish and manage paper. However, that rationale has become completely obsolete. Few people want the paper any more &mdash; they want the research, on-line, without a paywall. And don&#8217;t give me nonsense about the &#8220;costs&#8221; of peer review. Many journals don&#8217;t pay their reviewers (the reviewers do it gratis), and even if they did, the total control they gain is still unjustified; the U.S. government spends far more per paper than they do for review. </p> <p> The current sequestering of research is not good for science or the country. I&#8217;m currently reading the interesting book &#8220;Are We Rome?&#8221; by Cullen Murphy, and I can&#8217;t help but see some parallels. Chapter 3 is all about &#8220;when public good meets private opportunity&#8221;. Private organizations may pay for private research, and then keep their results private. But when the public pays for research, it should be <i>shocking</i> if it does <i>not</i> get released back to the public. And by &#8220;released back&#8221;, I mean released back at no fee at all. </p> <p> So who will pay for the printing, complex peer review, storage, and fancy indexing of these research results? I think the very question shows a failure to understand current technology, but let&#8217;s answer it anyway. Most peer review isn&#8217;t paid-for anyway, and if it is, it&#8217;s a tiny cost compared to the research itself. Storage? Don&#8217;t make me laugh; for $100 I can buy storage for the all of the U.S. research papers for a year. Indexing? The government shouldn&#8217;t be doing serious indexing at all!! Just put it on a government site with a basic form filled out (title, authors, date, keywords, abstract, and a link to the actual paper on the government site). If it&#8217;s not behind a paywall, the many commercial search systems will index it for you. </p> <p> I <i>do</i> think there should be a centralized government repository of such papers. If it&#8217;s distributed, then papers could be lost without anyone knowing it. I think they should be freely redistributable, so others can copy what they want, but a centralized repository would make sure that we keep all of them available forever. Also, bandwidth costs can be reduced by scale. There&#8217;s a risk that they all get lost at once, but it&#8217;s easier to copy everything if there&#8217;s one place to start from. If it&#8217;s a complicated site, then they&#8217;ve done it wrong.... for each paper there should be a simple &#8220;summary&#8221; page with title, authors, etc., and the actual paper itself. </p> <p> OSTP cites the experience of NIH; NIH did wonderful work for releasing as open access, and in my mind the real problems are that they didn&#8217;t go far enough. First, NIH has a one-year embargo... if I already paid for it (and I did), why should wealthy people and organizations get the results first? Second, NIH only considers the actual papers, not the data and software programs that support the works... yet often those are <i>more</i> important. If they were funded by the public, then the public should get them (unless they&#8217;re classified, of course, but then they shouldn&#8217;t be released at all). I&#8217;m sure there are complications and exceptions, but a &#8220;default open access&#8221; policy would go a long way. </p> <p> So please, tell the OSTP that the U.S. <i>should</i> release government-funded research as open access publications, available to anyone on the Internet without a paywall. In short, if &#8220;we the people&#8221; paid for it, then &#8220;we the people&#8221; should get it. For more information, see this <a href="http://www.ostp.gov/galleries/default-file/RFI%20Final%20for%20FR.pdf"> Request for Information (RFI)</a> </p> Trusting Trust, DDC, and Free-Libre/Open Source Software (FLOSS) http://www.dwheeler.com/blog/2009/11/13#trusting-trust-ddc-oss Fri, 13 Nov 2009 14:02 GMT <p> <a href="http://www.dwheeler.com/blog/2009/11/02/#trusting-trust-dissertation"> As I noted in my blog</a>, I&#8217;ve just released my dissertation <a href="http://www.dwheeler.com/trusting-trust"> &#8220;Fully Countering Trusting Trust through Diverse Double-Compiling</a> (DDC). But what does that mean for Free-Libre/Open Source Software (FLOSS)? In short, it&#8217;s <i>fantastic</i> news for FLOSS, but to explain why that&#8217;s so, I need to backtrack first. </p> <p> The &#8220;trusting trust&#8221; attack is a nasty computer attack that involves creating a subverted compiler in such a way that it even subverts compilers. It was originally reported in a 1974 security evaluation of Multics, but most people heard about it from Ken Thompson&#8217;s 1984 Turing Award presentation (Ken Thompson is a creator of Unix). This attack is incredibly nasty, and what&#8217;s worse, until now there&#8217;s been no effective countermeasure to it. Indeed, some have claimed that it could not ever be countered, making the whole idea of &#8220;computer security&#8221; a non-starter. </p> <p> The &#8220;trusting trust&#8221; attack <i>appears</i> to be especially devastating to FLOSS. The problem is that with the trusting trust attack, the source code that people review does <i>not</i> correspond to the executable that&#8217;s actually running, and that seems to completely torpedo the &#8220;many eyes&#8221; review that FLOSS makes possible. The whole world could carefully review a program&#8217;s source code, but it wouldn&#8217;t matter if the compiler turns it undetectably into something malicious. </p> <p> Thankfully, there <i>is</i> an effective countermeasure, which I&#8217;ve named <a href="http://www.dwheeler.com/trusting-trust">Diverse Double-Compiling (DDC)</a>. You can see my dissertation which explains what it is, proves that it works, and even demonstrates it with several compilers including GCC. (I will be giving a <a href="http://www.dwheeler.com/trusting-trust"> public defense of it on November 23, 2009</a>, if you&#8217;d like to come.) This means that source code review, such as mass review of FLOSS code, can now actually work. </p> <p> But there&#8217;s more, because there&#8217;s an interesting catch with DDC. DDC counters the trusting trust attack, but it&#8217;s only useful for people who have access to the compiler source code. Fundamentally, DDC is a technique for determining if a compiler executable corresponds with its source code, but only people who <i>have</i> the source code can apply DDC to see if that&#8217;s true. What&#8217;s more, only people who have access to the source code will find the statement &#8220;the source and executable correspond&#8221; particularly useful. (You could use trusted intermediaries, but this requires total trust in those intermediaries, making such claims far weaker than claims that <i>anyone</i> can check.) What&#8217;s more, DDC is actually useful beyond what we <i>normally</i> think of as compilers, because you can redefine &#8220;compiler&#8221; as including other parts (such as the operating system). In that case, you can even show that the system&#8217;s executables all correspond to their source code. But you can <i>only</i> use DDC to counter the trusting trust attack if you have access to the source code. </p> <p> So we now have a radical change. Now that DDC has been shown to work, we can see that software with available source code (including FLOSS) has a <i>fundamental security advantage</i> over other software. That doesn&#8217;t mean that <i>all</i> FLOSS is more secure than <i>all</i> proprietary software, of course. But <a href="http://www.dwheeler.com/essays/securing-oss.pdf">FLOSS already had a general security advantage</a> because it better meets Saltzer &amp; Schroeder&#8217;s &#8220;Open design principle&#8221; (as explained in their 1974-1975 papers). Now we have an attack &mdash; the trusting trust attack &mdash; for which <i>FLOSS has a fundamental security advantage</i>. The time of ignoring FLOSS options, because of misplaced notions that FLOSS cannot be as secure as proprietary software, needs to come to an end. </p> <!-- Reviewed by Clyde Roby on 2009-11-13 --> Notes about the DoD and OSS memo http://www.dwheeler.com/blog/2009/10/28#dod-oss-2009-notes Wed, 28 Oct 2009 17:01 GMT <p> Yesterday I posted about the <a href="http://www.dwheeler.com/blog/2009/10/27/#dod-oss-2009"> new 2009 DoD memo about open source software</a>. I'm delighted to see that the word is getting out. <a href="http://linux.slashdot.org/story/09/10/27/2115243/New-DoD-Memo-On-Open-Source-Software?art_pos=16"> Slashdot</a>, <a href="http://lwn.net/Articles/358971/">Linux Weekly News</a>, and <a href="http://lxer.com/module/newswire/view/127313/index.html"> LXer.com</a> all mentioned the new memo and even pointed to my post. Others are noting the new memo too, including <a href="http://news.cnet.com/8301-13505_3-10384067-16.html">CNet's Matt Asay</a>, <a href="http://www.informationweek.com/news/government/enterprise-apps/showArticle.jhtml?articleID=221100039&subSection=All+Stories">InformationWeek's J. Nicholas Hoover</a>, <a href="http://www.informationweek.com/blog/main/archives/2009/10/dod_says_yes_to.html"> InformationWeek's Serdar Yegulalp</a>, <a href="http://www.networkworld.com/news/2009/102709-dod-opensource.html?hpg1=bn">NetworkWorld</a>, and <a href="http://www.h-online.com/open/news/item/US-Department-of-Defense-memo-opens-door-to-open-source-844137.html">The H</a>. <a href="http://linux.slashdot.org/comments.pl?sid=1420791&cid=29892865"> Dan Risacher has posted on Slashdot some background and history for this new 2009 DoD memo</a>. He notes, for example, that "The lawyers were by far the biggest delay" in getting this memo released. </p> <p> There's some supporting information for this memo at the <a href="http://www.defenselink.mil/cio-nii/sites/oss"> DoD Free Open Source Software (FOSS) Communities of Interest (COI) site</a>, which posts the memo itself and a supporting <a href="http://www.defenselink.mil/cio-nii/sites/oss/Open_Source_Software_%28OSS%29_FAQ.htm">DoD Open Source Software Frequently Asked Questions (FAQ)</a> document. </p> <p> To help potential users, I've updated my presentation <a href="http://www.dwheeler.com/essays/dod-oss.pdf"> Open Source Software (OSS) and the U.S. Department of Defense (DoD)</a>, which I hope will clarify some things. I should also remind people about the <a href="http://terrybollinger.com/">2003 MITRE study "Use of Free and Open Source Software (FOSS) in the U.S. Department of Defense"</a>, which showed that in 2003 Free/libre/open source software (FLOSS, FOSS, or OSS) was already widely used in the DoD. </p> New DoD memo on Open Source Software http://www.dwheeler.com/blog/2009/10/27#dod-oss-2009 Tue, 27 Oct 2009 18:02 GMT <p> The U.S. Department of Defense (DoD) has just released <a href="http://www.dwheeler.com/misc/DoD-OSS-memo-2009.pdf"> Clarifying Guidance Regarding Open Source Software (OSS)</a>, a new official memo about <a href="http://www.dwheeler.com/oss_fs_why.html">open source software (OSS)</a>. This 2009 memo should soon be posted on the <a href="http://www.defenselink.mil/cio-nii/policy/memorandums.shtml">list of ASD(NII)/DoD CIO memorandums</a>. This 2009 memo is important for anyone who works with the DoD (including contractors) on software and systems that include software... and I suspect it will influence many other organizations as well. Let me explain why this new memo exists, and what it says. </p> <p> Back in 2003 the DoD released a formal memo titled <a href="http://iase.disa.mil/policy-guidance/oss-in-dodmemo.pdf"> Open Source Software (OSS) in the Department of Defense</a>. This older memo was supposed to make it clear that it was fine to use and develop OSS in the DoD. Unfortunately, as the new 2009 memo states, "there have been misconceptions and misinterpretations of the existing laws, policies and regulations that deal with software and apply to OSS that have hampered effective DoD use and development of OSS". </p> <p> This new 2009 memo simply explains "the implications and meaning of existing laws, policies and regulations", hopefully eliminating many of those misconceptions and misinterpretations. A lot of the "meat" is in the Attachment 2, section 2 (guidance), so let's walk through that: </p> <p> <ul> <li> Point (a) says that "In almost all cases, OSS meets the definition of 'commercial computer software' and shall be given appropriate statutory preference..." This confirms what I've been saying for years (see <a href="http://www.dwheeler.com/essays/commercial-floss.html"> FLOSS is commercial software</a>). This is important in the U.S. government contracting world, because government contracts are required to prefer commercial computer software. If OSS is commercial software, then it needs to be preferred in the same way that proprietary software is preferred (compared to rebuilding everything from scratch). It also makes many decisions easy; there are lots of rules for "commercial software", and since OSS is "commercial software", then contractors <i>already</i> know what the rules are. </li> <li> Point (b) says that the DoD is "required to conduct market research... [and should] include OSS [in the research] when it may meet mission needs". That's a sea change all by itself &mdash; that means that people will typically need to justify <i>not</i> considering OSS options. What follows this statement is perhaps even more important... here we have an official government document acknowledging specific advantages OSS can have. The memo says that "There are positive aspects of OSS that should be considered", noting "the continuous and broad peer-review enabled by publicly available source code", "the unrestricted ability to modify software source code enables the Department to respond more rapidly to changing situations, missions, and future threats", the reduced risk of lock-in, the possibility of lower costs, and so on. Let's be clear: this is <i>not</i> a statement that the DoD will only use OSS, indeed, it clearly states that "the software that best meets the needs and mission of the Department should be used, regardless of whether the software is open source". But it does tell people that there may be some very pointed questions if the OSS options aren't considered, and that's good for both the military and the taxpayer. </li> <li> Point (c) counters a weird problem specific to the DoD. DoD Instruction 8500.2 has a control called "DCPD-1 Public Domain Software Controls". This control says that if you use a binary program, you must either have a warranty or the source code for a program. That makes sense; if there's a defect in the program, the government wants to know that it will be fixed by someone else <i>or</i> have the rights to fix it themselves. Problem is, people decided to ignore the second part, and re-interpreted this control as "cannot use open source software", which is <i>not</i> what it says. Hopefully this terrible misconception will start going away soon. </li> <li> Point (d) says, "The use of any software without appropriate maintenance and support presents an information assurance risk. Before approving the use of software (including OSS), system/program managers, and ultimately Designated Approving Authorities (DAAs), must ensure that the plan for software support (e.g., commercial or Government program office support) is adequate for mission need". This actually hits at a number of issues. Some people say nonsense like "OSS has no support", which is silly; <a href="http://press.redhat.com/2009/07/27/red-hat-included-in-sampp-500-index/"> Red Hat just entered the S&amp;P 500</a>, primarily through paid support. But it <i>is</i> true that when you use software &mdash; any software &mdash; for a critically important function, you better have a plan for maintenance and support. This isn't unique to OSS; it's simply a true statement in general. OSS does add additional options for <i>how</i> you do support, including self-support and fully competed support, but you still need to plan for it. </li> <li> Point (e) notes that there "is a misconception that the Government is always obligated to distribute the source code of any modified OSS to the public", and then explains the real situation. </li> <li> Point (f) says that "software source code and associated design documents are 'data' as defined by DoD Directive 8320.02, and therefore shall be shared across the DoD as widely as possible to support mission needs..." This strikes a big blow at contractors who try to "hoard" software that the government paid to develop. In short, DoD directives already require that such software be shared with others. </li> <li> Point (g) says, "Software items, including code fixes and enhancements, developed for the Government <i>should</i> be released to the public (such as under an open source license) when all of the following conditions are met...". This certainly doesn't say that all DoD software will be released as OSS (nor would you expect that), but now the DoD is clarifying the issues to be considered before releasing software as OSS. It's actually a simple 3-part test: <ol> <li>"The project manager, program manager, or other comparable official determines that it is in the Government’s interest to do so, such as through the expectation of future enhancements by others." </li> <li>"The Government has the rights to reproduce and release the item, and to authorize others to do so...."</li> <li>"The public release of the item is not restricted by other law or regulation..." </li> </ol> </li> </ul> </p> <p> But perhaps most important is this memo's opening statement: "To effectively achieve its missions, the Department of Defense must develop and update its software-based capabilities faster than ever, to anticipate new threats and respond to continuously changing requirements. The use of Open Source Software (OSS) can provide advantages in this regard...". As with the later part (b), here we have an official government document acknowledging that OSS can have a significant advantage. What's more, these potential advantages aren't necessarily just minor cost savings; OSS can in some cases provide a military advantage. Which is a more-than-adequate justification for considering OSS, as I have been advocating for years. </p> <p> I'm really delighted that this memo has finally been released. I participated in the original brainstorming meeting to create this memo (as did <a href="http://powdermonkey.blogs.com/">John Scott</a>), and I reviewed many versions of it, but many, many other hands have stirred this pot since it began. It took over 18 months to create it and get it out; getting this coordinated was a very long and drawn-out process. My thanks to everyone who worked to help make this happen. In particular, congrats go to Dan Risacher, who led this project to its successful completion. </p> <p> By the way, if you're interested in the issue of open source software in the U.S. military/national defense, you probably should look at <a href="http://www.mil-oss.org/">Mil-OSS</a> (at least, join their mailing list, and consider going to their upcoming conference; I was a speaker at their last one). If you're interested in the connection between open source software and the U.S. government (including the military), you might also be interested in the upcoming <a href="http://goscon.org/">GOSCON</a> conference on November 5, 2009 (I'm one of the speakers there too). </p> CVC3 License Changed to BSD http://www.dwheeler.com/blog/2009/10/17#cvc3-license Sat, 17 Oct 2009 15:07 GMT <p> <a href="http://www.cs.nyu.edu/acsys/cvc3/">CVC3</a> is one of the better automated theorem provers. Given certain mathematical assertions, it can in many cases prove that certain claims follow from them. Some tools that can prove properties about programs use CVC3 (and/or similar programs). For example, the <a href="http://frama-c.cea.fr/jessie.html">Frama-C Jessie plug-in for C</a> and <a href="http://why.lri.fr/">Krakatoa for Java</a> use <a href="http://why.lri.fr/">Why</a>, which can build on one of several programs including CVC3. </p> <p> Problem is, CVC's license has historically been a problem. I understand that its authors intended for CVC3 to be Free/Libre/Open Source Software (FLOSS), but unfortunately, it was released with additional license clauses that resulted in yet another non-standard license. This was an unfortunate mistake; as I note in my <a href="http://www.dwheeler.com/essays/gpl-compatible.html"> essay on GPL-compatible licenses</a>, it is absolutely critical to choose a standard FLOSS license when releasing FLOSS. In this case, the big problem was the addition of an "indemnification" clause that was really scary; to some, at least, it seemed to imply that if the CVC3 authors were sued, anyone who used or copied the program was obligated to pay their legal bills. Interpreted that way, no one wanted to touch the program... how could any user possibly know their risks? Fedora eventually ruled that this license was non-free (aka not FLOSS), and thus could not be included in Fedora. There was a less-serious problem that if you made a change to the program, you had to change the name... since the program couldn't even <i>compile</i> without a change (at the time), this meant that you <i>had</i> to change the name almost instantly. There is a <i>reason</i> that people have converged on standard FLOSS licenses; if your lawyer says you need to add non-standard clauses, be wary, because the result may be that few people can use your program. </p> <p> I'm delighted to report that this has a happy ending. <a href="http://www.cs.nyu.edu/acsys/cvc3/doc/LICENSE.html"> CVC3's license has just been changed to a straight BSD license</a> - a well-known license that is universally acknowledged as being FLOSS. This means that there are no licensing problems for Linux distributions. Only about a day after he found this out, <a href="https://bugzilla.redhat.com/show_bug.cgi?id=529404"> Jerry James has submitted a CVC3 package to Fedora</a>. So, I expect that in a relatively short time we'll see CVC3 available directly in common Linux distribution repositories. </p> <p> I think this is a helpful step towards <a href="http://www.openproofs.org">open proofs</a>, which are cases where an implementation, its proofs, and the necessary tools are all FLOSS. Having a good tool like CVC3 to build on makes it easier to develop <i>useful</i> tools. My hope is to mature formal methods tools so that they can be more scaleable, applicable, and effective than they are today. It's clear that a single little tool cannot possibly do the job; we need suites of tools that can work together. And this is a promising step in that direction. </p> Auto-DESTDIR released! http://www.dwheeler.com/blog/2009/08/12#auto-destdir Wed, 12 Aug 2009 10:31 GMT <p> I&#8217;ve just released <a href="http://www.dwheeler.com/auto-destdir">Auto-DESTDIR</a>, a software package which helps automate program installation on POSIX/Unix/Linux systems from source code. If you have the problem it solves &mdash; automatic support for DESTDIR &mdash; you want this! </p> <p> A little background: Many programs for Unix/Linux are provided as source code. Such programs must be configured, built, and installed, and that last step is normally performed by typing &#8220;make install&#8221;. The &#8220;make install&#8221; step normally writes directly to privileged directories like &#8220;/usr/bin&#8221; to perform the installation. Unfortunately, most modern packaging systems (such as those for .rpm and .deb files) require that files be written to some intermediate directory instead, even though when run they will be in a different filesystem location (because of security issues). This redirection is easy to do if the installation script supports the &#8220;DESTDIR convention&#8221;; simply set DESTDIR to the intermediate directory&#8217;s value and run &#8220;make install&#8221;. Supporting DESTDIR is a best practice when <a href="http://www.dwheeler.com/essays/releasing-floss-software.html"> releasing software</a>. Unfortunately, many source packages don&#8217;t support the DESTDIR convention. Auto-DESTDIR causes &#8220;make install&#8221; to support DESTDIR, <i>even if</i> the provided &#8220;makefile&#8221; doesn&#8217;t support the DESTDIR convention. Auto-DESTDIR is released under the &#8220;MIT&#8221; license, so it is Free-libre/open source software (FLOSS). </p> <p> Auto-DESTDIR is implemented using a set of bash shell scripts that wrap typical install commands (such as install, cp, ln, and mkdir), These wrappers are placed in a special directory. The run-redir command modifies the PATH so that the directory with these scripts is listed first, and then runs the given command. The make-redir command invokes &#8220;make&#8221; using run-redir, along with some extra settings to simplify things. For more information on this approach, and why this is a good way to automate DESTDIR, see the paper <a href="http://www.dwheeler.com/essays/automating-destdir.html"> Automating DESTDIR</a>, especially its <a href="http://www.dwheeler.com/essays/automating-destdir.html#wrappers"> section on wrappers</a>. </p> <p> So please take a look at the <a href="http://www.dwheeler.com/auto-destdir">Auto-DESTDIR</a> software package, if you have the problem it solves. </p> SPARK released as FLOSS (Free/ Libre / Open Source Software)! http://www.dwheeler.com/blog/2009/06/05#spark-open-source Fri, 05 Jun 2009 17:41 GMT <p> The <a href="http://libre.adacore.com/libre/tools/spark-gpl-edition/"> SPARK toolsuite has just been released as FLOSS (Free/ Libre / Open Source Software)</a> by Praxis (its creator). This is great news for those who want to make software safer, more reliable, and more secure. In particular, this means that <b><a href="http://www.openproofs.org/wiki/Tokeneer">Tokeneer</a> is now an <a href="http://www.openproofs.org/">open proof</a></b>. If you haven&#8217;t been following this, here&#8217;s some background. </p> <p> Software is now a part of really critical systems (ones that need &#8220;high assurance&#8221;), yet often that software is not as safe, reliable, or secure as it needs to be. I believe that in the long term, <a href="http://www.dwheeler.com/essays/high-assurance-floss.html"> we will need to start <i>proving</i> that our very important programs are correct</a>. Testing by itself isn&#8217;t enough; completely testing the trivial &#8220;add three 64-bit integers&#8221; program would take far longer than the age of the universe (it would take about 2x10^39 years). <!-- 2^(3*64) tests / 1 billion (per second) / 100 test machines / (365.25*24*60*60) = 1.9890935100852669e+39 years --> The basic idea of using mathematics to <i>prove</i> that programs are correct &mdash; aka &#8220;formal methods&#8221; &mdash; has been around for decades. There are a number of cases where formal methods have been applied successfully, and I&#8217;m glad about that. And yet, applying formal methods is still relatively rare. There are many reasons for this, such as inadequate maturation and capabilities of many formal methods tools, and the fact that relatively few people know how to apply formal methods when developing real programs. But what, in turn, is causing those problems? It&#8217;s true that applying formal methods is a hard problem that hasn&#8217;t received the level of funding it needs, but still, it&#8217;s been decades! </p> <p> I believe one problem hindering the maturation and spread of formal methods is a &#8220;culture of secrecy&#8221;. Details of formal method use are often unpublished (e.g., because the implementations are proprietary or classified). Similarly, details about formal methods tools are often unshared and lost (or have to constantly re-invented). <a href="http://fmv.jku.at/papers/Biere-ETH-TR-444-2004.pdf"> Biere&#8217;s &#8220;The Evolution from LIMMAT to NANOSAT&#8221; (Apr 2004)</a> gives an example: &#8220;From the publications alone, without access to the source code, various details were still unclear... Only [when CHAFF&#8217;s source code became available did] our unfortunate design decision became clear... The lesson learned is, that important details are often omitted in publications and can only be extracted from source code. It can be argued, that making source code of SAT solvers available is as important to the advancement of the field as publications&#8221; </p> <p> This &#8220;culture of secrecy&#8221; means that researchers/toolmakers often don&#8217;t receive adequate feedback, researchers/toolmakers waste time and money rebuilding tools, educators have difficulty explaining formal methods (they have no examples to show!), developers don&#8217;t understand how to apply it (and it has an uncertain value to them), and evaluators/end-users don&#8217;t know what to look for. </p> <p> I believe that a way to break through this &#8220;culture of secrecy&#8221; is to develop &#8220;open proofs&#8221;. But what are they? An <a href="http://www.openproofs.org/">&#8220;open proof&#8221;</a> is software or a system where <i>all</i> of the following are free-libre / open source software (FLOSS): <ul> <li>the entire implementation</li> <li>automatically-verifiable proof(s) of at least one key property, and</li> <li>required tools (for use and modification)</li> </ul> Something is FLOSS if it gives anyone the freedom to use, study, modify, and redistribute modified and unmodified versions of it, meeting the <a href="http://www.gnu.org/philosophy/free-sw.html">Free software definition</a> and the <a href="http://www.opensource.org/docs/definition.php">open source definition</a>. </p> <p> Imagine if we had a number of open proofs available. There could be small open proofs that could be used for learning (e.g., as examples and use in class exercises). There could be proofs of various useful functions and small applications, so developers could see how to scale up these techniques, directly reuse them as components, or use them as starting points but add additional (proven) capabilities to them. When problems come up (and they will!), toolmakers and developers could work together to find ways to mature the tools and technology so that they&#8217;d be easier to use (e.g., so more could be automated). In short, imagine there was a working ecosystem where researchers/toolmakers/educators, developers of implementations to be proved, and evaluators/end-users could work together by sharing information. I believe that would greatly speed up the maturing of formal methods, resulting in more reliable and secure software. </p> <p> In this context, Praxis has just released the <a href="http://libre.adacore.com/libre/tools/spark-gpl-edition/"> SPARK GPL Edition</a>. This is their SPARK toolsuite (a formal methods tool) released under the GNU General Public License aka GPL (the most common FLOSS license). So, what&#8217;s that? </p> <p> SPARK is a variant of the Ada programming language, designed to enable proofs about programs (by adding and removing some features of Ada). The additions are in special comments, so SPARK programs can be compiled by a normal Ada compiler like GNAT (which is part of gcc). The <a href="http://www.openproofs.org/wiki/SPARK">Open Proofs page on SPARK</a> has some information on SPARK. The page <a href="http://www.adacore.com/home/products/sparkpro/tokeneer/discovery/lesson_contracts/">What is Special About SPARK Contracts?</a> gives a nice quick introduction to SPARK, which I will quote here. It points out that the Ada line: <pre> procedure Inc (X : in out Integer); </pre> just says there is some procedure &#8220;Inc&#8221; that may read a value X, and may write it out, but that&#8217;s it. In SPARK, you can add much more precise information, and the SPARK tools can then check to see if they are true. For example, if you say this using SPARK: <pre> procedure Inc (X : in out Integer); --# global in out CallCount; --# pre X &lt; Integer'Last and --# CallCount &lt; Integer'Last; --# post X = X~ + 1 and --# CallCount = CallCount~ + 1; </pre> then the SPARK tools will ensure at compile-time (not run-time) that: <ul> <li>X and global variable CallCount must be read by at least one path and must be updated by at least one path through the procedure </li> <li> Inc can only called when both X and CallCount are less than Integer&#8217;Last. The &#8220;pre&#8221; means &#8220;precondition&#8221;. </li> <li> After Inc runs, both X and CallCount will always be incremented by one (X~ refers to the initial value of X). The &#8220;post&#8221; means &#8220;postcondition&#8221;. </li> </ul> </p> <p> You can learn more about SPARK from the book <a href="http://www.praxis-his.com/sparkada/sparkbook.asp"> High Integrity Software: The SPARK Approach to Safety and Security&#8221; by John Barnes</a>. <a href="http://www.praxis-his.com/sparkada/pdfs/sampler_final.pdf"> Sample text of Barnes&#8217; book is available online.</a> The <a href="http://www.openproofs.org/wiki/SPARK">open proofs page on SPARK</a> has more information. </p> <p> This means that the <a href="http://www.openproofs.org/wiki/Tokeneer">&#8220;Tokeneer&#8221;</a> program is now an open proof. Remember, to be an open proof, a program&#8217;s implementation, proofs, and required tools have to be open source software. Tokeneer was a sample program written to show how to apply these kinds of techniques to actual systems (instead of trivial 5-line programs). The Tokeneer program itself, and its proofs, have already been released as open source software. Many of the tools it required are already FLOSS (e.g., fuzz and LaTeX for its formal specifications, and an Ada compiler to compile it). Now that SPARK has been released as FLOSS, people can examine this entire stack of software to make improvements in all the technologies, as well as learn from them and create improved implementations. No, this doesn&#8217;t suddenly make it trivial to make proofs about complex programs, but it&#8217;s a step forward. </p> <p> If you are interested in making future software better, <a href="http://www.openproofs.org/wiki/What_can_I_do_to_help"> please help the open proofs project</a>. You don&#8217;t need to be a math whiz. For example, if you know how to do shell scripting, <a href="http://www.openproofs.org/wiki/Packaging_status"> please help us package some promising formal methods tools (like SPARK) so they are easy to install</a>. It&#8217;s hard to get people to try out these tools (and give feedback) if they&#8217;re too hard to install. If you know of formal methods software that is rotting in some warehouse, try to get it released as FLOSS. <a href="http://www.dwheeler.com/blog/2009/05/22/#default-release-oss"> I think all government-funded unclassified research software should be released as FLOSS by default, since &#8220;we the people&#8221; paid for it</a>! If you&#8217;re interested in the latest software technology, try out a few of these formal methods tools, and release as FLOSS any small programs and proofs you develop with them. Send the toolmakers feedback, or write down their strengths and weaknesses to help others understand them. SPARK is a tool that <i>can</i> be used, right now, in certain circumstances. I have no illusions that today&#8217;s formal methods tools are ready for arbitrary 20 million line programs. But if we want future software to be better than today, we need to figure out how to mature formal methods technology and make it better-understood so that it <i>can</i> mature and scale. I think making top-to-bottom worked examples and starting points can help us get there. </p> Parchment: Running the Z-machine http://www.dwheeler.com/blog/2009/05/28#parchment Thu, 28 May 2009 20:03 GMT <p> I just learned of fun web application called <a href="http://code.google.com/p/parchment/">Parchment</a>. Parchment lets you play interactive fiction (I.F., aka "text adventure games") using just your web browser. It only works with I.F. in "Z-machine" format, but that's a very common format. </p> <p> So <a href="http://parchment.toolness.com/"> go to the parchment site and try out something from their long list of interactive fiction</a>... now you don't need to install anything! That includes <a href="http://parchment.googlecode.com/svn/trunk/parchment.html?story=http://parchment.toolness.com/if-archive/games/zcode/Accuse.zblorb.js"> my small replayable puzzle "Accuse"</a> (my <a href="http://www.dwheeler.com/accuse/">Accuse source code is already available</a>). </p> <p> If you want more information about it, <a href="http://www.toolness.com/wp/?p=49"> here's a brief post about Parchment by its author, Atul Varma</a>. Atul built this based on an existing program, Thomas Thurman's Gnusto. Both are open source software (using the GPLv2 license). Once again, this demonstrates the neat thing about community-developed software; one person developed a program for one circumstance, and another extended it for a different circumstance. </p> <p> There are several tools available for <i>creating</i> interactive fiction. I've been watching <a href="http://inform7.com/">Inform 7</a> for a while, with interest, because it takes a radically different approach to writing code. Inform 7 is a natural-language programming language that tries to actively exploit features of natural language to make developing these kinds of things easier. <a href="http://www.brasslantern.org/writers/howto/i7tutorial.html"> You can see a brief Inform 7 tutorial if you're curious</a>, as well as the full <a href="http://www.inform7.com/learn/man/index.html"> Writing with Inform</a> documentation. Inform 7 isn't itself OSS, though significant portions are; <a href="http://inform7.com/sources/i6n/">inform 6 (a key substrate)</a> and <a href="http://inform7.com/sources/webs/"> many other portions including the Inform 7 standard rules</a> are released under the Artistic License 2.0. The <a href="http://inform7.com/write/extensions/">extensions</a> are released under the "Attribution Creative Commons licence"; that's not normally a license used for software, but I think it'd meet the criteria for OSS, and <a href="https://fedoraproject.org/wiki/Licensing">Fedora approves of this license for content</a>. I hope that someday the rest will be released as OSS as well. The logic behind Inform 7 is described in <a href="http://www.inform7.com/learn/documents/WhitePaper.pdf"> "Natural Language, Semantic Analysis and Interactive Fiction" by Graham Nelson</a>. If you're interested in some of the technical stuff behind it, the text of the <a href="http://www.inform7.com/sources/src/stdrules/Woven/index.html"> Standard Rules</a>, the text of the <a href="http://inform7.com/write/extensions/">extensions</a>, <a href="http://www.ifwiki.org/index.php/Inform_7_for_Programmers"> Inform 7 for programmers</a>, and the <a href="http://inform7.com/learn/documents/Rules%20Chart.pdf">Chart of Rules</a> can tell you more. </p> Wikipedia changes its license http://www.dwheeler.com/blog/2009/05/23#wikipedia-license-change Sat, 23 May 2009 12:36 GMT <p> <a href="http://meta.wikimedia.org/wiki/Licensing_update/Result"> The Wikimedia Foundation (WMF) will change the licensing terms on all its materials &mdash; including Wikipedia</a>. Now, all of its existing material will be released under the Creative Commons Attribution-ShareAlike (CC-BY-SA) license in addition to the current GNU Free Documentation License (GFDL). The WMF says &#8220;This change is meant to advance the WMF&#8217;s mission by increasing the compatibility and availability of free content.&#8221; This means that Wikipedia material can now be combined with the vast amount of CC-BY-SA licensed material, and Wikipedia can now include the volumes of CC-BY-SA material (that material will just be CC-BY-SA). It also makes it easier to use Wikipedia material (and other material from the Wikimedia Foundation). </p> <p> I think this is a good thing overall. Incompatible licenses are a real scourge on community-developed works. Past experience shows that license incompatibility can be a real problem for <a href="http://www.dwheeler.com/oss_fs_why.html">free-libre/ open source software (FLOSS or OSS)</a>, in particular. <a href="http://oreilly.com/catalog/opensources/book/perens.html"> Bruce Perens warned about FLOSS license incompatibility back in 1999!</a> As I argue in <i><a href="http://www.dwheeler.com/essays/gpl-compatible.html"> Make Your Open Source Software GPL-Compatible. Or Else</a></i>, you should release free-libre/ open source software (FLOSS) using a GPL-compatible license. You don&#8217;t need to <i>use</i> the GPL, but using a GPL-compatible license (like the MIT, BSD-new, LGPL, or GPL) so means that people can combine your software with other software to create larger works. I show how this works in <i><a href="http://www.dwheeler.com/essays/floss-license-slide.html"> The Free-Libre / Open Source Software (FLOSS) License Slide</a></i>, which has a simple graph showing how common FLOSS licenses can work together. Wikipedia articles aren&#8217;t software, but the principles still apply - licenses need to <i>enable</i> community-developed works, not disable them. </p> <p> Now, nothing is perfect. One nice benefit of the <a href="http://www.gnu.org/copyleft/fdl.html"> GNU Free Documentation License (GFDL)</a> is that it requires that readers be able to get editable versions whose format specification is available to the public (for details, see its text on &#8220;transparent&#8221; copies). This is a really nice feature of the GFDL; it counters some of the problems of proprietary formats. </p> <p> The GFDL has many problems, though, when used for short works like Wikipedia articles or images. Most obviously, it requires that you include the entire text of the license with each work (see GFDL 1.3 section 2). That&#8217;s no problem for large manuals, which is what the GFDL was designed for, but it&#8217;s a big problem for short works. Nobody likes having a license longer than the article it&#8217;s attached to! This is one reason why CC-BY-SA is so widely used for short works - and since Wikipedia is primarily a large set of short works, it makes sense. Which is why I (and many others) voted to approve this change. </p> <p> Now it&#8217;s certainly true that people also complain that the GFDL allows the addition of unmodifiable sections. But many GFDL items don&#8217;t have them, and <a href="http://www.debian.org/vote/2006/vote_001"> Debian determined through a formal vote that &#8220;GFDL-licensed works without unmodifiable sections are free [as in freedom]&#8221;</a>. </p> <p> I should also give credit to the Wikimedia Foundation (WMF), Richard Stallman of the FSF, and Lawrence Lessig, who worked together to make this possible. </p> <p> For more on the Wikimedia license modification, you can see <a href="http://meta.wikimedia.org/wiki/Licensing_update/Questions_and_Answers">Wikimedia license FAQ</a>, <a href="http://lessig.org/blog/2008/11/enormously_important_news_from.html">Lawrence Lessig&#8217;s post on GFDL 1.3</a>, <a href="http://lwn.net/Articles/305892/">GFDL 1.3: Wikipedia's exit permit</a>, <a href="http://www.gnu.org/licenses/fdl-1.3-faq.html">FDL 1.3 FAQ</a>, and <a href="http://www.fsf.org/blogs/licensing/2008-12-fdl-open-letter"> An open response to Chris Frey regarding GFDL 1.3</a>. </p> Government-developed Unclassified Software: Default release as Open Source Software http://www.dwheeler.com/blog/2009/05/22#default-release-oss Fri, 22 May 2009 20:44 GMT <p> I&#8217;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 <a href="http://www.dwheeler.com/oss_fs_why.html">open source software</a> (unless there&#8217;s a good reason not to). </p> <p> Why? Well, If &#8220;we the people&#8221; paid to develop it, then &#8220;we the people&#8221; 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. </p> <p> Let me focus specifically on the United States. I think this idea easily fits into the broader ideas of <a href="http://www.whitehouse.gov/blog/09/05/21/Opening/">transparency and open government</a>, including the <a href="http://www.whitehouse.gov/the_press_office/Transparency_and_Open_Government/">Memorandum on Transparency and Open Government</a>. Look at all the excitement over <a href="http://www.data.gov/">data.gov</a>, indeed, <a href="http://sunlightlabs.com/contests/appsforamerica2/">Apps for America</a> having a contest to develop software to use data from data.gov. </p> <p> Indeed, there&#8217;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. <a href="http://www.law.cornell.edu/uscode/17/105.html">17 USC 105</a> and <a href="http://www.law.cornell.edu/uscode/17/usc_sec_17_00000101----000-.html">17 USC 101</a> prevents the U.S. government from claiming U.S. copyright on a work &#8220;prepared by an officer or employee of the United States Government as part of that person’s official duties&#8221;. So this idea would be an extension of what&#8217;s already gone on. </p> <p> 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 <i>Raiders of the Lost Ark</i>. Some argue that giving sole rights is the only way to commercialization, but that&#8217;s just not true; <a href="http://www.dwheeler.com/essays/commercial-floss.html"> open source software <b>is</b> commercial software</a>, so this is simply a different and fairer path to commercialization. In contrast, the current system inhibits all kinds of technical progress; <a href="http://fmv.jku.at/papers/Biere-ETH-TR-444-2004.pdf"> Biere&#8217;s &#8220;The Evolution from LIMMAT to NANOSAT&#8221; (Apr 2004)</a> found that &#8220;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&#8221;. Originally I thought of this idea for research software, and it&#8217;s not hard to see why. But when I starting thinking about the reasons for doing this &mdash; especially &#8220;if &#8216;we the people&#8217; paid to develop it, then &#8216;we the people&#8217; should get it&#8221; &mdash; then I realized that this principle applies much more broadly. </p> <p> An <a href="http://transition2008.wordpress.com/2009/05/21/open-government-directive-not-yet/">open government directive</a> isn&#8217;t out yet, but they&#8217;re clearly working on it. Please submit this - and other ideas like it - to them. I think there&#8217;s a lot of promise, but they can only enact and refine ideas that they&#8217;ve heard of. If you like this idea, <a href="http://opengov.ideascale.com/akira/dtd/2778-4049">please vote for it</a>. </p> <p> 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&#8217;s okay. Some will ask &#8220;how will people find it&#8221;, but I think that&#8217;s the wrong question. There are many commercial search engines that can find code, but they can only find stuff that&#8217;s web-accessible; let&#8217;s give them something to find. </p> <p> 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. </p> <p> I&#8217;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&#8217;s a special ingredient necessary for national security, then it should be classified and not revealed in <i>any</i> 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. <!-- My thanks to Reg Meeson who looked this crazy idea over, and agreed it wasn't crazy. --> </p> Wikipedia for childrens' schools http://www.dwheeler.com/blog/2009/05/11#wikipedia-for-schools Mon, 11 May 2009 12:49 GMT <p> <a href="http://en.wikipedia.org/">Wikipedia</a> is a cool project. But if you want to hand an encyclopedia to younger children or to schools, Wikipedia is not a great choice. Wikipedia is not &#8220;child-safe&#8221;, nor is intended to be; it includes a lot of &#8220;adult&#8221; content. Also, Wikipedia constantly suffers vandalism; the vandalism is often repaired quickly, but that&#8217;s little comfort to parents and teachers. There&#8217;s also the problem of Internet access; schools typically employ blocking software, and blocking software is fundamentally not smart. Since Wikipedia mixes material that&#8217;s okay for children with stuff that is not, Wikipedia often gets blocked by schools for children. Some schools for children just don&#8217;t have Internet access at all, for a variety of reasons. All of this makes it hard for such schools to directly use Wikipedia. </p> <p> <a href="http://schools-wikipedia.org/">Wikipedia for schools</a> is a cool project that compensates for this. It&#8217;s a free, hand-checked, non-commercial selection from Wikipedia, targeted around the UK National Curriculum and useful for much of the English speaking world. The current version has about 5500 articles (as much as can be fit on a DVD with good size images) and is &#8220;about the size of a twenty volume encyclopaedia (34,000 images and 20 million words)&#8221;. It was developed by carefuly selecting for content, then checking for vandalism and suitability by &#8220;SOS Children volunteers&#8221;. You can download it for free from the website, or as a free 3.5GB DVD. <p> I also see this as a future model for Wikipedia &mdash; allow people to edit, but have a separate vetting process that identifies particular versions of an article as vetted. Then, people can choose if they want to see the latest version or the most recent vetted version. To some, this is very controversial, but I don&#8217;t see it that way. A vetting process doesn&#8217;t prevent future edits, and it creates a way for people to get what they want... material that they can have increased confidence in. The trick is to develop a good-enough vetting process (or perhaps multiple vetting/rating processes for different purposes). This didn&#8217;t make sense back when Wikipedia was first starting (the problem was to get articles written at all!), but now that Wikipedia is more mature, it shouldn&#8217;t be surprising that there&#8217;s a new need to identify vetted articles. Yes, you have to worry about countries to whom &#8220;democracy&#8221; is a dirty word, but I think such problems can be resolved. This is hardly a new idea; see <a href="http://meta.wikimedia.org/wiki/Article_validation">Wikimedia&#8217;s article on article validation</a>, <a href="http://en.wikipedia.org/wiki/Wikipedia:Pushing_to_1.0">Wikipedia&#8217;s pushing to 1.0</a>, <a href="http://meta.wikimedia.org/wiki/User:Eloquence/WikiQA">WikiQA by Eloquence</a>, and <a href="http://www.mediawiki.org/wiki/Extension:FlaggedRevs">FlaggedRevs</a>. I am sure that a vetting/validation process will take time to develop, and it <i>will</i> be imperfect... but that doesn&#8217;t make it a bad idea. </p> <p> So anyway, if you know or have younger kids, check out <a href="http://schools-wikipedia.org/">Wikipedia for schools</a>. This is a project that more people should know about. </p> FLOSS doubles every 14 months! http://www.dwheeler.com/blog/2009/05/07#floss-doubles-14-months Thu, 07 May 2009 18:11 GMT <p> I just took a look at <a href="http://www.redhat.com/f/pdf/written-statement-in-case-g.pdf"> Red Hat's 2009 brief to the European Patent Office on why software patents should not be allowed</a>. It's a nice brief, noting that software patents hinder software innovation, and that there is a sound legal basis not to expand availability of such patents in Europe. (Here's <a href="http://press.redhat.com/2009/04/30/old-world-and-new-world-software-patent-problems/">Red Hat's press release</a>, and <a href="http://www.computerworlduk.com/community/blogs/index.cfm?entryid=2162&amp;blogid=14"> Glyn Moody's comments (ComputerWorld UK) on it</a>). </p> <p> Their brief points to another paper with very interesting results: <a href="http://dirkriehle.com/publications/2008/the-total-growth-of-open-source/"> "The Total Growth of Open Source" by Amit Deshpande and Dirk Riehle (Proceedings of the Fourth Conference on Open Source Systems (OSS 2008). Springer Verlag, 2008. Page 197-209)</a>. In this paper, they analyze the growth of more than 5000 open source software projects, and show that "the total amount of source code as well as the total number of open source projects is growing at an exponential rate." In their conclusion they state that the "total amount of source code and the total number of projects double about every 14 months." </p> <p> That is an <i>extraordinary</i> rate of growth. Exponential growth can start small, but when it continues it will completely flatten anything not growing exponentially (or growing as fast). This result is consistent with my earlier work, <a href="http://www.dwheeler.com/sloc/"><i>More than a Gigabuck: Estimating GNU/Linux's Size</i></a>, which also found very rapid growth in <a href="http://www.dwheeler.com/oss_fs_why.html">free/libre/open source software (FLOSS)</a>. </p> <p> So if you're interested in software trends, take a look at <a href="http://dirkriehle.com/publications/2008/the-total-growth-of-open-source/">"The Total Growth of Open Source"</a> and <a href="http://www.redhat.com/f/pdf/written-statement-in-case-g.pdf"> Red Hat's brief to the EPO on software patents</a>. I think they're both worth reading. </p> Why copyright damage limits don't hurt FLOSS http://www.dwheeler.com/blog/2009/04/22#damage-limits-dont-harm-floss Wed, 22 Apr 2009 23:50 GMT <p> There's a move afoot to argue that copyright infringement penalties should bear a rational relationship to the value of what was infringed. You <i>might</i> think that this could harm Free/Libre/Open Source Software (FLOSS), but I don't think so. Here's why. </p> <p> First: This is all being brought to a head by the current file-sharing lawsuit against Boston University graduate student Joel Tenenbaum, which raises a number of interesting questions. One issue that I find particularly interesting is the issue of statutory damages: Are fines from $750 to $150,000 per song (worth at most $1), non-commercially shared without permission, even legal under the US Constitution? Or, are these fines so excessive that they are unconstitutional? <a href="http://arstechnica.com/tech-policy/news/2009/03/obama-admin-nothing-wrong-with-statutory-damages.ars"> Ars Technical gives a brief summary of the case</a>, if you haven't been following it. The <a href="http://beckermanlegal.com/pdf/?file=/Lawyer_Copyright_Internet_Law/sony_tenenbaum_090320FSFAmicusBrief.pdf"> Free Software Foundation (FSF)'s Amicus Brief in Connection with defendant's motion to dismiss on grounds of unconstitutionality of copyright act statutory damages as applied to infringement of single MP3 files</a> argues that these penalties grossly exceed the crime; the FSF argues that the "State Farm/Gore due process test applicable to punitive damage awards is likewise applicable to statutory damages, and in particular bars the suggestion that each infringement of an MP3 file having a retail value of 99 cents or less may be punishable by statutory damages of from $750 to $150,000 -- or from 2,100 to 425,000 times the actual damages". </p> <p> Frankly, I think the FSF and Tenenbaum have a reasonable argument on this point. People who shoplift a CD from a store would definitely pay penalties when caught, but those penalties would bear some relationship to the value of the property stolen, and would be <i>far</i> smaller than a file-sharer. This notion that the "punishment should fit the crime" is certainly not new; Proverbs 6:30-31 talks about thieves paying sevenfold if they are caught. That doesn't make such actions <i>right</i> - but unjust penalties aren't right either. I think a lot of the problem is that copyright laws were originally written when only rich people with printing presses could really make and distribute many copies of material. Today, 8-year-olds can distribute as much information as the New York Times, and the law hasn't caught up. </p> <p> But does the FSF risk subverting Free/Libre/Open Source Software (FLOSS) by making this argument? After all, FLOSS developers also depend on copyright law to enforce certain conditions, and often charge $0 for copies of their software. If the penalties would be limited to "7 times the original cost", would that make FLOSS development impossible? </p> <p> I don't think there's any problem, but for some people that may not be obvious. The difference is that in a typical music copyright infringement case, the filesharer <i>could</i> purchase the right to do what they're doing for a relatively low price, something typically <i>not</i> true for FLOSS. For example, under normal circumstances it's perfectly legal to buy a song for $1, and then transfer that song to someone else (as long as you destroy your own copies), so sharing that song with 10 people is legal after paying $10. </p> <p> In contrast, violations of FLOSS licenses often can't be made legal by simply buying the rights. If you violate the revised BSD license by removing all credits to the original author, there's typically no "alternative" legal version available for sale without the author credits. (Indeed, under legal systems with strict "moral rights" it may not even be possible.) Similarly, if you violate the GPL by releasing binary software yet refusing to release its source code, there's often no way to pay additional money to the original authors for that privilege. In <i>some</i> cases, GPL'ed software is released via a dual-use license (e.g., "GPL or proprietary"), with the proprietary version costing additional money; in <i>those</i> cases you <i>do</i> have a value that you can compare against. In cases where there <i>is</i> a value you can compare against, then you should use that value to help determine the penalty. Otherwise, a much stiffer penalty is justified, because there is no method for the infringer to "buy" his or her way out, and their actions risk making functional products (not just entertainment) unsupportable. As noted in the <a href="http://www.cafc.uscourts.gov/opinions/08-1001.pdf"> United States Court of Appeals for the Federal Circuit case 2008-1001, JACOBSEN v. KATZER</a>, the court essentially found that failing to obey the conditions of an open source software license led to copyright infringement. (For more on this particular case, see <a href="http://lawandlifesiliconvalley.blogspot.com/2007/08/new-open-source-legal-decision-jacobsen.html">New Open Source Legal Decision: Jacobsen &amp; Katzer and How Model Train Software Will Have an Important Effect on Open Source Licensing</a>.) </p> <p> So I think that it <i>does</i> make sense to limit copyright penalties based on the value of the original infringed item... but that doing so does not (necessarily) put FLOSS development processes at risk. </p> Microsoft loses to Open Source Approaches (Encarta vs. Wikipedia) http://www.dwheeler.com/blog/2009/04/20#microsoft-encarta-wikipedia Mon, 20 Apr 2009 17:06 GMT <p> The competition is over. On one side, we have Microsoft, a company with a market value of about $166 billion (<a href="http://quotes.nasdaq.com/asp/SummaryQuote.asp?symbol=MSFT&selected=MSFT">according to a 2009-04-20 NASDAQ quote</a>). On the other side, we have some volunteers who work together and share their results on the web using open source approaches. </p> <p> And Microsoft lost. </p> <p> As pointed out by <a href="http://education.zdnet.com/?p=2328"> Chris Dawson (ZDNet)</a>, <a href="http://www.pcpro.co.uk/blogs/2009/04/02/why-ill-miss-microsoft-encarta/">Mike Jennings (PC Pro)</a>, <a href="http://www.guardian.co.uk/technology/2009/apr/07/wikipedia-encarta"> Naomi Alderman (the Guardian)</a>, <a href="http://bits.blogs.nytimes.com/2009/03/30/microsoft-encarta-dies-after-long-battle-with-wikipedia/">Noam Cohen (NY Times)</a>, <a href="http://mashable.com/2009/03/30/microsoft-encarta-to-close/">Adam Ostrow (Mashable)</a>, and many others, Microsoft Encarta (Microsoft&#8217;s encyclopedia project) has folded, having failed to compete with <a href="http://en.wikipedia.org">Wikipedia</a>. It&#8217;s not even hard to see why: <ol> <li>Wikipedia is cheaper than Encarta (no-cost vs. cost)</li> <li>Wikipedia is easier to start using. If you have a web browser, you have Wikipedia. In contrast, you have to specially install Encarta, and it does not work on all platforms.</li> <li>Wikipedia is more up-to-date than Encarta. It often took years before Encarta entries got updated, even on trivially obvious issues such as death dates.</li> <li>Wikipedia has far more material. Wikipedia has far more articles, and generally it has far more material in each article.</li> <li>Wikpedia&#8217;s material has fewer legal restrictions, so users are allowed to do more with Wikipedia results. Creating mash-ups and reposting portions is part of today&#8217;s world.</li> </ol> </p> <p> One lesson to be learned here is that it sometimes doesn&#8217;t matter how large a company is; changes in technology may mean that they may abandon something in the future. Plan that the future will change, even if a company seems invincible. It&#8217;s easy to pick on Microsoft here, but the same can be said of IBM, or Oracle, or anyone else. Tying yourself completely to any one company is, in the long term, a mistake. Thus, you need to have a reasonable escape plan if a company folds or stops supporting a product that you depend on. </p> <p> Another lesson to be learned here is that proprietary approaches can be beaten by open source approaches. That doesn&#8217;t mean it must happen every time, of course. But clearly open source approaches can, at least sometimes, dominate their proprietary competition. </p> <p> In the long term, it simply doesn&#8217;t matter if a company has more money if an open-sourced competitor can produce a better product, make it available at a lower cost, and can sustain that process indefinitely. Given those three factors, proprietary vendors will lose to an open-sourced competitor unless there&#8217;s a key differentiator that is <i>sufficiently valuable to users</i>. In such cases, <i>having</i> more money is just an opportunity to <i>lose</i> more money; it gives no benefit of scale. Microsoft&#8217;s Encarta team tried to compete by adding special materials (like fancy graphics and sound). I&#8217;m sure that Encarta managers convinced themselves that because they were spending money to develop these materials, that users would pay for Encarta instead. They were wrong. In the end, users were more interested in good, timely information than in fancy graphics, and Encarta simply didn&#8217;t have a chance. Open source approaches were simply better at providing the encyclopedia people wanted than proprietary approaches were. </p> <p> The obvious question to me is, are there any lessons that apply to software too? Wikipedia uses free / libre / open source software (FLOSS) principles, but Wikipedia is an encyclopedia not a FLOSS program. Indeed, software is different than encyclopedias in many ways, for example, people can easily switch encyclopedias (while the lock-in and network effects of software are well-known), and far more people can participate in encyclopedia development than in software development. But I still think there are lessons to be learned here. This Encarta vs. Wikipedia battle should make it clear that no proprietary company &mdash; no matter how well-resourced it is &mdash; is invulnerable to open source competition. Developers of products with FLOSS-like licenses give up some privileges that the law permits them to have, and in return, they can often drastically reduce their development costs and increase the breadth of the result (because the development efforts can be shared among many developers). At a certain point, FLOSS-like projects can end up like a snowball rolling down the hill; they gain so much momentum that even large sums of money &mdash; or being the first &mdash; aren&#8217;t enough to counter them. As a result, even proprietary companies with massive cash resources do not always win. In summary, it doesn&#8217;t matter if you have lots of money; if your product costs more and does less (from the user&#8217;s point of view), you must change that circumstance, eliminate all competition, or suffer failure of the product. <!-- My thanks to Ed Schneider, who gave this a look-over. --> </p> Releasing FLOSS Software http://www.dwheeler.com/blog/2009/04/13#releasing-floss-software Mon, 13 Apr 2009 17:44 GMT <p> If you&#8217;ve written (or started to write) some Free/Libre/Open Source Software (FLOSS), <i>please</i> follow the time-tested community standards for releasing FLOSS software when you want people to be able to install it from source code. Unfortunately, a lot of people don't seem to be aware of what these conventions are. This really hit me in my recent <a href="http://www.openproofs.org">OpenProofs</a> work; we're trying to make it easy to install programs by pre-packaging them, and we've found that some programs are a <i>nightmare</i> to package or install because their developers did not follow the standard conventions. </p> <p> So I've released a brief article: <a href="http://www.dwheeler.com/essays/releasing-floss-software.html"> <b><i>Releasing Free/Libre/Open Source Software (FLOSS) for Source Installation</i></b></a>, to help people learn about them. For the details, I point to the <a href="http://www.gnu.org/prep/standards/"><i>GNU Coding Standards</i></a> (especially the <a href="http://www.gnu.org/prep/standards/html_node/Managing-Releases.html"> release process</a> chapter) and the <a href="http://en.tldp.org/HOWTO/Software-Release-Practice-HOWTO/"><i>Software Release Practice HOWTO</i></a>. I also point out some of the most important conventions that will make building and installing your software <i>much</i> easier for your users: <ol> <li>Pick a good, simple, Google-able name.</li> <li>Identify the version (using simple version numbers or ISO dates), and include that in the release filename as NAME-VERSION.FORMAT.</li> <li>Use a standard, widely-used, GPL-compatible FLOSS license &mdash; and say so.</li> <li>Follow good distribution-making practice, in particular, make sure tarballs always unpack into a single new directory named NAME-VERSION.</li> <li>Use the standard invocation to configure, build, and install it: <tt>./configure; make; make install</tt>.</li> <li>Support the standard <tt>./configure</tt> options like --prefix, --exec-prefix, --bindir, --libdir, and so on.</li> <li>Create a makefile that can rebuild everything and uses makefile variables (including applicable standard makefile variable names and targets).</li> <li>Have &#8220;make install&#8221; support DESTDIR.</li> <li>Document the external tools/libraries needed for building and running, and make it easy to separate/reuse them.</li> <li>If you patch an external library/tool, get the patch upstream.</li> <li>Use standard user interfaces. For command line tools, use &#8220;-&#8221; single-letter options, &#8220;--&#8221; long-name options, and &#8220;--&#8221; by itself to signal &#8220;no more options&#8221;. For GUI tools, provide a .desktop file.</li> </ol> </p> <p> To learn more, see the whole article: <a href="http://www.dwheeler.com/essays/releasing-floss-software.html"><b><i>Releasing Free/Libre/Open Source Software (FLOSS) for Source Installation</i></b></a>. </p> Fixing Unix/Linux/POSIX Filenames http://www.dwheeler.com/blog/2009/03/24#fixing-unix-linux-filenames Tue, 24 Mar 2009 18:16 GMT <p> Traditionally, Unix/Linux/POSIX filenames can be almost any sequence of bytes, and their meaning is unassigned. The only real rules are that "/" is always the directory separator, and that filenames can't contain byte 0 (because this is the terminator). Although this is flexible, this creates many unnecessary problems. In particular, this lack of limitations makes it unnecessarily difficult to write correct programs (<a href="http://www.dwheeler.com/secure-programs/Secure-Programs-HOWTO/file-names.html">enabling many security flaws</a>), makes it impossible to consistently and accurately display filenames, and it confuses users. </p> <p> So for those of you who understand Unix/Linux/POSIX, I've just released a new technical article, <a href="http://www.dwheeler.com/essays/fixing-unix-linux-filenames.html"> Fixing Unix/Linux/POSIX Filenames</a>. </p> <p> This article will try to convince you that <a href="http://www.dwheeler.com/essays/fixing-unix-linux-filenames.html#complications"> adding <i>some</i> limitations on legal Unix/Linux/POSIX filenames would be an improvement</a>. <a href="http://www.dwheeler.com/essays/fixing-unix-linux-filenames.html#standards"> Many programs <i>already</i> presume these limitations, the POSIX standard <i>already</i> permits such limitations, and many Unix/Linux filesystems <i>already</i> embed such limitations</a> - so it'd be better to make these (reasonable) assumptions true in the first place. The article discusses, in particular, the problems of <a href="http://www.dwheeler.com/essays/fixing-unix-linux-filenames.html#control">control characters in filenames</a>, <a href="http://www.dwheeler.com/essays/fixing-unix-linux-filenames.html#dashes">leading dashes in filenames</a>, the <a href="http://www.dwheeler.com/essays/fixing-unix-linux-filenames.html#utf8">lack of a standard encoding scheme (vs. UTF-8)</a>, and <a href="http://www.dwheeler.com/essays/fixing-unix-linux-filenames.html#metacharacters">special metacharacters in filenames</a>. <a href="http://www.dwheeler.com/essays/fixing-unix-linux-filenames.html#spaces">Spaces in filenames</a> are probably hopeless in general, but resolving some of the other issues will simplify their handling too. This article will then <a href="http://www.dwheeler.com/essays/fixing-unix-linux-filenames.html#todo"> briefly discuss some methods for solving this long-term</a>, though that's not easy - if I've convinced you that this needs improving, I'd like your help figuring out how to do it! <p> So - take a peek at <a href="http://www.dwheeler.com/essays/fixing-unix-linux-filenames.html"> Fixing Unix/Linux/POSIX Filenames</a>. If you have ideas on how to help, I'd love to know. </p>