Software code has many similarities to legal code, as others have
noted. In this diary, I argue that version control-- an essential and ubiquitous tool for writing software-- can easily be adopted to improve how congress writes our laws. Specifically, it will reduce pork, weaken the power of special interests, and greatly increase citizen participation in government. This proposal is technically trivial to implement, and doing so this January would send a powerful positive message about transparency and accountability in the new congress.
The proposal is simple: use version-control software to host all in-progress Bills. Grant all members of Congress write-access (subject to some restrictions as described below), and the whole world read-access. Provide standard search tools that allow users to check who made what modifications to what bills.
Let's start with a brief look at version control. One of the most popular examples of version control can be found at Wikipedia. Take a look at any article, like this one. Now, click on the history tab, or just click here.
See that list? It indicates how the article changed over time. If you play around with the "Compare selected versions" button, you can see exactly what changes were made, who made them, and when. These comparisons are called "diffs."
Programmers use similar tools. All code is checked in to a "source repository." Every time someone contributes code, it is stamped with the time and programmer's name and, if the programmer is feeling responsible, a brief explanation of why the change was made. In really large projects, only certain gatekeepers can commit code. All others must submit code to the gatekeeper, who can accept or reject changes.
Now let's see how such a tool could improve the way Congress writes our legal code. Suppose all bills were written using a version-control tool to which only congress members had write-access (as described below) but everyone had read-access to. Then, suppose someone wrote a bunch of nifty search tools to work against that repository.
For one thing, it would be immediately possible to see just who inserted that $50m Bridge to Nowhere-- just look at the diffs. Furthermore, you could search to see just how many Bridges to Nowhere your lawmaker has called for, and email the link to 20 of your favorite friends, or direct-mail the results to 20,000 of your favorite potential voters. In such a world, Congressmen would be a lot more careful about inserting such provisions.
Alternatively, suppose your lawmaker has proved to be very good at finding and removing pork. You can bet he'll talk about that prominently when he runs for re-election. But note that this incentive does not apply to removing all forms of spending-- a lawmaker who tries to remove that $1bn line-item for better body armor for troops will probably be in big trouble come November. So lawmakers have a powerful incentive not to add pork, and to find and remove pork added by others. But they have no incentive to remove valid expenditures.
A similar logic applies to tax subsidies. If someone gets caught putting in a special tax break for any and all companies whose names happen to begin with "Hal" and end with "burton", it will be trivial to find out who, and bring this up at their next election campaign. By contrast, lawmaker who close loopholes will likely be rewarded.
This could also break the power of lobbyists, which depends on a lack of transparency. Pork is extremely popular in a very narrow constituency (the guys who benefit from it), and broadly unpopular among the rest of the country (who pay for it). The lawmaker who inserts the pork ensures that the guys who benefit know it exists-- and whom to thank-- while doing his best to prevent the rest of the nation from ever finding out that he was responsible for it. By greatly increasing transparency, a source repository may fundamentally alter his calculations.
Furthermore, some clever fellow can write a tool that mashes a lawmaker's ammending history with information on which industries have primarily funded her campaigns. So when you look at the ammendments she made to the Energy Bill, you can click on a link that shows you what percentage of her donations came from coal companies. That might shed a lot of light on her ammending practices very quickly. And then you can email your link to your pals, or feature it prominently on your local blog on her race.
* * *
There are many ways one could decide who would have write-access to the repository, but I favor one that is generally consistent with the current rules. When a bill is initially submitted, only the bill's Primary Author has write-access (although she can delegate these powers). Proposed changes may be submitted by any member of congress to the Primary Author. She can accept them (a friendly ammendment) or reject them. If she rejects them, her decision may be overriden by a majority vote (unfriendly ammendment). When a change is submitted (regardless of whether or not it is ultimately accepted), it is "stamped" with the name of the author, time and a brief summary written by the submitter. Finally, a majority of the House (or 60 Senators) can vote to close down ammending. A final vote on the bill can only take place at least 3 hours after ammending has been closed (thus preventing last-minute riders from being inserted).
Again, the key aspect is that all of these actions can be viewed in real time by the entire world via the Internet. We can all watch how sausages are made.
If this plan is implemented, it would be much easier for citizens to learn about the bills winding through Congress. We could just check directly on the Net, and not have to rely on the media to summarize things for us. There won't be any more excuses about "I don't know which staff member inserted that clause." It will take you half a dozen mouse clicks to figure out how much pork your Senator is responsible for. And you can show the world with just a few clicks just how hard your favorite lawmaker fought to include a desperately needed provision, and how the majority voted down the ammendment every time.
A source repository should be very easy to implement technically. Practically every programming team in the world with at least three people uses something similar. And I'll bet any of them could be modified to serve the purpose proposed here in under a week.
Potential problems
Q. This sounds great! But why stop with read access for citizens? It's our country! Why not empower all Americans to submit changes?
A. Calm down, cowboy. I'll let The Onion field that one.
Q. Congressional bills are extremely long and convoluted. They are much bigger than anyone can possibly understand. Is it really feasible for 435 people to collaborate on a document running to tens of thousands of pages?
A. Yes. In fact, far larger collaborations are underway. The Linux operating system involved thousands (at least!) of people and now includes 30 million lines of code. If printed out, it would run to several hundred thousand pages.
Q. But still, there are thousands of pages in many bills. Surely, if someone slips in a nasty provision on page 2863, it will never get noticed in time.
A. Actually, that's a problem with today's system as well. But I think it will be less of a problem with a publicly accessible source repository. After all, look at Linux. If someone slips in a half dozen lines of code in the right place, millions of computers could be rendered vulnerable to attack. And yet, so far as we know, this has never happened. Many eyes, looking at diffs, are very good at finding this sort of thing. (And anyone who is caught doing this will be punished politically.)
Q. Software development tools work well because software development can be compartmentalized into small productive groups of 6-10, which means that the whole body of work can retain integrity even with hundreds working on it. You can't do this with law.
A. Sure you can! For example, an Energy bill can have separate compartments (and working groups) focussing on Solar Power, Wind Power, etc. A Defense appropriations bill can have separate compartments (and working groups) focussing on Blackhawk choppers or body armor.
Q. But software changes mostly because programmers slowly update their existing code and release new versions. By contrast, law changes mostly with the introduction of new bills.
A. I'm not so sure about that. I'd bet that the very first version of a Bill-- the first draft that some staff member commits to paper-- differs dramatically from what eventually gets passed. I'm interested in focussing the light of public scrutiny on those changes, on how the bill evolves.
Q. But what will force anyone to use the system. Why can't they make their edits elsewhere and introduce a million changes all at once? Or have another lawmaker do their dirty work?
A. Well, a lawmaker who submits a piece of pork for someone else is either very brave or stupid, because he will pay the political price. The system tends to select against people like that. And while Senator Jones could submit a bill pre-loaded with pork, it would still be submitted in his name, and he'd have to answer to his constituents for that. Meanwhile Senators Tom, Dick and Harry would all race to be the first to take out the pork, and thus earn points with their constituents.
Q. What if someone hacks into the system, and rewrites our laws?
A. I'll leave this one to the security experts, but I don't think it should be big problem. One possible solution would be to physically restrict all access to the system to points that are physically located inside congressional office buildings. This private network would publish information to several public sites. If you hack into one of the publicly accessible sites (or intercept and alter communications), you're just hacking a copy.
I recognize that this is a technical solution to some political problems. But the political solutions don't seem to be working very well just now. We need to think hard about fresh approaches. And from a purely technical standpoint, this approach would be very easy to implement.