Retaking The Web Browser, One Small Step At A Time
Browsing the web is a 3D tug-of-war between developers, companies, and users. These forces were never balanced, but we have reached quite a lowest point for users in the last decade. Our beloved web browsers feature roadmap has catered more for web developers and the companies behind each browser project than for the user themselves. We used to call those apps User Agents, but they have been less of an agent on behalf of users these days. Removal of beloved features, questionable specs, creating friction in the name of security, it is death by a thousand paper cuts for users with the browser turning into an appliance for running third-party apps. What about the user's wants and desires? Well, all that is left for the user is to rebel and take the web experience back into their own hands, one small step at a time. In this brief post, I will show you how I am slowly making my browser of choice more suitable for the experience I want by changing little things and making little interventions.
TL;DR: I'm gonna gush about bookmarklets and web extensions. This post is a little essay on how I'm using them on my day-to-day browsing to make the browser experience my own.
Bookmarklets, or, grafting features into the browser
Wikipedia defines bookmarklets as:
A bookmarklet is a bookmark stored in a web browser that contains JavaScript commands that add new features to the browser.
— Source: Bookmarklet - Wikipedia
Which is a quite dry way of saying that a bookmarklet is a tiny morsel of code that you can click and execute in the context of the page you're currently reading. They used to be a lot more popular but are now a niche that is more popular among power-users and developers. We should all be using them and sharing them around cause bookmarklets don't need approval by the browser makers or the website owners to work. They are an easy way to spread bespoke features on the web.
In a previous blog post, I described how I created a small web interface to post on my blog. That interface is just a small static client for a micropub API service on my blog.
With that in place, I started by adding a bookmark to the editor to my browser bookmark bar thus allowing one-click access to the posting interface to my blog and reducing the friction between web browsing and blogging. Whenever I'm browsing, if inspiration happens, I can with a single click start blogging about it.
Sometimes, I forget to add all tags I need to a blog post. Normally, to fix that, I'd need to open the editor and add them, but since my blog supports micropub, I could simply write some Javascript to ask for a list of tags and submit a micropub update request to my blog and save that as a bookmarklet. Now, I can update tags on any of my own posts with one click on the bookmark toolbar while I'm reading the post.
The Web should be a conversation and not a one-way media like cable. It is the only mass media we have where everyone can be present and share their own ideas, dreams, and cat photos. Blogging is a wonderful way to keep a presence online. Being such a fan of blogging, it is no surprise that I want to make my web browser more friendly to blogging.
My web editor supports some URL query parameters that allows me to prefill the interface with content and title. That led me to create another bookmarlet, one that enables me to select text on any web page and compose a blog post quoting that text.
Bookmarklets are powerful, especially when you combine them with custom URL schemas for the applications you use the most. Many desktop apps provide a way to use URLs to open them and perform some action. On macOS it is common for apps to not only provide that but there is also a blossoming ecosystem built around x-callback-urls
.
The goal of the x-callback-url specification is to provide a standardized means for iOS developers to expose and document the methods they make available to other apps via custom URL schemes. Using x-callback-url, source apps can launch other apps passing data and context information, and also provide parameters instructing the target app to return data and control back to the source app after executing an action. Specific supported actions will be dependent on the individual apps and will not be discussed in the specification.
— Source: Home | x-callback-url
I use Yojimbo on my mac to keep my notes and other private information. The developers are Bare Bones Software made some bookmarklets to archive and bookmark sites with Yojimbo. I use them all the time when researching things for my stories and software.
By using bookmarklets and custom URL schemes, you can reduce the friction between the vanilla browser experience and the way you actually want to use it.
WebExtensions as intervention and rebellion
WebExtensions goes by many names — Firefox Add-ons, Chrome Extensions, etc — but they are all the same: small software that you add to your web browser to get features that don't come with it. Chances are that you, dear reader, already got some WebExtensions on your browser and you might think that you don't need to read what I'm about to tell you, but I urge you onwards cause I want to talk about the why's of WebExtensions and not really the tech behind them.
Probably the most common type of WebExtension, the one that most people install when they migrate to a new web browser, are ad blockers. The Web has been littered with ads and it is out of control. Not only they distract you from the content you're trying to get, but they also consume resources and track you across site boundaries. The second type of WebExtensions that are super common are add-ons that provide features tied to some third-party service such as grammar checkers, or product search, etc. This is my own guesswork, I have no data on that. Let's not talk about those two cases, I want you to think of WebExtensions first in terms of an intervention.
When you install a WebExtention, you're essentially telling the browser that "you are not happy with the experience they provide, and you're trying to make it better.", you are interfering with that experience and trying to make it more suitable for your taste.
Even though each web browser provides thousands of WebExtensions on their official WebExtension marketplaces, you can also make your own so that the browser behaves how you want the browser to behave.
Very often I see a web site for an event that is so far in the future that I'm not sure if I can go. If I decide to trust my memory that I will remember the event closer to the date, I will for sure miss it. So I made a Firefox Add-on to help me remember to go back to a page on a specific date. It works by creating an iCalendar file and downloading it to your computer. Opening that file adds an event in the default calendar application prefilled with the address for the page and the date I selected. It is very handy.
I'm a huge fan of RSS feeds and am making my own blog reading app. While my own app is not usable, I'm still using other apps such as NetNewsWire and Rad Reader. I miss the days that Firefox would surface feeds by adding a RSS icon to the search bar. They made the web worse when removed that feature in my opinion; so I added it back with an add-on I made.
The "Feed and Blogrool Discovery" add-on will add a little icon to the address bar if it detects a feed or blogroll on the website and then you can use it to copy the link and paste into your favourite blog reader.
With each little intervention, I'm rebelling against the idea that a web browsing experience is a one-way consumption process. Not only I'm reducing the amount of clicks and effort between blogging and reading, but I'm also adding the features I want.
Today, I created yet another Firefox Add-on. One that has a target audience of one. It is made just for me, it won't be available on AMO. Firefox Add-ons can open sidebars.
A sidebar is a pane that is displayed at the side of the browser window, next to the web page.
— Source: Sidebars - Mozilla | MDN
A cool aspect of sidebars is that they can keep open while you switch tabs thus allowing a persistent interface while you browse different websites. I used that to open my blog posting interface as a sidebar making Firefox into my own editor for my blog. I can now open and close the editing interface and compose posts while browsing without moving away from the editor even if I need to switch to different websites to do research.
I also created some other add-ons that are more rebellious towards the experience I'm being provided by third-party web sites. An example is how Goodreads provides links to books in Amazon –considering Amazon owns Goodreads that is understandable – I don't use Goodreads, so I created an add-on that adds a button to Goodreads to search the same book in Storygraph. I also used to have add-ons to remove sponsored content from Facebook and Twitter even though I stopped using those platforms as of lately.
With each intervention, I'm making the browser my own. I'm not creating a product or a service that I will ship to mass markets. I'm tailoring my subjective web browsing experience to suit me. If any of the changes I make seem interesting to other people, I go on and publish them on AMO and other places.
Web Browsers could make it even easier for us to add new features and tweaks to them, they don't do it cause they're afraid people will simply copy and paste stuff from chatbots and web pages without understanding the associated risks. That is understandable, people will do that and will be in trouble. That doesn't mean we should not strive to make browsing a pliable experience. In this tug of war, we need more users pulling the ropes towards themselves.
We don't really know the reasons why in ancient times people would leave their handprint on a cave wall, but we can say they were making a mark. Showing their society and the world that they were there, that they were making that cave their own. We must add our own little handprints to the browser. We need to make them our own. We are the users and they are user agents.
I would love to learn about your tweaks to your browser and your interventions. If this little blog post inspires you to write about this on your own blog, please send a WebMention to this URL. The cave becomes more fun if we're all adding to its walls.