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

Re: [PATCHv6 4/8] gitweb: (gr)avatar support

From
Giuseppe Bilotta <giuseppe.bilotta@gmail.com>
Date
Jun 26, 2009, 22:08 UTC
Message-ID
<cb7bb73a0906261508s47e8834fuc9b3313bd9f127ce@mail.gmail.com>
In-Reply-To
<200906262142.28845.jnareb@gmail.com>
2009/6/26 Jakub Narebski <jnareb@gmail.com>:
Show 7 quoted lines
> On Thu, 25 June 2009, Giuseppe Bilotta wrote:
>
>> Introduce avatar support: the featuer adds the appropriate img tag next
>> to author and committer in commit(diff), history, shortlog and log view.
>
> You forgot about 'tag' view (but I guess it would be done in next
> version of this patch series).
Indeed, it's automatically addressed because patch view follows the refactoring.
> There is also 'feed' action (Atom and RSS formats), but that is certainly
> separate issue, for a separate patch.
I'm not entirely sure we want avatars there.
> You would _probably_ want to squash the following, just in case:
[snip]
> But even if you don't squash it, please run t9500 with this patch
> applied, to catch Perl errors and warnings.
I'll squash it in.
Show 12 quoted lines
> Sidenote: Gravatar API description[1] mentions 'identicon', 'monsterid',
> 'wavatar'.  There are 'picons' (personal icons)[2].  Also avatars doesn't
> need to be global: they can be some local static image somewhere in web
> server which serves gitweb script, or they can be stored somewhere in
> repository following some convention.
>
> Current implementation is flexible enough to leave place for extending
> this feature, but also doesn't try to plan too far in advance.  YAGNI
> (You Ain't Gonna Need It).
>
> [1] http://www.gravatar.com/site/implement/url
> [2] http://www.cs.indiana.edu/picons/ftp/faq.html

The forthcoming series has picons provider and gravatar fallback; however, we might want to have some way to make the gravatar fallback configurable.

Show 14 quoted lines
>> +     # To enable system wide have in $GITWEB_CONFIG
>> +     # $feature{'avatar'}{'default'} = ['gravatar'];
>> +     # To have project specific config enable override in $GITWEB_CONFIG
>> +     # $feature{'avatar'}{'override'} = 1;
>> +     # and in project config gitweb.avatar = gravatar;
>> +     'avatar' => {
>> +             'override' => 0,
>> +             'default' => ['']},
>
> Note that to disable feature with non-boolean 'default' we use empty
> list [] (which means 'undef' when parsing, which is false); see
> description of features 'snapshot', 'actions'; 'ctags' what is strange
> uses [0] here...  Using [''] is a bit strange; and does not protect
> you, I think.

Using an empty string (or 0 like ctags do) is nice because it spares the undef check you mention later on, and since empty strings and 0 evaluate to false in Perl, it's a good way to handle it. Moreover, any string which is not an actual provider would result in no avatars. More about this later.

Show 11 quoted lines
>> +# check if avatars are enabled and dependencies are satisfied
>> +our ($git_avatar) = gitweb_get_feature('avatar');
>
> IMPORTANT!!!
>
> Because you now allow possibility that there can be other avatars
> than those provided by Gravatar, you should explain in comment
> what this check below does (e.g. something like "load Digest::MD5,
> required for gravatar support, and disable it if it does not exist"),
> so people adding (in the future) support for other kind of avatars
> would know that they should put similar test there, if needed.
I'll make the check and subsequent switch a little cleaner.
Show 8 quoted lines
>> +if (($git_avatar eq 'gravatar') &&
>> +   !(eval { require Digest::MD5; 1; })) {
>> +     $git_avatar = '';
>> +}
>
> Here you would have to protect against $git_avatar being undefined...
> but you should do it anyway, as gitweb_get_feature() can return
> undef / empty list.

Using '' as defalt instead of [] shields me from this problem, and works properly for boolean checks.

Show 17 quoted lines
> This might be good enough starting point, but I wonder if it wouldn't
> be a better solution to provide additional column with avatar image
> when avatar support is enabled.  You would get a better layout in
> a very rare case[3] when 'Author' column is too narrow and author is
> info is wrapped:
>
>  [#] Jonathan
>  H. Random
>
> versus in separate columns case:
>
>  [#] | Jonathan
>      | H. Random
>
> But this is a very minor problem, which can be left for separate patch.
>
> [3] unless you use netbook or phone to browse...

I had considered going this way, but it made the code somewhat more complex so I went for the simpler solution. I'll look into putting it in separate cells further on.

-- 
Giuseppe "Oblomov" Bilotta
Previous: Jakub NarebskiNext: Jakub Narebski
Message 23 of 46 in “[PATCHv6 0/8] gitweb: gravatar support”
  1. Giuseppe BilottaJun 25, 2009
  2. 1/8 gitweb: refactor author name insertionGiuseppe Bilotta, Jun 25, 2009
  3. 2/8 gitweb: uniform author info for commit and commitdiffGiuseppe Bilotta, Jun 25, 2009
  4. 3/8 gitweb: right-align date cell in shortlogGiuseppe Bilotta, Jun 25, 2009
  5. 4/8 gitweb: (gr)avatar supportGiuseppe Bilotta, Jun 25, 2009
  6. 5/8 gitweb: gravatar url cacheGiuseppe Bilotta, Jun 25, 2009
  7. 6/8 gitweb: add 'alt' to avatar imagesGiuseppe Bilotta, Jun 25, 2009
  8. 7/8 gitweb: recognize 'trivial' acksGiuseppe Bilotta, Jun 25, 2009
  9. 8/8 gitweb: add avatar in signoff linesGiuseppe Bilotta, Jun 25, 2009
  10. 9/8 gitweb: put signoff lines in a tableGiuseppe Bilotta, Jun 25, 2009
  11. Jakub NarebskiJun 27, 2009
  12. Jakub NarebskiJun 27, 2009
  13. Giuseppe BilottaJun 27, 2009
  14. Jakub NarebskiJun 27, 2009
  15. Junio C HamanoJun 27, 2009
  16. Giuseppe BilottaJun 27, 2009
  17. Jakub NarebskiJun 26, 2009
  18. Thomas AdamJun 27, 2009
  19. Jakub NarebskiJun 26, 2009
  20. Giuseppe BilottaJun 26, 2009
  21. Jakub NarebskiJun 26, 2009
  22. Jakub NarebskiJun 26, 2009
  23. Giuseppe BilottaJun 26, 2009
  24. Jakub NarebskiJun 26, 2009
  25. Giuseppe BilottaJun 26, 2009
  26. Jakub NarebskiJun 26, 2009
  27. Junio C HamanoJun 27, 2009
  28. Giuseppe BilottaJun 27, 2009
  29. Jakub NarebskiJun 26, 2009
  30. Giuseppe BilottaJun 26, 2009
  31. Junio C HamanoJun 26, 2009
  32. Giuseppe BilottaJun 26, 2009
  33. Junio C HamanoJun 26, 2009
  34. Jakub NarebskiJun 27, 2009
  35. Jakub NarebskiJun 27, 2009
  36. Jakub NarebskiJun 25, 2009
  37. Giuseppe BilottaJun 26, 2009
  38. Jakub NarebskiJun 25, 2009
  39. Jakub NarebskiJun 25, 2009
  40. Giuseppe BilottaJun 25, 2009
  41. Jakub NarebskiJun 25, 2009
  42. Giuseppe BilottaJun 25, 2009
  43. Junio C HamanoJun 25, 2009
  44. Giuseppe BilottaJun 25, 2009
  45. Junio C HamanoJun 25, 2009
  46. Jakub NarebskiJun 25, 2009

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.