git.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Jakub Narebski <jnareb@gmail.com>
To: Giuseppe Bilotta <giuseppe.bilotta@gmail.com>
Cc: git@vger.kernel.org, Junio C Hamano <gitster@pobox.com>
Subject: Re: [PATCHv7 7/9] gitweb: picon avatar provider
Date: Sun, 28 Jun 2009 13:35:38 +0200	[thread overview]
Message-ID: <200906281335.40312.jnareb@gmail.com> (raw)
In-Reply-To: <1246104305-15191-8-git-send-email-giuseppe.bilotta@gmail.com>

On Sat, 27 June 2009, Giuseppe Bilotta wrote:

> Simple implementation of picon that only relies on the indiana.edu
> database.

I'd like to see where you got information about picons.  But it is
not necessary to have in commit message.

... Ah, I'm sorry, it is stated in comment.  Nevermind then.

> 
> Signed-off-by: Giuseppe Bilotta <giuseppe.bilotta@gmail.com>

Acked-by: Jakub Narebski <jnareb@gmail.com>

> ---
>  gitweb/gitweb.perl |   26 ++++++++++++++++++++++----
>  1 files changed, 22 insertions(+), 4 deletions(-)
> 
> diff --git a/gitweb/gitweb.perl b/gitweb/gitweb.perl
> index de4cc63..ae73d45 100755
> --- a/gitweb/gitweb.perl
> +++ b/gitweb/gitweb.perl
> @@ -378,14 +378,17 @@ our %feature = (
>  	# shortlog or commit will display an avatar associated with
>  	# the email of the committer(s) and/or author(s).
>  
> -	# Currently only the gravatar provider is available, and it
> -	# depends on Digest::MD5.
> +	# Currently available providers are gravatar and picon.
> +
> +	# Gravatar depends on Digest::MD5.
> +	# Picon currently relies on the indiana.edu database.
>  
>  	# To enable system wide have in $GITWEB_CONFIG
> -	# $feature{'avatar'}{'default'} = ['gravatar'];
> +	# $feature{'avatar'}{'default'} = ['provider'];
> +	# where provider is either gravatar or picon.

I wonder if it wouldn't be better to use "<provider>" (or "'<provider>'")
in place of "'provider'", as it is not about literal 'provider', but 
about one of 'gravatar' or 'picon'.

>  	# To have project specific config enable override in $GITWEB_CONFIG
>  	# $feature{'avatar'}{'override'} = 1;
> -	# and in project config gitweb.avatar = gravatar;
> +	# and in project config gitweb.avatar = provider;

Same as above.

>  	'avatar' => {
>  		'sub' => \&feature_avatar,
>  		'override' => 0,
> @@ -856,6 +859,8 @@ our @snapshot_fmts = gitweb_get_feature('snapshot');
>  our ($git_avatar) = gitweb_get_feature('avatar');
>  if ($git_avatar eq 'gravatar') {
>  	$git_avatar = '' unless (eval { require Digest::MD5; 1; });
> +} elsif ($git_avatar eq 'picon') {
> +	# no dependencies
>  } else {
>  	$git_avatar = '';
>  }

Nice.

> @@ -1523,6 +1528,17 @@ sub format_subject_html {
>  # given page, there's no risk for cache conflicts.
>  our %avatar_cache = ();
>  
> +# Compute the picon url for a given email, by using the picon search service over at
> +# http://www.cs.indiana.edu/picons/search.html
> +sub picon_url {
> +	my $email = lc shift;
> +	if (!$avatar_cache{$email}) {
> +		my ($user, $domain) = split('@', $email);
> +		$avatar_cache{$email} = "http://www.cs.indiana.edu/cgi-pub/kinzler/piconsearch.cgi/$domain/$user/users+domains+unknown/up/single";

Hmmm... perhaps it would be better to break this very long URL (link)
in lines...

> +	}
> +	return $avatar_cache{$email};
> +}

I wonder if it is worth caching picons, at least in this form.  It isn't
as if splitting on '@' is expensive.  But perhaps to not break pattern
(that avatar URLs are cached) it is a good thing.

Thoughts for the possible future enhancements: find final URL of an image
via http://www.cs.indiana.edu/cgi-pub/kinzler/piconsearch.cgi/$domain/$user/users+domains+unknown/up/off/1/order
by scrapping (parsing) it for .gif link, and store this URL in cache.
But that most probably isn't worth it.  Just feel like mentioning it.

> +
>  # Compute the gravatar url for a given email, if it's not in the cache already.
>  # Gravatar stores only the part of the URL before the size, since that's the
>  # one computationally more expensive. This also allows reuse of the cache for
> @@ -1546,6 +1562,8 @@ sub git_get_avatar {
>  	my $url = "";
>  	if ($git_avatar eq 'gravatar') {
>  		$url = gravatar_url($email, $size);
> +	} elsif ($git_avatar eq 'picon') {
> +		$url = picon_url($email);
>  	}
>  	# Currently only gravatars are supported, but other forms such as
>  	# picons can be added by putting an else up here and defining $url

Very nice pattern, nice use of infrastructure.

I think that adding 'width' attribute to img tag of avatar should
perhaps be put here rather than in previous patch, which is about
adding gravatar URL cache.  This chunk:

         # Currently only gravatars are supported, but other forms such as
         # picons can be added by putting an else up here and defining $url
         # as needed. If no variant puts something in $url, we assume avatars
         # are completely disabled/unavailable.
         if ($url) {
 -               return $pre_white . "<img width=\"$size\" class=\"avatar\" src=\"$url\" />" . $post_white;
 +               return $pre_white .
 +                      "<img width=\"$size\" " .
 +                           "class=\"avatar\" " .
 +                           "src=\"$url\" " .
 +                      "/>" . $post_white;
         } else {
                 return "";
         }

should be, I think, in this patch and not in previous one (or at least
in some other patch than the previous one).

BTW. you should have updated the comment here.


Should it be stated that <img width="$size" ...> is here because not 
all kinds of avatars (not all avatar providers) support selecting size
of avatar, somewhere in this comment?


Very nice, well thought infrastructure, which makes adding new avatar
providers easy.  Good work!

-- 
Jakub Narebski
Poland

  parent reply	other threads:[~2009-06-28 11:30 UTC|newest]

Thread overview: 31+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2009-06-27 12:04 [PATCHv7 0/9] gitweb: avatar support Giuseppe Bilotta
2009-06-27 12:04 ` [PATCHv7 1/9] gitweb: refactor author name insertion Giuseppe Bilotta
2009-06-27 12:04   ` [PATCHv7 2/9] gitweb: uniform author info for commit and commitdiff Giuseppe Bilotta
2009-06-27 12:04     ` [PATCHv7 3/9] gitweb: use git_print_authorship_rows in 'tag' view too Giuseppe Bilotta
2009-06-27 12:05       ` [PATCHv7 4/9] gitweb: right-align date cell in shortlog Giuseppe Bilotta
2009-06-27 12:05         ` [PATCHv7 5/9] gitweb: (gr)avatar support Giuseppe Bilotta
2009-06-27 12:05           ` [PATCHv7 6/9] gitweb: gravatar url cache Giuseppe Bilotta
2009-06-27 12:05             ` [PATCHv7 7/9] gitweb: picon avatar provider Giuseppe Bilotta
2009-06-27 12:05               ` [PATCHv7 8/9] gitweb: use picon for gravatar fallback Giuseppe Bilotta
2009-06-27 12:05                 ` [PATCHv7 9/9] gitweb: add alt text to avatar img Giuseppe Bilotta
2009-06-28 15:43                   ` Jakub Narebski
2009-06-28 16:10                     ` Giuseppe Bilotta
2009-06-28 14:42                 ` [PATCHv7 8/9] gitweb: use picon for gravatar fallback Jakub Narebski
2009-06-28 11:35               ` Jakub Narebski [this message]
2009-06-28 16:03                 ` [PATCHv7 7/9] gitweb: picon avatar provider Giuseppe Bilotta
2009-06-27 22:15             ` [PATCHv7 6/9] gitweb: gravatar url cache Jakub Narebski
2009-06-27 19:45           ` [PATCHv7 5/9] gitweb: (gr)avatar support Jakub Narebski
2009-06-27 22:45             ` Giuseppe Bilotta
2009-06-27 23:20               ` Jakub Narebski
2009-06-27 18:28         ` [PATCHv7 4/9] gitweb: right-align date cell in shortlog Jakub Narebski
2009-06-27 22:27           ` Giuseppe Bilotta
2009-06-27 18:10       ` [PATCHv7 3/9] gitweb: use git_print_authorship_rows in 'tag' view too Jakub Narebski
2009-06-27 22:24         ` Giuseppe Bilotta
2009-06-27 16:10     ` [PATCHv7 2/9] gitweb: uniform author info for commit and commitdiff Jakub Narebski
2009-06-27 18:38       ` Junio C Hamano
2009-06-27 22:33         ` Giuseppe Bilotta
2009-06-27 14:24   ` [PATCHv7 1/9] gitweb: refactor author name insertion Jakub Narebski
2009-06-27 15:26     ` Giuseppe Bilotta
2009-06-27 15:48       ` Giuseppe Bilotta
2009-06-29 21:37 ` [PATCHv7 0/9] gitweb: avatar support Jakub Narebski
2009-06-29 21:55   ` Giuseppe Bilotta

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=200906281335.40312.jnareb@gmail.com \
    --to=jnareb@gmail.com \
    --cc=git@vger.kernel.org \
    --cc=gitster@pobox.com \
    --cc=giuseppe.bilotta@gmail.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).