Skip to content

Latest commit

 

History

History
103 lines (73 loc) · 4.95 KB

CONTRIBUTING.md

File metadata and controls

103 lines (73 loc) · 4.95 KB

Thank you very much for your interest in contributing.

Before you start, please take a moment to read this guide.

Table of Contents

Goals

Goals help us figure out what to work on, how to design the product, what to say no to, and where we need help.

Just works
Support all video pages on all YouTube versions. Recover from breaking changes as quickly as possible. Talk to users and listen to their feedback. Be transparent.
Beautiful
Blend in with YouTube's visual design. The UI should appear as if it were built by YouTube itself, rather than standing out as being added by a third party.
User friendly
Keep it simple, easy to use, and accessible to everyone. No instructions necessary. Software should be hard to build and easy to use, not the other way around.
Lightweight
We have earned the trust of every user. Respect them by using as little resources as possible on their machine. Favour focus over features. Never collect data without their consent.
Avoid configuration
Absorb complexity on behalf of users. Figure out what the user really wants and reduce the cognitive burden of making decisions. Anything added dilutes everything else.

Development

After you've cloned the git repository, you'll need to load the unpacked extension into Chrome.
Choose the project's src directory as the extension's directory, as it contains the manifest file.

During development, make sure that the extension continues to work on Old YouTube (OYT) and New YouTube (NYT).

Test

You'll need to manually test a few scenarios as the project does not have automated acceptance tests yet. This ensures that no regressions are introduced.

Many of the scenarios involve checking that the extension is injected into the page properly on static and dynamic navigation, and that the functionality works.

Static (hard) navigation is traditional navigation on the web. The full page is requested by the client and returned by the server.

Dynamic (soft) navigation is when a Single Page Application updates certain sections or components of the page to make it look like a new page. Such navigation can be done client-side. Even though the page path may change, the page was not requested from a server. Note that web requests to a server may still occur to fetch content.

Test scenarios:

  • Toggle button appears when hard navigating to a video
  • Toggle button appears when navigating from home page to a video
  • Toggle button appears when navigating from a video to a video
  • Toggle button does not appear when viewing a live video with chat

Release

Disclaimer: This section is solely for publishers of this extension on the Google Chrome Store. Trusted collaborators can apply to be added as a publisher.

  1. Install/update build dependencies with npm install
  2. Bump version using npm-version, e.g. npm version patch
  3. Create release notes on GitHub
    • Recommended to use the template from the previous step
  4. Build the extension package with npm run build
    • Creates distributable files in the local _dir directory
    • Creates a new release in the local _packages directory
  5. Upload the zipped package of the release to the Chrome Web Store via the Developer Dashboard

You can view all scripts with npm run.

Releases with signficant visual changes should use new images on the Chrome Web Store.
Please upload a copy of the images to GitHub.

Admin & Monitoring

Disclaimer: This section is solely for publishers of this extension on the Google Chrome Store. Trusted collaborators can apply to be added as a publisher.