OpenCongress Blog

Blog Feed Comments Feed More RSS Feeds

Yes, let's stride towards an open VCS for legislation (or, GitHub for laws on OC)

May 23, 2012 - by David Moore

Last week there was a brief flurry on the micropublishing service re: possibility of a version control system (VCS) for laws. Background links via the incredible research of Rob Richards – this post by Abe Volcker on “GitLaw” made a splash on Hacker News. Here’s an unedited-draft, non-exhaustive, quick-fast sketch of a response from my point of view. 

First, though, please read this enlightening Quora thread in full: “What are the nontechnical barriers to adopting a version control system for use in writing bills / new laws?” My apologies to have a pre-requisite, but it’s crucial background & full of expert insight. My regards to the contributors there. 

Second, I should mention that it seems to me obvious that a VCS for legislation would have positive social democratic outcomes. It’s desirable in and of itself for a variety of reasons. The first is that it is, in theory, the most effective method of public accountability & radical transparency in a representative democracy like ours. The second is that, again in theory, it’s clearly the most efficient way to draft laws & public policy, with rich benefits from #opendata & the inherent useful features of a VCS. It’s deeply politically desirable, by my lights, and PPF has been calling for it since we launched OpenCongress in 2007 – most recently, see my blog post from Feb., “liberate #opengovdata now”, specifically when I wrote previously re: VCS

 

That is to say, requiring legislative assistants & staffers & even lobbyists & members of Congress themselves have unique logins for openly writing, editing, and commenting on draft legislation. To be sure, staffers could still have off-the-record private conversations of the expected political-calculus and/or horse-trading sort – but for the public record, language or policy ideas cribbed from lobbyists could be programatically & easily identified as such. Which wouldn’t necessarily be a pejorative thing at all – but would be a basic accountability measure. To be reductive, if a member’s staffer adds funding for a bridge for her district, observers of the bill would find the individuals responsible and bring it to other parties for input. Constituents could be continually polled with ranked-choice voting about specific, significant sections of legislation. The details matter, as we know – facing down a federal election year in which the major health-care reform bill is likely to be an issue both in the Supreme Court and the Presidential campaign, wouldn’t it be helpful to know which individual staffers took responsibility for which sections of the bill, and which lobbyists & interest groups can be identified as crafting specific language? This isn’t even to address the benefits of metadata linking campaign donations to specific bill provisions, budget & spending transparency, real-time financial disclosure of senators’ campaign contributions (imagine that), and other realistic-yet-lofty ideas…

 

… third, to move towards a technical level, I believe this is both a solvable problem in theory and that GitHub specifically gets us most of the way there, with some expected tweaks. That’s the big-picture subjective evaluation on my part… 

… which runs smack into expert practitioners – see intelligent Quora thread above (and related), specifically insights from John Sheridan & Tom Bruce re: difficulties of actually implementing VCS for leg. b/c, essentially, the lawmaking process is essentially idiosyncratic & bigtime complicated. My approach has more in common with Alex M. Hendler’s evaluation that, in context, “… I don’t see any insurmountable non-technical difficulties with treating each amendment as a branch of a bill (or amendment), then merging in successful ones and rejecting unsuccessful ones.”

But if I’m summarizing the ultimate objection in the thread, putting aside bureaucratic culture foot-dragging & resistance to transparency by elected officials & some not-insignificant technical issues, it’s that laws have cascading implications – and that Git isn’t sufficiently good at accounting for how changes to one part of a proposed law would affect sections of other proposed/enacted laws. That’s reductive, to be sure, but that’s what I understood as the primary shortcoming of GitHub for laws. That seems like a pretty powerful in-practice shortcoming now, though ultimately, I hope, solvable. John Sheridan (UK) writes, sympathetically, of the complicated leg. process: “It is a world of known pasts with known, unknown and possible futures, forking by jurisdiction, where the meaning can change in important ways, without altering a single word of text.”

But maybe there’s a way to start the ball rolling on using Git for leg. while we wait on more-advanced tech solutions – simply by encouraging (or requiring) most newly-drafted bills to be done in an open VCS. Then if they’re introduced into the legacy systems of Congress, well, that’s all right – their cascading changes can be evaluated & processed as normal. But it would be decently groundbreaking for leg. to be drafted openly, at least at first. It’s not much of a Copernican revolution, to be sure, but it’s something we can do here & now (say, w/ straightforward enhancements to our #opensource code here on this existing & popular & data-rich & heavily-used OC web app). 

This would at least address the #SOPA / #PIPA / #CISPA problem of truly egregious language being bundled into wide-ranging bills – e.g. w/ CISPA, some username would have to take responsibility for the absurdly broad text, “…misappropriation of private or government information, intellectual property, or personally identifiable information…” More on SOPA’s inexcusably & unforgivably awful language from EFF & Public Knowledge, both members (along with PPF) of the American Censorship coalition that mobilized the public on the open Web to kill these censorship bills successfully in January. 

For dozens more major bills in this 112th U.S. Congress, on issues from #hcr to #finreg to catastrophic climate degradation to net neutrality to mitigating income inequality to freedom of association to reproductive rights to public education, we have the option to encourage our members of Congress to start drafting legislation on GitHub and elsewhere in #openstandards for a greater-than-ever degree of accountability. And to be clear, technically any citizen can today (May 2012) draft a bill and submit it to members of Congress to introduce for consideration – which could even fantastically become law, imagine that – but of course this is neither optimal nor common in practice, and isn’t necessarily the best-case end goal — rather, we seek what Prof. Benkler described as the networked public sphere. Or wiki government, if you prefer, or e-democracy – basically a more-informed, more-deliberative, more-data-driven, more-public, more-participatory process. My suspicion is that the reasons this isn’t more common is as follows: lack of sufficiently large public forums w/ in Cong. districts (OC can provide those); lack of institutional buy-in from members’ offices (tougher, persistent problem until we establish a two-way forum for continual, reciprocal constituent communication in open-standards on the open Web); lack of user-friendly interface for non-academic, non-technical, non-lawyer contributors (GitHub is marvelous but it ain’t Tumblr in ease-of-popular-use, nor should it be nec.). Maybe it’s not common for Congressional offices to draft legislation in an open VCS simply because the best platform for doing so & taking-in public sentiment & expert comments (specifically for bills & political issues) hasn’t yet been built. PPF can design a user interface for input & seeing contributions by public-interest experts regarding specific sections of discrete legislation. 

I anticipate it’s perfectly feasible to focus initial GitHub law-drafting in areas of public policy or legal sphere where the cascading implications of the specific legislation is relatively-more-contained… this is a larger topic though, but to ramble, Git for leg. doesn’t nec. have to be universally used immediately – rather it can iteratively expand its application. Even if it starts out as a Git for how bills get introduced, and then they stay in the custom / boutique / legacy VCS, that’s acceptable for a start to me at least in the #opengov community – as long as there are understandings (or better yet, laws, haha) about what kind of un-VCS’d changes are fair once it’s out of public Git and into Congress’ official processes / technologies. I.e., perhaps, no major funding changes at that point; legal questions are of course trickier. Larger topic indeed. 

My point, then, is indeed as much a political & cultural one (yes come on let’s obviously build a workable VCS for lawmaking) as it is a technical one (use GitHub for federal legislation today) – and on that there is broad agreement in the Quora thread – it’s a bit tautological, yes if there existed the political will to work towards a solution then we’d probably be working towards a solution. But let’s get started already on GitHub and cut down on massive, intentionally-bloated omnibus bills like the Farm Bill or DoD appropriations. We badly need public accountability (a feature of any VCS) to mitigate systemic corruption rampant in the contemporary, closed-off, fundamentally-broken federal legislative process. We badly need radical transparency to restore public faith in Congress (down to record lows recently), improve public policy outcomes, and facilitate a more participatory democratic process. 

Over to members of our systemically-corrupt 112th Congress, then, and the civil servants & political advisors in their overworked D.C. & district offices, to start using GitHub for public input on laws before they’re introduced. (While we’re at it, we’re waiting on members of Congress to endorse comprehensive electoral reforms, including full public financing of elections, and #opengovdata for participatory budgeting & ethics reform & more, but that’s a bit too much to hope for all at once perhaps.) Any Cong. offices want to take the lead on GitHub? Which offices are even on GitHub? Why not? Come on, it takes two seconds. Don’t fetishize your role as gatekeepers to the intentionally-closed-off, insistently-arcane legislative systems; yes it’s complicated, but bill-to-law process could be managed on GitHub right now, if a few basic understandings were in place. 

I for one sure would love to see the next net neutrality bill in the 113th U.S. Congress include commits from EFF & Public Knowledge – and if a big telco & its lobbyists / lawyers have specific bill text contributions, to see the diffs on that. And then apply that similar process to every legislative item affecting our lives, with community-accountable experts going head-to-head with corporate lobbyists. For example (not the best example actually, but a prominent & pressing one), see case cited by Prof. Lessig (NYRoB, March 2012) in dialogue w/ E-Klein to illustrate systemic corruption – lack of public option introduced by House Progressive Democrats during #hcr debate. Drafting parts of that mammoth bill on GitHub, a commit could have been submitted by Rep. Grijalva & others on behalf of his caucus under his verified Git sername, and discussed on its merits in context — well this is actually too macro-scale a use case, but it’s a vivid one. Net neutrality legislation offers a tidier hypotethical, so as not to distract re: the specific policies & politics of #hcr, so let’s keep our focus on that topic. 

I think there’s general agreement that open VCS for bills is possible, and I’d argue strongly its effects will be positive – and that there is slow-gathering momentum towards #opengov, of which this is a sensible core feature – we’ll see I guess. Here on OC, we already have free, libre, and open-source features to comment on and link to individual bill text sections (e.g. #CISPA, now #s2105), as well as to compare with a previous version. Help us build an open platform on OpenCongress for Git for proposed legislation. Philanthropists & charitable foundations, please make a grant to our 501c3 non-profit and we’ll get started right away on these innovative & user-friendly features for accountability & participation in lawmaking. It’s all possible on OpenCongress now, we just need funds to build some amazing open-source tools. Get in touch: david at opencongress, feedback & microdonations welcome as well.

Thoughts – Rob Richards, John Wonderlich & Daniel Schuman at Sunlight, Tom Bruce, Beth Noveck, Quora thread followers / contributors, others? 

Let’s build VCS for laws on OC! Volunteer Rails programmers, get setup on our code & let’s get building. Philanthropists: drop us a line, give PPF a tax-exempt grant, and let’s make this happen for the public benefit and less systemic corruption in Congress. We have the technology & the design skills, so let’s write some public laws with, by, and for the public on OC

Like this post? Stay in touch by following us on Twitter, joining us on Facebook, or by Subscribing with RSS.
 

Comments

A_Federalist 07/17/2012 3:31am

There are several major obstacles to using GitHub (or something like it) for legislative tracking. To get something truly useful that provides the functional equivalent of GitHub for legal and legislative materials, there needs to be, at a minimum:

1) A rational and useful “initial commit” for the underlying material that is being amended (no easy task in itself);
2) A way to view side-by-side diffs of at least two different bills/amendments;
3) A robust semantic component that helps users of all skill-sets to interpret the meaning of proposed changes; and
4) An API that allows programs to access the semantic components for reprocessing, e.g., visualization, aggregation, querying.

This is not to mention the technical/philosophical issues of what should be considered a “document” or “record” in the system, setting and enforcing relevant taxonomy designations, whether URL structure (e.g., immutable URLs) is important, etc.

But as I noted above, this is definitely worth working on.

A_Federalist 07/17/2012 3:05am
in reply to grantcv1 May 29, 2012 2:25am

The process you describe is essentially the way Congress and lobbying groups (non-profit or otherwise) do things now, albeit behind mostly closed doors. One issue I often see is that translating policy into law, while “mechanistic”, is highly error-prone because legislation and the laws they patch are drafted so obtusely that a typical person (not to mention a typical legislator or lawyer) is not capable of reliably determining whether the bill drafters are correctly describing the intended policy.

I think a major reason that people do not seem to be interested in looking at the bill text is that it is so laborious—if not impossible, for most people, including legislators—to actually see and grasp what legal changes the bills are proposing. This is an essential check that needs to be in place for citizens to have any real stake in the law-making process. There needs to be a good public-facing system that allows this to happen. More on this in a separate comment below…

Moderated Comment

drm 06/13/2012 2:48pm
in reply to grantcv1 May 29, 2012 2:25am

Grant, thanks for that comment, sorry just now replying – been tweeting links to your work & following it via Legal Informatics – I think your approach is quite sound. Clearly it’s not the case that American public may dive in to technical details of, say, net neutrality legislation. And in my argument above, I do make the case that we can hack together a shorter-term approach before using Congress’ “official” VCS. So I think we’re agreed that at the level we want to see happen, it can happen pretty close with existing technology. But I want to be sure that if a technical specification on net neutrality is needed, that a public-benefit expert from PK or other can specify it, and the public can indeed endorse that specific technical language, so it doesn’t get watered-down by lawyers. That may be an edge case; general principles may capture the outcome we seek over 80% of the time. Great work on your LegixInfo project: http://legixinfo.wordpress.com. Thanks.

Spam Comment

grantcv1 05/29/2012 2:25am

This is a subject I have given a lot of throught to over the past few years. I’ve built both a bill drafting system (used by California) and a bill tracking system (LegisWeb.com). The problem, as I see it, isn’t so much at the bill level. Bills are such dry and mechanistic documents that patch the existing laws in intricate and boring ways. From my experience, there is limited interest in reading or drafting legislation by the public. Where the interest lies is at a higher level. What we need is a way for the public to debate policy – which can then be implemented mechanistically by lawyers specialized in the law. Think of the public writing high level policy source code and leaving the nitty gritty assembly language for lawyer compilers to figure out. If we would somehow put the policy debate in the hands of the people and the implementation in the hands of the govt’s lawyers, limiting the role of the politicians as go betweens, the world would be a better place.

Moderated Comment

Due to the archiving of this blog, comment posting has been disabled.