[Buildbot-devel] Google Summer of Code proposal for Javascript Frontend

Naveen Kumar naveen.iitm90 at gmail.com
Wed Mar 28 18:01:01 UTC 2012


This is first draft of my proposal. Please give your feedback

Personal Details:

Name: Naveen Kumar K
Email: naveen.iitm90 at gmail.com
IRC: wakeupsid


Rationale: Currently buildbot web pages are rendered synchronously
with jinja2 templates, some of the data(build details) in these pages
is fetched from pickled objects. This process is slow and blocks whole
buildmaster while rendering the pages. With json api data is sent
synchronously but the time required to extract data and amount of data
is less. So it will be faster than regular webpages.

Idea: Idea is to rewrite whole web interface in javascript using json
api. Currently most of the json is implemented. Using this api
implement each page of the current web interface. And extend json api
for missing services. As we are rewriting it completely it is a good
chance to implement better looking user interface.

1. Decide javascript framework.
2. Design user interface.
3. Make a vague list of features.
4. Dive in and implement them.

1. Javasciprt frameworks:
Possible options:
        1. jQuery
        2. Dojo
        3. YUI

Personally I am in favor of jQuery. It is widely used and have very
good documentation.
And I have some experience with jQuery. Besides, I don’t think we will
use it very extensively to prefer something else over jQuery for some
remote features. I think all we need is a framework which is can make
ajax calls, json data retrieval and some nice dynamic UI funcatlity.

As per wikipedia Dojo has some advantages over jQuery. I don’t know if
we are going to need those features but we need to discuss pros and
cons of each of these frameworks and decide which one to use. If we
decide against jQuery I am open to learn other frameworks.

2. User interface design:
This is the best time to implement a better looking design. I am not
very good with web design. I am going to need help with that part. My
idea of implementation is, first implement a general template which
will be used in all the pages then implement rest of the features on

3. List of features:
Some features are obvious and necessary, like builders, buildslaves,
build details, waterfall. Both the grid views can be displayed in a
single page with transposed grid as javascript function. We can have
some statistics pages too. I checked success stories page, there
weren’t many customized interfaces. Suggestions are welcome.

4. Implementation:
Current status_json.py implements all the raw funcitons. Using this
api we can get specific information by passing right arguments. Some
of them can be inefficient, in such cases we need to optimize and
write functions specific to required information. One of the example
was already sent to the mailing list. This kind of problem cannot be
guessed now. They will raise at the time of implementation.

As I understand JsonStatusResource class serves the /json requests,
and is used in WebStatus class in baseweb.py. Hence it is synchronous.
Any python coding work will be mostly in status_json.py unless I have
to interact with databases. I am not aware of code outside of this

Google Summer of Code program is spanned over 12 weeks(excluding
community bonding period).
2 weeks: familizing with code, deciding upon things(javascript
framework, features to implement).
5 -6 weeks: implement existing features i.e. builders, buildslaves,
build details, waterfall. As directed in other thread of devel list
tests also will be written along with the code.
2-3 weeks: Survey for extra features and implement them.
2 weeks: Wrap up. Merge missing code(if any).

I have fairly good experience in python. I know twisted basics. I
mostly work on django for web development. I used javascipt/jQuery in
web development projects. I have little experience with UI design.
Though I follow some opensource projects never really contributed to
any of them. This is the first time I am working for an open source
project. We use git in our college for versioning. I am comfortable
with it.

- Naveen

More information about the devel mailing list