-
Notifications
You must be signed in to change notification settings - Fork 21
GSoC 2016 Ideas List
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.
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
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
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