Skip to content

Contributing

ImprovedTube edited this page Apr 2, 2026 · 100 revisions

Spreading the word

Please inform friends and people on reddit, twitter, quora, who look for something our features can do. And discuss with us.
If you ever make a blog-post or video about our work, please tell us to link / feature it.

Documentation

We should have concise explanations for Tooltips. And use .gif's / screenshots / videos too in a fullpage documentation. And/or sometimes small detail .gif's inside the extension popup? - And (invisible) Tags & alternative names of the features for search (and in different languages).

Translation

You can help us to translate ImprovedTube.

Donate

We are volunteers. ImprovedTube is made with - or out of love for users. Your happiness is the currency of our hearts. We dare to keep ImprovedTube open-source & free, despite it is still a lot of work, that won't stop while YouTube releases updates.

Test

You can help by logging any bugs you find. (As a small team, prioritization is critical, so knowing which issues are impactful for many users or not can help us.)

  • BTW, you can check an extension in incognito mode ( chrome://extensions details or chrome://extensions/?id=bnomihfieiccainjcjblhegjgglakjdd) )
  • In some cases, we might compare the DOM YouTube gives you, by copying the whole (<html> root element; including child elements; in the top left of Dev-Tools:
    (FireFox:)
    There are different versions of this depending on, if you open a new window or clicked a link on YouTube and if you are logged in or not.

Development

Welcome!
Some inspiration:
Pinned issues, all labels, (HTMLMediaElement, etc.); Integration (Merging of repos; future collaborative structures) & Global ideas


You can view Bugs, ordered by activity or label:important.
Feature Requests may be ordered by: #Set-and-forget, prepared #Plan, #Uniqueness or #Should be crowdsourced, ...
We may use priority lists and difficulty / complexity levels (which can be combined in queries). More lists/queries: readme.md#to-do#labels.

Adding a feature:

  • Add a toggle or other UI element in the menu.
    • To add a name edit our English messages.json (and optionally more languages). Please add every (uniquely identifying) synonym you can think of and tags / keywords for search too.
  • Find the right spots to call your feature (1. After pageload? During pageload prior to something? And 2. When youtube updates the page (Youtube is a SPA, single page application). Call your feature depending storage (toggle activated)
    • Name your feature's JS function the same as the toggle, but camelized - so that we may be able to automate calling features (later).
      Then your function is already also called automatically when set (1). And this passes the value set to the function (mostly the value true), in case you will undo something when it is disabled false if this feature. Alternatively we used to do this here outside feature code since most features are set and forget (but spaghetti code is not required for performance). If your feature adds a DOM element, please also name that the same, so that we can potentially remove it automatically (or for multiple Elements start with the feature's name). In future we may also show animation / introduction when features are (first) enabled true.)
  • ImprovedTube.storage is a synced copy of chrome.storage, so that your feature can be called from web-accessible scripts too / from the DOM.
    • We also write all settings as attributes to the element, to allow CSS-only features, active before the page loaded. ( This is usually for your convenience. Timing might only mater for the background color. Rare or big CSS may still only be injected depending on JS. (CSS isn't free; Browsers may process CSS rules from right to left.) - In future we should use a rule engine, to allow to set CSS and JS variables alike and crowdsources that (Specifically we should fork and integrate uBlock)

more:


Updating the name of a feature or option in our menu? - Import people's old storage!


We started labeling some discussions: Knowledge Base


Browser Extension Developer convenience (/Efficiency /Methods)


Debate:"Youtube is changing too much"

  • You might get different Youtube experiments, depending if you are logged in or not.
  • (General remedy: We always have the option to sensitively offer GUI on top of Youtube, instead of fiddling to integrate our's: CSS position:fixed or sticky)

Debate: "Predicting Youtube-DOM changes?"

The important CSS IDs (& pathes) should stay the same in all current & future YouTube.
Yet, we could predict how Youtube might be renaming some still... We can even search for new names when old ones disappear. JS regEx are efficient! Optionally extensions can apply to include files with changing names/rules in the repo or so, without requiring to have a new version approved. So we could use any language and react instantly server side. ( CSS can't do regEx, besides *= ^= $= )

  • Amounts of www.youtube.com variables' names' over time
    1. "view-source:" 2. DevTools (logged-in)

year 1. yt- 1. ytd- 2. yt- 2. ytd-
July 2025 31 62 9729 (10278) 4135 (4294)
May 2024 32 62 2387 (2468) 3115 (3175)
2024 32 63
2021 31 61
2020 24 58
2018 & 2019 700 0
2014 1400 0
2013 1 0

GitHub in general:

  • Pull Requests by command-line: gh pr create --base master --title "my PR" --body "fixing..."

    • Alternatively: hub pull-request acts as a wrapper for git) https://github.com/github/hub
      • (Or if you hate all Pull Requests, we might allow you to make commits after a few PRs)
  • Reading issues in ranked/structured/rewarding way: We can work on the top bugs, plans & wishes ordered by popularity

    • For example: The bugs on top will be most important and/or half-solved
      • also linked in our readme.md - "tidy" could be first in the ToDo-List, besides it is last in the ToDo list requiring permission and assumming new contributors reading it, while repeat-contributors tidy already. ) (You might also want to edit our Readme)

Clone this wiki locally