↓ Twitter is updated more often, so read it! ↓

Government as open source software and development in general

Warning: this article gets a little ranty, but please, bear with me and help improve my thoughts by commenting.

Doc Searls of Linux Journal linked recently in his article Is government open source code we can patch? to an article by Britt Blasser entitled “Oh, if only government went in for an open source make-over…”. The article indirectly cites through a reference to Phil Hughes’ own Our Internet article two articles, FCC: Moving Beyond Network Neutrality and Our Internet!, by Bob Frankston, who Doc Searls recently interviewed for Linux Journal in Beyond Telecom (non-free registration required, subscribers can get it free).

In his article, Searls says:

Democracy is by nature “our government”. The open source twist on that we put it together and can hack improvements to it. Think of elected officials as committers and maintainers and you start go get the idea.

The analogy isn’t perfect, because by nature open source code is purely practical: it has to work. While government often does not. All government is buggy. In the worst cases it crashes outright and is replaced or supplemented by corrupt alternatives.

This analogy is fairly strong. However, commenter Frymaster supplies an addendum which strengthens it:

The US Constitution itself is open source, if you will, and editable. “The Framers” intended that Americans would change it to meet changing times, hence the series of amendments covering key rights like voting, and, most importantly, consuming alcohol. But they set the bar high, requiring super-majorities in both houses of Congress PLUS each of the states.

The Constitution certainly is open source. We’re free to change it, and other countries, fledgling or long-established, are welcome to take our code—our elemental specification of government—and adapt, implement, and utilize it. We’d like to receive contributions back, because they might be worthwhile enough to include in the trunk code. Even if these modifications aren’t strong enough for trunk, they might be strong enough for that government to maintain as a branch.

The Constitution is inherently good. Some might argue that it is outdated, but these folks are in error and their sentiments should be dismissed if they believe that it is irrelevant and should not be followed. The Constitution establishes a rule of law, wherein all citizens of the land give rights to a union of states, called the United States of America. It establishes procedures for updating it through amendments, which require a majority vote not only by two small bodies of people, but a majority vote of the several states, as Frymaster reminds us. This amendment process keeps those two smaller bodies of 535 people from legislating away the rights of their constituents.

I digress.

A government can never truly be open source, at least realistically. There will always be secrets; unpublished code, per say. These secrets are matters of national defense: military operations during a time of declared war, location of the president and vice president so the two are rarely together (for obvious reasons).

However, most of the goings-on of the government should be open. Obama pushes for “open government.” Ron Paul pushes for less government and, presumably, open government, since there would be far less government to hide!

However, open source projects thrive on the involvement of the people. Our current election system does not encourage responsible voting. Take, for example, Pennsylvania’s primary election results. 90,836 PA Republicans voted for Mike Huckabee, who dropped out of the race March 4, 49 days prior to the election. This is like allowing all of the Linux users in PA, regardless of technical knowledge, vote on the addition of one of three kernel features, and giving them only the name of the feature—no description, background, author, codebase, language, performance evaluation, or source! Even more appropriate would be that the developer of the feature conceded that one of the other two features is more efficient and worthwhile than his own!

I’m not saying that only those in-the-know should be allowed the vote. Mistaking my words for that would be fallacious. I believe that every person deserves the right to vote. I believe that every person has the right to have evidence of their vote. I believe that every person has the right to request vote totals for every level of complexity in the elections system: precinct, county, congressional district, state, and federal.

As versatile and open as the Constitution may be—and yes, I believe that it may need some updating to reinforce personal liberty and states’ rights—the government and governance which exists now cannot be patched.

When working on a project, a developer comes to a point where he or she realizes that there is a major defect in the software. He or she (for sake of my fingers, I’m going to use he henceforth, pardon my faux pas) has two options: patch or rewrite. He knows there are serious bugs, bugs which are inherent in the design of the code, as it has been patched since it was written. These most of these patches were good things, but some introduced more bugs which have yet to be fixed.

Should the developer continue to patch the code? Or should he rewrite it, integrating the features of the old version with more manageable code and lessons learned since it was first written?

If he continues to patch it, he treats the problem, but may not actually fix the problem. The problem might be inherent, or the problem may be caused by a combination of other features.

If he rewrites it, he’ll spend a lot of time redoing work he’s already done, but the result will be a more efficient program with fewer bugs (hopefully) and more manageable, cohesive code base. Of course, this new version will have its bugs, too, but they may be easier to find if the code is more manageable.

What the United States needs is a rewrite. The foundations of our government are solid: the Constitution, capitalism and free market economy, liberty for all. These are like the basic functions that make a program tick, “the algorithm,” per say. There are other parts that work, too. However, the maintainers of our government have diverted our attention from the core of the government, preferring us to view the only the parts it wants us to see, i.e. the bling.

The founders—the original authors of the U.S. base code—have long since gone, and they would be disgusted by the mess that is the program and its code base—the federal government—today. Things aren’t going they way that they would have wanted, and there’s a growing part of the population which seeks to return the these ideas, to a set of ideas not much different in theory from the software philosophy of “do one thing and do it well.” The government is bloated, more bloated than any application to which I might possibly compare it.

The founders outlined in the Constitution—a white paper or base algorithm, if you prefer to keep up the programming analogies—the specific functions of the U.S. government. It outlined a process by which the white paper or algorithm itself could be changed to allow more functions or remove functions which endangered the users and their data. However, rather than use this process, the maintainers simply implement functions or remove functions without regard to the users’ opinions, data, or the fact that the users are supporting the maintainers financially.

A fork is nearly impossible. There is no more undiscovered land on the face of the Earth, and it would be difficult for a state to secede. It would be economically infeasible, as well as diplomatically infeasible. The citizens of the new country would have their rights and their government as the Constitution of the U.S.—and of their new country—defines, but they would not have the resources to be self-sufficient, and things imported would cost more.

Fortunately, our government is not setup like the Linux kernel maintenance group in that The President of the United States is not a benevolent dictator (at least not on paper, haha). There are, however, 50 branches of the U.S. kernel which all have their own quirks and maintainers. Like a few projects, perhaps the Debian project included, the U.S. government does have representatives, people who supposedly represent their constituents in the decision-making process having been chosen by those constituents.

The ears of the maintainer are closed. He doesn’t want hear from the users; the people. However, the representatives’ ears are open, and they must be, by definition. In order to change the course of the program; the United States, we, as users; citizens, must elect representatives who believe as we do and not settle for anyone lesser. These representatives will then make the decisions we would make if we were in their position, leading to a program which is more useful, usable, smaller, and most of all, open.


  1. test » Blog Archive » Government as open source software and development in general:

    […] as open source software and development in general Josh wrote an interesting post today onHere’s a quick excerptOur current election system does not […]

  2. frymaster:

    […] […]

Leave a comment