git.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Jakub Narebski <jnareb@gmail.com>
To: chaitanyaa nalla <nallachaitu@gmail.com>
Cc: git@vger.kernel.org
Subject: Re: GSoC idea: adding JavaScript library / framework in gitweb
Date: Wed, 28 Mar 2012 11:38:48 +0100	[thread overview]
Message-ID: <201203281238.49171.jnareb@gmail.com> (raw)
In-Reply-To: <CACeyoge5iVAEebwj8NHo9VF=OO10M4sG4WegngBqr6qnsYvjQQ@mail.gmail.com>

On Tue, 27 Mar 2012, chaitanyaa nalla wrote:

> Dear Jakub,
> 
> I prepared a schedule for gsoc ,please take a look and suggest me in
> case if you feel some tasks couldn't be completed with in indicated
> time .
> 
> Week 1  understanding how the whole gitweb and related server side
> scripts are implemented , their design philosophy , coding standards ,
> documentation standards to maintain the best practise coding
> practices.

I think you need to at least skim the JavaScript part of gitweb code
to be able to create a decent proposal.

> Brainstorming sessions regarding which libraries to use on 
> specific scenarios by keeping many criteria’s in mind and creating an
> abstract design on the additional features  that have to be added.

I think it would be a good idea to propose JavaScript library / framework
to use for client-side scripting in gitweb (jQuery, MooTools, Dojo, YUI),
explaining shortly why this one and not other (popularity, "weight", your
knowledge, etc.).  Though perhaps not commit to said library.

You say "libraries", but I think gitweb should use single JavaScript
library, perhaps with exception of specialized libraries or plugins for
extra stuff like Raphael.js for drawing.

Also here or later there should be time for short discussion about
marrying use of external JavaScript library to gitweb.perl script and
to our build system (gitweb/Makefile).

> Week 2  Improving Javascript browser detection and incremental blame.

Errr... gitweb does not employ browser detection.  Well, at least not
in strict sense; it does employ some feature detection e.g. to create
XmlHttpRequest -- but that is what library is for, it is assumed to do
cross-browser behavior for us.

Anyway improving existing features, and adding new features should be
much later.  The very first thing is to transform existing code (JavaScript
detection, adjusting timezones and incremental blame) from hand written
JavaScript to using JavaScript library, incrementally if possible, and
removing our own mini-library in `gitweb/static/js/lib/`.

[...]
> Week 3 Improving UI of adjusting timezone by deciding which library /
> framework to use on UI.

I don't think timezone select UI needs much improvement.  

Anyway I think that we would either use library, or UI addons for library
(like jQuery UI if you choose jQuery), or plugins for library.

> Week 4 & 5 design and implementation of client side sorting of tables

That should be fairly easy (though I am not sure if "1 week" easy).
This is what "sorttable" does in jQuery and I guess also other libraries
(built-in or via plugin); what needs to be adjusted is replacing or 
overriding (perhaps via onclick handler) links to server-side sorting
by trigger to client-side sorting.  Keeping table zebra-colored might
be a problem, but I think JavaScript libraries solved that already.

> and client side syntax highlighting of the blob view by handling how
> git web splits the output into lines and providing line numbers.

That can be hard, and here there might be question of choosing separate
library for JavaScript-based source highlighting.  There is also a 
question of integrating it with server-side source highlighting (turning
off JS-based if server side already does syntax highlighting, and using
the same CSS).

> Week 6  testing the code robustly on as many browsers as possible
> (with their versions) and documenting the code neatly .

This is a good idea.

> MidTerm Delivarables : Improving javascript browser detection,
> incremental blame,ui of adjusting timezone .Adding client side sorting
> of tables and client side syntax highlighting of blob view .

I would be happy if at midterms you would have existing JavaScript
features ported to JavaScript library, without adding any new features
or extending existing ones.

> Week 7 & 8 Using deferrands or queues in the interactive blame to
> avoid the editing of DOM which happens asynchronously to avoid
> locking

O.K.  You will have to check chosen JavaScript library documentation
for its name for such things; different libraries uses different names
for asynchronous processing helpers.

This might be hard part, but if you think you can do it in week
or two...

> and automatic extending of clickable area for places where the 
> link is constrained to a single cell or of that type.

Nice.  This also means that on server side we can remove link within
link (which does not work in some overly strict web browsers), but
this server-side change doesn't need to be done by you.

> Week 9 & 10 & 11 design and implementation support for graphical
> representation of history in log ,shortlog and history using Raphael
> javascript library, adding UI to compare arbitrary commits in the page
> using commitdiff view similar to MediaWiki page history view and
> creating a side by side diff from unified diff in javascript so that
> switching between unified diff and side by side diff could be handled
> on client side.

O.K., though graphical representation of history might be harder than
that (than allowed 1 week or 2).

Side-by-side diff is just porting from Perl to JavaScript.

> Week 12  documentation , writing a detail report , testing
> exhaustively and checking whether the written code follows the
> characteristics .
> Note: considerable amount of time will be spent each week
> concentrating on design for adding a new feature since its design
> greatly affects many things.

-- 
Jakub Narebski
Poland

  reply	other threads:[~2012-03-28 10:39 UTC|newest]

Thread overview: 20+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2012-03-24  6:32 gsoc idea adding javascript library / framework in gitweb chaitanyaa nalla
2012-03-24 13:17 ` GSoC idea: adding JavaScript " Jakub Narebski
2012-03-24 16:09   ` chaitanyaa nalla
2012-03-24 16:48     ` chaitanyaa nalla
2012-03-24 18:49     ` Jakub Narebski
2012-03-24 18:57       ` chaitanyaa nalla
2012-03-25  8:31       ` chaitanyaa nalla
2012-03-25 17:55         ` Jakub Narebski
2012-03-25 18:08           ` chaitanyaa nalla
2012-03-26  0:44             ` Jakub Narebski
     [not found]           ` <CACeyogdhChrGe-k+VLkAzq1F9U1TFYsCN5Kc_u7jAwRhaz+fJQ@mail.gmail.com>
2012-03-27 14:55             ` chaitanyaa nalla
2012-03-27 19:14             ` Jakub Narebski
2012-03-27 20:35               ` chaitanyaa nalla
2012-03-28 10:38                 ` Jakub Narebski [this message]
2012-03-28 18:05                   ` chaitanyaa nalla
2012-03-29  9:14                     ` Jakub Narebski
2012-03-29 18:37                       ` chaitanyaa nalla
2012-03-30 13:29                         ` Jakub Narebski
2012-04-01  9:47                           ` chaitanya nalla
     [not found]                       ` <CACeyogeh7SSfx5NPFSt=gDdUzrUj0zxQKh84MDA-dW2e7UNGcw@mail.gmail.com>
2012-03-30 12:56                         ` Jakub Narebski

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=201203281238.49171.jnareb@gmail.com \
    --to=jnareb@gmail.com \
    --cc=git@vger.kernel.org \
    --cc=nallachaitu@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).