Skip to content

GSoC 2016 Ideas List

Jörn Zaefferer edited this page Mar 17, 2016 · 34 revisions

This is the jQuery Foundation's ideas list for Google Summer of Code 2016.

If you're an interested student, check out our Getting Started page. For some further guidance, this brief guide might help. Or this more recent, not-so-brief one. For general guidelines to contributing to jQuery Foundation projects, visit our Contribute to jQuery site.

Ideas

These are grouped by project, then sorted by required skill level.

Chassis - Framework benchmark tests

Brief explanation: Chassis in an effort to be the best of breed CSS framework based not only on standards and modern principles but an emphasis on performance wants to create a set of benchmarks that can be run on different components from a variety of existing css frameworks to measure rendering performance. This will help us to identify key performance bottlenecks in other frameworks and avoid them. We have a POC for this already but it needs to be made to better represent the indicators we are looking for and be set up in a reusable stable environment.

Expected results: a testing suite that tests and analyzes rendering, re-rendering time and other performance benchmarks for components of different frameworks frameworks.

Knowledge prerequisite: Knowledge prerequisite: javascript, html, css, testing

Skill level: High

Mailing list or IRC channel: #css-chassis on Freenode

Mentors: Rohit Mulange, Alexander Schmitz

Chassis - Components for CSS Framework and Javascript Libraries

Brief explanation: Chassis is creating open standards designed for CSS libraries, JavaScript UI libraries, and web developers in general. Chassis is developing base styles and designing markups that can be easily shared across various javascript libraries.

This project will include working on styles and markup of some common components of css framework like Grids and Forms and some UI components like tabs, panels, menus, modals and popups. This task may include the need to evaluate the components for ease of integration into libraries, proper accessibility, and rendering performance. Applicants for this project will be expected to showcase their abilities either by contributing code to the Chassis repo or providing some sample work. Examples of possible sample work can be found below:

All Code samples will be expected to work in Safari, Chrome, Firefox, IE 11, IE 10

Expected results: Styling for basic css framework components like grid, and javascript library components like tabs, menus, with, preferably, a working example with jquery-ui or jquery-mobile. At least five components must be completed as part of the project.

Knowledge prerequisite: html, javascript, css, scss, designing skills, jquery-ui/jquery-mobile.

Skill level: medium - high

IRC channel: #css-chassis on Freenode

Mentors: Rohit Mulange, Sarah Frisk

Chassis - Chassis website with Theme and Template Library

Brief explanation: Chassis is creating open standards designed for CSS libraries, JavaScript UI libraries, and web developers in general. Chassis currently needs a website with documentation, tutorials which also showcases the use of chassis using some starter templates and alternative themes.

This Project will include designing and developing the website, starter templates that showcase basic usage of Chassis and alternative themes for chassis. Applicant to this project may also have to help with writing documentation for Chassis and website content.

The chassis website should preferably reuse the existing jQuery foundation infrastructure where possible for the website. (Please see jquery-wp-content).

Applicants must showcase their web design skills by providing sample work (eg. A fully working website they designed and made, a sample Wordpress theme, etc)

Expected results: A Chassis website including documentation, tutorials, and at least one starter template and one chassis theme.

Knowledge prerequisite: html, javascript, css, scss, designing skills

Skill level: medium - high

IRC channel: #css-chassis on Freenode

Mentors: Rohit Mulange, Sarah Frisk

PEP - W3C test suite

Brief explanation: PEP is a polyfill for the W3C pointer events spec. to ensure the polyfill is complete we would like to run against the official W3C test suite as part of our CI. This task to to finish hooking these tests into our test suite which automates the manual W3C tests via webdriver.

Expected results: 100% test coverage for the W3C pointer events test suite

Knowledge prerequisite: JS, testing, Knowledge of webdriver, Pointer events, touch events a plus

Skill level: medium - high

Mailing list or IRC channel: #pep on freenode

Mentors:

QUnit - Standard reporter interface

Brief explanation: We want to provide a reporter interface that we can share with other testing tools like Jasmine and Mocha, to make it easier for integration tools - like Karma, browserstack-runner, grunt plugins - to hook into QUnit and other tools. Anyone writing a new JavaScript testing tool should be encouraged to provide the same interface, making it more reasonable to support these tools. QUnit issue #531 has more details. The js-reporters repo contains a draft specifiction as well as adapters for various frameworks. This requires communication with the QUnit team, as well as the maintainers and contributors of other open-source projects.

Expected results: Implementing the js-reporters specification in QUnit, figuring out the missing details along the way. And at least one pull requests to use that interface (with the existing adapters) in integration tools like Karma or browserstack-runner. Gaining contributors to the js-reporters project will be a big plus.

Getting started: This was a GSoC 2015 project, and while there was good progress, its not done. In addition to the overview above, the accepted proposal from last year should be a good reference. Otherwise, the js-reporters repository itself is your best resource. You should you look at the existing README (especially the draft proposal), the existing code (mostly adapters) and all the open issues and pull requests.

Knowledge prerequisite: JavaScript, unit testing, GitHub

Skill level: medium

IRC channel: #jquery-dev on Freenode

Mentors: Jörn Zaefferer, Leo Balter

commitplease - Support various commit message formats presets

Brief explanation: Commitplease is a tool used in various jQuery Foundation projects (and elsewhere) to validate git commit message as the git user enters them on the command line. This leads to consistent commit messages, which helps with debugging and automatically generating changelogs. The current version of commitplease allows some customizations, but not enough to support for example the Angular commit message format. The goal of this is to extend commitplease to support that format and others, as presets, similar to how jscs uses presets. Related issues should be addressed along the way.

Expected results: An implementation of the Angular commit message format in the existing commitplease validator module (addressing issue #43. Adoption of that new feature in a few projects, like angular itself.

Knowledge prerequisite: JavaScript, node.js, communicating and collaborating with open-source projects

Skill level: medium

Mailing list or IRC channel: #jquery-dev

Mentors: Mentors: Jörn Zaefferer, Alexander Schmitz

jQuery Learning Center - Interactive tutorials for learn and other sites

Brief explanation: We would like to develop a framework for the development and presentation of interactive tutorials. The system should contain some teaching material followed by a list of tasks that should be completed by the student to test their knowledge on the material presented. The teaching material could consist of videos and/or pdf slides. Each task that should be completed by the student will have hints that the student can reveal if they get stuck. The system should detect when the student has completed the task successfully, and offer the possibility to view the correct solution. Please see the corresponding Github issue

Expected results: A new information architecture to create, organize and interact with our tutorials.

Knowledge Prerequisite: JavaScript, HTML, CSS, basic understanding of information architecture

Skill level: medium to high

IRC channel: #jquery-content on Freenode

Mentors: [Anne-Gaelle Colom] (https://github.com/agcolom), Aurelio De Rosa

Hammer.js - Module System

Brief explanation: Hammer.js is currently not using any typeof module system for managing the different files and components within the library. We would like to switch to use ES6 modules for managing the files that make up hammer.js along with this we would like the build updated to be able to exclude different recognizers or input types.

Expected results: Hammer.js and its build process are converted completely to use ES6 Modules and the build updated to be able to exclude optional recognizers or input types.

Knowledge prerequisite: JS

Skill level: Medium

Mailing list or IRC channel: Hammer.js on Slack or hammerjs.irc.slack.com on irc

Mentors: Chris Thoburn, Alexander Schmitz

Hammer.js - Testing update

Brief explanation: The Hammer.js test suite has become outdated. The test suite needs to be updated and gaps in coverage filled in. We also need to start testing on multiple browsers as part of the CI process including adding functional testing. We are looking for someone that would like to overhaul and update our test suite to a modern Unit testing framework and add functional test.

Expected results: Hammer.js tests will be updated to lastest unit testing framework and have functional tests added. Knowledge prerequisite: JS, HTML, Testing

Skill level: Medium

Mailing list or IRC channel: Hammer.js on Slack or hammerjs.irc.slack.com on irc

Mentors: Chris Thoburn, Alexander Schmitz

Hammer.js - Website and api facelift

Brief explanation: The Hammer.js website and api documentation need a facelift and a modernized build process. The current website has been around for several years and has become a bit dated. We want someone to redesign and rebuild our website and api documentation to give it a new fresh look and make it easier to use.

The current website also uses make to build and has several manually installed dependencies. We would like to update this to use a modern node build process and task runner as part of this process.

Expected results: A new redesigned website and api documentation for hammer.js and new modern node based build process for it. Knowledge prerequisite: JS, HTML, Testing

Skill level: Medium

Mailing list or IRC channel: Hammer.js on Slack or hammerjs.irc.slack.com on irc

Mentors: Chris Thoburn, Alexander Schmitz

Implement Dojo 2 internationalization API, extending jquery/globalize

Brief explanation: Wrap jquery/globalize to support features and flexibility needed for dojo/i18n, per our guidelines

Expected results: A modern internationaliztion solution for Dojo 2 including translations, currency, and date/time localizations. Tests and documentation.

Knowledge prerequisite: JavaScript, ES6, TypeScript, some experience with internationalization including CLDR.

Skill level: medium to expert

IRC channel: #dojo on Freenode

Mentors: Mangala Sadhu Sangeet Singh Khalsa, Dylan Schiemann

Implement Dojo 2 build system

Brief explanation: Work on Dojo 2 build system, leveraging Grunt and/or Gulp, TypeScript language services, UglifyJS and/or Closure Compiler, and other utilities to deliver optimized JavaScript source code

Expected results: A build system that can optimize source code based on configuration for Dojo 2 applications. Tests and documentation.

Knowledge prerequisite: JavaScript, ES6, TypeScript, some experience with build automation and optimization systems

Skill level: medium to expert

IRC channel: #dojo on Freenode

Mentors: Kitson Kelly, Dylan Schiemann

Implement Dojo 2 GFX

Brief explanation: Created next version of a native vector graphics API, with support for SVG, Canvas, and WebGL.

Expected results: Feature parity with Dojo 1 GFX to draw native vector graphics with a simplified API. Tests and documentation.

Knowledge prerequisite: JavaScript, ES6, TypeScript, SVG, Canvas, WebGL

Skill level: medium to expert

IRC channel: #dojo on Freenode

Mentors: TBD, Dylan Schiemann

Dojo 2 a11y

Brief explanation: Work on accessibility support for Dojo 2 widget library

Expected results: Clean API for adding a11y to widgets, as well as a11y support for widgets completed by end of summer. Tests and documentation.

Knowledge prerequisite: JavaScript, ES6, TypeScript, ARIA spec.

Skill level: medium to expert

IRC channel: #dojo on Freenode

Mentors: Karl Tiedt, Dylan Schiemann

Dojo 2 cryptography library

Brief explanation: Work on crypto library for Dojo 2, based on details at https://drive.google.com/open?id=1c6LM02gzoXVVPNb4yqKOZc1cMop1wnQGOVYGyJMUxLA&authuser=0

Expected results: Add support for standard crypto APIs needed for modern web application development. Needs to support both WebCrypto and Node.js's crypto implementation.

Knowledge prerequisite: JavaScript, ES6, TypeScript, some familiarity with crypto APIs, strong math background.

Skill level: expert

IRC channel: #dojo on Freenode

Mentors: Kitson Kelly, Karl Tiedt, Dylan Schiemann

Improve Intern's cli

Brief explanation: Improve the command line interface for Intern, initial ideas at https://github.com/theintern/intern/issues/536#issuecomment-181959775

Expected results: Efficient and well-tested CLI to improve testing.

Knowledge prerequisite: JavaScript, ES6, TypeScript, testing, CLI

Skill level: medium

IRC channel: #intern on Freenode

Mentors: Jason Cheatham, Dylan Schiemann

Improve Selenium WebDriver instances

Brief explanation: There are many known defects with Selenium WebDriver (ChromeDriver, SafariDriver, FirefoxDriver, etc.) instances. Work with various drivers to fix the defects against the spec. that currently break or limit automated functional testing.

Expected results: Selenium WebDriver instances will work closer to the defined specification, making functional testing better for all projects and test frameworks.

Knowledge prerequisite: Java, C, testing

Skill level: expert

IRC channel: #intern on Freenode

Mentors: Jason Cheatham, Dylan Schiemann

Create a sandbox interface for all Intern tests

Brief explanation: Create a clean window for each test suite that is run, as defined in https://github.com/theintern/intern/issues/6

Expected results: A clean way to ensure that all unit and functional tests may optionally be run in a clean window context, to reduce the chance of test suite side effects.

Knowledge prerequisite: JavaScript, ES6, TypeScript, browser APIs, WebDriver.

Skill level: expert

IRC channel: #intern on Freenode

Mentors: Jason Cheatham, Dylan Schiemann

Refactor the lo-dash CLI

Brief explanation: Refactor lodash-cli from a monolithic architecture to a modular architecture

lodash Gitter

Mentors: John-David Dalton

jQuery Mobile - Bug Hunt

Brief explanation: jQuery Mobile currently has a large backlog of un-triaged, unfixed, or stale issues. We are looking for someone to take ownership of the issue tracker and clean up its current state. This person will need to be comfortable working with a large diverse group of people both part of the team and community members. Candidates should be comfortable with

  • Use of GitHub issue tracker
  • Responding to community members who have opened bugs
  • Diagnosing and reproducing bug reports
  • Fixing basic JS and CSS issues
  • Working both independently and with a team

Expected results: Reduce the jQuery Mobile issue back log to a manageable state ( < 100 open issues ) and label and organize remaining issues.

Knowledge prerequisite: HTML, JS, CSS

Skill level: novice - medium

Mailing list or IRC channel: #jquery-ui on freenode

Mentors: Alexander Schmitz, Jörn Zaefferer

jQuery Mobile - Prototype JavaScript transition module

Brief explanation: Currently the library uses CSS transitions and animations. These have been found to be a less than ideal solution, compared to JavaScript based animations, for the libraries needs. Prototype a new transition module using JavaScript based animations, based on jQuery's animation module.

Expected results: A new JavaScript based transition module.

Knowledge prerequisite: JavaScript (timers, animations), CSS, HTML, basic understanding of performance testing

Skill level: medium to high

IRC channel: #jqueryui-dev

Mentors: Alexander Schmitz, Jörn Zaefferer

jQuery Mobile - Update touch gestures to use Hammer.js

Brief explanation: Currently jQuery Mobile uses its own custom set of gesture events. We would like to switch to using the more robust Hammer.js library for gesture event support. This task is to update the library to depend on Hammer.js and to remove all use of our custom events and replace them with Hammer.js events.

Expected results: All custom touch events replaced with Hammer.js equivalent.

Knowledge prerequisite: JavaScript

Skill level: medium

IRC channel: #jqueryui-dev

Mentors: Gabriel Schulhof, Alexander Schmitz

jQuery UI - Native select button

Brief explanation: jQuery UI has a custom selectmenu widget. We would like to add support for native select with styled button. This will be mostly useful on mobile devices where the soft keyboard select may be more user friendly especially with long lists. jQuery Mobile does something similar to this now.

Expected results: Implement a native version of the selectmenu with a custom button. Knowledge prerequisite: JS, CSS, HTML, Knowledge of accessibility tools like screen readers a plus

Skill level: Medium

Mailing list or IRC channel: #jquery-ui on freenode

Mentors: Alexander Schmitz