diff --git a/content/programming/new-tab.tree b/content/programming/new-tab.tree new file mode 100644 index 0000000..01b9e1f --- /dev/null +++ b/content/programming/new-tab.tree @@ -0,0 +1,194 @@ +%% title = "on changing the Firefox New Tab, and software freedom" + +% id = "01JX0G5CN5H8S7S3M4619R112A" +- the date is 4th of June, 2025. + +% id = "01JX0G5CN5NYWPNCRTDF05NA26" +- a young riki moe comes up with a _\~brilliant\~_ idea: + +> I will customise my browser's New Tab page! it'll be so cool, i'll put some cool artwork there and it'll be way more fun to look at than my current `about:blank` + +% id = "01JX0G5CN5J7N58SKKH6KN09YF" +- so he innocently opens a blank .html file, and starts typing away. + + % id = "01JX0G5CN50MBYT24D1MRK982H" + - armed with his text editor and knowledge of web technologies, he conjures up a minimal, yet aesthetic New Tab. + + % id = "01JX0G5CN5DM7E3WH3YZP1701D" + - pleased with the result, he goes to his Firefox's settings, sets the page as his homepage, and goes to also set it as the New Tab page... + + % id = "01JX0G5CN5K0PR3QHFHC3C3T87" + - only to find that there is no such option. + +% id = "01JX0G5CN511DJ29F4J7YF7F6R" +- bemused by the asymmetry in the browser's Settings page, he turns to [Kagi](https://kagi.com) in search of answers, and finds [this page](https://support.mozilla.org/en-US/questions/1085762#answer-786861), where a community member says: + +> Firefox 41 no longer uses the browser.newtab.url setting in about:config because it was constantly attacked by malware. Starting in Firefox 41, you need an add-on to change the new tab page. + +% id = "01JX0G5CN514HQC0HJHV0DPXZW" +- Sigh. + +% id = "01JX0G5CN5MGPAJNPNRJJWYFCP" +- so he turns to an extension proposed by the community member, only to find its UX subpar. + + % id = "01JX0G5CN5EMKHBQ4XT7V57S6K" + - he opens a new tab, and the address bar is focused, but the URL is not selected... so to type over it he has to hit `Ctrl A`{=html}, and only _then_ he can type in his search query. + + % id = "01JX0G5CN57RJH0Y4PCNWY6BFC" + - (we'll glance over the fact that this whole affair required him to set up an entire web server on his PC, because extensions can't navigate to `file://`.) + +% id = "01JX0G5CN5WRF5WXAPZZZD4TA5" +- he decides to declare a bitter victory, and goes to sleep for the night. + +% id = "01JX0G5CN58DPB7S5E9RGHE821" +- ... + +% id = "01JX0G5CN5MP38ZHWT4KQPD8QH" +- the next day. 5th of June, 2025. + +% id = "01JX0G5CN533256QHE8KK80JSG" +- unsatisfied with the subpar UX, he decides that he must create a browser extension himself. + + % id = "01JX0G5CN5SZGQ3CTT9DP8QJVF" + - so he turns to [Mozilla's official documentation](https://developer.mozilla.org/en-US/docs/Mozilla/Add-ons/WebExtensions/Your_first_WebExtension), and conjures up his first ever `manifest.json`... + + ```json + { + "manifest_version": 2, + "name": "riki's new tab", + "version": "1.0", + "description": "riki.moe's new tab page!", + "icons": { + "48": "icon-48.png", + "96": "icon-96.png" + }, + + "chrome_url_overrides": { + "newtab": "index.html" + }, + "chrome_settings_overrides": { + "homepage": "index.html" + } + } + ``` + + % id = "01JX0G5CN5SSANM732FB8M6ZSV" + - and with `about:debugging`'s help, installing the extension temporarily, everything seems to work! + +% id = "01JX0G5CN57TB4QYCGQQ14B6HV" +- so, as suggested by [another guide](https://extensionworkshop.com/documentation/publish/package-your-extension/), he zips up the extension's files and goes to Firefox's Extensions to install it permanently. + +% id = "01JX0G5CN591B70QCPGJJFE191" +- but what's this!? + +> This addon could not be installed because it appears to be corrupt. + + % id = "01JX0G5CN5VJJ02N2JVMHHGQ49" + - okay now folks. This [browser]{style="color: var(--syntax-function)"} is [Pissing]{style="color: var(--syntax-function)"} me off. I'm the original [ ]{style="white-space: pre;"} [Starwalker]{style="color: var(--syntax-function)"} + +% id = "01JX0G5CN547317B3MJ248MZQZ" +- so! he looks for any issues with his packaging. +maybe there's an unneeded subdirectory? +maybe there's a missing extension ID? + + % id = "01JX0G5CN5JNV1BTNJZFSR0GEP" + - or maybe Firefox is stopping him from loading the extension... just because? + +% id = "01JX0G5CN5XF90PKNZY888MM60" +- so he takes a wild guess: _a cryptographic signature, it must be!_ +and looks for a way to bypass that. + + % id = "01JX0G5CN5Y817KP7TYAB5ERK0" + - because, fuck that. + why would you need a signature on an extension you're not even gonna share with anyone. + +% id = "01JX0G5CN5J2ND0NNKQ1SD87TF" +- and a promise appears! _Firefox Developer Edition_ ~(Electric Boogaloo)~ + + % id = "01JX0G5CN5KH4PF43CRKW06N1J" + - apparently, there's a special version of Firefox that can load unsigned addons! + so he tries to load his .zip file in that, and... + + % id = "01JX0G5CN52V5WWHJ6H0KHA83C" + - it doesn't work!!! :oh: + +% id = "01JX0G5CN5YPQYSD7TSNJ5JKPW" +- dismayed, he decides it is time to sign the Deal with the Devil. +he will cryptographically sign his addon. + + % id = "01JX0G5CN507D4J286EBQ81DRJ" + - but... that requires a Firefox account. + and an API token from that account. + that you pass in via a command line parameter, because fuck security, I guess. + + % id = "01JX0G5CN58HQ49AN421DM0CKE" + - (imagine going through all that security charade, only to find out the official toolkit for web extensions requires passing sensitive credentials in an insecure way... ain't that fun! good thing `fish --private` exists, but huge kudos to all the other processes on my system that may have read `web-ext`'s command line arguments while it was mincing away at Doing the Signature.) + +% id = "01JX0G5CN5QQ5W6Y1S9PRTYBSE" +- and a 10 minutes later-break later, he has an .xpi, ready to be chewed on by Firefox. + + % id = "01JX0G5CN5SD0MJ5QY9KJCTZQ5" + - and all that. + to change his New Tab page. + + % id = "01JX0G5CN5V3RVY3CTAHY5RA6G" + - God bless America. + + % id = "01JX0GYAZY3D902X36X7Y1BG6Z" + - freedom of voice, freedom of choice...! + +% id = "01JX0G5CN5HHEZ8G2YGBPC562S" +- okay now, story time's over. +as already established, we've teleported ourselves to the US of A, so Now, it's Interrogation Time. + + % id = "01JX0G5CN5EF3CE30MQ2YYZSFW" + - why the fuck is this not just a setting. + + % id = "01JX0G5CN5BF7PD99J064M3HDZ" + - "because malware." excuse me, but why the fuck is malware allowed to touch my Firefox settings. + + % id = "01JX0G5CN5BXAPZ43AYEKGDRV5" + - and why the fuck does loading an extension into Firefox require sending its details to Mozilla and adding it to your online developer profile. + + % id = "01JX0G5CN5R6VS27M5GN8WZBP2" + - what if I don't have an internet connection at the moment. + + % id = "01JX0G5CN50FY3Q2FYM44366TS" + - what if my addon contains sensitive data that I _really_ don't wanna send to foreign servers. + + % id = "01JX0G5CN5MAAGAWRS944E8TSH" + - or what if I just want to change my fucking New Tab page to something I like but don't necessarily want to share with others. + + % id = "01JX0G5CN59TGB6HVKCC1PZEEB" + - EVEN IF it's unlisted and nobody can see the addon, this *ABSOLUTELY SHOULD NOT BE NECESSARY.* + +% id = "01JX0G5CN5FC4RQH8K0RFPESSQ" +- but hey! at least I have cute furry art on my New Tab page now. + + % id = "01JX0G5CN5DQ6EZZQ2H1052X00" + - was it worth it? + + % id = "01JX0G5CN5T9DPBGQY21ZSHTYY" + - ...eh, maybe? + I'll let you judge that. + + % id = "01JX0G5CN56GC7QS0A40D3V4HN" + - I'm just sorely disappointed at where we've come, where even changing your browser's New Tab page to something custom is considered a security vulnerability. + + % id = "01JX0G5CN5SCQFHJ1Q8P74AYYK" + - and this post is not meant to throw flak at Mozilla or, god forbid, any specific individual (or individual_s_). + I understand where a lot of this additional security barrage comes from, and out of sheer care for regular users, I agree with it. + + % id = "01JX0G5CN5YFV15HV6YWJ14G8K" + - what I don't agree with is how in the name of security, we're taking away our collective freedoms as human beings. + + % id = "01JX0G5CN54C2GM4BGYVRT9FR2" + - I feel insulted that I cannot change the way my browser looks to make it feel more at home, and express my belonging to a subculture. + +% id = "01JX0G5CN5XVJXCFMQ99XJENAA" +- and that's all I wanted to say. + + % id = "01JX0GYAZYJA8R8W5P7RS55TK3" + - this was supposed to be a fun post like, "hey, did you know you can put cool shit on your New Tab page?" + + I'm so disappointed it came to this. diff --git a/content/treehouse/new.tree b/content/treehouse/new.tree index fc06fec..371207f 100644 --- a/content/treehouse/new.tree +++ b/content/treehouse/new.tree @@ -26,6 +26,13 @@ if you've been wondering what I've been up to, you've come to the right place. if you want to read any of the posts, follow the links. it's like that by design. +% tags = ["programming"] + id = "01JX0GYB1D4W3A6FRPBG738N4F" +- ### [on changing the Firefox New Tab, and software freedom][page:programming/new-tab] + + % id = "01JX0GYB1DSPZEKZK9JWZC12FY" + - a rant on how we keep locking down our software and taking away our freedom of expression in the name of security. + % tags = ["music"] id = "01JQYKYRF2RRY2DEV2Z8MSYJ4F" - ### [Kettel - Dubio][page:music/dubio]