git/list[1] front-page[2] threads[3] people[4] search[5] about
 

What's in a name? Let's use a (uuid,name,email) triplet

From
Michael Witten <mfwitten@gmail.com>
Date
Mar 18, 2010, 13:23 UTC
Message-ID
<4ba2293f.c5c2f10a.5e9c.5c4a@mx.google.com>

Short Version: -------------

Rather than use a (name,email) pair to identify people, let's use a (uuid,name,email) triplet.

The uuid can be any piece of information that a user of git determines to be reasonably unique across space and time and that is intended to be used by that user virtually forever (at least within a project's history).

For instance, the uuid could be an OSF DCE 1.1 UUID or the SHA-1 of some easily remembered, already reasonably unique information.

This could really help keep identifications clean, and it is rather straightforward and possibly quite efficient.

Long Version: ------------

There are 2 reasons why people contribute (pro bono) to projects:
  (0) To improve the project.
  (1) To garner recognition.
and in my experience, (0) is not as sweet without (1).

One of the great boons of distributed systems like git is that they separate author (contributor) identities from committer identities, thereby maintaining (some semblance of) proper attribution in an official, structured format that is amenable to parsing by tools.

While git's use of (name,email) pairs to identify each person is extremely practical, it turns out that it's rather `unstable'; consider the following information gleaned from a clone of the official git repository:

    $ git shortlog -se origin/master | grep Linus
         3  Linus Torvalds <torvalds@evo.osdl.org>
       122  Linus Torvalds <torvalds@g5.osdl.org>
       235  Linus Torvalds <torvalds@linux-foundation.org>
       276  Linus Torvalds <torvalds@osdl.org>
         9  Linus Torvalds <torvalds@ppc970.osdl.org.(none)>
       439  Linus Torvalds <torvalds@ppc970.osdl.org>
         9  Linus Torvalds <torvalds@woody.linux-foundation.org>
    $ git shortlog -se origin/master | grep Junio
      3658  Junio C Hamano <gitster@pobox.com>
         2  Junio C Hamano <junio@hera.kernel.org>
         3  Junio C Hamano <junio@kernel.org>
         3  Junio C Hamano <junio@pobox.com>
         8  Junio C Hamano <junio@twinsun.com>
      4167  Junio C Hamano <junkio@cox.net>
         2  Junio C Hamano <junkio@twinsun.com>
         2  Junio Hamano <gitster@pobox.com>
or using a clone of Linus's Linux repo:
    $ git shortlog -se origin/master | grep Linus
         2  Linus Luessing <linus.luessing@web.de>
         2  Linus Lüssing <linus.luessing@web.de>
         2  Linus Nilsson <lajnold@acc.umu.se>
         2  Linus Nilsson <lajnold@gmail.com>
        32  Linus Torvalds <torvalds@evo.osdl.org>
      1522  Linus Torvalds <torvalds@g5.osdl.org>
      4174  Linus Torvalds <torvalds@linux-foundation.org>
         7  Linus Torvalds <torvalds@macmini.osdl.org>
         2  Linus Torvalds <torvalds@merom.osdl.org>
         8  Linus Torvalds <torvalds@osdl.org>
         4  Linus Torvalds <torvalds@ppc970.osdl.org.(none)>
       166  Linus Torvalds <torvalds@ppc970.osdl.org>
         1  Linus Torvalds <torvalds@quad.osdl.org>
      1606  Linus Torvalds <torvalds@woody.linux-foundation.org>
       174  Linus Torvalds <torvalds@woody.osdl.org>
         1  Linus Walleij (LD/EAB <linus.walleij@ericsson.com>
         3  Linus Walleij <linus.ml.walleij@gmail.com>
         1  Linus Walleij <linus.walleij@ericsson.com>
        81  Linus Walleij <linus.walleij@stericsson.com>
         9  Linus Walleij <triad@df.lth.se>
    $ git shortlog -se origin/master | grep Morton
       581  Andrew Morton <akpm@linux-foundation.org>
       836  Andrew Morton <akpm@osdl.org>
         1  Andrew Morton <len.brown@intel.com>

From these few examples it seems pretty clear that the most volatile portion of the (name,email) pair is the email, which is unfortunate because the email is the most uniquely identifying information. Are we really reasonably certain that these two are the same person?

    Linus Walleij <linus.ml.walleij@gmail.com>
    Linus Walleij <linus.walleij@ericsson.com>

Thus, I propose a more stable form of identification; rather than using just a (name,email) pair, let's use a (uuid,name,email) triplet, where the uuid can be any piece of information that a user of git determines to be reasonably unique across space and time and that is intended to be used by that user virtually forever (at least within a project's history).

For instance, Linus is always stuck in his basement with the same ancient computers, so he chooses to set up his few ~/.gitconfig files with an OSF DCE 1.1 conforming UUID (generated by, say, uuidgen):

Linus Torvalds <torvalds@linux-foundation.org>
    [user]
        uuid  = 6b202ed1-e8ec-4048-84c2-ae0dd3b2df47
        name  = Linus Torvalds
        email = torvalds@linux-foundation.org

On the other hand, Junio is infatuated with the latest palmtop computing gadgets and finds himself setting up a ~/.gitconfig file several times each month; he doesn't want to bother remembering some long human-hostile string, so he adopts as his uuid the SHA-1 of some easily remembered piece of information like the very first (name,email) pair that he used for git (Junio C Hamano <junkio@cox.net>):

    [user]
        uuid  = 6e99d26860f0b87ef4843fa838df2a918b85d1f7
        name  = Junio C Hamano
        email = gitster@pobox.com

I'm sure that some optimizations could made for certain choices like UUID and SHA-1 strings.

Anyway, I think this could really help keep identifications clean, and it is rather straightforward and possibly quite efficient.

Sincerely, Michael Witten

Next: Jon Smirl
Message 1 of 104 in “What's in a name? Let's use a (uuid,name,email) triplet”
  1. Michael WittenMar 18, 2010
  2. Jon SmirlMar 18, 2010
  3. Michael WittenMar 18, 2010
  4. Linus TorvaldsMar 18, 2010
  5. Michael WittenMar 18, 2010
  6. Matthieu MoyMar 18, 2010
  7. Michael WittenMar 18, 2010
  8. Nicolas PitreMar 18, 2010
  9. tytso@mit.eduMar 18, 2010
  10. Michael WittenMar 18, 2010
  11. Martin LanghoffMar 18, 2010
  12. Michael WittenMar 18, 2010
  13. Martin LanghoffMar 18, 2010
  14. Michael WittenMar 18, 2010
  15. Martin LanghoffMar 18, 2010
  16. Michael WittenMar 18, 2010
  17. Nicolas PitreMar 18, 2010
  18. Michael WittenMar 18, 2010
  19. Nicolas PitreMar 19, 2010
  20. Michael WittenMar 19, 2010
  21. Nicolas PitreMar 19, 2010
  22. Reece DunnMar 18, 2010
  23. Michael WittenMar 18, 2010
  24. Paolo BonziniMar 19, 2010
  25. Michael WittenMar 19, 2010
  26. Paolo BonziniMar 19, 2010
  27. Michael WittenMar 19, 2010
  28. Paolo BonziniMar 19, 2010
  29. Michael WittenMar 19, 2010
  30. Wincent ColaiutaMar 19, 2010
  31. Michael WittenMar 19, 2010
  32. Martin LanghoffMar 19, 2010
  33. Linus TorvaldsMar 18, 2010
  34. Michael WittenMar 18, 2010
  35. Jon SmirlMar 18, 2010
  36. Jon SmirlMar 18, 2010
  37. Linus TorvaldsMar 18, 2010
  38. Jon SmirlMar 18, 2010
  39. Linus TorvaldsMar 18, 2010
  40. Jon SmirlMar 18, 2010
  41. Linus TorvaldsMar 18, 2010
  42. Linus TorvaldsMar 18, 2010
  43. Linus TorvaldsMar 18, 2010
  44. Junio C HamanoMar 19, 2010
  45. Reece DunnMar 18, 2010
  46. Linus TorvaldsMar 18, 2010
  47. Michael WittenMar 18, 2010
  48. Linus TorvaldsMar 18, 2010
  49. Michael WittenMar 18, 2010
  50. Linus TorvaldsMar 18, 2010
  51. Michael WittenMar 18, 2010
  52. Wincent ColaiutaMar 18, 2010
  53. Wincent ColaiutaMar 18, 2010
  54. Martin LanghoffMar 18, 2010
  55. Martin LanghoffMar 18, 2010
  56. Nicolas PitreMar 18, 2010
  57. Jon SmirlMar 18, 2010
  58. Nicolas PitreMar 18, 2010
  59. Jon SmirlMar 18, 2010
  60. Nicolas PitreMar 18, 2010
  61. Jon SmirlMar 19, 2010
  62. Linus TorvaldsMar 19, 2010
  63. Jon SmirlMar 19, 2010
  64. Linus TorvaldsMar 19, 2010
  65. Jon SmirlMar 19, 2010
  66. Nicolas PitreMar 19, 2010
  67. Jon SmirlMar 19, 2010
  68. Michael WittenMar 18, 2010
  69. A Large Angry SCMMar 18, 2010
  70. Sitaram ChamartyMar 19, 2010
  71. Nazri RamliyMar 19, 2010
  72. Michael HaggertyMar 19, 2010
  73. Michael WittenMar 19, 2010
  74. david@lang.hmMar 19, 2010
  75. Mike HommeyMar 19, 2010
  76. Reece DunnMar 19, 2010
  77. Michael WittenMar 19, 2010
  78. Michael WittenMar 19, 2010
  79. Reece DunnMar 19, 2010
  80. Michael J GruberMar 19, 2010
  81. david@lang.hmMar 19, 2010
  82. Michael WittenMar 19, 2010
  83. Jon SmirlMar 19, 2010
  84. Reece DunnMar 19, 2010
  85. Michael WittenMar 19, 2010
  86. Mark BrownMar 22, 2010
  87. Michael WittenMar 22, 2010
  88. Erik Faye-LundMar 24, 2010
  89. Michael WittenMar 24, 2010
  90. Michael WittenMar 19, 2010
  91. Michael HaggertyMar 19, 2010
  92. david@lang.hmMar 19, 2010
  93. Michael WittenMar 19, 2010
  94. Avi KivityMar 24, 2010
  95. Jakub NarebskiMar 19, 2010
  96. Jon SmirlMar 19, 2010
  97. Michael J GruberMar 19, 2010
  98. Michael WittenMar 19, 2010
  99. Erik Faye-LundMar 19, 2010
  100. Michael WittenMar 19, 2010
  101. Michael WittenMar 19, 2010
  102. Erik Faye-LundMar 19, 2010
  103. Reece DunnMar 19, 2010
  104. Jakub NarebskiMar 20, 2010

Read the whole thread, see it on lore, or plain text.

$ cat FOOTERMessages come from the public archive at lore.kernel.org/git, fetched every hour. The front page is chosen and written each morning by an AI editor and can be wrong; the threads themselves are the record. About and API. For agents: an MCP server at https://gitlist.dev/mcp, and any thread, story or person page as Markdown by adding .md to its URL (or sending Accept: text/markdown). Details in /llms.txt.