{"thread":{"id":"19070","subject":"Re: Lets avoid the SHA-1 term (was [doc] User Manual Suggestion)","startedAt":"2009-04-26T23:38:40Z","lastAt":"2009-05-02T15:37:34Z","messageCount":5,"participants":["Björn Steinbrink","Felipe Contreras","Michael J Gruber","Michael Witten"],"isPatch":false,"patchVersion":null,"patchTotal":null},"messages":[{"id":"112355","messageId":"94a0d4530904261638o6cbda368p4f3aa641505a6768@mail.gmail.com","threadId":"19070","inReplyTo":null,"subject":"Lets avoid the SHA-1 term (was [doc] User Manual Suggestion)","fromName":"Felipe Contreras","fromEmail":"felipe.contreras@gmail.com","sentAt":"2009-04-26T23:38:40Z","receivedAt":"2009-04-26T23:38:40Z","isPatch":false,"sender":{"key":"felipe.contreras@gmail.com","avatar":"https://avatars.githubusercontent.com/u/8358?v=4"},"body":"2009/4/27 Björn Steinbrink <B.Steinbrink@gmx.de>:\n> On 2009.04.24 20:48:57 -0400, David Abrahams wrote:\n>>\n>> On Apr 24, 2009, at 8:01 PM, Michael Witten wrote:\n>>\n>>>> What's wrong with just calling the object name \"object name\"?\n>>>\n>>> What's wrong with calling the object address \"object address\"?\n>>\n>> Neither captures the connection to the object's contents.  I think\n>> \"value ID\" would be closer, but it's probably too horrible.\n>\n> I think I asked this in another mail, but I'm quite tired, so just to\n> make sure: What do you mean by \"value\"? I might be weird (I'm not a\n> native speaker, so I probably make funny and wrong connotations from\n> time to time), but while I can accept \"content\" to include the type and\n> size of the object, the term \"value\" makes me want to exclude those\n> pieces of meta data. So \"value\" somehow feels wrong to me, as the hash\n> covers those two fields.\n\nJust to summarize.\n\nDo you agree that SHA-1 is not the proper term to choose?\n\nDo you agree that either 'id' or 'hash' would work fine?\n\nPersonally I think there's an advantage of choosing 'hash'; if we pick\n'id' then the user might think that he can change the contents of the\nobject while keeping the same id, if we pick 'hash' then it's obvious\nthe 'id' is tied to the content and why.\n\n-- \nFelipe Contreras\n"},{"id":"112351","messageId":"20090427002838.GF12338@atjola.homenet","threadId":"19070","inReplyTo":"94a0d4530904261638o6cbda368p4f3aa641505a6768@mail.gmail.com","subject":"Re: Lets avoid the SHA-1 term (was [doc] User Manual Suggestion)","fromName":"Björn Steinbrink","fromEmail":"b.steinbrink@gmx.de","sentAt":"2009-04-27T00:28:38Z","receivedAt":"2009-04-27T00:28:38Z","isPatch":false,"sender":{"key":"b.steinbrink@gmx.de","avatar":"https://avatars.githubusercontent.com/u/230962?v=4"},"body":"On 2009.04.27 02:38:40 +0300, Felipe Contreras wrote:\n> 2009/4/27 Björn Steinbrink <B.Steinbrink@gmx.de>:\n> > On 2009.04.24 20:48:57 -0400, David Abrahams wrote:\n> >>\n> >> On Apr 24, 2009, at 8:01 PM, Michael Witten wrote:\n> >>\n> >>>> What's wrong with just calling the object name \"object name\"?\n> >>>\n> >>> What's wrong with calling the object address \"object address\"?\n> >>\n> >> Neither captures the connection to the object's contents.  I think\n> >> \"value ID\" would be closer, but it's probably too horrible.\n> >\n> > I think I asked this in another mail, but I'm quite tired, so just to\n> > make sure: What do you mean by \"value\"? I might be weird (I'm not a\n> > native speaker, so I probably make funny and wrong connotations from\n> > time to time), but while I can accept \"content\" to include the type and\n> > size of the object, the term \"value\" makes me want to exclude those\n> > pieces of meta data. So \"value\" somehow feels wrong to me, as the hash\n> > covers those two fields.\n> \n> Just to summarize.\n> \n> Do you agree that SHA-1 is not the proper term to choose?\n\nYes, IMHO that's too strongly tied to the implementation. But a quick\ngrep run tells me that the \"object name\" area is probably not where you\nneed to get rid of that. The \"object name\" term is already used a lot.\nIf you want to ban SHA-1 then the rev-parse man page, describing the\n\"extended SHA1 syntax\" would probably be a better place to start (unless\nyou want to \"fix\" everything at once).\n\n> Do you agree that either 'id' or 'hash' would work fine?\n\n\"object id\" would work for me, but I'm fine with the existing \"object\nname\" as well. I don't like \"object hash\" (or \"object hash id\"), because\nit IMHO doesn't express that well that it's used to identify an object.\n\n> Personally I think there's an advantage of choosing 'hash'; if we pick\n> 'id' then the user might think that he can change the contents of the\n> object while keeping the same id, if we pick 'hash' then it's obvious\n> the 'id' is tied to the content and why.\n\nHeh, if you use \"hash\", there's no \"id\" tied to the content, there's\njust the hash. SCNR ;-) See my other mails why I think that \"hash\" isn't\nthat advantageous.\n\nBjörn\n"},{"id":"112412","messageId":"49F59FC1.5020708@drmicha.warpmail.net","threadId":"19070","inReplyTo":"94a0d4530904261638o6cbda368p4f3aa641505a6768@mail.gmail.com","subject":"Re: Lets avoid the SHA-1 term (was [doc] User Manual Suggestion)","fromName":"Michael J Gruber","fromEmail":"git@drmicha.warpmail.net","sentAt":"2009-04-27T12:06:25Z","receivedAt":"2009-04-27T12:06:25Z","isPatch":false,"sender":{"key":"git@grubix.eu","avatar":"https://avatars.githubusercontent.com/u/233215?v=4"},"body":"Felipe Contreras venit, vidit, dixit 27.04.2009 01:38:\n> 2009/4/27 Björn Steinbrink <B.Steinbrink@gmx.de>:\n>> On 2009.04.24 20:48:57 -0400, David Abrahams wrote:\n>>>\n>>> On Apr 24, 2009, at 8:01 PM, Michael Witten wrote:\n>>>\n>>>>> What's wrong with just calling the object name \"object name\"?\n>>>>\n>>>> What's wrong with calling the object address \"object address\"?\n>>>\n>>> Neither captures the connection to the object's contents.  I think\n>>> \"value ID\" would be closer, but it's probably too horrible.\n>>\n>> I think I asked this in another mail, but I'm quite tired, so just to\n>> make sure: What do you mean by \"value\"? I might be weird (I'm not a\n>> native speaker, so I probably make funny and wrong connotations from\n>> time to time), but while I can accept \"content\" to include the type and\n>> size of the object, the term \"value\" makes me want to exclude those\n>> pieces of meta data. So \"value\" somehow feels wrong to me, as the hash\n>> covers those two fields.\n> \n> Just to summarize.\n> \n> Do you agree that SHA-1 is not the proper term to choose?\n> \n> Do you agree that either 'id' or 'hash' would work fine?\n> \n> Personally I think there's an advantage of choosing 'hash'; if we pick\n> 'id' then the user might think that he can change the contents of the\n> object while keeping the same id, if we pick 'hash' then it's obvious\n> the 'id' is tied to the content and why.\n> \n\nApparently a branch of that thread touched the \"[PATCH 0/2] Unify use of\n[sha,SHA][,-]1\", so I'll do a cc merge, feeling entitled to summarize\nthe latter:\n\n- There are two SHA-1ish things we talk about: the SHA-1 hash\nalgorithm/function on the one hand and git object names on the other hand.\n\n- The object name of a file is not the SHA-1 checksum of its contents:\nThat's more or less obvious because there are no files in git, only\nobjects. The object name is the SHA-1 of a representation of an object\n(which, for blobs, consists of header + content).\n\n- There seemed to be an implicit claim that the Doc uses SHA-1 for the\nalgorithm and sha1/SHA1 for the object name. That's not founded by facts\n(see below) and is not practical.\n\n- The glossary defines SHA1 to be equivalent to the object name and does\nnot mention any other spelling.\n\nThe stats (line counts for simplicity) and facts for Documentation/ are:\n\nSHA-1: 56\nUsed exclusively for the object name.\n\nSHA1: 73\nUsed mostly for the object name, but also for the patch-id (SHA-1\nchecksum of patch), in the tutorial, and pack-format, i.e. in places\nwhere the actual hash algorithm/function is mentioned.\n\nsha1: 102\nUsed all over the place, mostly for the object name and when quoting\nfrom the source. I don't think it's used for the hash algorithm/function.\n\nsha-1: 0\n\nSo, the current confusion is mostly due to the fact that 3 different\nnames are used for the same thing (object name) and to a much lesser\ndegree to the fact that the same name (SHA1) is used for 2 different\nthings (hash algorithm/function vs. object name).\n\nMy patch tried to lessen the confusion by naming one thing by 1 name\nonly (SHA-1). It continued the tradition of identifying the object name\nwith the hash algorithm which is used in forming that name. I don't\nthink it matters much (confusion-wise) which one we choose from those 3,\nit would be easy to rewrite the patch to use SHA1 or sha1 instead of\nSHA-1 (and I'd be willing to), but consistently so.\n\nAn alternative patch would substitute most occurrences of the above by\nX, X being the future term for \"object name\" to be agreed upon, and go\nfor say SHA-1 at the very few places where the actual algorithm is\nmentioned. I just don't want to bet on that agreement and patch happening.\n\nMichael\n"},{"id":"112415","messageId":"b4087cc50904270602q17fba432ka219180d358fae47@mail.gmail.com","threadId":"19070","inReplyTo":"20090427002838.GF12338@atjola.homenet","subject":"Re: Lets avoid the SHA-1 term (was [doc] User Manual Suggestion)","fromName":"Michael Witten","fromEmail":"mfwitten@gmail.com","sentAt":"2009-04-27T13:02:02Z","receivedAt":"2009-04-27T13:02:02Z","isPatch":false,"sender":{"key":"mfwitten@gmail.com","avatar":"https://avatars.githubusercontent.com/u/597101?v=4"},"body":"2009/4/26 Björn Steinbrink <B.Steinbrink@gmx.de>:\n>\n>> Do you agree that either 'id' or 'hash' would work fine?\n>\n> \"object id\" would work for me, but I'm fine with the existing \"object\n> name\" as well. I don't like \"object hash\" (or \"object hash id\"), because\n> it IMHO doesn't express that well that it's used to identify an object.\n\nHowever, the SHA-1 hash is not actually essential to git. In the git\nworld, there is only content and every object is identified by its\ncontent. Now, to identify an object, it would be pretty cumbersome to\nhave to write out the contents, so we abbreviate the contents with a\nhash.\n\nSo, the hash or object name or object id or whatever you want to call\nit isn't even an essential part to git. It is a convenience.\n\nIn that sense, I think that '[cryptographic] hash' is the right term,\nbecause the others (\"object name\" and \"object id\") seem special. A\nhash is not special. In fact, the documentation should read \"For\nconvenience, the git tools refer to objects using the hash value of\ntheir contents\". You see? It's not essential.\n"},{"id":"112881","messageId":"20090502153734.GA6135@atjola.homenet","threadId":"19070","inReplyTo":"b4087cc50904270602q17fba432ka219180d358fae47@mail.gmail.com","subject":"Re: Lets avoid the SHA-1 term (was [doc] User Manual Suggestion)","fromName":"Björn Steinbrink","fromEmail":"b.steinbrink@gmx.de","sentAt":"2009-05-02T15:37:34Z","receivedAt":"2009-05-02T15:37:34Z","isPatch":false,"sender":{"key":"b.steinbrink@gmx.de","avatar":"https://avatars.githubusercontent.com/u/230962?v=4"},"body":"On 2009.04.27 08:02:02 -0500, Michael Witten wrote:\n> 2009/4/26 Björn Steinbrink <B.Steinbrink@gmx.de>:\n> >\n> >> Do you agree that either 'id' or 'hash' would work fine?\n> >\n> > \"object id\" would work for me, but I'm fine with the existing \"object\n> > name\" as well. I don't like \"object hash\" (or \"object hash id\"), because\n> > it IMHO doesn't express that well that it's used to identify an object.\n> \n> However, the SHA-1 hash is not actually essential to git. In the git\n> world, there is only content and every object is identified by its\n> content. Now, to identify an object, it would be pretty cumbersome to\n> have to write out the contents, so we abbreviate the contents with a\n> hash.\n> \n> So, the hash or object name or object id or whatever you want to call\n> it isn't even an essential part to git. It is a convenience.\n> \n> In that sense, I think that '[cryptographic] hash' is the right term,\n> because the others (\"object name\" and \"object id\") seem special. A\n> hash is not special. In fact, the documentation should read \"For\n> convenience, the git tools refer to objects using the hash value of\n> their contents\". You see? It's not essential.\n\n\"For convenience\" means \"To make it suck less for the user\" to me. And\nthat's why you can use an abbreviated object name as long as its unique.\n\nThat a hash is used isn't essential for the basic data model, where\ncommits reference trees which in turn reference other trees and blobs.\nTo understand that model, it's not essential to know that hashes are\nused.  But it is essential that some kind of identifier other than the\nwhole content is used. Otherwise, the whole data model would make no\nsense at all. If you use the whole content to identify an object, that\nmeans that commits contain the whole trees which in turn contain the\nwhole other trees and the whole blobs. So you could as well just have\nonly commit objects, they contain everything anyway.\n\nSo that we have the object name instead of the whole content _is_\nessential.\n\nBjörn\n"}]}