In a way, it's often the case: law are often modifications of the underlying reference code (here 'Code civil') and are a set of proposition to change the wording or to add/remove a sentence from the reference code.
Apart from the timestamps, line returns also make some of the diffs difficult to interpret sometimes, like if the first line of a long paragraph gets wrapped differently then all the paragraph is just highlighted as a diff instead of each modified word.
Isn't there a better tool than git for plain text diffs?
The author mention he did it in an afternoon of code, so it's definitely not manually generated :
"Voici un petit hack, résultat d'une après-midi de code"
I do agree that the technical details would be interesting.
The full civil code text applicable for every date since at least 1817 is available at Legifrance.gouv.fr[1] so I suppose he just wrote a parser to transform each of these pages into plaintext, another one to get a list of all amendments, and commited each different version.
This would be a great idea in general for the legislature of any country, to be able to see exactly how and when the law was changed would be valuable for transparency and also research. Commit messages could reference transcripts of the debates surrounding changes.
TL;DR: Denmark, Finland, Sweden and presumably others do it already.
I'm surprised if France and other supposedly civilized countries don't do it on behalf of the Justice Ministry or equivalent. I mean, the fundamental responsibility of citizens is to adhere to the law (ignorantia juris non excusat); the fundamental responsibility of government is to make the law available to citizens because it is not reasonable to require compliance with laws that are not practically available to citizens.
I'm in Finland, and the full content of law books has been in internet for almost 20 years, published first by the state-owned publishing house that gave out the print versions, and more recently by Ministry of Justice who has contracted the technical execution out. The database structure managing pieces of legislation dates back to 1980's, but until 1990's it was available only through a license payment.
Individual laws (and executive orders, state treaties and such) that are published by parliament or ministries have of course always been public information and published in the net since 1990's; the important thing is actually maintenance of "up-to-date" version because the parliament publishes its laws mostly as "patches" (i.e. only a changed section is reviewed, voted on, and published).
The database cross-links to published parliamentary process so that the official background work for each law, section and paragraph is available, including preparatory statements by parliamentary committees, any dissenting opinions and so on.
Also more significant precedent cases from high courts are available in database. (We have a so-called Roman law system where the code is primary source of law, unlike American/English common law where precedents are more important; nevertheless neither system is absolute of course, and precedents do matter in civil law systems as well.)
Well, I said "surprised if", not "surprised that".
The eur-lex link I mentioned lists precisely that site (legifrance) for France. But as I don't read French and don't know the particulars, what puzzles me is what is the additional value of putting the same thing in Github. The maintenance burden seems horrific unless you can pull it automatically, and even then the actual benefit of using Github is not so clear to me.
> The maintenance burden seems horrific unless you can pull it automatically
Which is probably relatively easy, legifrace provides reconciliated articles with history so it should be possible to just crawl the code, see if an article was updated since the last crawling and generate the relevant commits.
> and even then the actual benefit of using Github is not so clear to me.
Diffs are somewhat more straightforward than the equivalent legalese, and version-controlled markdown makes for easier programmatic manipulations across "space" and time than a custom-designed website.
As one of the candidates for the speaker of the House of commons said to me "the executive can get a way with a lot" in terms of controlling the order paper and timing
Stil think Parmjit would have made a better speaker than Bercow
Couldn't this have been done without taking gay marriage as the first example? Or does IT always need to go hand in hand with unconditional progressism?
Gay marriage (or "marriage for everyone") is a recent, substantial change to a law that is familiar to many French people. I thought it was a great example despite its somewhat controversial nature.
A quick look at the author's tweets reveals this is not as innocent as you seem to say it is. Plato once said something along the lines of: "those who mix art with politics must be either unsure of their art or of their political positions, if not both". We had engaged musicians, now we have engaged developers. This is all the same trash to me.
Do we even have another recent law that everybody in France remembers?
And seriously, every single new law is pushing somebody's agenda. The author could've chosen the "animals are human being" change and we'd have another you yelling not being fond of developers pushing their love for animals.
Kinda ironic as it's usually the uber liberals that tend to get grossly offended by perceived social injustices such as gendered pronouns or dongle jokes.
Regardless of your political views, any piece of legislature would offend somebody's sensibilities. That's why the legislature exists in the first place
Is this account actually maintained by Bundestag (or other actual piece of state administration), or is it just a mirror? Also, either German law is really mature and stable, or this repository is unmaintained: last commit oin master is Jan 2013.
I'd love to see such a repository for the acts in my country, by the way, but the official source is a PDF, and most of the published acts are actually patches to existing (already heavily "patched"), like "In the section II, item 13a, change words 'foo and bar' to 'foo, baz and quux'". This mess untangled into an actual, highlighted, unified text is an actual product, and lawyers happily pay the subscription. I imagine it is similar in other countries.
I'm not sure how they do it, but I guess that it wouldn't be extremely hard to have a small grammar to automatically convert the legalese patch into an actual git patch (most of the time, the sentences which wrap the editions are the sames).
If you have a text version, at least preprocessing and proposing changes could be doable (especially that as far as I know, formal French is quite uniform - but then, it's what I heard from others, all French I actually know comes from a Dexter's Laboratory episode). In Poland, though, the original acts are published as PDFs, and the text extraction itself needs assistance, if it's even possible without OCR: the international agreements that are side-by-side in multiple languages (Polish, other party, sometimes also English) are usually image scans saved as PDFs.
It's a financially independent (it has a "pro" version) non-profit owned by the department of justice and the faculty of law of the University of Oslo. It is an official source and as such laws published there are officially, legally published and it has been that way since 2001. Laws relevant to private citizens are available for free. It's pretty neat.
I'm the original creator of that repo. Keeping it up to date is unfortunately a time-consuming manual effort. Doing version control downstream is generally a nightmare because unraveling different law changes/typo fixes is complicated (yes, lot's of typos when humans consolidate laws by hand).
Edit: oops! I replied after reading the content in an 8 hours old tab, not noticing that the repo author had already explained it in a sibling post to this one.
-----------------------------------
From their README, it's just someone that converted the XML version published by the "Bundesministerium der Justiz und für Verbraucherschutz" (Ministry of Justice and for Customer Protection) which as they note is available at http://www.gesetze-im-internet.de/
About the Markdown version in GitHub: after a quick inspection, most diffs seem to be plain additions of content, presumably as it was converted to Markdown.
However, some diffs might have tracked changes in the laws, as this one: https://github.com/bundestag/gesetze/commit/3c1bada22f08b4e0...
I suspect the author ran the converter a few times and then abandoned it. In principle, it should be possible to keep updating it.
The improvement over the official XML version seems to be that with Markdown it's easier to get understandable diffs.
The first one I more or less randomly clicked on was of course »Verordnung über Qualitätsnormen für Bananen (QNormBanV)« [1], quality standards for bananas.
I need to keep in practice with my French, so I've translated the README below. Let me know if I got anything wrong.
------
The French Civil Code, in Git
Introduction
Here is a little hack, the result of an afternoon of code: the Civil Code in Git.
If one considers the law as a set of texts modified by the various assemblies of the state, one can consider them as a set of text files created collaboratively.
The members of government, and the various assemblies, work in collaboration on these files, which, once voted for, are written into the Code (here the Civil Code).
But there is another category of people who, for fifty years now, have worked on text files collaboratively, and excel at it: developers. They have created extremely effective collaboration and tracking tools for working on source code. The most popular to date is Git.
Git not only allows you to view the source at a time T (snapshot) but above all to easily visualize the changes in the source (commits). In the analogy to the Civil Code, this permits the tracking of the changes made by a law.
Combine all of this with the Open Source philosophy, and the second part of the analogy is made: the modification of source code in an open and public fashion.
Finally, the Civil Code is a part of the source code of France. And source code belongs in source control. Period.
"At article 165 of the same code, the word: 'before' is replaced by the words: 'during a republican ceremony by'."
Technical Note
Git dates are based on the Unix epoch (01/01/1970), changes before these dates are all dated 01/01/1970, with incremental seconds; the commit message gives the correct date.
I'm really pleased that I was able to read all of the README despite not having read French for probably a year or more. I guess it was written in a very easy/academic style.
I had the same thought. Perhaps it's also because of the closeness of many terms here to their English equivalents ("collaboration", "code source", "commits", "assemblées", etc).
Well the rest of the repository is the french civil code so it makes sense for it to be in french, I'm guessing the readme being bilingual would be acceptable (though obviously judging of that is the repo owner's prerogative)
As a native French speaker: very good translation.
One small point: I do not understand why you added "it" to the last sentence of the introduction. Your translation of that particular sentence feels weird to me, why not simply:
"And source code belongs in source control."
Also, maybe "différentes" (in the third sentence) could have been translated to "various"?
* * *
Aside, note that the original text itself has several errors. Many accents are missing, some letters or words are missing or doubled. I may submit a PR to correct them.
Moreover, the text includes many English words (not all of which are common in French). It even includes a barbarism: "tracker", from English "track" and French common verbal suffix "-er", supposedly a verb supposed to mean "to track" — a shame, since French has the verb "traquer" to express the same thing.
One small point: I do not understand why you added "it" to the last sentence of the introduction. Your translation of that particular sentence feels weird to me, why not simply:
"And source code belongs in source control."
You're right, of course. That was left over when I switched from "it goes in" to "it belongs in". Fixed!
For "les différentes assemblées", would you say "various assembliess" or "the various assemblies" in this context?
In this context, I would definitely say "the various assemblies" since the author is obviously designating the various assemblies working on the Civil Code, not a random ensemble of assemblies.
Legal documents are particularly bad to place under source control, because most of them already reference the previous code they are replacing. And, since the code is basically readonly what's the point of using github? I think legal documents do need a versioning system, but it would have to take into account the peculiarities of the domain (i.e. have each article as a node and amendments as graph links)
There are services (external, secondary to the published acts) that published a re-unified, highlighted version. I would imagine a repository that maintains a current unified text, with the "update acts" as commit messages (or even with the original PDFs somehow linked to the commits. I'm sure it can be implemented somehow in Git plumbing. Annotations, maybe?). I'd even pay for this kind of service - but probably not as much as lawyers who need it for their daily work pay for the existing equivalents.
Did you take a look at the repo? It doesn't track new laws, it tracks the entire Code Civil and considers each new law a "commit", so it works perfectly. Here, as an example, the commit/law that legalizes same-sex marriage :
You can clearly see that the "commit/law" changes the wordings of various files to replace "mother and father" by "parents" and "husband and wife" by "spouses".
> i couldnt find any other versioncontrolled articles.
Did you look? All markdown files aside from the readme are articles. Or did you mean articles which were altered after their initial creation? https://github.com/steeve/france.code-civil/commits/master/L... is one, it was added in 1803 and modified in 1986 and 2014.
No, version control can only handle textual changes, only humans with legal expertise can work out how one law affects another. Even if there was a graph that showed all the links between all the laws (which would take an enormous amount of work to build), it would take a semantic understanding of each modification to deduce whether it has any impact on other nodes.
> Legal documents are particularly bad to place under source control, because most of them already reference the previous code they are replacing. And, since the code is basically readonly what's the point of using github?
The code is not readonly at all, each law within the domain covered by the code is an alteration to the code. Individual laws are reified as commits, and the repository tracks the evolution of the code as laws get voted in and applied.
(I don't know any French and don't know the particulars of French legal system that much, so I cannot really assess quickly based on what I can find in the net).
Very nice! This will make lawmaking in France somewhat more understandable, and not something we hear reported now and then when it's deemed newsworthy.
One thing that is not mentioned though : will it autoupdate? And if yes, at which rate?
In contrast, the list of Wales-only laws is (or used to be) maintained by one French woman at a Welsh university:
"But any queries may well be referred to Marie Navarro, the editor and chief researcher of Wales Legislation Online.
Like everyone in Wales, the judges use this website when they need to find out whether the law in Wales on a particular topic is different from English law.
The database is not run by the judiciary, by the Welsh Assembly Government or by one of the commercial publishers that pride themselves on keeping their subscribers up to date with English law.
It was set up in 1999 by Cardiff University Law School, and is run by Miss Navarro, a French lawyer who came to Wales on a European scholarship 13 years ago and decided to stay."
The irony of course being that I thought to myself as I was reading it "that's some mighty easy-to-understand French". A long time ago I used to visit francophone Africans in a UK asylum centre who were always notably easier to understand than the French.
Oh no, this kind of grammatical errors show that it's clearly a native French speaker. We French suck at our own language - partly because it is fairly complicated, and partly because people don't bother learning.
A bit ironic, no? That such a thing, almost exclusively useful for French people, has to come from a non-native speaker. And that the only obviously French comment so far is a critique about the style...
We sure do know how to complain. :)
(slightly unfair, of course---obviously the complaint about grammar had to come from a native speaker; who else would notice it in the first place..?)
It goes on each article on Legifrance, creates a JSON file with all the articles, which book/section they belong to, and for each article, tracks it's versions (they are dates). The crawler is in Go.
Then there is a python script that takes that JSON file, creates the .md files and runs the git commands in the shell.
Ultimately the sad thing is that I had to scrape this information. There were lots of pitfalls due to bad formatting and so on... Well, scraping.
So how do you go about creating the commits like the example given? Even though I live in France I've not much looked at French law - the only exception being a few articles relating to immigration. In those examples, there are modifications made to preceding laws, and it seems to me that it would require strong AI to correctly update the original laws as required by the new law. The example in the README gives the impression that we can just pull from Git and get the updated version of the whole law, is that correct? If so, how?!?!
It's because legifrance carries snapshots of the articles. Git is very good at tracking the changes between them.
So for earch article, the codes tracks "when" the article changed, stores it in a hashtable, and replays the "time" (date) for each snapshot, and creates a commit each time.
They are considered "public information", so no droit d'auteur. All government data considered as public information were published starting 2011 with an open data licence, the Etalab licence similar to the UK one.
122 comments
[ 2.9 ms ] story [ 186 ms ] threadWhich means - correct me if I'm wrong: "The civil code is like a part of the source code of France. And then, it should be in a source control."
> We freely interchange between time_t and unsigned long in the low-level date code
Isn't there a better tool than git for plain text diffs?
I do agree that the technical details would be interesting.
It would make the author a _very_ efficient worker.
Unfortunately, the author was utterly careless about spelling. That really makes it feel like a quick hack.
> Voici un petit hack, résultat d'une après-midi de code : le code civil sous Git.
"Here is a quick hack, the result of an afternoon of coding: the civil code under Git."
[1]http://www.legifrance.gouv.fr/affichCode.do?cidTexte=LEGITEX...
I'm surprised if France and other supposedly civilized countries don't do it on behalf of the Justice Ministry or equivalent. I mean, the fundamental responsibility of citizens is to adhere to the law (ignorantia juris non excusat); the fundamental responsibility of government is to make the law available to citizens because it is not reasonable to require compliance with laws that are not practically available to citizens.
I'm in Finland, and the full content of law books has been in internet for almost 20 years, published first by the state-owned publishing house that gave out the print versions, and more recently by Ministry of Justice who has contracted the technical execution out. The database structure managing pieces of legislation dates back to 1980's, but until 1990's it was available only through a license payment.
Individual laws (and executive orders, state treaties and such) that are published by parliament or ministries have of course always been public information and published in the net since 1990's; the important thing is actually maintenance of "up-to-date" version because the parliament publishes its laws mostly as "patches" (i.e. only a changed section is reviewed, voted on, and published).
The database cross-links to published parliamentary process so that the official background work for each law, section and paragraph is available, including preparatory statements by parliamentary committees, any dissenting opinions and so on.
Also more significant precedent cases from high courts are available in database. (We have a so-called Roman law system where the code is primary source of law, unlike American/English common law where precedents are more important; nevertheless neither system is absolute of course, and precedents do matter in civil law systems as well.)
The database descriptions can be found:
Denmark: http://eur-lex.europa.eu/n-lex/info/info_dk/index_en.htm
Finland: http://eur-lex.europa.eu/n-lex/info/info_fi/index_en.htm
France: http://eur-lex.europa.eu/n-lex/info/info_de/index_en.htm
Germany: http://eur-lex.europa.eu/n-lex/info/info_de/index_en.htm
Sweden: http://eur-lex.europa.eu/n-lex/info/info_sv/index_en.htm
Please be kind in your comments.
Also, you're wrong (http://legifrance.gouv.fr/), but that's secondary relatively to the harsh tone you had there.
The eur-lex link I mentioned lists precisely that site (legifrance) for France. But as I don't read French and don't know the particulars, what puzzles me is what is the additional value of putting the same thing in Github. The maintenance burden seems horrific unless you can pull it automatically, and even then the actual benefit of using Github is not so clear to me.
Which is probably relatively easy, legifrace provides reconciliated articles with history so it should be possible to just crawl the code, see if an article was updated since the last crawling and generate the relevant commits.
> and even then the actual benefit of using Github is not so clear to me.
Diffs are somewhat more straightforward than the equivalent legalese, and version-controlled markdown makes for easier programmatic manipulations across "space" and time than a custom-designed website.
As one of the candidates for the speaker of the House of commons said to me "the executive can get a way with a lot" in terms of controlling the order paper and timing
Stil think Parmjit would have made a better speaker than Bercow
You might be forgetting that the civil code is an entirely political product.
And seriously, every single new law is pushing somebody's agenda. The author could've chosen the "animals are human being" change and we'd have another you yelling not being fond of developers pushing their love for animals.
Here's a tip that will massively improve your personal quality of life: Stop getting offended. Don't you have better things to do with your time?
I do especially like the GitHub avatar: https://avatars1.githubusercontent.com/u/1994383 ;)
I'd love to see such a repository for the acts in my country, by the way, but the official source is a PDF, and most of the published acts are actually patches to existing (already heavily "patched"), like "In the section II, item 13a, change words 'foo and bar' to 'foo, baz and quux'". This mess untangled into an actual, highlighted, unified text is an actual product, and lawyers happily pay the subscription. I imagine it is similar in other countries.
I'm not sure how they do it, but I guess that it wouldn't be extremely hard to have a small grammar to automatically convert the legalese patch into an actual git patch (most of the time, the sentences which wrap the editions are the sames).
It's a financially independent (it has a "pro" version) non-profit owned by the department of justice and the faculty of law of the University of Oslo. It is an official source and as such laws published there are officially, legally published and it has been that way since 2001. Laws relevant to private citizens are available for free. It's pretty neat.
If you're interested, here's a talk about it at Git Merge: https://www.youtube.com/watch?v=-qql1Ess7qM
Here are some scrapers/scripts around it: https://github.com/bundestag/gesetze-tools
-----------------------------------
From their README, it's just someone that converted the XML version published by the "Bundesministerium der Justiz und für Verbraucherschutz" (Ministry of Justice and for Customer Protection) which as they note is available at http://www.gesetze-im-internet.de/
For instance, a section I've used often for running my business is the VAT part: http://www.gesetze-im-internet.de/ustg_1980/index.html There is a notification service, including an RSS feed: http://www.gesetze-im-internet.de/aktuDienst.html
About the Markdown version in GitHub: after a quick inspection, most diffs seem to be plain additions of content, presumably as it was converted to Markdown. However, some diffs might have tracked changes in the laws, as this one: https://github.com/bundestag/gesetze/commit/3c1bada22f08b4e0...
I suspect the author ran the converter a few times and then abandoned it. In principle, it should be possible to keep updating it.
The improvement over the official XML version seems to be that with Markdown it's easier to get understandable diffs.
[1] https://github.com/bundestag/gesetze/blob/master/q/qnormbanv...
------
The French Civil Code, in Git
Introduction
Here is a little hack, the result of an afternoon of code: the Civil Code in Git.
If one considers the law as a set of texts modified by the various assemblies of the state, one can consider them as a set of text files created collaboratively.
The members of government, and the various assemblies, work in collaboration on these files, which, once voted for, are written into the Code (here the Civil Code).
But there is another category of people who, for fifty years now, have worked on text files collaboratively, and excel at it: developers. They have created extremely effective collaboration and tracking tools for working on source code. The most popular to date is Git.
Git not only allows you to view the source at a time T (snapshot) but above all to easily visualize the changes in the source (commits). In the analogy to the Civil Code, this permits the tracking of the changes made by a law.
Combine all of this with the Open Source philosophy, and the second part of the analogy is made: the modification of source code in an open and public fashion.
Finally, the Civil Code is a part of the source code of France. And source code belongs in source control. Period.
Example
Here is for example the commit which authorizes marriage for all: https://github.com/steeve/france.code-civil/commit/b805ecf05...
This is more readable than, for example (cf http://www.assemblee-nationale.fr/14/ta/ta0120.asp):
"At article 165 of the same code, the word: 'before' is replaced by the words: 'during a republican ceremony by'."
Technical Note
Git dates are based on the Unix epoch (01/01/1970), changes before these dates are all dated 01/01/1970, with incremental seconds; the commit message gives the correct date.
LICENSE
All files are licensed under Creative Commons (https://creativecommons.org/licenses/by/4.0/).
There's a Markdown version here, if someone wants it: https://gist.github.com/spinda/282452390bf6d6fbcc5b
One small point: I do not understand why you added "it" to the last sentence of the introduction. Your translation of that particular sentence feels weird to me, why not simply:
"And source code belongs in source control."
Also, maybe "différentes" (in the third sentence) could have been translated to "various"?
* * *
Aside, note that the original text itself has several errors. Many accents are missing, some letters or words are missing or doubled. I may submit a PR to correct them.
Moreover, the text includes many English words (not all of which are common in French). It even includes a barbarism: "tracker", from English "track" and French common verbal suffix "-er", supposedly a verb supposed to mean "to track" — a shame, since French has the verb "traquer" to express the same thing.
"And source code belongs in source control."
You're right, of course. That was left over when I switched from "it goes in" to "it belongs in". Fixed!
For "les différentes assemblées", would you say "various assembliess" or "the various assemblies" in this context?
A quick github search indicates that Taiwan's laws might also be there at https://github.com/victorhsieh/tw-law-corpus using the https://github.com/g0v/twlaw exporter, Japanese laws seem to have been uploaded at https://github.com/riywo/law.e-gov.go.jp but just be a crawl/dump of law.e-gov.go.jp
And there are similar diff possibilities: https://criminocorpus.org/fr/legislation/versions/689/1/diff... :)
Many French git users still say "commit" though, me included, but it is definitely not a French word.
https://github.com/steeve/france.code-civil/commit/b805ecf05...
You can clearly see that the "commit/law" changes the wordings of various files to replace "mother and father" by "parents" and "husband and wife" by "spouses".
Did you look? All markdown files aside from the readme are articles. Or did you mean articles which were altered after their initial creation? https://github.com/steeve/france.code-civil/commits/master/L... is one, it was added in 1803 and modified in 1986 and 2014.
https://github.com/steeve/france.code-civil/commits/a191667d... is also one, with modifications in 1986, 1987, 2007 and 2013.
By that i mean if law x is changed to say "blah blah blah" that means that law Y no longer applies and law Z is changed to say "foo bar bobbins"
The code is not readonly at all, each law within the domain covered by the code is an alteration to the code. Individual laws are reified as commits, and the repository tracks the evolution of the code as laws get voted in and applied.
http://eur-lex.europa.eu/n-lex/info/info_fr/index_en.htm
(I don't know any French and don't know the particulars of French legal system that much, so I cannot really assess quickly based on what I can find in the net).
Pull Requests! Can you imagine a democracy editing its laws through pull requests and code review?
One thing that is not mentioned though : will it autoupdate? And if yes, at which rate?
"But any queries may well be referred to Marie Navarro, the editor and chief researcher of Wales Legislation Online.
Like everyone in Wales, the judges use this website when they need to find out whether the law in Wales on a particular topic is different from English law.
The database is not run by the judiciary, by the Welsh Assembly Government or by one of the commercial publishers that pride themselves on keeping their subscribers up to date with English law.
It was set up in 1999 by Cardiff University Law School, and is run by Miss Navarro, a French lawyer who came to Wales on a European scholarship 13 years ago and decided to stay."
http://www.bbc.co.uk/news/uk-12674539
I am french born and raised, btw.
We sure do know how to complain. :)
(slightly unfair, of course---obviously the complaint about grammar had to come from a native speaker; who else would notice it in the first place..?)
Then there is a python script that takes that JSON file, creates the .md files and runs the git commands in the shell.
Ultimately the sad thing is that I had to scrape this information. There were lots of pitfalls due to bad formatting and so on... Well, scraping.
So for earch article, the codes tracks "when" the article changed, stores it in a hashtable, and replays the "time" (date) for each snapshot, and creates a commit each time.
It's also not really new, Seb35 already did a great job on this previously as free software: - https://github.com/Seb35/CPI - https://github.com/Seb35/Archeo-Lex - http://blog.seb35.fr/billet/Arch%C3%A9o-Lex%2C-Pure-Histoire...
Also http://www.lafabriquedelaloi.fr proposes git versioning of the parliamlentary process for each bills: http://sunlightfoundation.com/blog/2014/06/25/opengov-voices...