David A. Wheeler's Blog http://www.dwheeler.com/blog David A. Wheeler's weblog. en The magic cookie parable http://www.dwheeler.com/blog/2012/04/15#magic-cookie-parable Sun, 15 Apr 2012 09:18 GMT <p> <img src="http://www.dwheeler.com/images/Choco_chip_cookie.png" align="left"> </img> <i> In some <a href="http://www.dwheeler.com/essays/dod-oss.pdf">presentations</a> I include the &#8220;magic cookie parable&#8221;. Here is the parable, for those who have not heard it (I usually hold a cookie in my hand when I present it). Anyway&#8230; </i> </p> <div style="color:#6600CC ; font-size: 120%"> <p> I have in my hand&#8230; a magic cookie! Just one cookie will supply all your food needs for a whole year. What is more, the first one is only $1. Imagine how much money you will save! Imagine how much time you will save! </p> <p> Ah, but there&#8217;s a catch. Once you eat the magic cookie, you can <i>only</i> eat magic cookies, as all other food will become poisonous to you. What&#8217;s more, there is only one manufacturer of magic cookies. </p> <p> Do you think the cookie will be $1 next year? How about for the rest of your life? Are you as eager to eat the cookie? </p> </div> <p> Is that a silly parable? It should be. Yet many people accept information technology (IT), for themselves or on behalf of their organizations, that are fundamentally magic cookies. Too many are blinded into accepting technology that makes them, or their organization, completely at the mercy of a single supplier. You can call dependence on single supplier a security problem, or a supply chain problem, or a support problem, or many other things. But no matter what you call it, it is a serious problem. </p> <p> Now please do not hear what I am not saying. I am not here to attack any particular supplier. In fact, we all need suppliers, and I am grateful for suppliers! The problem is not the existence of suppliers; the problem is excessive dependency on any one supplier. </p> <p> There are only a few information technology (IT) strategies that counter sole-supplier dependency that I know of: <ol> <li>Build and control it yourself. In a few cases this is reasonable, but in most cases, that is too expensive and it risks obsolescence.</li> <li>Open systems/open standards. Here, you ensure that your system is made of modular parts with key interfaces covered by standards; that way, you can later switch to a different product. This can work, but suppliers may create proprietary extensions that (if you are not careful) lock you in anyway. </li>Open source software. Since open source software allows anyone to modify and redistribute the software, if a supplier goes in a direction you did not like, you can band together with other customers to ensure a supply of software that meets your needs. </li> <li>A Combination. That is, a combination of the above.</li> </ol> </p> <p> Before getting locked into a single supplier, count the true cost over the entire time it will occur. Sure, in some cases, it may be worth it anyway. But you may find that this true cost is far higher than you are willing to pay. (The cookie image is by Bob Smith, released under the CC Attribution 2.5 license. Thank you!) </p> DoD Open Source Software (OSS) Pages Moved http://www.dwheeler.com/blog/2012/04/05#dod-oss-moved-2012 Thu, 05 Apr 2012 16:33 GMT <p> The US Department of Defense (DoD) has changed the URLs for some of its information on Open Source Software (OSS). Unfortunately, there are currently no redirects, and that makes them hard to find (sigh). Here are new links, if you want them. </p> <p> A good place to start is the <a href="http://dodcio.defense.gov/Home/Topics/UseofFreeOpenSourceSoftwareFOSS.aspx">Department of Defense (DoD) Free Open Source Software (FOSS) Community of Interest page, hosted by the DoD Chief Information Officer (CIO)</a>. </p> <p> From that page, you can reach: <ul> <li><a href="http://dodcio.defense.gov/Portals/0/Documents/FOSS/2009OSS.pdf">Clarifying Guidance Regarding Open Source Software (OSS) Memorandum by David M. Wennergren, 16 October 2009</a> - this is the overall DoD policy on OSS </li> <li><a href="http://dodcio.defense.gov/Portals/0/Documents/FOSS/OTD-lessons-learned-military-signed.pdf">Open Technology Development (OTD): Lessons Learned &amp; Best Practices for Military Software - OSD Report, May 2011</a> - this is guidance on how to develop and use OSS </li> <li><a href="http://dodcio.defense.gov/OpenSourceSoftwareFAQ.aspx" title="DoD Open Source Software Frequently Asked Questions (DoD OSS FAQ)">DoD Open Source Software (OSS) Frequently Asked Questions (FAQ)</a> - this has lots of answers to questions about OSS, focusing on DoD issues </li> <li><a href="http://dodcio.defense.gov/Portals/0/Documents/FOSS/dodfoss_pdf.pdf">Use of Free and Open-Source Software (FOSS) in the U.S. Department of Defense - 2003 Study by MITRE Corporation performed for DoD</a> - a report by MITRE&#8217;s Terry Bollinger showing that the DoD was already using OSS widely in 2002-2003. Funny fact: In the Acknowledgements page, I am listed second. </li> </ul> </p> <p> If you are interested in the topic of DoD and OSS, you might also be interested in the <a href="http://www.mil-oss.org/">Military Open Source Software (Mil-OSS)</a> group, which is not a government organization, but is an active community. </p> Insecure open source software libraries? http://www.dwheeler.com/blog/2012/04/03#insecure-libraries Tue, 03 Apr 2012 14:00 GMT <p> The news is abuzz about a new report, <a href="https://www.aspectsecurity.com/blog/the-unfortunate-reality-of-insecure-libraries/">&#8220;The Unfortunate Reality of Insecure Libraries&#8221; (by Aspect Security, in partnership with Sonatype)</a>. Some news articles about it, like <a href="http://www.networkworld.com/news/2012/032612-open-source-vulnerabilities-257645.html">Open source code libraries seen as rife with vulnerabilities (Network World)</a> make it sound like open source software (OSS) is especially bad. (To be fair, they do not literally say that, but many readers might infer it.) </p> <p> However, if you look at the report, you see something quite different. The report directly states that, &#8220;This paper is not a critique of open source libraries, and we caution against interpreting this analysis as such.&#8221; They only examined open source Java libraries, but their &#8220;experience in evaluating the security of hundreds of custom applications indicates that the findings are likely to apply to closed-source and commercial libraries as well.&#8221; </p> <p> This is a valuable report, because it points out a general problem <i>not</i> specific to OSS. </p> <p> The problem is that <b>software libraries (OSS or not) are not being adequately managed, leading to a vast number of vulnerabilities</b>. For example, the report states that &#8220;The data show that most organizations do not appear to have a strong process in place for ensuring that the libraries they rely upon are up-to-date and free from known vulnerabilities.&#8221; They point out that &#8220;development teams readily acknowledge, often with some level of embarrassment, that they make no efforts to keep their libraries up-to-date.&#8221; They also note that &#8220;Organizations download many old versions of libraries&#8230; If people were updating their libraries, we would have expected the popularity of older libraries to drop to zero within the first two years. However, the data clearly show popularity extending back over six years&#8230;. The continuing popularity of libraries for extended months suggests that incremental releases of legacy applications are not being updated to use the latest versions of libraries but are continuing to use older versions.&#8221; They recommend that software development organizations inventory, analyze, control, and monitor their libraries, and give details on each point. </p> <p> I should note that I&#8217;ve been saying some of these things for years. For years I have said that you should <a href="http://www.dwheeler.com/oss_fs_eval.html">evaluate OSS before you use it</a>&#8230; some software is better than others. Back in 2008 I also urged <a href="http://www.dwheeler.com/blog/2008/09/19/">developers to use system libraries</a>, at least as an option; embedding libraries often leads over time to the use of old (and vulnerable) libraries. An advantage of OSS is that many people can review the software, find problems (including vulnerabilities), and fix them&#8230; but this advantage is lost if the fixed versions are not used! And of course, if you develop software, you need to learn <a href="http://www.dwheeler.com/secure-programs/index.html">how to develop secure software</a>. As the report notes, tools can be useful (I give away <a href="http://www.dwheeler.com/flawfinder/">flawfinder</a>), but tools cannot replace human knowledge and human review. </p> <p> For more information, you should see their actual report, <a href="https://www.aspectsecurity.com/blog/the-unfortunate-reality-of-insecure-libraries/">&#8220;The Unfortunate Reality of Insecure Libraries&#8221; (by Aspect Security)</a>. </p> Software patents may silence little girl http://www.dwheeler.com/blog/2012/03/26#software-patents-silence-little-girl Mon, 26 Mar 2012 01:22 GMT <p> Software patents are hurting the world, but the damage they do is often hard to explain and see. </p> <p> But <a href="http://niederfamily.blogspot.com/2012/03/goliath-v-david-aac-style.html">Dana Nieder&#8217;s post &#8220;Goliath v. David, AAC style&#8221;</a> has put a face on the invisible scourge of software patents. As she puts it, a software patent has put her &#8220;daughter&#8217;s voice on the line. Literally. My daughter, Maya, will turn four in May and she can&#8217;t speak.&#8221; After many tries, the parents found a solution: A simple iPad application called &#8220;Speak for Yourself&#8221; that implements &#8220;augmentative and alternative communication&#8221; (AAC). Dana Nieder said, &#8220;My kid is learning how to &#8216;talk.&#8217; It&#8217;s breathtaking.&#8221; </p> <p> But now Speak for Yourself is being sued by a big company, Semantic Compaction Systems and Prentke Romich Company (SCS/PRC), who claims that the smaller Speak for Yourself is infringing SCS/PRC&#8217;s patents. If SCS/PRC wins their case, the likely outcome is that these small apps will completely disappear, eliminating the voice of countless children. The reason is simple: Money. SCS/PRC can make $9,000 by selling their one of their devices, so they have every incentive to eliminate software applications that cost only a few hundred dollars. Maya cannot even use the $9,000 device, and even if she could, it would be an incredible hardship on a Bronx family with income from a single 6th grade math teacher. In short, if SCS/PRC wins, they will take away the voice of this little girl, who is not yet even four, as well as countless others. </p> <p> I took a quick look at the <a href="http://www.scribd.com/priorsmart/d/83475314-Semantic-Compaction-Systems-et-al-v-Speak-For-Yourself-et-al"> complaint, Semantic Compaction Systems, Inc. and Prentke Romich Company, v. Speak for Yourself LLC; Renee Collender, an individual; and Heidi Lostracco, an individual</a>, and it is horrifying at several levels. Point 16 says that the key &#8220;invention&#8221; is this misleadingly complicated paragraph: &#8220;A dynamic keyboard includes a plurality of keys, each with an associated symbol, which are dynamically redefinable to provide access to higher level keyboards. Based on sequenced symbols of keys sequentially activated, certain dynamic categories and subcategories can be accessed and keys corresponding thereto dynamically redefined. Dynamically redefined keys can include embellished symbols and/or newly displayed symbols. These dynamically redefined keys can then provide the user with the ability to easily access both core and fringe vocabulary words in a speech synthesis system.&#8221; </p> <p> Strip away the gobbledygook, and this is a patent for using pictures as menus and sub-menus. This is breathtakingly obvious, and was obvious long before this was patented. Indeed, it would have been obvious to most non-computer people. But this is the problem with many software patents; once software patents were allowed (for many years they were not, and they are still not allowed in many countries), it&#8217;s hard to figure out where to end. </p> <p> One slight hope is that there is finally some effort to curb the worst abuses of the patent system. The <a href="http://www.supremecourt.gov/opinions/11pdf/10-1150.pdf">Supreme Court decided on March 20, 2012, in Mayo v. Prometheus</a>, that a patent must do more than simply state some law of nature and add the words &#8220;apply it.&#8221; This was a unanimous decision by the U.S. Supreme Court, remarkable and unusual in itself. You would think this would be obvious, but believe it or not, the lower court actually thought this was fine. We&#8217;ve gone through years where just about anything can be patented. By allowing software patents and business patents, the patent and trade office has become swamped with patent applications, often for obvious or already-implemented ideas. Other countries do not allow such abuse, by simply not allowing these kinds of patents in the first place, giving them time to review the rest. See my <a href="http://www.dwheeler.com/essays/software-patents.html">discussion about software patents</a> for more. </p> <p> My hope is that these patents are struck down, so that this 3-year-old girl will be allowed to keep her voice. Even better, let&#8217;s strike down all the software patents; that would give voice to millions. </p> Introduction to the autotools (autoconf, automake, libtool) http://www.dwheeler.com/blog/2012/03/19#introduction-autotools Mon, 19 Mar 2012 00:01 GMT <p> I&#8217;ve recently posted a <a href="http://www.dwheeler.com/autotools">video titled &#8220;Introduction to the autotools (autoconf, automake, and libtool)&#8221;</a>. If you develop software, you might find this video useful. So, here&#8217;s a little background on it, for those who are interested. </p> <p> The &#8220;autotools&#8221; are a set of programs for software developers that include at least autoconf, automake, and libtool. The autotools make it easier to create or distribute source code that (1) portably and automatically builds, (2) <a href="http://www.dwheeler.com/essays/releasing-floss-software.html">follows common build conventions (such as DESTDIR)</a>, and (3) provides automated dependency generation if you&#8217;re using C or C++. They&#8217;re primarily intended for Unix-like systems, but they can be used to build programs for Microsoft Windows too. </p> <p> The autotools are <i>not</i> the only way to create source code releases that are easily built and packaged. Common and reasonable alternatives, depending on your circumstances, include Cmake, Apache Ant, and Apache Maven. But the autotools are one of the most widely-used such tools, especially for programs that use C or C++ (though they&#8217;re not limited to that). Even if you choose to not use them for projects you control, if you are a software developer, you are likely to encounter the autotools in programs you use or might want to modify. </p> <p> Years ago, the autotools were hard for developers to use and they had lousy documentation. The autotools <i>have</i> significantly improved over the years. Unfortunately, there&#8217;s a lot of really obsolete documentation, along with a lot of obsolete complaints about autotools, and it&#8217;s a little hard to get started with them (in part due to all this obsolete documentation). </p> <p> So, I have created a little video introduction at <a href="http://www.dwheeler.com/autotools">http://www.dwheeler.com/autotools</a> that I hope will give people a hand. You can also view the video via YouTube (I had to split it into parts) as <a href="http://youtu.be/4q_inV9M_us">Introduction to the autotools, part 1</a>, <a href="http://youtu.be/tku2h_fPxhc">Introduction to the autotools, part 2</a>, and <a href="http://youtu.be/e-uYBb554LU">Introduction to the autotools, part 3</a>. </p> <p> The entire video was created using free/libre / open source software (FLOSS) tools. I am releasing it in the royalty-free webm video format, under the Creative Commons CC-BY-SA license. I am posting it to my personal site using the HTML5 video tag, which should make it easy to use. Firefox and Chrome users can see it immediately; IE9 users can see it once they install a free webm driver. I tried to make sure that the audio was more than loud enough to hear, the terminal text was large enough to read, and that the quality of both is high; a video that cannot be seen or heard is rediculous. </p> <p> This video tutorial emphasizes how to use the various autotools pieces together, instead of treating them as independent components, since that&#8217;s how most people will want to use them. I used a combination of slides (with some animations) and the command line to help make it clear. I even walk through some examples, showing how to do some things step by step (including using git with the autotools). This tutorial gives simple quoting rules that will prevent lots of mistakes, explains how to correctly create the &#8220;m4&#8221; subdirectory (which is recommended but not fully explained in many places), and discusses why and how to use a non-recursive make. It is merely an introduction, but hopefully it will be enough to help people get started if they want to use the autotools. </p> Debian GNU/Linux = $19 billion http://www.dwheeler.com/blog/2012/02/14#nineteen-billion-debian-linux Tue, 14 Feb 2012 17:53 GMT <p> Debian developer James Bromberger recently posted the interesting <a href="http://blog.james.rcpt.to/2012/02/13/debian-wheezy-us19-billion-your-pr ice-free/">&#8221;Debian Wheezy: US$19 Billion. Your price… FREE!&#8221;</a>, where he explains why the newest Debian distribution (&#8220;Wheezy&#8221;) would have taken $19 billion U.S. dollars to develop if it had been developed as proprietary software. This post was picked up in the news article <a href="http://www.itnews.com.au/News/290236,perth-coder-finds-new-debian-worth-18-billion.aspx">&#8221;Perth coder finds new Debian &#8216;worth&#8217; $18 billion&#8221; (by Liam Tung, IT News, February 14, 2012)</a>. </p> <p> You can view this as an update of my <a href="http://www.dwheeler.com/sloc/">More than a Gigabuck: Estimating GNU/Linux&#8217;s Size</a>, since it uses my approach and even uses my tool <a href="http://www.dwheeler.com/sloccount">sloccount</a>. Anyone who says &#8220;open source software can&#8217;t scale to large systems&#8221; clearly isn&#8217;t paying attention. </p> New Hampshire: Open source, open standards, open data http://www.dwheeler.com/blog/2012/02/06#new-hampshire Mon, 06 Feb 2012 01:05 GMT <p> The U.S. state of New Hampshire just passed act <a href="http://www.nhliberty.org/bills/view/2012/HB418">HB418 (2012)</a>, which requires state agencies to consider open source software, promotes the use of open data formats, and requires the commissioner of information technology (IT) to develop an open government data policy. <a href="http://yro.slashdot.org/story/12/02/04/2259227/new-hampshire-passes-open-source-bill">Slashdot has a posted discussion about it</a>. This looks really great, and it looks like a bill that other states might want to emulate. My congrats go to <a href="http://yro.slashdot.org/comments.pl?sid=2654797&cid=38931519">Seth Cohn</a> (the primary author) and the many others who made this happen. In this post I&#8217;ll walk through some of its key points on open source software, open standards for data formats, and open government data. </p> <p> First, here&#8217;s what it says about open source software (OSS): &#8220;For all software acquisitions, each state agency&#8230; shall&#8230; Consider whether proprietary or open source software offers the most cost effective software solution for the agency, based on consideration of all associated acquisition, support, maintenance, and training costs&#8230;&#8221;. Notice that this law does not mandate that the state government <i>must</i> always use OSS. Instead, it simply requires government agencies to <i>consider</i> OSS. You&#8217;d think this would be useless, but you&#8217;d be wrong. Fairly considering OSS is still remarkably hard to do in many government agencies, so having a law or regulation clearly declare this is very valuable. Yes, closed-minded people can claim they &#8220;considered&#8221; OSS and paper over their biases, but laws like this make it easier for OSS to get a fair hearing. The law defines &#8220;open source software&#8221; (OSS) in a way consistent with its usual technical definition, indeed, this law&#8217;s definition looks a lot like the free software definition. That&#8217;s a good thing; the impact of laws and regulations is often controlled by their definitions, so having good definitions (like this one for OSS) is really important. Here&#8217;s the New Hampshire definition of OSS, which I think is a good one: <ol type="a"> <li>&#8221;Unrestricted use of the software for any purpose;</li> <li>Unrestricted access to the respective source code;</li> <li>Exhaustive inspection of the working mechanisms of the software;</li> <li>Use of the internal mechanisms and arbitrary portions of the software, to adapt them to the needs of the user;</li> <li>Freedom to make and distribute copies of the software; and</li> <li>Modification of the software and freedom to distribute modifications of the new resulting software, under the same license as the original software.&#8221;</li> </ol> </p> <p> The material on open standards for data says, &#8220;The commissioner shall assist state agencies in the purchase or creation of data processing devices or systems that comply with open standards for the accessing, storing, or transferring of data&#8230;&#8221; The definition is interesting, too; it defines an &#8220;open standard&#8221; as a specification &#8220;for the encoding and transfer of computer data&#8221; that meets a long list of requirements, including that it is &#8220;Is free for all to implement and use in perpetuity, with no royalty or fee&#8221; and that it &#8220;Has no restrictions on the use of data stored in the format&#8221;. The list is actually much longer; it&#8217;s clear that the authors were trying to counter common vendor tricks who try to create &#8220;open&#8221; standards that really aren&#8217;t. I think it would have been great if they had adopted the more stringent <a href="http://www.digistan.org/open-standard:definition">Digistan definition of open standard</a>, but this is still a great step forward. </p> <p> Finally, it talks about open government data, e.g., it requires that &#8220;The commissioner shall develop a statewide information policy based on the following principles of open government data&#8221;. This may be one of the most important parts of the bill, because it establishes these as the open data principles: <ol type="a"> <li>&#8221;Complete. All public data is made available, unless subject to valid privacy, security, or privilege limitations.</li> <li>Primary. Data is collected at the source, with the highest possible level of granularity, rather than in aggregate or modified forms.</li> <li>Timely. Data is made available as quickly as necessary to preserve the value of the data.</li> <li>Accessible. Data is available to the widest range of users for the widest range of purposes.</li> <li>Machine processable. Data is reasonably structured to allow automated processing.</li> <li>Nondiscriminatory. Data is available to anyone, with no requirement of registration.</li> <li>Nonproprietary. Data is available in a format over which no entity has exclusive control, with the exception of national or international published standards.</li> <li>License-free. Data is not subject to any copyright, patent, trademark, or trade secret regulation. Reasonable privacy, security, and privilege restrictions may be allowed.&#8221;</li> </ol> </p> <p> The official motto of the U.S. state of New Hampshire is &#8220;Live Free or Die&#8221;. Looks like they truly do mean to live free. </p> Website back up http://www.dwheeler.com/blog/2012/01/20#website-back-up Fri, 20 Jan 2012 18:27 GMT <p> This website (www.dwheeler.com) was down part of the day yesterday due to a mistake made by my web hosting company. Sorry about that. It&#8217;s back up, obviously. </p> <p> For those who are curious what happened, here&#8217;s the scoop. My hosting provider (WebHostGiant) moved my site to a new improved computer. By itself, that&#8217;s great. That new computer has a different IP address (the old one was 207.55.250.19, the new one is 208.86.184.80). That&#8217;d be fine too, except they didn&#8217;t tell me that they were changing my site&#8217;s IP address, nor did they forward the old IP address. The mistake is that the web hosting company should have notified me of this change, ahead of time, but they failed to do so. As a result, I didn&#8217;t change my site&#8217;s DNS entries (which I control) to point to its new location; I didn&#8217;t even know that I should, or what the new values would be. My provider didn&#8217;t even warn me ahead of time that anything like this was going to happen&#8230; if they had, I could have at least changed the DNS timeouts so the changeover would have been quick. </p> <p> Now to their credit, once I put in a trouble ticket (#350465), Alex Prokhorenko (of WebhostGIANT Support Services) responded promptly, and explained what happened so clearly that it was easy for me to fix things. I appreciate that they&#8217;re upgrading the server hardware, I understand that IP addresses sometimes much change, and I appreciate their low prices. In fact, I&#8217;ve been generally happy with them. </p> <p> But if you&#8217;re a hosting provider, you need to <i>tell the customer</i> if some change you make will make your customer&#8217;s entire site unavailable without the customer taking some action! A simple email ahead-of-time would have eliminated the whole problem. </p> <p> Grumble grumble. </p> <p> I did post a rant against SOPA and PIPA the day before, but I&#8217;m quite confident that this outage was unrelated. </p> <p> Anyway, I&#8217;m back up. </p> Stop SOPA and PIPA http://www.dwheeler.com/blog/2012/01/18#stop-sopa-pipa Wed, 18 Jan 2012 10:06 GMT <p> Please protest the proposed STOP (Stop Online Piracy Act) and PIPA (PROTECT IP Act). <a href="http://blog.wikimedia.org/2012/01/16/wikipedias-community-calls-for-anti-sopa-blackout-january-18/">The English Wikipedia is blacked out today</a>, and many other websites (like Google) are trying to awareness of these hideous proposed laws. <a href="https://www.eff.org/deeplinks/2012/01/how-pipa-and-sopa-violate-white-house-principles-supporting-free-speech">The EFF has more information about PIPA and SOPA</a>. Yes, the U.S. House has temporarily suspended its work, but that is just temporary; it needs to be clear that such egregious laws must never be accepted. </p> <p> Wikimedia Foundation board member Kat Walsh puts it very well: &#8220;We [the Wikimedia Foundation and its project participants] depend on a legal infrastructure that makes it possible for us to operate. And we depend on a legal infrastructure that also allows other sites to host user-contributed material, both information and expression. For the most part, Wikimedia projects are organizing and summarizing and collecting the world&#8217;s knowledge. We&#8217;re putting it in context, and showing people how to make sense of it. But that knowledge has to be published somewhere for anyone to find and use it. Where it can be censored without due process, it hurts the speaker, the public, and Wikimedia. Where you can only speak if you have sufficient resources to fight legal challenges, or, if your views are pre-approved by someone who does, the same narrow set of ideas already popular will continue to be all anyone has meaningful access to.&#8221; </p> U.S. Department of Defense Removes Open Source Software Roadblocks (AppDev STIG) http://www.dwheeler.com/blog/2011/12/21#dod-app-sec-stig Wed, 21 Dec 2011 19:33 GMT <p>The U.S. Department of Defense (DoD) has changed one of its key software development documents, making it <i>even clearer</i> that it&rsquo;s okay to use open source software (OSS) in the DoD. This is good news beyond the DoD; if the US DoD can widely accept OSS, then maybe other organizations (that <i>you</i> deal with) can too.</p> <p>That key document has the long title &ldquo;Application Security &amp; Development (AppDev) Security Technical Implementation Guide (STIG),&rdquo; aka the AppDev STIG.&nbsp; The AppDev STIG includes some guidelines for how to write secure software, and a checklist for use before you can deploy custom software in certain cases. In the past, many people thought that using OSS in the DoD required special permission, because they misunderstood some of DoD&rsquo;s policies, and this misunderstanding had crept into the AppDev STIG.&nbsp; The good news is that this has been fixed. </p> <p>Here&rsquo;s the basic background.</p> <p>Open source software (OSS) is software where anyone can read, modify, and redistribute the source code (its &ldquo;blueprints&rdquo;) in original or modified form.&nbsp; OSS is widely used and developed in industry; some popular OSS includes the Linux kernel (the basis of Google&rsquo;s Android), the Firefox web browser, and Apache (the world&rsquo;s most popular web server).&nbsp; You can get quantitative numbers about OSS at <a href= "http://www.dwheeler.com/oss_fs_why.html">http://www.dwheeler.com/oss_fs_why.html</a>.&nbsp; There is a lot of high-quality OSS, and OSS is often very inexpensive even when you include installation, training, and so on.</p> <p>Unfortunately, previous versions of the AppDev STIG were often interpreted as saying that using OSS required special permission.&nbsp; This document matters; DoD Directive (DoDD) 8500.01E requires that &ldquo;all IA and IA-enabled IT products incorporated into DoD information systems shall be configured in accordance with DoD-approved security configuration guidelines&rdquo; and tasks DISA to develop the STIGs.&nbsp; It&rsquo;s often difficult to get systems fielded unless they meet the STIGs.</p> <p>AppDev STIG version 3 revision 1 (an older version) said:</p> <blockquote> <p> (APP2090.1: CAT II) &ldquo;The Program Manager will obtain DAA acceptance of risk for all <b>open source</b>, public domain, shareware, freeware, and other software products/libraries with no warranty and no source code review capability, but are required for mission accomplishment.&rdquo;</p> <p> (APP2090.2: CAT II): &ldquo;The Designer will document for DAA approval all <b>open source,</b> public domain, shareware, freeware, and other software products/libraries with limited or no warranty<b><u>,</u></b> but are required for mission accomplishment.&rdquo;</p> </blockquote> <p>Many people interpreted this as saying that any use of OSS required special permission.&nbsp; But where would the Defense Information Systems Agency (DISA), the author of the AppDev STIG, get that idea?&nbsp; Well, it turns out that this is a common misunderstanding of DoD policy.&nbsp; DoD Instruction 8500.2, February 6, 2003 has a control called &ldquo;DCPD-1 Public Domain Software Controls&rdquo; (<a href= "http://www.dtic.mil/whs/directives/corres/pdf/850002p.pdf">http://www.dtic.mil/whs/directives/corres/pdf/850002p.pdf</a>), which starts with this text:</p> <blockquote> <p class="Quotation">Binary or machine executable public domain software products and other software products with limited or no warranty such as those commonly known as freeware or shareware are not used in DoD information systems unless they are necessary for mission accomplishment and there are no alternative IT solutions available.</p> </blockquote> <p>A lot of people stopped reading there; they saw that &ldquo;freeware&rdquo; required special permission, and since OSS can often be downloaded for free, they presumed that all OSS was &ldquo;freeware.&rdquo;&nbsp; They should have kept reading, because it then goes on to make it clear that OSS is not freeware:</p> <blockquote> <p class="Quotation">Such products are assessed for information assurance impacts, and approved for use by the DAA. The assessment addresses the fact that such software products are difficult or impossible to review, repair, or extend, given that the Government does not have access to the original source code and there is no owner who could make such repairs on behalf of the Government&#8230;</p> </blockquote> <p>This latter part makes it clear that software only requires special treatment if the government cannot review, repair, or extend the software.&nbsp; If the government can do these things, there&rsquo;s no problem, and by definition OSS provides these rights.&nbsp; But a lot of people didn&rsquo;t understand this.</p> <p>This was such a common misunderstanding that in October 2009, the DoD CIO&rsquo;s memo &ldquo;Clarifying Guidance Regarding Open Source Software (OSS)&rdquo; specifically stated (in Attachment 2, 2c) that this was a misunderstanding (<a href= "http://dodcio.defense.gov/sites/oss/2009OSS.pdf">http://dodcio.defense.gov/sites/oss/2009OSS.pdf</a>).&nbsp; The DoD CIO later instructed DISA to update the AppDev STIG so this misunderstanding would be removed.</p> <p>The latest AppDev STIG (Version 3, Release 4) has just fixed this (<a href= "http://iase.disa.mil/stigs/app_security/app_sec/app_sec.html">http://iase.disa.mil/stigs/app_security/app_sec/app_sec.html</a>).&nbsp; The new STIG:</p> <ol> <li>Refers to the DoD OSS policy of 2009, instead of the old one.</li> <li>Has better definitions for software types, including &#8220;OSS&#8221; and &#8220;commercial software&#8221;.&nbsp; Its old definitions caused problems for OSS use; the &#8220;commercial software&#8221; definition was even inconsistent with US law, the Federal Acquisition Regulation (FAR), and the DoD FAR Supplement (DFARS).&nbsp; In particular, it makes it clear that most OSS is commercial software as defined by law and regulation.</li> <li>Makes it clear that special DAA approval is ONLY required if BOTH of the following are true:&nbsp; &#8220;(1) no source code to review, repair, and extend, and (2) limited or no warranty, but are required for mission accomplishment.&#8221;&nbsp; See checklist items (APP2090.1: CAT II) and (APP2090.2: CAT II).&nbsp; <b>This is the big change.</b></li> </ol> <p>Two related points: <ol> <li> Sadly, the AppDev STIG latest revision has a formatting glitch; all second-level headings aren&rsquo;t numbered in the body, with the result that the table-of-contents numbers don&rsquo;t match the body.&nbsp; Still, it has the updated technical content, and future versions will presumably fix the formatting.</li> <li>The wording of DoDI 8500.2&rsquo;s DCPD-1 has been confusing people for years (I hear that at least parts of NASA have also used this text, inheriting the same confusion).&nbsp; In the short term, the DoD CIO&rsquo;s formal clarification should help.&nbsp; In the longer term, there is an effort to switch the DoD to a single set of federal information assurance controls defined in NIST Special Publication 800-53.&nbsp; Its equivalent control, SA-6(1), has much clearer text.</li> </ol> </p> <p>But the editorial gaff in the AppDev STIG, and the work on improving the wording of controls long term, shouldn&#8217;t detract from the main point.</p> <p>The main point is:</p> <p><b><i>Open Source Software (OSS) is now much easier to use in the DoD</i></b>.</p> Open Source Award! http://www.dwheeler.com/blog/2011/11/06#open-source-award-2011 Sun, 06 Nov 2011 12:45 GMT <p> I&#8217;ve learned that <a href="http://opensourceforamerica.org">Open Source for America (OSFA)</a> has awarded me a <a href="http://opensourceforamerica.org/2011/11/awards/">2011 Open Source Award - Individual Award</a> for my work to advocate consideration of &#8220;open source software in the US Department of Defense (DoD)&#8221;. They specifically point to my papers <a href="http://www.dwheeler.com/oss_fs_why.html"><i>Why Open Source Software / Free Software? Look at the Numbers!</i></a> and <a href="http://www.dwheeler.com/essays/commercial-floss.html"><i>Nearly all FLOSS is Commercial</i></a>. </p> <p> The winners of all the 2011 awards were: <ul> <li>Open Source Deployment in Government: (DHS) Science and Technology (S&amp;T) Directorate‘s Homeland Open Security Technology (HOST) program. (I&#8217;m involved in this, too.)</li> <li>Open Source Project: <a href="http://www.osgeo.org/">Open Source Geospatial Foundation (OSGeo)</a> for its OpenLayers web mapping project.</li> <li>Individual Awards: David A. Wheeler (me) and Melanie Chernoff</li> </ul> </p> <p> Thanks so much, OSFA! I&#8217;m honored. </p> Open Document Format 1.2 approved! http://www.dwheeler.com/blog/2011/10/04#open-document-1.2-out Tue, 04 Oct 2011 12:59 GMT <p> Hooray! <a href="http://lists.oasis-open.org/archives/tc-announce/201109/msg00010.html">Open Document Format for Office Applications (ODF or OpenDocument) Version 1.2 has been approved as an OASIS Standard</a>. Finally, the world has a standard vendor-independent format for storing and exchanging ordinary office documents (particularly word processing documents, spreadsheets, and presentations) that you can edit. </p> <p> Historically, people have only been able to exchange these documents if they use the same program, locking users into specific vendor products. In short, users often don&#8217;t really own the documents they create; they are often beholden to the developers of their tools. This is especially nasty for government documents; all governments have to choose <i>some</i> product, and whatever product they use implicitly forces their citizens to use the same product (whether they want to or not). Over time these documents can no longer be read, as products are upgraded or people change products, so this is also a disaster for archiving. We can read the Magna Carta more easily than some documents saved 30 years ago. Heck, we can read Sumerian writings more easily than some documents saved 30 years ago, and that is a scary thing. ODF provides us the possibility of actually exchanging documents, and reading archives, regardless of what program was used to create them. In short, people now have real freedom when they create and exchange normal office documents &mdash; they are no longer locked into a particular supplier or version of program. </p> <p> <a href="http://www.robweir.com/blog/2011/09/odf12-approved.html">Rob Weir has some of the highlights of version 1.2</a>, and he has also written <a href="http://www.robweir.com/blog/publications/IEEE-Weir.pdf">an overview of ODF</a>. </p> <p> For me, the highlight is OpenFormula. Previous versions of the specification could exchange spreadsheets, but did not standardize the format of recalculated formulas. I led the subcommittee in the ODF Technical Committee to nail down exactly how to recalculate formulas. The result: We now have a real spec. My sincere thanks to the many who helped make this possible. Feel free to see <a href="http://www.dwheeler.com/blog/2011/05/28/#openformula-success"> my 2011-05-28 post about the success of OpenFormula</a>. </p> <p> I&#8217;m sure that there will continue to be refinements for years to come; that is normal for a standard. In some sense this is after the fact; like many good standards, it was developed through the cooperation of many of the implementors. It is already implemented, at least in part, in many places, and I expect even more completed implementations soon. </p> <p> The key, though, is that users can finally own the documents they create. That is a major step forward, for all of us. </p> Petition the White House to cease issuing software patents http://www.dwheeler.com/blog/2011/09/30#petition-no-software-patents Fri, 30 Sep 2011 09:49 GMT <p> I encourage all US citizens to sign <a href="https://wwws.whitehouse.gov/petition-tool/petition/direct-patent-office-cease-issuing-software-patents/vvNslSTq">this petition to the US White House to &#8220;direct the patent office to cease issuing software patents&#8221;</a>. I believe <a href="http://www.dwheeler.com/essays/software-patents.html">software patents impede innovation (instead of helping it), and they have become a threat to the US economy</a>. Many organizations involved in software are now spending lots of time fending off patent trolls, fighting patent lawsuits, or cannot safely solve problems due to patent thickets. The recently-passed &#8220;America Invents Act&#8221; (AIA) completely failed to deal with this fundamental problem. </p> <p> Signing a petition won&#8217;t immediately solve anything. That&#8217;s not how it works. But repeatedly making the government aware that there&#8217;s a real problem is a good first step to solving a problem. In the US, <a href="https://wwws.whitehouse.gov/petitions/#!/how-why/introduction">the right of the people to petition their government is guaranteed by the first amendment of the US Constitution</a> (&#8220;Congress shall make no law &#8230;. abridging&#8230; the right of the people peaceably to assemble, and to petition the Government for a redress of grievances&#8221;).</a> Everyone is affected today by software, and so far the government has not effectively dealt with the problem. Please use this opportunity to make the government aware of a real problem. </p> Off-the-Shelf (OTS) Software Maintenance Strategies http://www.dwheeler.com/blog/2011/09/16#ots-maintenance-strategies Fri, 16 Sep 2011 18:04 GMT <p> Off-the-shelf (OTS) software is simply software that is ready-made and available for use. Even when you need a custom system, building it from many OTS components has many advantages, which is why everyone does it. OTS works because you can save money and time, increase quality, and increase innovation through resource pooling. </p> <p> However, people can get easily confused by the many different ways that off-the-shelf (OTS) software can be maintained. Terminology varies, and there hasn&#8217;t been an obvious way to describe how these different approaches are related. In 2010 I chatted with several others about how to make this clearer, and then created a picture that I think clarifies things. My thanks to helpful critiques from Heather Burke and John Scott. So here&#8217;s the picture, followed by a discussion on what it means. </p> <p> <!-- Original 1052x616 --> <center> <img src="http://www.dwheeler.com/images/ots-maintenance-strategies.png" width="526" height="308"> <br> <i>Off-the-Shelf (OTS) Maintenance Strategies</i> </center> </p> <p> If OTS software is commercial, it&#8217;s commercial OTS (COTS) software. <a href="http://www.dwheeler.com/essays/commercial-floss.html">By U.S. law</a>, any software is commercial if it is (1) sold, licensed, or leased to the public, and (2) has a non-governmental use. There are two kinds of COTS software: Open Source Software (OSS) and proprietary software. OSS, put briefly, is <a href="http://www.dwheeler.com/oss_fs_why.html">software whose licenses give users the freedom to run the program for any purpose, to study and modify the program, and to redistribute copies of either the original or modified program (without having to pay royalties to previous developers)</a>. <a href="http://www.dwheeler.com/essays/commercial-floss.html">Yes, <b>practically all OSS is commercial</b></a>. </p> <p> OTS can also be retained and maintained internally by an organization. For example, the U.S. government develops and maintains some software internally. In the U.S. government world, such software often called government OTS (GOTS). This figure shows things from the point of view of the U.S. government, but if you work with some other organization, you can think of this figure with your organization in the place of the U.S. government. (Maybe this should be called &#8220;internal off-the-shelf&#8221; or &#8220;IOTS&#8221; instead!) The idea here is that any organization can have software that it controls internally, and view as internal OTS software, as well as the COTS software that is available to the public. </p> <p> There are various reasons why the government should sometimes keep certain software in-house, e.g., because sole possession of the software gives the U.S. a distinct advantage over its adversaries. However, there is also considerable risk to the government if it tries to privately hold GOTS software within the government for too long. Technological advantage is usually fleeting. Often there is a commercially-developed item available to the public that begins to perform similar functions. As it matures, other organizations begin using this non-GOTS solution, potentially rendering the GOTS solution obsolete. Such cases often impose difficult decisions, as the government must determine if it will pay the heavy asymmetrical cost to switch, or if it will continue &#8220;as usual&#8221; with its now-obsolete GOTS systems (with high annual costs and limitations that may risk lives or missions). </p> <p> Either COTS or GOTS may be maintained by a single maintainer or by a community. In community maintenance there is often a single organization who determines if proposals should be accepted, but the key here is that the work tends to be distributed among those affected. An Open GOTS (OGOTS) project is a GOTS project which uses multiple-organization collaborative development approaches to develop and maintain software, in a manner similar to OSS. Some people use the term &#8220;Government Open Source Software&#8221; (GOSS) instead of OGOTS (in particular, <a href="http://cio-nii.defense.gov/sites/oss/goss-govies_v1.7_29jun2011_released.pdf">GOSS for Govies</a> uses the term GOSS instead). </p> <p> GOTS (including OGOTS) is basically a special case of &#8220;gated software&#8221; with development inside a government. However, governments are bigger than most companies, and (in democracies) they are supposed to serve all of their citizenry, and those factors make them rather different than most other gated communities. Community development of proprietary software (&#8220;gated software&#8221;) outside governments is less common, but it can happen (historically some parts of Unix were developed this way). The term Open Technology Development (OTD) involves community development among government users (in the case of government developers), and thus it includes both OSS and OGOTS (aka GOSS). </p> <p> I should note that I have a broad view of maintenance. I&#8217;ve often said that there is only one program &mdash; &#8220;Hello, World&#8221; &mdash; and that the rest is maintenance. That&#8217;s overstated for effect, but I believe there is a <i>lot</i> of truth in that statement. </p> <p> This figure, and some of the text above, is in section 1.3 of the paper <a href="http://cio-nii.defense.gov/sites/oss/OTD-lessons-learned-military-signed.pdf">Open Technology Development (OTD): Lessons Learned & Best Practices for Military Software</a> (<a href="http://mil-oss.org/otd">also available via MIL-OSS</a>), which is released under the Creative Commons BY-SA license. If you&#8217;re interested in more, please see the paper! The figure and some of the text are also part of <a href="http://journal.thedacs.com/issue/56/175"> &#8220;Software is a Renewable Military Resource&#8221; by John Scott, Dr. David A. Wheeler, Mark Lucas, and J.C. Herz, <i>Journal of Software Technology</i>, February 2011, Vol. 14, Number 1. </p> <p> I hope this figure makes it easier to understand the different approaches for maintaining off-the-shelf (OTS) software. </p> <!-- Since this is based on company work, I requested and got approval from my company to post it. The approval is recorded in the email Sent "Fri 9/16/2011 4:37 PM" by "Myers, Margaret E", subject: "RE: May I post a short excerpt from a publicly-released DoD document? (with attribution)" Which said: "You may post it." --> Ask not who holds the copyrights http://www.dwheeler.com/blog/2011/09/10#ask-not-who-holds-copyrights Sat, 10 Sep 2011 11:13 GMT <p> Asking &#8220;who has the copyright?&#8221; for <a href="intellectual-rights-not-intellectual-property.html">intellectual works</a> (like software, documents, and data) is almost always the <i><b>wrong</b></i> question to ask. Instead, ask &#8220;<i>what rights do I have (or can I get)?</i>&#8221; and &#8220;<i>do those rights let me do what I want to do?</i>&#8221;. In a vast number of situations, those are the right questions to ask instead. Even people who should know better can fall into this subtle trap! </p> <p> This became obvious to me when it was revealed that even the smart people at the Apache Software Foundation fell into this. In the recent <a href="https://wiki.apache.org/incubator/AccumuloProposal">Accumulo proposal</a>, there were unnecessary copyright hurdles because Apache was unnecessarily asking for a copyright transfer, instead of the necessary rights (in this case, there was no copyright to transfer!). </p> <p> So I&#8217;ve justed posted <i><a href="http://www.dwheeler.com/essays/ask-not-holds-copyright.html">Ask Not Who Holds the Copyright</a></i>, which I hope will clear this up. </p> MIL-OSS 2011 http://www.dwheeler.com/blog/2011/09/04#mil-oss-2011 Sun, 04 Sep 2011 22:35 GMT <p> <img src="http://www.dwheeler.com/images/i-want-you-to-oss.png" align="right" width="150" height="202"> I recently went to the <a href="http://mil-oss.org/">MIL-OSS</a> (&#8220;military open source software&#8221;) <a href="http://mil-oss.org/wg3-overview">2011 Working Group (WG) / Conference</a> in Atlanta, Georgia. Topics included the open prosthetics project, releasing government-funded software as OSS, replacing MATLAB with Python, the &#8220;<a href="http://opentechdossier.org/">Open Technology Dossier Protocol</a>&#8221; (OTDP), confining users using SELinux, an explanation of DoD policies on OSS, Charlie Schweik&#8217;s study on what makes a success OSS project, and more. Some people started developing a walkie-talkie Android app at the conference. Here&#8217;s a summary of the conference, if you&#8217;re curious. </p> <p> First, a few general comments. If this conference is any guide, it is slowly getting easier to get OSS into government (including military) systems. OSS is already used in many places, but it&#8217;s often &#8220;don&#8217;t ask, don&#8217;t tell&#8221;, and there are still lots of silly bureaucratic barriers that prevent the use of OSS where it <i>should</i> be used or at least considered. But there were many success stories, with slide titles like &#8220;how we succeeded&#8221;. </p> <p> Although the conference had serious purposes, it was all done in good humor. All participants got the MIL-OSS poster of Uncle Sam (saying &#8220;I want YOU to Open Source!&#8221;). The theme of the conference was the <a href="http://en.wikipedia.org/wiki/WarGames">WarGames</a> movie; the first finder for each of the WarGames Easter eggs would get a silly 80s-style prize (such as an Atari T-shirt). </p> <p> As the <a href="http://mil-oss.org/wg3-speakers-and-presentations">MIL-OSS 2011 presentations list</a> shows, I gave three talks: </p><ul> <li><i><a href="http://mil-oss.org/resources/mil-oss-wg3_releasing-oss-developed-government_david-a-wheeler.pdf">Publicly Releasing Open Source Software (OSS) Developed for the U.S. Government</a></i>. This presentation explained when the government or contractors can publicly release software, as open source software, if it was developed using U.S. government funds. This presentation summarized my paper <a href="http://journal.thedacs.com/issue/56/180">Publicly Releasing Open Source Software Developed for the U.S. Government</a> (also see <a href="http://mil-oss.org/resources/software-copyright-assertion-rights-quick-reference.pdf">Kane McLean&#8217;s one-page summary of this paper, the &#8220;OSS Releasability Quick Reference&#8221;</a>, which was given to every conference participant). I think this is an important topic. Billions of dollars go into developing software, yet most of the time, the taxpayers (who paid for it) don&#8217;t get the benefits. It turns out that this software often <i>can</i> be released; this is the decoder ring for these Byzantine rules. This can have incredible benefits. For example, the DoD funded the work that created the Internet, and then released as OSS an implementation of its key TCP/IP protocols. The Internet has mightily benefitted the DoD, in fact, it&#8217;s benefitted the whole world. (And yes, it had the required WarGames Easter egg. Slide 15 says &#8220;Talk to others who have experience with OSS&#8221; &#8212; the egg is in the supporting bullet, &#8220;Q: What is it doing? A: It&#8217;s learning!&#8221;) </li> <li><i><a href="http://mil-oss.org/resources/mil-oss-wg3_gpl-might-not-destroy-the-universe_david-a-wheeler.pdf">Why the GPL Might not Destroy the Universe</a></i>. This tongue-in-cheek talk tries to counter some of the silly, over-the-top fears about the GNU General Public License (GPL). I figure any presentation can&#8217;t be bad if it includes photos of Godzilla, flying saucers, zombies, and a poster saying &#8220;If you program open source, you&#8217;re programming COMMUNISM!&#8221;. </li> <li><i><a href="http://mil-oss.org/resources/mil-oss-wg3_host-lessons-learned_wheeler-dunn.pdf">HOST Lessons Learned</a></i> (with Tom Dunn). This summarized interviews of various people on the roadblocks to using or developing open technology (including open source software) in the government. </li> </ul> <p></p> <p> The conference was complicated by the recent passing of Hurricane Irene. The area itself was fine, but some people had trouble flying in. The first day&#8217;s whole schedule was delayed so speakers could arrive (using rescheduled flights). That was probably the best thing to do in the circumstance &#8212; it was basically like a temporary time zone change &#8212; but it meant that one of my talks that day (<i>Why the GPL Might not Destroy the Universe</i>) was at 9:10pm. And I wasn&#8217;t even the last speaker. Eeeek. Around 15 speakers had still not arrived when the conference arrived, but all but one managed to get there before they had to speak. </p> <p> Here are few notes on the talks: </p><ul> <li>Andy Henshaw (GTRI) spoke on &#8220;Replacing MATLAB: Python Tools for Scientists and Engineers&#8221;. His basic point is that &#8220;Python is a good replacement for MATLAB in a lot of cases&#8221;. Although Python isn&#8217;t fast by itself, it&#8217;s often useful as a glue, with the intensive data-handling being done by hand-crafted libraries. He focused on (and discussed) the libraries <a href="http://www.scipy.org/NumPy_for_Matlab_Users">NumPy</a>, SciPy, matplotlib, and ipython. He also discussed differences between MATLAB and Python for MATLAB users. In Matlab, the basic type is a matrix, it uses 1-based indexing, &#8216;*&#8217; means matrix multiplication, and function calls use pass-by-value with lazy copy-on-write. In contrast, in Python with libraries like these, the basic type is a multidimensional array, it uses 0-based indexing, &#8216;*&#8217; means element-wise multiplication (use dot() for matrix multiplication or use the matrix class), and function calls use pass-by-reference. </li> <li> I learned interesting things about AdaCore (who make GNAT pro, SPARK Pro, and Code Peer). They don&#8217;t have a separate support organization &mdash; their engineers provide support directly, since support is really what they sell. </li> <li> Maj Wilson/Kane McLean discussed changing culture. They argued that the mind has two independent decision-making functions that work simultaneously: the emotional mind and the rational mind. The emotional mind is like an elephant; it&#8217;s illogical and determined, emphasizes getting stuff done, and has mental &#8220;muscle memory&#8221;. The rational mind is like a jockey; it&#8217;s logical and reasoned, emphasizes organization but often can&#8217;t &#8220;get off the saddle&#8221;, and does long-term / strategic planning. You need to convince both, so you should try to shrink the change, shape a clear path forward, and repeat what works. They believe that culture change in a big bureaucracy happens from both the top (the &#8220;clouds&#8221;) and the bottom (the &#8220;grass roots&#8221;); resistance often comes from the middle. The solution for change, then, is to &#8220;seed clouds&#8221; and &#8220;grow the grass&#8221;. </li> <li> The &#8220;<a href="http://opentechdossier.org/">Open Technology Dossier Protocol</a>&#8221; (OTDP) was pitched by Winston Messer and Nick Bollweg. Basically, they&#8217;d like every OSS project to put, on their web site, a small XML file that would let various search systems learn more about their project. That way, each project can update their own information. </li> <li> David Egts (Red Hat) explained &#8220;SELinux user confinement&#8221; - a new capability in RHEL 6 to easily confine users using SELinux. Just install the &#8220;policycoreutils-python&#8221; package, which includes the semanage tool that lets you control much more precisely what specific users may do. </li> <li> Alex S. Voultepsis explained how the intelligence community (IC) has built up an internal infrastructure with the tools that people want to use; in a vast number of cases, they use OSS to do this. For example, Intellipedia is implemented using MediaWiki, the same software that runs Wikipedia. </li> <li> Dan Risacher discussed the DoD Oct 16, 2009 memo on open source software. He noted that we have a &#8220;Government IP knot&#8221;: &#8220;Government rules are designed to enable a program manager to control their program, not to enable sharing it&#8221;. A way to cut this knot is to make it clear that the software will be released as OSS; then everyone knows what the rules are. He wants to be a &#8220;developer advocate&#8221; - the DoD needs to be able to innovate faster than its opponents.</li> <li> John Kuniholm presented on the &#8220;Open Prosthetics Project&#8221;. He is missing part of an arm, and explained some of the complications of making prosthetics. A key need is really good open source CAD tools. That is a general problem, not unique to the military or government &#8212; currently the tools are hideously expensive, and until that changes, the promise of cheap 3D printers will be harder to realize. </li> <li> Charlie Schweik has been doing a lot of quantitative studies of OSS projects, to determine what separates successful projects from abandoned projects. He expects to have a book on soon on this topic! In the initiation stage, the key factors were: Leadership by doing, clear vision, and well-articulated goals. Other factors were Project marketing; project financing; knowledge continuity; being a multideveloper project. A really key factor, once a project is initiated, is gaining a developer (and then gaining more later). There are many conflicting claims, e.g., some say that smaller groups are better (Brooks), that larger groups are better (Linus&#8217; law), or that size doesn&#8217;t matter; his data shows that Linus&#8217; law is the correct one. Face-to-face communication doesn&#8217;t seem to be as important as it used to be, due to better communication technology. He&#8217;s gathered lots more info; I&#8217;m looking forward to seeing the whole thing. </li> <li> One great thing was that everyone was motivated to actually solve problems, immediately. There is already an official <a href="http://cio-nii.defense.gov/sites/oss/Open_Source_Software_%28OSS%29_FAQ.htm">DoD Open Source Software (OSS) Frequently-Asked Questions (FAQ)</a>, but there&#8217;s a need for a less-official FAQ, so during the conference a new <a href="http://mil-oss.org/learn-more/frequently-asked-questions-on-open-source-software-oss">MIL-OSS OSS FAQ</a> was created. On the last day there was a discussion between various software developers and military folks, particularly about military needs. A real problem in military situations &#8212; and disasters like hurricanes &#8212; is that centralized communications systems fail. Within a short time, people were suddenly developing an <a href="https://github.com/mil-oss/walkitalkie">OSS walkie-talkie application for Android and hosting it on github</a>. </li> </ul> <p></p> <p> Many discussions revolved around the problems of getting authentication/authorization working <i>without</i> passwords, in particular using the ID cards now widely used by nearly all western governments (such as DoD CAC cards). Although things can work sometimes, it&#8217;s incredibly painful to get them to work on any system (OSS or not), and they are fragile. Dmitri Pal (Red Hat)&#8217;s talk &#8220;CAC and Kerberos From Vision to Reality&#8221; discussed some of the problems and ways to possibly make it better. The OpenSSH developers are actively hostile to the X.509 standard that everyone uses for identity certificates; I agree with the OpenSSH folks that X.509 is clunky, but that is what everyone uses, and not supporting X.509 means that openssh is useless for them. Every card reader is incompatible with the others, so every time a new model comes out, drivers have to be written and it often doesn&#8217;t work anyway (compare that to USB keyboards, which &#8220;just work&#8221; every time even through KVM switches). I think some group needs to be formed, maybe a &#8220;Simple Authorization without passwords&#8221; group, with the goal of setting standards and building OSS components so that systems by default (maybe by installing one package) can trivially use PKI and other systems and have it &#8220;just work&#8221; every time. No matter that client, server (relying party), or third-party authenticator/authorization server is in use. <!-- Possible members: Richard Burroughs, Gunnar Hellekson, Dmitri, Dan Risacher, me. --> </p> <p> If you&#8217;re interested in more of my personal thoughts about OSS and the U.S. Department of Defense (DoD), also see <a href="http://twit.tv/floss160">FLOSS Weekly #160, the interview of David A. Wheeler by Randal Schwartz and Simon Phipps</a>. Good general sites for more info are the <a href="http://mil-oss.org/">MIL-OSS website</a> and the <a href="http://cio-nii.defense.gov/sites/oss/">DoD CIO Free Open Source Software (FOSS) site</a>. </p> <p> There&#8217;s more to be done, but a lot is already happening. </p> GNOME 3 Shell is terrible, I am switching to XFCE http://www.dwheeler.com/blog/2011/08/03#gnome-3-shell-terrible-switching-to-xfce Wed, 03 Aug 2011 18:31 GMT <p> I&#8217;m a long-time user of Fedora and GNOME. GNOME 2 has served me well over the years, so I was interested in what the GNOME people were cooking for GNOME 3. Fedora 15 comes with the new GNOME 3 shell; since change can sometimes be good, I&#8217;ve tried to give the new GNOME 3 shell a fair trial. </p> <p> But after giving GNOME 3 (especially GNOME shell) some time, I&#8217;ve decided that I <i>hate</i> the GNOME 3 shell as it&#8217;s currently implemented. It&#8217;s not just me; the list of people who have complaints about the GNOME 3 shell include <a href="https://plus.google.com/106327083461132854143/posts/SbnL3KaVRtM">Linus Torvalds</a>, <a href="http://www.dedoimedo.com/computers/gnome-3.html">Dedoimedo</a> (see also <a href="http://www.dedoimedo.com/computers/gnome-3-fallback.html">here</a>), <a href="http://k3rnel.net/2011/05/01/why-im-sick-and-tired-of-gnome-shell/"> k3rnel.net (Juan “Nushio” Rodriguez)</a>, <a href="http://mso-chronicles.blogspot.com/2011/03/unhappy-with-gnome-3-just-ditch-it.html">Martin Sourada</a>, <a href="http://whatisgon.wordpress.com/2011/07/09/switching-from-gnome-3-to-xfce/">junger95</a>, and others. <a href="https://lwn.net/Articles/433409/">LWN noted the problems of GNOME 3 shell way back</a>. So many people are leaving GNOME 3, often moving to XFCE, that one person posted a poem titled <a href="http://inspirated.com/2011/05/11/gnome-3-unity-and-xfce-the-mass-exodus">&#8220;GNOME 3, Unity, and XFCE: The Mass Exodus&#8221;</a>. </p> <p> The GNOME 3 shell <i>is</i> beautiful. No doubt. But as far as I can tell, the developers concentrated on making it beautiful, cool and different, but as a consequence made it far <i>less</i> useful and efficient for people. <a href="http://www.dedoimedo.com/computers/gnome-3-fallback.html">Dedoimedo summarizes GNOME 3.0 shell as, &#8220;While it&#8217;s a very pretty and comely interface, it struck me as counterproductive, designed with a change for the sake of change.&#8221; </a> In a different post <a href="http://www.dedoimedo.com/computers/gnome-3.html">Dedoimedo says, &#8220;Gnome 3 is a toy. A beautiful, aesthetic toy. But it is not a productivity item&#8230; I am not a child. My computer is not a toy. It&#8217;s a serious tool&#8230; Don&#8217;t mistake conservative for inefficient. I just want my efficiency.&#8221;.</a> </p> <p> Some developers have tried to fix its worst problems of GNOME 3 shell with extensions, and if GNOME developers work at it, I think they could change it into something useful. But most of these problems aren&#8217;t just maturity issues; GNOME 3 shell is broken by design. So I&#8217;m going to switch to XFCE so I can get work done, and perhaps try it again later if they&#8217;ve started to fix it. Thankfully, Fedora 15 makes it easy to switch to another desktop like XFCE, so I can keep on happily using Fedora. </p> <p> <b>So what&#8217;s wrong?</b> </p> <p> I&#8217;ve been trying to figure out why I hate GNOME 3 so much, and it comes down to two issues: (1) GNOME 3&#8217;s shell makes it much harder to do simple, common tasks, and (2) GNOME 3 shell often hides how to do tasks (it&#8217;s not &#8220;discoverable&#8221;). These are not just my opinions, lots of people say these kinds of things. <a href="http://k3rnel.net/2011/05/01/why-im-sick-and-tired-of-gnome-shell/"> k3rnel.net says, &#8220;Gnome’s &#8216;Simplicity&#8217; is down right insulting to a computer enthusiast. It makes it impossible to do simple tasks that used to flow naturally, and it’s made dozens of bizarre &#8216;design decisions&#8217;, like hiding Power Off behind the &#8216;Alt&#8217; key.&#8221;</a> Let me give you examples of each of these issues. </p> <p> First of all, GNOME 3 (particularly its default GNOME shell) creates a lot of extra steps and work to do simple tasks that used to be simpler. To run a program whose name you don&#8217;t know, you have go to the far top left to the hot spot (or press &#8220;LOGO&#8221;), move your mouse to the hideously hard-to-place (and not obvious) &#8220;Applications&#8221; word slightly down the right, then mouse to the far right to choose a category, then mouse back to choose it. That&#8217;s absurd; the corners of the screen are especially easy to get to, and they fail to use that fact when choosing non-favorite applications. Remarkably, there doesn&#8217;t seem to be a quick way to simply show the list of (organized) applications you can start; there&#8217;s not even a keyboard shortcut for &#8220;LOGO Applications&#8221;. Eek. This is a basic item; even Windows 95 was easier. Would it really have killed anyone to make moving to some other area (say, the bottom left corner) show the applications? And why are the categories on the far right, where they are least easy to get to and not where any other system puts them? (Yes, the favorites area lets you start some programs, but you have to find it the first time, and some of us use many programs.) Also, you can&#8217;t quickly alt-tab between arbitrary windows (Alt-tab only moves between apps, and the undiscoverable alt-` only moves between windows of the same app). GNOME shell makes it easy to do instant messaging, but it makes it harder to do everything else. Fail. </p> <p> GNOME 3&#8217;s capabilities are not discoverable, either. To log off or change system settings you click on your name &mdash; and that&#8217;s already non-obvious. But it gets worse. <a href="http://www.learnbydoingit.org/2011/06/fedora-15-tweaks/"> To power off, you click on your name, then press the ALT key to display the power off option, then select it</a>. How the heck would a normal user find out about this? The only obvious way to power down the system is to log out, then power off from the front. If you know an application name, pressing LOGO (aka WINDOWS) and typing its name is actually a nice feature, but that is not discoverable either. If you want a new process or window (like a new terminal window or file manager window), you have to know press control when you select its icon to start a new process (for Terminal, you can also start it and press shift+control+N, but that is not true for all programs). The need to press control isn&#8217;t discoverable (it&#8217;s also a terrible default; if I press a program icon, I want a new one; if I wanted an existing one I&#8217;d select its window instead). Fail. </p> <p> There are some nice things about GNOME 3 shell. As I mentioned earlier, I like the ability to press LOGO start typing a program name (which you can then select) - that <i>is</i> nice. But even then, this is not discoverable; how would a user new to the interface know that they should press the LOGO button? This functionality is trivial to get in other desktop environments; I configured XFCE to provide the same functionality in less than a minute (in a way that is less pretty, but much easier for a human to use). </p> <p> The implementors seem to think that new is automatically better. Rediculous. I don&#8217;t use computers to have the newest fad interface, I use them to get things done (and for the pleasure of using them). I will accept changes, but they should be obvious improvements. Every change just for its own sake imposes relearning costs, especially for people like me who use many different computers and interfaces, and especially if they make common operations harder. Non-discoverability is especially nasty; people don&#8217;t want to read manuals for basic GUI interfaces, they want to get things done. </p> <p> I don&#8217;t think GNOME 3 is mature, either. For example, as of 2011-07-28, <a href="http://blog.fpmurphy.com/2011/03/customizing-the-gnome-3-shell.html">GNOME 3 does not support screensavers</a> &mdash; it just shows a blank screen after a timeout. But the previous GNOME 2 had screensavers. Heck, Windows 3.0 (of 1993) did better than that; it had screensavers, and I&#8217;m sure there were screensavers before then. </p> <p> I&#8217;ve tried to get used to it, because I wanted to give new ideas a chance. Different can be better! But so far, I&#8217;m not impressed. The code may be cleaner, and it may be pretty, but the user experience is currently lousy. </p> <p> If you&#8217;re stuck using the GNOME 3 Shell, you basically <i>must</i> read the <a href="http://live.gnome.org/GnomeShell/CheatSheet">GNOME shell cheat sheet</a>, because so much of what it does is un-intuitive, incompatible with everything else, and non-discoverable. Needing to read a manual to use a modern user interface is not a good sign. </p> <p> You could try switching to the GNOME 3 fallback mode, as discussed by <a href="http://www.dedoimedo.com/computers/gnome-3-fallback.html">Dedoimedo</a> and others. This turns on a more tradtional interface. <a href="http://dasublogbyprashanth.blogspot.com/2011/04/review-gnome-3.html"> Several</a> <a href="http://www.rootninja.com/gnome-3-fallback-desktop-better-than-gnome-3-itself/">people</a> have declared that GNOME 3 fallback is better than GNOME shell itself. But I was not pleased; it&#8217;s not really well-supported, and it&#8217;s really not clear that this will be supported long term. </p> <p> You can also try various tweaks, configurations, and additional packages to make GNOME 3 shell more tolerable. If you&#8217;re stuck with GNOME 3 shell, install and use gnome-tweak-tool; that helps. You should also install the Fedora gnome-shell-extensions-alternative-status-menu package, which lets you see &#8220;Power off&#8221; as an option. </p> <p> But after trying all that, I decided that it&#8217;d be better to switch to another <a href="http://www.renewablepcs.com/about-linux/kde-gnome-or-xfce">more productive and mature desktop environment</a>. Obvious options are XFCE and KDE. </p> <p> XFCE is a lightweight desktop environment, and is what I&#8217;ve chosen to use instead of the default GNOME 3 shell. I found out later that <a href="http://mso-chronicles.blogspot.com/2011/02/keeping-up-with-fedora-15-and-xfce.html">other people have switched to XFCE after trying and hating GNOME 3&#8217;s shell</a>. XFCE doesn&#8217;t look as nice as GNOME 3, indeed, the GNOME 3 shell is really quite flashy by comparison. But the GNOME shell makes it hard for me to get anything done, and that&#8217;s more important. </p> <p> I expect that it wouldn&#8217;t be hard for the developers to make it better; hopefully the GNOME folks will work to improve it. If many of GNOME 3&#8217;s problems are fixed, then I&#8217;ll be happy to try it again. But I&#8217;m in no hurry; XFCE works just fine. </p> <p> I&#8217;m creating a new page on my website called <a href="http://www.dwheeler.com/essays/fedora-linux.html">Notes on Fedora</a> so that I can record &#8220;how to&#8221; stuff, in case that others find it useful. For example, I&#8217;ve recorded how to turn on some stuff in XFCE to make it prettier. Enjoy! </p> Upcoming FLOSS in Government Conferences for 2011 http://www.dwheeler.com/blog/2011/08/03#conferences-2011 Wed, 03 Aug 2011 16:01 GMT <p> If you&#8217;re interested in free/libre/open source software in government (particularly the U.S. federal government), there are two upcoming conferences you should consider. </p> <p> One is <a href="http://goscon.org/">Government Open Source Conference (GOSCON) 2011</a> on August 23, 2011. It will be held at the Washington Convention Center, Washington, DC. </p> <p> The other is the <a href="http://mil-oss.org/wg3-overview">Military Open Source Software (MIL-OSS) WG3 conference</a> on August 30 - September 1, 2011. It will be held in Atlanta, Georgia. </p> <p> I&#8217;ll be speaking at both. But don&#8217;t let that dissuade you :-). </p> Microsoft, co-author of the Linux kernel http://www.dwheeler.com/blog/2011/07/14#microsoft-linux-author Thu, 14 Jul 2011 19:56 GMT <p> Truth is often stranger than fiction. <a href="https://lwn.net/Articles/450891/"> Microsoft was the fifth-largest corporate contributor to the Linux kernel version 3.0.0</a>, as measured by the number of changes to its previous release. Only Red Hat, Intel, Novell, and IBM had more contributions. Microsoft was #15 as measured by number of lines changed, which is smaller but is still an impressively large number. </p> <p> This work by Microsoft was to clean up the &#8220;Microsoft Hyper-V (HV) driver&#8221; so that the Microsoft driver would be included in the mainline Linux kernel. Microsoft originally submitted this set of code changes back in July 2009, but there were a lot of problems with it, and the Linux kernel developers insisted that it be fixed. <a href="http://www.networkworld.com/news/2009/091009-linux-chief-microsoft.html">The Linux community had a long list of issues with Microsoft&#8217;s code</a>, but the good news is that Microsoft worked to improve the quality of its code so that it could be accepted into the Linux kernel. Other developers helped Microsoft get their code up to par, too. (<a href="http://www.unixwiz.net/techtips/review-hv-patches.html"> Steve Friedl has some comments about its early technical issues</a>.) There&#8217;s something rather amusing about watching Microsoft (a company that focuses on software development) being forced by the Linux community to improve the quality of Microsoft&#8217;s code. Anyone who thinks that FLOSS projects (which typically use widespread public peer review) always produce lower quality software than proprietary vendors just isn&#8217;t watching the real world (<a href="http://www.dwheeler.com/oss_fs_why.html">see my survey paper of quantitative FLOSS studies if you want more on that point</a>). Peer review often exposes problems, so that they can be fixed, and that is what happened here. </p> <p> Microsoft did not do this for the sheer thrill of it. Getting code into the mainline Linux kernel release, instead of just existing as a separate patch, is vitally important for an organization if they want people to <i>use</i> their software (if it needs to be part of the Linux kernel, as this did). A counter-example is that the <a href="http://www.h-online.com/open/features/Xen-lets-KVM-overtake-1262171.html">Xen developers let KVM zoom ahead of them, because the Xen developers failed to set a high priority on getting full support for Xen into the mainline Linux kernel</a>. As Thorsten Leemhuis at The H says, &#8220;There are many indications that the Xen developers should have put more effort into merging Xen support into the official kernel earlier. After all, while Xen was giving developers and distribution users a hard time with the old kernel, a new virtualisation star was rising on the open source horizon: KVM (Kernel-based Virtual Machine)&#8230; In the beginning, KVM could not touch the functional scope and speed of Xen. But soon, open source developers, Linux distributors, and companies such as AMD, Intel and IBM became interested in KVM and contributed a number of improvements, so that KVM quickly caught up and even moved past Xen in some respects.&#8221; <a href="http://virtualization.sys-con.com/node/1900898">Xen may do well in the future</a>, but this is still a cautionary tale. </p> <p> This doesn&#8217;t mean that Microsoft is suddenly releasing all its programs as free/libre/open source software (FLOSS). Far from it. It is obvious to me that Microsoft is contributing this code for the same reason many companies contribute to the Linux kernel and other FLOSS software projects: Money. </p> <p> I think it is clear that Microsoft hopes that these changes to Linux will help Microsoft sell more Windows licenses. These changes enable Linux to run much better (e.g., more efficiently) on top of Microsoft Windows&#8217; hypervisor (Hyper-V). Without them, people who want to run Linux on top of a hypervisor are much more likely to use products other than Microsoft&#8217;s. Microsoft doesn&#8217;t want to be at a competitive disadvantage in this market, so to sell its product, it chose to contribute changes to the Linux kernel. With this change, Microsoft Windows becomes a more viable option as a host operating system, running Linux as a guest. </p> <p> Is this a big change? In some ways it is not. <a href="http://www.dwheeler.com/oss_fs_why.html#anti-microsoft"> Microsoft has developed a number of FLOSS packages, such as WiX (for installing software on Windows), and it does all it can to encourage the development of FLOSS that run on Windows</a>. </p> <p> Still, it&#8217;s something of a change for Microsoft. <a href="http://www.theregister.co.uk/2001/06/02/ballmer_linux_is_a_cancer/"> Microsoft CEO Steve Ballmer stated in 2001 that Linux and the GNU GPL license were &#8220;a cancer&#8221;</a>. This was in many ways an attack on FLOSS in general; the <a href="http://www.dwheeler.com/essays/gpl-compatible.html">GNU GPL is the most popular FLOSS license by far</a>, and a <a href="http://www.terrybollinger.com/index.html#dodfoss">MITRE report</a> found that the &#8220;GPL sufficiently dominates in DoD applications for a ban on GPL to closely approximate a full ban of all [FLOSS]&#8221;. This would have been disastrous for their customer, because MITRE found that FLOSS software &#8220;plays a far more critical role in the [Department of Defense] than has been generally recognized&#8221;. I think many other organizations would say the same. This is not even the first time Microsoft has gotten involved with the GPL. Microsoft sold Windows Services for Unix (SFU), which had GPL software, showing that even Microsoft understood that it was possible to make money while using the GPL license. But this more case is far more extreme; in this case Microsoft is actively helping a product (the Linux kernel) that it also competes with. I don&#8217;t expect Microsoft to keep contributing significantly to the Linux kernel, at least for a while, but that doesn&#8217;t matter; here we see that cash trumps ideology. More generally, this beautifully illustrates collaborative development: Anyone can choose to work on specific areas of a FLOSS program, for their own specific or selfish reasons, to co-produce works that help us all. </p> U.S. government must balance its budget http://www.dwheeler.com/blog/2011/07/04#us-government-balance-budget Mon, 04 Jul 2011 18:54 GMT <p> <!-- meta-markup: Markdown --> (This is a blog entry for U.S. citizens &mdash; everyone else can ignore it.) </p> <p> We Americans must <b>demand</b> that the U.S. government work to balance its budget over time. The U.S. government has a massive annual deficit, resulting in a massive national debt that is growing beyond all reasonable bounds. For example, in just <a href="http://en.wikipedia.org/wiki/United_States_federal_budget">Fiscal Year (FY) 2010</a>, about $3.4 trillion was spent, but only $2.1 trillion was received; that means that the U.S. government spent more than a trillion dollars more than it received. Every year that the government spends more than it receives it adds to the <a href="http://www.pgpf.org/Special-Topics/The-Federal-Budget-Primer.aspx">gross federal debt, which is now more than $13.6 trillion</a>. </p> <p> This is unsustainable. The fact that this is unsustainable is certainly not news. The <a href="http://www.gao.gov/cghome/d08446cg.pdf">U.S. Financial Condition and Fiscal Future Briefing (GAO, 2008)</a> says, bluntly, that the &#8220;Current Fiscal Policy Is Unsustainable&#8221;. <a href="http://www.fiscalcommission.gov/sites/fiscalcommission.gov/files/documents/TheMomentofTruth12_1_2010.pdf"> &#8220;The Moment of Truth: Report of the National Commission on Fiscal Responsibility and Reform&#8221;</a> similarly says &#8220;Our nation is on an unsustainable fiscal path&#8221;. Many others have said the same. But even though it&#8217;s not news, it needs to be yelled from the rooftops. </p> <p> The fundamental problem is that too many Americans &mdash; aka &#8220;we the people&#8221; &mdash; have not (so far) been willing to face this unpleasant fact. <a href="http://transcripts.cnn.com/TRANSCRIPTS/1002/21/fzgps.01.html">Fareed Zakaria nicely put this in February 21, 2010</a>: &#8220; &#8230; in one sense, Washington is delivering to the American people exactly what they seem to want. In poll after poll, we find that the public is generally opposed to any new taxes, but we also discover that the public will immediately punish anyone who proposes spending cuts in any middle class program which are the ones where the money is in the federal budget. Now, there is only one way to square this circle short of magic, and that is to borrow money, and that is what we have done for decades now at the local, state and federal level &#8230; The lesson of the polls in the recent elections is that politicians will succeed if they pander to this public schizophrenia. So, the next time you accuse Washington of being irresponsible, save some of that blame for yourself and your friends&#8221;. </p> <p> But Americans must face the fact that we must balance the budget. And we must face it now. We must balance the budget the same way families balance their budgets &mdash; the government must raise income (taxes), lower expenditures (government spending), or both. Growth over time will not fix the problem. </p> <p> How we rellocate income and outgo so that they match needs to be a political process. Working out compromises is what the political process is supposed to be all about; nobody gets everything they want, but eventually some sort of rough set of priorities must be worked out for the resources available. Compromise is not a dirty word to describe the job of politics; it <b>is</b> the job. In reality, I think we will need to both raise revenue and decrease spending. I think we must raise taxes to some small degree, but we can&#8217;t raise taxes on the lower or middle class much; they don&#8217;t have the money. Also, we will not be able to solve this by taxing the rich out of the country. Which means that we <b>must</b> cut spending somehow. Just cutting defense spending won&#8217;t work; defense is only 20% of the entire budget. In contrast, the so-called entitlements &mdash; mainly medicare, medicaid, and social security &mdash; are 43% of the government costs and rapidly growing in cost. I think we are going to have to lower entitlement spending; that is undesirable, but we can&#8217;t keep providing services we can&#8217;t pay for. The alternative is to dramatically increase taxes to pay for them, and I do not think that will work. Raising the age before Social Security benefits can normally be received is to me an obvious baby step, but again, that alone will not solve the problem. It&#8217;s clearly possible to hammer out approaches to make this work, as long as the various camps are willing to work out a compromise. </p> <p> To get there, we need to specify and plan out the maximum debt that the U.S. will incur in each year, decreasing that each year (say, over a 10-year period). Then Congress (and the President) will need to work out, each year, how to meet that requirement. It doesn&#8217;t need to be any of the plans that have been put forward so far; there are lots of ways to do this. But unless we agree that we must live within our means, we will not be able to make the decisions necessary to do so. The U.S. is not a Greece, at least not now, but we must make decisions soon to prevent bad results. I am posting this on Independence Day; Americans have been willing to undergo lots of suffering to gain control over their destinies, and I think they are still able to do so today. </p> <p> In the short term (say a year), I suspect we will need to focus on short-term recovery rather than balancing the budget. And we must <b>not</b> default. But we must set the plans in motion to stop the runaway deficit, and get that budget balanced. The only way to get there is for the citizenry to demand it stop, before far worse things happen. </p>