> natural language laws have many exceptions and context dependencies
The complexity is in common law, not natural-language laws.
The U.S. Code and Code of Federal Regulations can be completely presented through a Git-like system. The complexity comes in when attaching court cases.
If you've got a statute like "no vehicles in the park," the fundamental issue is that you have to interpret "what is meant by 'vehicle'?" and no legal drafting is going to be good enough to actually cover all the possible cases well enough. The main difference between a common law and a civil law system here is that in a common law system, you have to cite the previous similar cases (because precedent is binding) whereas in a civil law system, you're merely using those previous similar cases as persuasive evidence. At the end of the day, it boils down to arguing for your interpretation.
And in my experience working on language standardization (which is closer to a civil law system than a common law system), it's fairly often that I have to resort to looking up not just when a change in the text occurred, but dive deep into the discussions of the paper proposing the change to understand what the committee thought it was doing with the change. The complexity of law is fairly similar--the changes to the law themselves often require understanding the legislative and interpretative history of the law to understand what the intent of the drafter was to be able to rule on how the law is extended to an unanticipated scenario.
Yeah but none of this matters for the "git for legislation" idea right? The point here is to record the history of the text of the laws, not their meaning.
It depends on the question you're trying to answer. The text of the US law which Citizen's United struck down remains on the books today (though has changed since it was moved to a different part of the code, so references have been updated), but the actual effective law has most certainly changed from when it was written to now. Since courts can't write or modify the law, the literal text remains, even if some of that text is effectively stricken as if the text had been removed.
If you want to know the literal text (that may or may not be enforceable), then sure a plain text diff is sufficient to know that nothing at all has changed about federal communication laws since this section was last amended in 2002. But if you want to know what the actual law is, you definitely need more than just a text diff.
See my response to the parent, but git blame solves the issue of "what did they mean" because the person (if alive) can just be asked. The same way git blame is used all the time to ask why a programmer did something some certain way, there's more to code too than just how exactly does it compile/execute. The higher level idea should be to stop legislation seemingly written by nobody, that nobody wants to answer for, but is used to make important decision about lives and livelihoods. Having courts needed to interpret verbiage that was written by living people is completely preposterous. If it's written by dead people, sure, that's a harder problem.
> If you've got a statute like "no vehicles in the park," the fundamental issue is that you have to interpret "what is meant by 'vehicle'?"
Maybe. Maybe it’s a court finding the legislature never had the power to pass that rule. Maybe it’s what constitutes a park.
Visualizing changes in statute with git is fine. It would have real difficulty in presenting changes in law, as a whole, as well as an annotated supplement. (At the end of the day, redlines, git trees and annotated supplements are just visualization methods. The actual federal law lives in the USC, CFR and opinions of our courts.)
I see. The laws are completely different from my country, so this is very educational. My country uses civil law, but I see that is how it is under common law. Thank you very much.
The complexity is in common law, not natural-language laws.
The U.S. Code and Code of Federal Regulations can be completely presented through a Git-like system. The complexity comes in when attaching court cases.