Reliably Send an HTTP Request as a User Leaves a Page
css-tricks.com
css-tricks.com
Consequently, you can't actually expect to capture 100% of these analytics events nor even expect the percentage captured to stay the same over time since the filter lists are very regularly updated and users enable/disable different ad blockers over time.
More broadly speaking, once you have sent a webpage to the user, you should not expect anything from the user's browser. They may or may not allow whatever arbitrary JS you have on the page. They may even intentionally give you bad data (e.g. hijack the payload to give you intentionally malformed data).
edit: even more broadly speaking, there's additional reasons why you can't expect to receive these kinds of callbacks: consider what happens if a user loses connectivity between loading the page and them navigating away (e.g. their phone loses service because they went into an elevator before navigating away)
How sure are we about this? I'm pretty sure it depends on which market specifically you're in, and the data I'm about to show is of course not perfect, but it seems that not so many users actually do use adblockers today. Although I don't know a single developer who doesn't, and in some web applications I'm running, the majority of users do use adblockers as they are focused on developers.
Chrome is assumed to be the most popular browser (by a large margin last time I checked, so I won't bother to check again) and a quick search puts the user base around 2-3 billion users. Searching for "adblock" in the Chrome Web Store (https://chrome.google.com/webstore/search/adblock?hl=en&_cat...) shows that the most popular adblocker has a user base of ~300,000 users.
That makes 0.015% to 0.01% of Chrome users having the "AdBlock" extension installed. Not that substantial.
If someone has some more accurate numbers than my slightly-educated guess, I'd be happy to be proven wrong.
Edit: The above user base of the adblock extension is wrong. As Jabbles pointed out, I was seeing the number of reviews, not number of users.
So instead, the page lists "10,000,000+ users" so we can assume the true number to be above that, but below "100,000,000+ users" users.
That would put the amount of Chrome users using the "AdBlock" extension between 0.3% and 5% more of less. Closer to "substantial", but not sure if it would impact businesses choice regarding ads/tracking or not.
Can we? I can't seem to find anything that indicates if/when the next number jump is, just a lot of big name extensions at "10,000,000+". Back in 2016 ABP had a post about their extension alone having 100+ million active users https://blog.adblockplus.org/blog/100-million-users-100-mill... and that's ignoring the >50% of Chrome users on mobile which requires non-extension based blocking.
Going for someone else's numbers instead of trying to build my own I'm finding anything from 10% to near 50% with most estimates being in the range of ~25%.
> and that's ignoring the >50% of Chrome users on mobile which requires non-extension based blocking.
That might be true for Chrome users on Android, but Chrome users on iOS (which aren't as many as Android users although), there isn't a choice of any extension nor non-extension based blocking. Firefox on iOS doesn't even allow extensions, and only Safari seems to have ad-blocking. At least last time I checked, might have changed lately.
I'm not doubting you that some are, but to say that a significant portion of them are, would need some sort of evidence/source to back you up.
No, they simply said this statement:
> but Chrome users on iOS (which aren't as many as Android users although), there isn't a choice of any extension nor non-extension based blocking.
Is factually wrong as there is a choice; namely ad blocking VPN based apps.
Also these apps probably work differently than you're thinking. The "VPN" isn't a VPN in a traditional sense where your traffic goes to a remote server somewhere on the internet. Using VPN transport is just the method of convincing iOS/non-rooted Android to send the traffic to the app, which itself acts as the VPN server. Of course traditional true VPNs with ad filtering are also a thing but less common and more catered towards those already interested in true VPN service in the first place.
All that said iOS is hard to provide numbers showing usage scale being one way or the other as Apple doesn't publish them like other stores. If I had to guess iOS users would probably be the user group with the lowest ad blocking penetration though I wouldn't go as far as to say it's not worth noting. All of these smaller alternatives probably add up to more than the largest "normal" ad blocking method in the long run and ignoring them on an individual basis can significantly skew your overall result.
I thought the comment was made in the larger context of which I made my initial comment about, namely the "Keep in mind that a substantial portion of users now use ad blockers" statement, but I understand now that devmor in classic HN tradition chose to specifically answer to one part of my comment while ignoring the rest, and not making it clear what they exactly responded to.
But, in classic HN tradition, you choose to put me at fault for your inability to understand how you represented your own train of thought.
I still wanted to block them though... so I started killing all `navigator.sendBeacon` requests by replacing it with a no-op function on page load. [0]
I have the no-op function log the results to console and it's fascinating seeing all the sites attempting to use it.Some pages on Amazon will fire a sendBeacon request every second or so.
[0] With this uBlock Origin user script: https://gist.github.com/varenc/7c0c17eea480a03d7c8844d81e608...
Question about the user script. Blocking WebSockets I can understand as they can be used for exfiltrating data you don't want them to get a hold of. But why disable WASM? It can't be used for exfiltrating, and disabling it probably gives them a stronger data-point than just leaving it on, for when they are able to exfiltrate data (via CSS HTTP requests for example).
UBO already has a built-in set of powerful scripts[1], but I just wrote my own for fun. I think I could have done this by just using the built-in ones.
edit: This filter does the same thing just using the built in `set` script, but won't log to console:
*##+js(set, navigator.sendBeacon, trueFunc)
[0] - https://fingerprintjs.com/demo/[1] - https://github.com/gorhill/uBlock/wiki/Resources-Library
Interesting. Are there tools we can install to send malicious payloads to surveillance companies?
On the other hand, the more I read about stuff like this, the more disenchanted I am with the "modern web". When something as seemingly innocent as a link can "stealthily" do something else when it's clicked, but otherwise looks exactly the same as a benign one (and moreover, behaves entirely as expected with JS off), it really brings into question whose interests such features are designed to serve.
And for this one, you could. Native applications might seem like you'll "submit the form when you click on the submit button, but something else entirely happens" because it's a general computing environment, just like the web.
So in reality, it seems you're just against "modern" computing in general, not specifically the web. Because you can have that behavior anywhere, not just in the web platform.
Casual gaming is an excellent example of how this has changed. The whole purpose of the software is different. It used to be that you would buy a game—a piece of software purpose-built to entertain you. Now you are no longer buying a game; you are buying a value extraction device that uses a game as bait. Software just isn't built for users anymore.
This applies to a lot of things besides games nowadays. A lot of software (and certain hardware - "smart" devices, etc) are built/sold at a loss with the primary objective being to generate "engagement" and/or collect personal data. The functionality of the device is purely there as a bait to get the mark to buy/adopt the software or device and would not be there if there was a way to get the marks to "engage" anyway.
But it can feel as if the capability to act as a hypertext platform has disappeared, because you now have to worry about it doing things that are not aligned with this purpose. Remember, there is power in limitations, as type theory teaches us.
And even for use cases where more than simple hypertext is needed, there is still a vast, nuanced chasm between that and full-blown Turing completeness.
I believe the name Gemini was chosen to imply a middle-ground between Gopher and HTTP (Gemini was the NASA project between Mercury and Apollo).
A limited form of this already exists—noscript. Browse with JS off, but add exceptions for true web apps. It should be possible to expand on this to create a middle ground where certain JS operations are allowed (say, DOM manipulation) but most are not (no network requests).
I'm also against people working against my interest that only use pen and paper. Perhaps this issue is more about privacy and ethics than some judgement of being for or against some "modern" notion of computing.
Personally I'd prefer platforms that have privacy (and security) guarantees built in. Given the strong conflict of interests at play, I don't think we can expect that from any of the big players (if it's even reasonable at scale).
The biggest problem with the web is that it has been made into a general computing environment. Instead of creating another separate network - the web for docs, the app web for apps, with different url schemas etc - the web has been co-opted for this second case, thereby making it much less useful/safe for its original purpose.
In fact I run a number of VMs with no internet access to keep my tools under my control.
No need for that. Stop hoarding data!
Why do you think end-users install things like "uBlock Origin", or why do smartphone manufacturers like Apple introduce features like random MAC address generation when connecting to wireless networks? Why do people use VPNs in the first place?
Because data points are being collected without our consent to profile us, and most of us do not want that.
The type of differentiation you are talking about by definition lacks consent, because if you had consent it would be trivial, you could do it by cookies or other forms of identification that the user consented to.
How can you honestly not think that knowing an accurate count of visitors is a useful metric?
The first one is directly actionable insight. Increase your reach to iPhone users, as more iPhone traffic leads to bigger conversion numbers. While the later doesn't lead directly to any actionable insight, but a bunch of theory crafting, while stripping away any form of privacy (and being a juicy target for intelligence agencies and hackers).
Now, that is of course my opinion. Having touched projects that had collected both "lightweight" analytics data, and everything the user touches. I'm sure the later could lead to more experimentation, but in the context of that project it amounted to just hoarding.
Instead, for other types of actionable insight I would suggest surveying converted users. Of course there can be selection bias, and unless the UI is done right can be obtrusive UX. This is the exact information more data would help you answer (in theory), but rather than asking the user you're trying to read their minds by tracking everything about them.
At least, again, my opinion based on experience.
Your previous comment directly contradicts this. People who advocate for privacy, don't go out of their way to harvest data without consent.
Everyone jumps to the conclusion that just because someone is parsing a log means <evil> and that is not necessarily always true. Some of us want to respect user privacy but at least have a general idea of the number of people visiting a site.
Then again that would be fun to send enough nice bogus log information... As clearly that is what they want.
If you specifically want to track when a user leaves a page, you will miss a lot of events this way.
Of course there is no way to perfectly, reliably capture 100% of the events. Even if browsers had a dedicated API for that, a user could simply kill the process or pull the plug.
However, you can make sure you capture the vast majority of events. Clicking on a link or closing a tab are much more likely events than killing the browser or leaving a tab open for weeks.
(On desktop at least, might be different for mobile. But even there, you might want to track how many pages just stay open forever - which would also require you to track close events.)
A beacon sent for each click on links on the form's page will tell you how many users left for this or that other page, which is very useful to know and optimize by removing the link and/or bringing its contents to the page itself.
A beacon sent for each form submission attempt will tell you how many users make mistakes while filling in the form, how good the error messages are, and whether the users tend to fix their input or leave.
Bonus points for incrementing an "attempt" hidden field on each submit button click so that you can see how many attempts it takes for all fields to be filled correctly.
Tracking what works and what doesn't can drive a lot of UX improvements, for the immediate and measurable benefit of the user.
But again, no silver-bullet.
How can you tell?
> ‘Personal data’ means any information relating to an identified or identifiable natural person (‘data subject’); an identifiable natural person is one who can be identified, directly or indirectly, in particular by reference to an identifier such as a name, an identification number, location data, an online identifier or to one or more factors specific to the physical, physiological, genetic, mental, economic, cultural or social identity of that natural person.
No. How can you tell, as a user of any random website, that the script your browser is running as part of that page you've opened isn't shipping PII collected from your usage.
> > > > I’ve needed to send off an HTTP request with some data to log when a user does something like navigate to a different page or submit a form.
> > > No need for that. Stop hoarding data!
> > What's wrong with doing something like this? If it contains PII, then I agree, [...]
> How can you tell?
The context is from the perspective of the application developers who wants to log some data (unclear what exactly, hence my comment differentiates between PII or not) when user is leaving. The comment I'm replying to states "stop hoarding data!" but I'm pretty clear that's referring to hoarding PII, not any data. As you're the developer setting up this "send off an HTTP request with some data", it's clear to you if it's PII or not.
Obviously, as a user with JavaScript turned on, visiting a random website, have little to no control over what data exactly is collected and sent. That's basically the point of the web today, where application developers can write arbitrary JS applications that gets executed in the browser sandbox, and hence why it's so popular in the first place.
IP is technically PII in some places. Personally I am not worried if a criminal gets "my" IP in the same way that I am not worried if they have my phone number. I would be worried if they had my name address age bank account info etc, but then I don't give that out freely
That's not the definition of PII. At best, that covers a small subset of PII.
PII means any information that can be used to identify you, either directly or indirectly.
When you access a website combined with which link you opened or which search keywords you used can be used to infer who you are.
How do you tell if a script is not shipping that info to an undisclosed third-party?
That's kind of my very coarse litmus test for PII: If I'm not willing to post it publicly in a rando internet forum, it's probably PII. There are exceptions obviously, and the inverse is not true: I may be willing to publicly post certain PII.
Maybe that could be one good outcome of such an API.
Popups exchange long-term trust in your brand for short-term profits. Of course it's the case that if you pop a modal in front of everyone, your conversion stats will go up. But potential life-time customers who have faith in your brand and believe in your mission will lose trust in you quickly and probably never sign up in the first place.
For me, it always comes down to the primary rule of UX: if you wouldn't do it IRL, don't do it online.
You can ask for someone's email if they look like they're interested in something you're selling, but don't ask for it the moment they enter your store!
That could be the motto of most every modern MBA.
The lack of a Remote Strangulation Protocol (https://wiki.kluv.in/a/RemoteStrangulationProtocol) is a problem again.
Think of it this way: if the site that you have long term trust for does this, it means the previous methods weren’t working. The ‘trust’ was broken.
Would love to see your advice applied to your own life.
Sure, money might come from long term trust, but long term trust itself, literally, does not pay the bills.
What you don't realise is that x number of people join the list and x number of people tolerate being spammed with 'did you know we sell stuff' emails every day for the rest of their lives. x number of those people actually do buy something; likley the thing they intended to buy originally but joined the email list in case a discount code would be the subject of the first 'welcome' email because this is what they have been trained to expect.
All this has been A/B tested and, thus, has been 'proven' to be great business practice.
I’d happily trigger their exit intent handler and juice their “this feature is a total game-changer for our business!” reporting.
Little sad that Firefox not supporting an API only downgrades that API's browser support to "good" instead of "unusable" these days
Another example is trimming referrer URLs (just keeping the domain).
As a side note, I was somehow completely unaware of that feature (and I don't think in a "heard about it and forgot" sort of way). Every day is a school day...
There's Chrome and there's Safari. Rest of browsers are rounding errors. And even those rounding errors are mostly chromiums. Sad indeed.
Anyway, the best solution is to pass any links through a redirect which is responsible for logging the visit. That's how Google tracks what search results get clicked on. And it doesn't require any JavaScript.
I'm surprised they didn't even mention it as a possibility.
Social services where users want to signal if they are online/offline
Users who want to know how much time they've spent on a platform.
Closing down sessions for things that can be expensive to just run "forever". Think VMs and similar that gets started when the user visits the page, that you want to turn off when they leave.
The use cases are many, and there are also many other alternative solutions, this is obviously not the only one. But as always, all of them come with their own tradeoffs, so this technique might be the best for some of them.
The best you can hope for is a "happy path" where you can clear up a little sooner in most cases, but you can't rely on it.
If a user being on a webpage is holding open a resource, that might be an architectural issue.
That definitely is an architectural issue. Unfortunately it is essentially a cache management matter (cache invalidation considers when something becomes useless/wasteful, as well as when it becomes incorrect) which is a hard problem to solve.
There are legitimate circumstances where a user causes a long running prices to start, that it is wasteful to continue if incomplete when they vanish (because the result isn't going to be useful to another user, or even that same user if they return).
While you can't catch everything (the user's machine losing power or all connectivity, etc.) you can catch a deliberate exit. And in the case of a long running process, if the user's exit was accidental it is more likely that they'll be back and having continued the process is useful.
Closing off cached resources when a user vanishes is a good thing, it saves resources for other users and could, if I may stretch a little, have environmental impact. Noting that sessions tend to end after a particular set of circumstances could mean spoting something in your application that is annoying people, something that particularly in an SPA you might otherwise not easily detect.
Sometimes tracking is legitimately benign. It is only when unnecessary PII is included, and kept to track each specific user over time rather than just over a session, that it gets stalky to the point of begin in my "I won't do that" list (sharing the PII around further gets you on my "you are morally wrong for doing that" list).
> surprised they didn't even mention it as a possibility
The article is focused on detecting when a user leaves. While a fair amount if that will be detectable because they've clicked a link, it doesn't cover the large case set that is closing tabs and windows.
Something I might have to investigate (or search to see if someone else has): do any of these techniques work reliably on controlled OS shutdown.
What evil things were we doing? Well, I wanted to know if people were using the links I put inside popups, like to Google Scholar. Was anyone using them? If not, they were just so much clutter and should be removed for the users' benefit. I also wanted to get a list of outbound links by popularity, so I could write summaries/annotations for the most popular unannotated links, and rank dead links by priority for fixing (there are too many unannotated or dead links to 'just fix', so a ranking would've helped a lot).
But the link tracking never worked, so, I couldn't do any of that.
at least you don't have to wait for the timeout to expire if the user properly closed the application/website, which happens most of the time
Access to client side scripts on my machine has to be earned in trust.
Most websites never get that far, because they are broken without js.
Doesn't matter, saves me a lot of time ;)
I have zero interest in "apps that can improve my life". People have different interests.
Disclaimer: I write us for a living.
I agree that it's all about trust. Why would you ever enter information on a website you don't trust? What extra information can be gathered using JS that can't be otherwise? Or what is the exact harm done if they send extra requests to a tracking API?
My point is that once you access a specific website you consent with that website sending HTML/CSS/JS to your computer and executing it. The biggest problem those days is when that website is sending your information to other entities, 3rd parties, for other purposes than improving your experience. I think having "tracking" to detect errors, loading time issues and improving the user experience is perfectly reasonable if implemented in a proper way.
Just HTML and CSS in my case.
Apart from that, it is not only about privacy for me.
Actually I think that's the whole reason of introducing this attribute.
The only good thing coming out of this ping attribute is that it’s a lot easier for plugins to block it rather than intercepting javascript and domains.
https://github.com/gorhill/uBlock/wiki/Dashboard:-Settings#d...
Weirdest case I've observed in the wild is a site that works perfectly without referer header, except for logout. As usual for anything requiring referer it fails without a user-readable message without referer. If referer is sent, the logout procedure switches through multiple redirects and some waiting while js is doing something, server backend probably, too.
Some sites make weird assumptions about the network, the browser, and the user.
IE11 is the last browser that can reliably send a request before the tab closes (by using synchrous).
I swear telling the business guys that we had no way to run an action when someone closed the page had them nearly running back to IE. And for that specific functionality, I find it hard to disagree.
In our case, we lock entities when someone starts working on them, but now we have no way to unlock them if they fat-finger the close button, or press one too many backspaces.
On a general level, locking is a subpar solution for distributed systems. You should try to build support for automatic resolution of (most) edit conflicts instead, and forego locking altogether. If that's not possible, try to make the locks smart, e.g. so they auto expire unless periodically renewed.
At first thought I don't like it.
But at second thought I think that I like it. Issue is, webmasters will still track you, like it or not. But with those dedicated APIs tracking will be less annoying and those who can control their browsers, can disable that kind of tracking more easily (provided that they're even aware of those features).
Anyway I don't like the direction web standards are evolving. Why have so many custom APIs and attributes? There's already fetch priority flag, that should be enough. This is exponential explosion of APIs. Modern API designers don't know about concept of orthogonal APIs (or I don't know something).
Also <a ping attribute seems to track user even if he disabled JavaScript. Bad bad thing.
Oh wait, not on mobile, unless you're willing to deviate from stable releases or download a fork.
I feel tempted to write an addon that will catch tracking like this and just repeat every ping a thousand times across the rest of the day, perhaps with some permutations of the data these sites are trying to collect. If I can't stop you from collecting my data, I'll make my data useless to you instead.
I realize there are a lot of different strategies for addressing this situation, and I'd be curious to hear how others have solved this problem.
In the specific case of using sendBeacon, it is a little disheartening that once a basic programming tool gets abused by the analytics/advertising/tracking behemoths then the ad blockers' only recourse at times is to disable it completely. I completely support the efforts made by the ad blockers, but also find it sad how legitimate uses of certain tools end up getting blocked in the process.
A client browser can crash, the computer can lose power, the network can be unplugged, the router can crash, the internet connection can go down.
It doesn't matter why, there are many common reasons why you can't rely on an unlock signal, so must be able to deal with that situation. If you realize that from the beginning and design accordingly, it's usually easier to handle than realizing it later and trying to add special cases to catch it later.
For example, if you know the above is a problem, you might just opt to make a lock for a record the I'd of the locking user and the last lock update time, and update the lock every few seconds during normal operation when locked. If there's a problem, that user can pick up the lock without problem when reconnecting, but if any other user attempts to lock the record and the lock hasn't been updated in a minute or two, then consider it invalid and let the new user lock. Anyone attempting to edit a record with a lock that isn't too old is told it's actively locked and to try back in a few minutes. All of a sudden your lock release problems are automatically cleaned up by normal use, can be easiest found as needed by searching for old timestamps, and the person that has to deal with problems is the person with the behavior/system causing the problem.
There are obviously more complicated (and for some cases better) solutions, but the takeaway is to look at the problem and constraints as a whole and find a solution with the right trade offs given your needs, and not let the constant accretion of small features lead you to a suboptimal solution what doesn't work.
Other people have recommended CRDTs and Optimistic Concurrency control, which is great if you are designing an app from the ground up. If you have an existing large app that just needs locks, though, I recommend following the Chubby paper: https://research.google.com/archive/chubby-osdi06.pdf
Section 2.4 Locks addresses how Chubby thinks about locking in a distributed system:
It is costly to introduce sequence numbers into all the interactions in an existing complex system. Instead, Chubby provides a means by which sequence numbers can be introduced into only those interactions that make use of locks. At any time, a lock holder may request a sequencer, an opaque byte-string that describes the state of the lock immediately after acquisition. It contains the name of the lock, the mode in which it was acquired (exclusive or shared), and the lock generation number. The client passes the sequencer to servers (such as file servers) if it expects the operation to be protected by the lock. The recipient server is expected to test whether the sequencer is still valid and has the appropriate mode; if not, it should reject the request. The validity of a sequencer can be checked against the server’s Chubby cache or, if the server does not wish to maintain a session with Chubby, against the most recent sequencer that the server has observed. The sequencer mechanism requires only the addition of a string to affected messages, and is easily explained to our developers.
Although we find sequencers simple to use, important protocols evolve slowly. Chubby therefore provides an imperfect but easier mechanism to reduce the risk of delayed or re-ordered requests to servers that do not sup- port sequencers. If a client releases a lock in the normal way, it is immediately available for other clients to claim, as one would expect. However, if a lock becomes free because the holder has failed or become inaccessible, the lock server will prevent other clients from claiming the lock for a period called the lock-delay. Clients may specify any lock-delay up to some bound, currently one minute; this limit prevents a faulty client from making a lock (and thus some resource) unavailable for an arbitrarily long time. While imperfect, the lock-delay protects unmodified servers and clients from everyday problems caused by message delays and restarts
Check here: https://developer.mozilla.org/en-US/docs/Web/API/Navigator/s...
> However, this is extremely unreliable. In many situations, especially on mobile, the browser will not fire the unload, beforeunload, or pagehide events.
From my casual observation of Firefox (I use the network debugging tools in Firefox frequently) there isn't a column for priority. Firefox also does not show a status of pending, rather it just omits a pending status until a status becomes available.
navigator.sendBeacon = undefined
before any JS has a chance to run. You can also trap "beforeunload" listeners, or just delete them document.body.onbeforeunload=null document.onbeforeunload=nullAt a minimum, this kind of information is relevant to the people creating products like Heap or Amplitude.
I work at Heap and am just curious why you would still want to implement manually coded tracking.
I think there’s some utility in a company owning an abstraction away from a third party.
Supposing if Amplitude (or Heap) were to ever go under, or if we were to want to change Analytics providers for whatever reason, it would be extremely helpful if the code didn’t depend directly on these third parties.
On a smaller app, I would mostly likely directly use the Heap or Amplitude APIs.
(Late reply, apologies)
You get incomplete, inaccurate data.
It's also fun and good for curiosity to do something on your own rathern than rely on a service and never think about what browsers can do.
Mammon is the only thing that matters to a lot of primates.
There will never be market pushback as long as those externalities aren’t priced in. And Imho the only for that to happen is for governments to introduce regulation, e.g. by taxing the externalities so that “free” service providers are forced to be more upfront about the actual cost of their service.
First, haven't we learned already that any government regulation always ends up favoring the status quo? FAANG will be able to eat those costs right away and make it impossible for any competitor to rise up
Second, what happened with personal responsibility? We can still choose to patronize companies that do not rely on ads, we can still promote/fund the development of Libre Software that is focused on the users' welfare and not the corporations' bottom line. Most of us here on HN can even help other less tech-savvy people to avoid falling into those traps and educate them about less invasive alternatives.
When you say "the government should do X", you imply that we can not do it ourselves. And we pretty much can.
That premise is wrong. Government regulation has lately been mostly done on account of corporations which want to protect their monopolies and strengthen their position, but that doesn't make it inherently so.
If by lately, you mean "basically always", then I'd agree. I'd be hard pressed to think of any regulation that was successfully enacted and led to actual distress and disruption in the big corporations.
> that doesn't make it inherently so
Why would it be different this time? Can you think of any kind of policy that has any slim chance of passing and would get us rid of Big Tech? And by "Big Tech", I mean all of it, not just the ones that you don't like.
Yes, I do. The FSF does. The IndieWeb does.
> Just reign it in.
To think that this is possible without any type of damaging side-effect is a huge delusion.
Trusting more power to Big Government to try to control Big Tech is like saying "Look at all the destruction that Godzilla is making, we need to unleash King Kong to fight it".
The only stable solution to avoid global systemic catastrophe is by removing centralized power and redistributing it to local communities.
GDPR does not help, quite the opposite. It gave people some illusion of control but did nothing but scare smaller players into compliance.
Messaging standardization might actually turn out to be good, but only because none of the dominant companies are from Europe.
What are their options for search? I know DDG is an option, but even it seems to rely on Big Tech.
> Trusting more power to Big Government to try to control Big Tech
But it's definitely worked in the past. Government successfully reigned in a ton of industry. Sure, it hasn't reigned in Big Tech, but so much other stuff.
They're however doing whatever they can get away with, which is arguably way too much
The point is not about what the regulation stopped them from doing locally, the point is that no regulation that came into existence ever broke the power structure. It was never a threat to the ones connected to the elites.
Any regulation that does get approve ends up weaponized in favor of the big companies.
To illustrate: look at Dieselgate. If the regulations were actually meant to be serious, any scrappy company from Poland, Portugal or Bulgaria would have been absolutely dismantled out of existence. But VW got what? A symbolic fine, some Casablanca-style reprimands, perhaps a expiatory goat... but they will continue to have the support from the government.
What about tech? What real benefit has GDPR brought to the people? Nothing! It made only the small business owners scared of violations, got them out of running their own sites and into siloed Facebook/Amazon pages, and with their "social Media presence" on Twitter/Instagram. Tell me with a clean face how that "regulation" was in your favor and not of the status quo?
A lot of government interference was to the betterment of society, which you initially claimed to be impossible or at least to have never happened.
With that in mind, please tell me which part of "haven't we learned already that any government regulation always ends up favoring the status quo?" or "regulations only get to be enacted when they don't threaten the status quo" is goalpost-moving...
While you are at it, take your time to think about the question I asked you in the first response. What kind of policy do you believe could have any chance of being enacted and offer a serious change for Big Tech?
Not at all. A ton of government regulation is to fix an ongoing problem by changing the status quo. Meatpacking regulations after "The Jungle". The EPA, Clean Air and Clean Water act. Mandatory seat belt laws. The list of "government saw problem, fixed with regulation" is huge.
In particular, with FB/Google, the status quo might crumble without ads. Or maybe they'll go to less targeted ads and only make a ridiculous amount of money instead of an insane amount.
How do clean water requirements, power grid requirements regarding frequency and such, and things like the USPS favor the status quo?
Also, do realize that even these requirements never translated into any kind of service guarantee. It does not solve the overall issue.
Case in point: "clean water requirements" in the US did not stop mega corporations from turning bottled water into a multi-billion dollar market, and it only pushed "dirty" manufacturing to China.
>It does not solve the overall issue.
It makes it a whole lot better then it would be otherwise. Power companies can and do get fined for not doing what they should, a power that would be beyond the ability of an individual to do.
Because of things like the USPS damn near anyone in the US can mail something to anyone else for a decent price which is a net positive for society.
> Power companies can and do get fined for not doing what they should.
Yet, they still manage to be profitable and in some cases even get government assistance when they fail, when the long-term, "systemically healthy" solution would be to have a framework that allows more diversity in service providers and that does not depend on the survivability of any single entity.
Look at Texas and the winter brownouts. Their grid fails whenever it gets so cold to the point that generating energy is not lucrative. Paying the fines is favoring the status quo.
"Being a net positive for society" is at best an accidental side effect, not the point of any regulation that gets to be enacted. And there are other ways where we can get the societal benefits without giving away power to these corrupt institutions.
My local non-profit power company is a data point against that position. There are many others.
>Look at Texas and the winter brownouts. Their grid fails whenever it gets so cold to the point that generating energy is not lucrative.
The portions of Texas not on the ERCOT grid which are connected to the federally regulated grids preformed much better than the ERCOT grid because they have regulations, with punishments if they don't follow them, the government requires.
>And there are other ways where we can get the societal benefits without giving away power to these corrupt institutions.
How is the USPS corrupt to the scale you imply?
Was "your local non-profit" responsible in the elaboration of any of the regulation? Are they in any condition to threaten the status quo? Can they disrupt the market at a global scale or are they just sticking to being a "local, non-profit" entity?
It seems we are talking about two different things. You want to defend regulatory action as a valid mechanism for societal progress. What I am saying is that these mechanisms historically only worked when the status quo could benefit (or at the very least not threatened) from it.
The problem is that I am feeling like I am arguing a strawman (regulations are always bad!) when my point is that calling for regulations for Big Tech will do jack-shit to actually solve any of the issues affecting society, and more likely than not it is just going to help Big Tech cement their dominance.
This breaks down when some body else's lack of personal responsibility impacts me. For example, a drunk driver colliding head on with me on the highway. In this case, it's everyone else gravitating to "free" services which in turn make them so ubiquitous that it's near impossible to escape. Even though I don't use Gmail, I'm still impacted when all my contacts use it to send me email.
Sure, I guess I could be personally responsible by disowning those contacts, but that's in the extremes.
> This breaks down when some body else's lack of personal responsibility impacts me.
Climate change and the ongoing environmental collapse is a good example of such failure.
No, you are not. Even if you wanted to treat it as such, you could drop all incoming email from google, or auto-respond to people saying they need a different email address to reach you.
And if you think that doing that is a bad idea at the individual level, ask yourself why would it be acceptable at the global sphere.
/s
Seriously, the free market and personal responsibility have not worked. Let’s try something else. At this point, I’ll take some potential negative externalities over this shitshow.
Wherever I get to maintain a proper "digital hygiene"*, I don't have any of these issues that people love to complain about. But I would bet that whatever regulation gets to be approved, it would not only be ineffective to solve the issues that affect the majority, it would make it harder for the minority that still manages to get away from them.
* a simple set of rules to live by.
- prefer free-software solutions for all use cases that satisfies your hard requirements, even if they miss on the "nice-to-haves".
- self-host as much as possible: see all services you are paying currently and look for existing open self-hosted alternatives. Get an old computer or laptop and run these. Invite your friends and family. If you are not technical, find someone in your close circle that is and ask if they are interested in doing it, offer to help with the costs.
- If you don't want to self-host, find service providers that offer these open source services.
- use Brave: complain about crypto all you want, it is the only web browser that gives control to the user and that promotes a business model where creators are rewarded directly by the consumers.
- use the received BAT to be as generous as possible with open source developers. 5 bucks a month might not mean much, but if 10% of internet users did that I guarantee we would kill all the app stores and their abusive practices.
- Do not rely on streaming services. I'd rather pay for a private tracker to download what I want than finance Disney/Comcast/HBO/Amazon/Apple to increase their cultural dominance even further
- use alternative frontends whenever you have to access youtube, twitter, medium.
telling a bunch of software engineers to do things themselves is never going to solve the problem, it’s like telling the pope to go to church
the problem is everything else happening to the average people in the world around you - you’re subject to it whether you like it or not. As long as you live in a society problems that facebook twitter and other social media platforms you dont use are causing are going to be your problems too, no matter how deep you bury your head in niche web browsers and self-hosted blogging platforms.
Did you read the part where I said "invite your friends and family", or you just jumped to write such a thoughtful response?
My parents don't care about Facebook, Twitter or whatsapp. They care about being able to see and talk with their grandkids. If I tell them that they can do that by using a different app, they will install the app without second thought.
If they want to continue using Facebook/Google, they can. But the important thing to me is that now they are less dependent on Facebook and they have an option.
It's always worth remembering that only 5% of the adult US populace can complete a task like finding and applying for a job using only web technology†. Being able to self host is a skill that maybe 0.1% of the populace can do, being generous.
An important life lesson is knowing that just because you can do something doesn't mean everybody, or even a majority of people can.
I don't like to just drop links, but please read https://medium.com/incerto/the-most-intolerant-wins-the-dict... and see if you understand how it applies to what I am proposing.
It requires too many technical skills to work.
Alternatively, it requires too much money to hire the technical skills to work.
If it doesn't work for the majority (even a reasonably sized minority) of people, regardless of being borne of the best of intentions, it's not a viable alternative. Period.
> It requires too many technical skills to work.
What is about Mastodon that requires technical skills that Facebook or Twitter do not? The fact that they are required to know the name of the instance when setting up a client?
Just like they learned (conditioned could be a better word) into putting all their data into their shiny smartphones, people can learn something like "to use this you need your username and the server name, like email addresses". And if you tell me that some people don't even know that and had someone else setting up their facebook for them, why can't this "someone else" set up an ActivityPub client as well?
> Alternatively, it requires too much money to hire the technical skills to work.
I don't think I charged anything from my friends and family that asked to get access to my matrix server. I also don't charge anything from those that got an account on the Jellyfin box I run. I also didn't send an invoice to my wife or parents for helping them setup Element on their phones.
"Ah, but this doesn't scale!"
Sure, if it's just me doing it won't. But there are already other people that learned once and managed to teach others.
> it's not a viable alternative.
Do us both a favor. Instead of making absolute statements based on incomplete information and your prejudices, find a way to prove me wrong.
Get one of your current vices (Twitter? Instagram? TikTok? WhatsApp? iMessage?), and do your best effort to use the open alternatives that exist. For the social networking stuff, you will quickly see that the only "problem" is that the people you are used to seeing are not there. Instead of shrugging your shoulders and going back to the old ways, see how many people you can bring along with you.
I'm not even asking you to delete your current application. I'm just asking you to try to use the open alternative and help as many people as possible to join you. If you find any reasonable justification that prevents you or your peers to adopt the open alternative, then I will believe you.
I’ve been on my local school board for 20 years and the changes happening due to social media are staggering (for children and adults). My lack of participation hasn’t changed anything. Telling people not to participate will not work because you’re rivaling companies that pay experts tons of money to get people addicted to these things. As individuals we’re massively out-gunned.
I’ve started working with and donating to advocacy groups looking to regulate these companies because I haven’t seen anything else even begin to work.
I am also saying that there are a good number of people that think this is not a problem, so I don't want to waste my time and energy trying to convince them otherwise.
Including progressive taxation? Public schooling? Pensions?
If so, how do you explain the end of feudal societies?
> what happened with personal responsibility?
Responsibility comes with power and freedom of choice.
When we can only choose between living under corporate surveillance or living without phone/Internet access/etc there's close to no freedom.
Typically the reason is, that they don't know how to do it any other way.
We are rich in compute and we don't feel the need to optimize anymore. Optimization is an afterthought or a never thought and features run the world.
0: https://spcodex.wiki/wiki/Billy_Corgan_2022-02-06_(early_sho...
We have competent design tools running in the browser now… we’re doing fine.
[1] https://support.microsoft.com/en-us/office/turn-off-office-a...
[2] https://docs.microsoft.com/en-us/troubleshoot/windows-server...
https://www.extremetech.com/computing/261148-modern-computer....
Going through dozens upon dozens of layers (ever increasing) just to draw a rectangular box with some text inside is creeping complexity.
So, yes, I am fine on my beast machine, still the direction is wrong for me.
20 years ago software was running locally. Now, it must communicate with mothership for every action you make. Tools running in the browser are slow, because they use the browser to get user input or to display information.
In particular, this image offers a nice comparison of some newer and older pieces of software: https://pavelfatin.com/images/typing/editor-latency-windows-...
That said, typing isn't everything, but there are stark differences even in something so basic.
People noticed that the windows built-in terminal app has noticeable latency, and when the WSL1 team implemented their own terminal app, they ended up with much better latency [1]. I wonder if this input lag test was done using the built-in terminal or this WSL1 terminal.
It barely chugs through on my 2018 iPad Pro. Every click takes actual seconds to load.
In what world was anything faster 20 years ago? Do these readers not remember waiting minutes for their computer to start up?
It took like 3-5 seconds at least, growing up
reader-view doesn't show the images, and for me the webdesign is too hostile to read the content without reader-mode.
Please don't build websites that are attention-expensive to consume, everything about it is terrible.
If your content is text, ship it on a neutral background, everything else is not acceptable.
Regularly happens in "book world". Chapter headings are often an entire page, and sometimes even a double spread. The average whitespace around headings on the three closest books at hand were all 1/3rd of the page, making that decor even greater than the 20% you're describing.
You can't expect everyone to reverse engineer your browser to make your reader mode experience better. Reader mode is explicitly a client side algorithm, parsing and displaying a document for you, the user. If reader mode doesn't work right for you, you should file an issue with your browser maker. After all, they're the ones that designed the algorithm to partially hide the contents of the web page for you.
For what it's worth, I have no issue viewing the images in Firefox's reader mode.
I can't see any super distracting content on this page anyway. There's a black side bar and the text is almost black on white. Perhaps you're referring to the header, but even that's mostly white and black. There are definitely some places where accessibility can be improved, but this is hardly "not acceptable".
This kind of thinking is what got us brutalism. I think I prefer the embellished versions.
The person who made this website apparently prefers something different to you and me.