Skip to content

Instantly share code, notes, and snippets.

@gauravmittal1995
Last active August 29, 2015 14:16
Show Gist options
  • Save gauravmittal1995/289e80ee588a7404b997 to your computer and use it in GitHub Desktop.
Save gauravmittal1995/289e80ee588a7404b997 to your computer and use it in GitHub Desktop.
GSoC Proposal Draft

#Google Summer of Code Proposal

##Personal Details:

##Organization: jQuery Foundation

##Open Source Development Experience:

  • Mozilla – I have previously worked on Mozilla's Firefox OS (Gaia). Gaia is the user interface level of Firefox OS. Everything that appears on the screen after Firefox OS starts up is drawn by Gaia, including the lock screen, home screen, dialer, and other applications. Gaia is written entirely in HTML, CSS, and JavaScript. List of my solved issues can be found here.
  • Sahana – I have also worked extensively for Sahana Eden which is an open source humanitarian platform which can be used to provide solutions for Disaster Management, Development, and Environmental Management sectors. It uses python and jQuery for development. List of all my solved issues can be found here.  
  • WordPress – I also worked on WordPress Organisation for some time. WordPress is a web software you can be used to create a beautiful website or blog. It uses mainly PHP and JavaScript for development. 
  • QUnit (jQuery) – I am currently working on Qunit. QUnit is a powerful, easy-to-use, JavaScript unit testing framework. It's used by the jQuery project to test its code and plugins but is capable of testing any generic JavaScript code (and even capable of testing JavaScript code on the server-side). 
  • My other projects can be viewed on my GitHub ID

##Project Proposal:

  • Project Name: QUnit - Better diff output 

  • Project Description: QUnit's HTML reporter (the user interface in the browser) can be super helpful when debugging test failures. It shows a diff between the actual and expected values of most assertions. Sometimes those diffs are too big or otherwise messed up. We want to improve this with a better diff implementation, along with some QUnit-specific optimizations. 

  • Expected Results: A new release of QUnit which includes one or more improvements to QUnit's diff implementation. 

  • Issues: 

  • Confusing Line Breaks in Object Diffs (See here).

  • Backslash in string inconsistency in diff (See here).

  • For big objects, only diff the leaf to avoid overhead (See here).  

  • Show diff only if it helps (See here).  

  • Better Tests for diffs  

  • Potentially extract the diff module into a standalone module to share with other JS testing frameworks (Research needed).  

##Timeline:

  • Weeks 1-2: Community Bonding. Understanding the QUnit codebase, getting to know the mentor, discussing the tasks needed to be completed, planning the basic mock interface, etc.  

  • Weeks 3-4: Modifying the current diff algorithm to solve issues of confusing line breaks. Also adding some better tests for diff. Automated tests that somehow prevent regressions would also help, maybe by checking the length of a diff, ensuring that changes to the diff don't make it worse.   

  • Weeks 5-6: Modifying the HTML Reporter to prevent the display of diff if it isn't useful. This could be checked using the length of the diff which when equal to the expected output's length + the actual output's length, can be avoided. Also for big objects, only show the diff for the leaf as compared to the whole object to avoid overhead. Adding tests for the changes to avoid regression.   

  • Weeks 7-8: Used as a buffer period to complete the spills from the previous weeks. Also solve the bugs that were created during the changes. Discuss the next steps with mentors.    

  • Weeks 9-10: Solving some issues relating to backslash inconsistency in strings and also refactoring all the changes from this and the previous weeks. Adding tests for the issues and removing bugs which were created.   

  • Weeks 11-13: Research the diff modules (if any) of other JS testing frameworks and check if we can extract the diff module of QUnit as a standalone module that can be shared with other testing frameworks. If we decide to make a standalone module, it will be documented   

  • Weeks 14-15: Used as a buffer period to complete any spills from the previous weeks. Also solving bugs, writing additional tests, and finally releasing the next version of QUnit with the changed diff output. Discussion with mentors about any additional changes and completing them. 

Note: This timeline is a rough plan and will be adjusted along the way.

##Availability:

  • This time GSoC is from April 28th 2015 to August 28th 2015. Apart from April 28th to May 8th, I would be available full time as it would be my vacation days. The above mentioned ten days will be occupied by my end semester examinations, but I can still allot some time for the project. 
  • I will regularly be checking in to IRC and GitHub, during which I can discuss any problems or issues with my mentors. 

##Why Me:

  • I can easily work for 40 hours on a normal week. 
  • I have a good amount of experience working for open source projects and have a good understanding of Git and other open source development tools. 
  • I have good programming experience and am well versed in JavaScript, PHP and Python and can use this knowledge to complete this project. 

 

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment