-
-
Notifications
You must be signed in to change notification settings - Fork 981
Contributing
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.
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).
You can help us to translate ImprovedTube.
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.
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
detailsor 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.
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.
- 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.)
- Name your feature's JS function the same as the toggle, but camelized - so that we may be able to automate calling features (later).
- 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:
-
We have some global variables & regex
-
The extension does not work with data much yet: https://github.com/LuanRT/YouTube.js/issues/976 (... )
-
We observe the DOM for changes to (re-)apply features as soon as certain elements appear. (If necessary / Troubleshooting)
-
We have our extension popup's GUI / re-purposable functions in a little library Satus.js
-
Rare: if your edit requires a difference in one browser: Add to our build.py.
Updating the name of a feature or option in our menu? - Import people's old storage!
We started labeling some discussions: Knowledge Base
-
Testing all Browser-Extension changes with 1 click: Extension Reloader & enable the option to reload the current tab too & set a nice shortcut like
alt+Echrome://extensions/shortcuts- (Reload for content-script changes. Others could also be edited in the directory where they are installed)
- Alternatively fully automatic: https://github.com/rubenspgcavalcante/webpack-extension-reloader
-
-
- store APIs / github actions/workflows + auto testing #842
-
-
Depending what feature you work on : https://github.com/kdzwinel/DOMListenerExtension, https://chrome.google.com/webstore/detail/visual-css-editor/cibffnhhlfippmhdmdkcfecncoaegdkh, https://chrome.google.com/webstore/detail/editthiscookie/fngmhnnpilhplaeedifhccceomclgfbg
- 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)
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 |
-
An editor to compare 3 Versions: Download (Alternatives@Wikipedia)
(Some YouTube versions: archive.org/2021/youtube, 2020, 2019)
-
Pull Requests by command-line:
gh pr create --base master --title "my PR" --body "fixing..."- Alternatively:
hub pull-requestacts as a wrapper forgit) https://github.com/github/hub- (Or if you hate all Pull Requests, we might allow you to make commits after a few PRs)
- Alternatively:
-
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)
- For example: The bugs on top will be most important and/or half-solved