GSoC proposal: Migrate from YUI2 to YUI3

Lalit Khattar luckyk1592 at gmail.com
Thu Mar 13 09:23:25 UTC 2014


Hi all,

I have prepared a draft for GSoC project- 'Migrate from YUI2 to YUI3'.
Kindly review it. Any suggestions are welcomed.

Thanks,
Lalit


*Personal Details*

   - Name: Lalit Khattar
   - Email: luckyk1592 at gmail.com
   - IRC nick on irc.mozilla.org: dne0
   - Telephone: +918979890064
   - Other contact methods: gtalk
   - Country of residence: India
   - Timezone: India Time Zone(UTC+05:30)
   - Primary language: English and Hindi


*Project Proposal*To migrate from YUI2 to YUI3.


*Why is migration required?*

 Bugzilla JS code uses an external library(YUI2) for DOM manipulation and
other client side interactions. In September 2009, YUI3 was released which
is completely different from YUI2. Also, YUI2 version is no longer
maintained so the code is now kind of obsolete. Yahoo started the
work<https://code.launchpad.net/~evan-goer/bugzilla-yui3/yui3> in
2012 however the progress has stalled. Therefore, migration to YUI3 is a
high priority issue.


*Why not use jQuery instead of YUI3?*

   - As stated by
Evan<https://bugzilla.mozilla.org/show_bug.cgi?id=453268#c19>,
   jQuery is great for DOM manipulation, AJAX etc, but it does not factor code
   into modules like YUI3 does.
   - Also, I have looked into the previous
work<https://code.launchpad.net/~evan-goer/bugzilla-yui3/yui3> done
   by Evan and I believe that it can still be used without any major changes
   in his code and will give a head start on the project.


*Code Analysis*

A simple grep showed which directories/files uses YUI2 code:-

   - js/
   - template/
   - extensions/Voting/template

Obviously, majority of YUI2 code lies in js directory. Next on the target
is Template directory code and last is Voting extension template code.


*JS code*

As mentioned earlier, I looked into Evan's code and found following JS
files(plus, some inline JS) were already migrated into new modules:-

   1. global.js => bz-base/js/login.js, bz-base/js/intl.js
   2. comments.js => bz-comments/js/comments.js
   3. attachments.js => bz-attachments/js/attachments.js (Partial migration
   done)
   4. change-columns.js => bz-columns/js/columns.js, bz-select/js/select.js
   5. params.js => bz-parms/js/params.js
   6. productform.js => bz-products/js/products.js
   7. custom-search.js => bz-search/js/search.js (Partial migration done)

YUI3 version used by Evan is 3.7.3(found
here<https://bazaar.launchpad.net/~evan-goer/bugzilla-yui3/yui3/revision/8512>).
It should be upgraded to 3.14(or whatever newer version is available).
Things might break due to this, therefore manual testing will be required.

So, my first task will be to upgrade YUI 3.7.3 to >=3.14, test the migrated
code and complete the migration of attachments.js and custom-search.js.

Now, the following js files will be left to migrate and below I have
proposed to which module each file might go:-

   1. comment-tagging.js => bz-comments/js/comment-tagging.js
   2. expanding-tree.js => bz-tree/js/expanding-tree.js
   3. flag.js => bz-flag/js/flag.js
   4. bug.js => bz-bug/js/bug.js
   5. util.js => bz-util/js/util.js
   6. field.js => bz-util/js/field.js
   7. TUI.js => bz-util/js/TUI.js

This is just my initial thought on how JS directory structure should be
further extended. I will finalize the structure with mentor/community, if
my proposal gets accepted.

So, my next task will be to migrate the above js files.


*Template Code(inline js)*

I will be looking side by side into the template files that has the js
files included in it that are currently being migrated and check for any
YUI2 code in those template files. This approach might not cover all the
templates but it will make sure that all the linked js and template files
are covered.

Last, I will look for any remaining YUI2 code using grep.


*Voting Extension Template Code*

A simple grep showed this doesn't have much YUI2 code, so this one will be
the easiest to migrate.


*Schedule of Deliverables*

I will be able to spend full time only till mid term
evaluation(approximately 7-8 hours each day). After that, I might get busy
with job, so contribution will reduce to approximately 4-5 hours on
weekdays. But, I am willing to spend more time on weekends, if the project
is behind schedule.

Average time per week = 40 hours

Before 28 April

   - Exam period from April 21 - April 27
   - Will be available on irc all the time



April 29 - May 5: (1 week)

   - Learning YUI3, template toolkit and bzr.
   - Already familiar with jQuery and git. Won't take much time to learn
   YUI3 and bzr.



May 5 - May 18: (2 weeks)

   - Get good idea of what each JS file does, study YUI2 code.
   - Talk with mentor/community about migration steps like module
   structure, code structure etc.
   - Get a head start.



May 19 - June 10: (3 weeks)

   - Upgrade YUI 3.7.3 to >=3.14
   - Manually test the migration done by Evan.
   - Complete the migration of custom-search.js and attachments.js.



June 11 - June 25: (2 weeks)

   - Migrate bug.js, flag.js and related template files.
   - Test the migration manually.
   - Note: These are small files so they might take less than 2 weeks.


Mid term deliverables:

   - 50-60% of the code(including inline js) will be migrated and tested.



June 26 - July 17: (3 weeks)

   - Migrate field.js, util.js, TUI.js and related template files.
   - Test the migration manually.



July 18 - Aug 3: (2 weeks)

   - Migrate comment-tagging.js, expanding-tree.js and related template
   files.
   - Test the migration manually.



Aug 4 - Aug 18: (2 weeks)

   - Finishing up the work left due to unexpected delays.
   - Check for any unmigrated code in templates.


Post GSoC or if time permits:

   - Move inline js to external files.
   - Write tests.


*Open Source Development Experience*

I recently started contributing to Mozilla and submitted few patches:-

   - Add a "Watch" button on the new inspection
popup<https://bugzilla.mozilla.org/show_bug.cgi?id=944640>
   .
   - Large Textbox should have maxlength and wrap =>1 in
buglists.<https://bugzilla.mozilla.org/show_bug.cgi?id=536171>
   - show_bug.cgi should use field-label.html.tmpl for field
headers<https://bugzilla.mozilla.org/show_bug.cgi?id=575211>.
   (Not reviewed yet)

I also did some benchmarking of this
bug<https://bugzilla.mozilla.org/show_bug.cgi?id=537949#c16> to
test whether the JS performance issue in current code is still there or not.

I regularly use open source libraries, frameworks for my projects. My other
open source contributions can be found on my GitHub
profile<https://github.com/D-Ne0>.
I developed a chat application <https://github.com/D-Ne0/Chatroom> using
AJAX polling in front-end and open sourced it on GitHub.


*Work/Internship Experience*

I did internship in a startup, HackerEarth <http://www.hackerearth.com/> and
projects I worked on over the summer and winter internship period are
listed below:-

   - The Robust Relatime
Server<http://engineering.hackerearth.com/2013/05/31/the-robust-realtime-server>
   - Continuous Deployment
System<http://engineering.hackerearth.com/2013/08/05/continuous-deployment-system>
   - Introducing CodePlayer- Watch your code like a
movie<http://engineering.hackerearth.com/2014/01/21/introducing-codeplayer>
   - HackerEarth.vim- A vim plugin to compile/run
code<http://engineering.hackerearth.com/2013/03/11/hackerearth-vim-plugin>


*Academic Experience*

I am an undergraduate student at Indian Institute of Technology(IIT),
Roorkee. I am in final year and studying Metallurgical and Materials
Engineering.


*Why Me*

I have got decent experience working with web technologies- HTML, CSS,
Javascript, Python(Django) and PHP(Yii). I like playing with Javascript in
my spare time.

I am a part of Information Management
Group(IMG)<http://www.iitr.ac.in/campus_life/pages/Groups_and_Societies+IMG+IMG_Team_2013_14_.html>,
in IIT Roorkee, which is a student body responsible for developing and
managing all Internet and Intranet applications in IIT Roorkee, including
the institute website <http://www.iitr.ac.in/>. I have done two projects
under IMG:-

   - Institute Notice Board(Android
App)<https://play.google.com/store/apps/details?id=in.ernet.iitr.people>
   - Content Management
System<https://speakerdeck.com/imgiitroorkee/content-management-system>
of
   institute website.

Also, I would like to mention that the
CodePlayer<http://engineering.hackerearth.com/2014/01/21/introducing-codeplayer>
work
which I did during my internship required good knowledge of Javascript. I
was able to build play, pause, forward functionality in a short span.

*Why Mozilla*

All Mozilla open source projects and their respective community are
amazing. My first open source contribution was in Mozilla. The team has
been really helpful and friendly to me. I would like to contribute to
Mozilla through GSoC program and further plans to continue doing that.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.bugzilla.org/pipermail/developers/attachments/20140313/7f19aba4/attachment.html>


More information about the developers mailing list