At Fri, 12 Dec 2008 03:03:55 +0100, Jakub Narebski wrote: > And no, we don't need to sort by categories first. Let me explain > in more detail a bit. Thanks for the detailed explanation, I understand your preference. But as you said, it's a bit arbitrary, I think none is completely obvious. I don't really have a strong opinion about which is best, but just to illustrate what made me go for the solution B, let me show another example: name / date / cat 1 2006 A 2 2003 B 3 2005 B 4 2003 A 5 2000 A 6 2008 C 7 2007 C 8 2001 B 9 2005 A We then sort by name and split in pages of N=3 (sorted by cat on each page): A:sort(name) split(max=3) subsort(cat) 1 2006 A 4 2003 A 9 2005 A 2 2003 B 5 2000 A 8 2001 B 3 2005 B 6 2008 C 7 2007 C B:sort(cat) subsort(name) split(max=4) 1 2006 A 9 2005 A 8 2001 B 4 2003 A 2 2003 B 6 2008 C 5 2000 A 3 2005 B 7 2007 C With B, we have the second top-entry (2) relegated to the second page, which might be surprising because we ordered by name. But what I find weird about A is that because of the per-page category sorting, the "top-sorted entries at the top" isn't true either (page 3). We have "reshuffled" the result of 'sort(name) split(max=3)' on each page. To be truly fair to the main sorting, we should not try to group categories and display the header for each consecutive group of entries from a distinct category: A-:sort(name) split(max=3) 1 2006 A 4 2003 A 7 2007 C 2 2003 B 5 2000 A 8 2001 B 3 2005 B 6 2008 C 9 2005 A Which in this case is painless as it only affects page 3, but it could lead to a mess of interleaved categories, and we kind of lose the purpose of category groups in the first place.. The point is that with A, you cannot determine whether you're on the right page to find project P (even if you know its category) by checking whether it's in the interval between the top and bottom entries. It's perhaps even more apparent if we sort by date: A:sort(year) split(max=3) subsort(cat) 1 2006 A 9 2005 A 4 2003 A 6 2008 C 3 2005 B 5 2000 A 7 2007 C 2 2003 B 8 2001 B B:sort(cat) subsort(year) split(max=4) 1 2006 A 4 2003 A 3 2005 B 9 2005 A 8 2001 B 7 2007 C 5 2000 A 2 2003 B 6 2008 C It feels kind of unnatural that not only projects are not sorted by date on each page (they are inside categories), but moreover categories are spread over all pages. I guess it depends on your use case, and whether categories are important or known by the user. I personally don't really care (I never split stuff into pages in the gitweb I use), so I can do a new version of my patch that does A if you prefer, just let me know. I just wanted to clarify that both solutions sort of suck :-) > P.S. It is IMHO better to use > > for (my $i = $from; $i <= $to; $i++) { Ah sorry, I took the words from your earlier email too literally ("we can [...] use loop $from..$to there"). That's what happens when pseudocode is actually valid syntax in a language! Cheers, -- Sébastien Cevey / inso.cc -- To unsubscribe from this list: send the line "unsubscribe git" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html