Hacker Newsnew | past | comments | ask | show | jobs | submitlogin
YouTubePluginReplacement.cpp: YouTube-specific code in WebKit (github.com/webkit)
245 points by goranmoomin on Sept 18, 2022 | hide | past | favorite | 134 comments


Chrome has something similar here: https://source.chromium.org/chromium/chromium/src/+/main:chr...

We accept contributions from other sites (e.g., Vimeo, Dailymotion, etc) who wanted to replace their long tail of in the wild embeds prior to Flash removal.


Thanks for your work, Dale.

IMO this was good practice to keep the web running smoothly at the time.

It is reminiscent of Windows 95's specific code to see if SimCity is running, and allocate memory differently if it was.

> Jon Ross, who wrote the original version of SimCity for Windows 3.x, told me that he accidentally left a bug in SimCity where he read memory that he had just freed. Yep. It worked fine on Windows 3.x, because the memory never went anywhere. Here’s the amazing part: On beta versions of Windows 95, SimCity wasn’t working in testing. Microsoft tracked down the bug and added specific code to Windows 95 that looks for SimCity. If it finds SimCity running, it runs the memory allocator in a special mode that doesn’t free memory right away. That’s the kind of obsession with backward compatibility that made people willing to upgrade to Windows 95.

from: https://www.joelonsoftware.com/2000/05/24/strategy-letter-ii...


When I was at Apple in the mid 90's (Before Steve) I remember the Mac OS source code had tons of special app checks, mostly for various Microsoft (also others) apps that did odd things, so that older versions would keep running. When they were working on Copland, I thought it was nuts to write a new OS from scratch, but still do reimplement the hacks so that everything would still run. Good thing it all went away.


They’re still there. IIRC there’s a whole workflow/category in Radar for it.


Wait, I thought the only workflow supported by radar was ticket filed -> ticket ignored -> product eventually EOL -> ticket closed


probably only a 50/50 chance it gets closed tbh. Either way it's in a black hole to the reporter so they'll never know.

(I actually liked radar though, as bug trackers go - by far the best internal tool apple has imo)


My astonishment is that Microsoft knew about SimCity. I was 15 in 1995 and I thought the world was so big that Microsoft couldn’t possibly know about the myriad of software that their OS could run.

It turns out the world was so small that Microsoft could, probably, inventory less than a hundred products that made 99% users happy.


Raymond Chen talked about how periodically the devs were tasked with getting a handful of software purchased at CompUSA or w/e out of a grocery cart, opening them up, installing them and testing that they worked with the then-unreleased Win95.


Move slow and don't break things


If you want to make the big bucks, move fast and don’t break things.


When people don't have the ability to update for very low cost


> I thought the world was so big that Microsoft couldn’t possibly know about the myriad of software that their OS could run.

At large enough scale, 1 in a million is next Tuesday - https://learn.microsoft.com/en-us/archive/blogs/larryosterma...


The comparison is apt. The multiprotocol thick client platforms we call "web browsers" are easily on par with operating systems in both their complexity, and their mission criticality. LoC has never been a great comparison measure, but I'd anticipate that all current evergreen browsers have more lines of code than Windows 95 did.


Very cool and very swag, but down this road lies nightmares. I respect the dedication to backwards compat but we shouldn’t pretend this kind of thing has no cost.


Yeah why fix bugs when you can just enshrine the bug as a feature.

Backwards compatibility like this is a mistake.


Back then you couldn't just bug the game developer to issue an update patch, and anything significant breaking between Windows versions affects Windows adoption and not the adoption of the software the user is actually interested in. We see the latter even today, with Windows 8 being a failure for how much it changed and broke user workflows and Windows 11 getting a decent bit of pushback too.

In a way this realization is what's finally making Linux viable for gaming. Instead of expecting developers to bring compatibility and bug fixes, have the system provide it and suddenly you can even have an entire gaming console designed for PC gaming on Linux, thus also giving you enough momentum for developers to make adjustments so their game runs better on the compatibility layer.


We're talking early 90s. Not only were automatic updates not a thing, manual updates were hardly thing. If Windows wanted SimCity to work on their new windows release, the only option was to make the new windows release work with SimCity, not the other way around.


Yeah. I had this version of SimCity. It came on floppy disk. I had a 14.4k modem at the time (or maybe still the stock 2400?) the only way for MSFT to make this work was to add code like this. Honestly we still do it sometimes. Emulators routinely emulate bugs because those bugs were never fixed in the real systems.


But then why not let windows patch simcity, instead of changing the system, just asking.


The hack being described was very very old, this is exactly what the AppCompat system does in Windows now. AppCompat shims only apply to specific versions of specific apps (or get rolled up into "layers" which is what you get when you mark an app to "Run under XP compatibility"), and don't end up affecting other ones


Yep. It’s just the first version of AppCompat. Now you get to pick a set of bugs and behaviors. It’s actually a pretty great idea to isolate problematic software.


Thanks for then explanation!!


That'd break SimCity updates, and probably trigger antivirus warnings, and annoy Maxis devs and lawyers...

Whereas "we'll tweak our OS to suit your app to ensure it doesn't break with an upgrade"? That just wins loyalty from the game devs, users, and everyone involved except purist-coder types.


And it makes operating systems larger, more bug prone and harder to maintain.

There is a reason that Apple was able to port the core of iOS and many of the APIs to watches, phones, tablets, set top boxes, monitors (the latest Apple monitor runs iOS on an iPhone 11 era processor with 64GB RAM).


Yeah, but there's also a reason why you can still run most Windows 95-era apps on today's PCs, vs not being able to run most 2-year-old games on M1 Macs. Rosetta is pretty amazing but it's far from actual compatibility.

Apple's approach to backward compatibility is very different from Microsoft's.

It's not uniquely a Microsoft thing, either. Nvidia's driver updates frequently (in fact almost always) have game-specific optimizations. Antivirus and firewall apps frequently have to make exceptions for certain apps. WINE and Proton operate on per-game optimizations. Input controller managers (like Steam's profiles) have different settings per game. DirectX itself does a lot of backward compatibility stuff, AND allow different versions to coexist on the same PC (vs the relatively tiny market that exists for Metal or Vulkan).

All these things contribute to PC gaming vastly outselling the tiny Mac gaming market. As a Mac user, I wish that weren't so! But MS's approach is way better for devs and users in that case, even at the cost of the Windows APIs and libs being huge with a decades-long tail.


As a user of a current ARM MacBook Pro 16 inch and a former x86 MacBook Pro, being able to have a battery that last 20 hours, doesn’t get hot, nor does it sound like a 747 when I launch Slack, I very much appreciate Apple being able to transition processors.

Also seeing that the iOS game market dwarfs the PC game market in revenue and number of titles (if not quality), I think Apple made the right choice.

Microsoft has been unsuccessful trying to get Windows on ARM to be viable for years before Apple did it and has failed partially because of the behemoth that Windows is.

Speaking of Windows and backwards compatibility. There are at least 8 different ways to define a string in Windows depending on which API you are calling. String handling in C is one of the biggest causes of security vulnerabilities on any platform.

https://learn.microsoft.com/en-us/cpp/text/how-to-convert-be...


I love my Macbook too, and am hoping it revitalizes the dead OSX games industry. But its lack of backward compatibility further hurts its gaming capabilities vs the already-limited x86 OSX games. It's nice when it does work and you have some M1-native titles (Baldur's Gate, etc.) but those are far and few in between. Sure, it's a great business machine, it's just not a gamer's laptop (even though its hardware is fully capable). I use my M1 for most things, but still have to use Windows x86 for actual gaming.

Yes, Windows's backward compatibility carries a high cost. Nobody doubts that. But as a gamer, I would rather to be able to play games on a shitty OS than to have the latest, most vertically integrated all-in-one chip and stellar OS and be limited to a library of like 15 five-year-old titles.

As for the "right choice", eh, maybe from a business angle... but as a gamer, iOS games suck. They probably have that revenue mostly from lootboxes, not actual gameplay. I don't know that Apple should be applauded for turning video gaming into online gambling. That's not really a hardware/OS stack question anyway though, but a business decision. And to be fair, many of the actually curated titles (like the ones on Apple Arcade) are pretty decent -- though nothing close to the thriving indie scene on Steam/x86 Windows.

iOS is more like a console in that they're creating a new market segment, not necessarily competing with traditional PC gaming (which has taken a turn for the worse by adopting mobile lootboxes and such). On the other hand, OSX and Linux both tried the purist gaming route with their own APIs and got nowhere. It took WINE and Proton to really make the Steam Deck a viable platform (and barely that).

Do I like this situation? No, I'd rather just have games be properly cross-platform to begin with. I don't really understand how cross-platform works in Unreal and Unity, but if those engines can add native Apple Silicon support and make it easy for publishers to cross-publish, hopefully we'll see Macs on future titles alongside PC/PS/Xbox/Switch. Till then...


Look at where the mobile gaming revenue is today:

https://www.giffgaff.com/blog/mobile-gaming-overtakes-pc-and...

On top of that, you can carve out the percentage of “PC Gaming” that is “browser based” since you can run those on a Mac. The industry is moving toward browser based streaming games.

https://www.marketdataforecast.com/market-reports/game-strea...


Re: mobile, didn't I address that in my post? Sure, mobile gaming might be bigger by revenue, but it's not really an "overtaking" as much as growing a new market, as far as I can tell. Most of the games are totally different -- casual gambling vs the high-skill or deeply strategic games on PC (and to an extent, console).

There's nothing wrong with iOS (and mobile in general) having its own game ecosystem, but it's distinctly different from PC and console games. May I ask whether you're familiar with those ecosystems, like do you actually play on both? It's one thing to look at it from a pure dollars & business standpoint, but from the eyes of actual players, they're pretty different landscapes. Even among cross-platform franchises, there's a pretty big difference between (say) Diablo Immortal and Diablo 2/3. Once in a while there are actual cross-platform titles that are largely the same game (Fortnite, PUBG, etc.) but those aren't super common yet.

What I'm trying to say is that there is a huge library of existing and upcoming WinTel/x86 games that depend on Windows (and to a large extent, Steam) -- both because of architectural reasons but also other "cultural" reasons, like preferring mouse + keyboard input vs the touchscreen, or having a large screen for UI real estate (especially for strategy games).

Apple does not care about that segment. To be sure, they don't need to, between iOS revenue and their other income streams. It just saddens me because it means I'll have to keep a spare Windows PC lying around just to feed that habit, when the M1/M2 hardware is totally capable of playing those titles IF either they were ported (puts the onus on each game developer, especially hard for small indie studios) OR if Apple had better backward compatibility (some games will work with Rosetta, thankfully, but only if there was an OSX x86 port -- many don't even have that). Otherwise, ironically, that sort of gaming is better on Linux, despite its worse drivers and complex distributions, because of efforts like Proton that make per-game compatibility layers. Because the community took the time to implement backward compatibility with older APIs, choosing to support games rather than aiming for ideological purity.

Apple chose the other approach, and that may be fine for them as a business, it just sucks for us as gamers.

-------

As for streaming, yes, it's a great technology, but not a surefire fix. I've been using them for more than a decade, from OnLive to PSNow to Shadow to GeForce Now to xCloud, on everything from phones to gigabit fiber. They're wonderful technologies, but suffer many issues:

1) latency & bandwidth issues unless you're on a good and consistent connection, and LTE/5G isn't quite powerful enough to really make it reliable, WiFi is a mixed bag

2) no mods support yet since most services haven't virtualized that part of the filesystem yet, Shadow being the exception

3) graphics are middle of the road. Sure, it might be rendered on a RTX rig, but compression artifacts and jitter will frequently impact your experience

4) this is a big one: for some reason, publishers are constantly pulling their titles OFF of these services, and GeForce Now lost a bunch of AAA titles since it launched. Sometimes they reappear on some other streaming service, but not always.

5) the game streaming landscape is very quickly fragmenting, with games split between Xbox Game Pass, PSNow, GeForce Now, Luna, etc... it looks like they're trying to go for the streaming video model, with a subscription for each publisher (sadly) so you'll end up with a bunch of different subscriptions instead of being able to just rent a virtual rig by the hour/month and play all the games

-----

Look, I'm nobody, and I can't force Apple to care about PC gaming. I'm sure somebody there did the math and figured it wasn't worth it... especially because we're an audience that's very demanding in terms of power and customizability, and would probably be a PITA for them to support. Shrug. I just hope Apple Silicon sells enough that publishers will start porting games over on their own accord, and maybe ten years from now nobody will be making WinTel games anymore, and all the titles will seamlessly transition from the laptop to the watch, whatever. We're just not there yet.


I’m saying basically that Apple knows where the money is. The desktop market is already a small market in the grand scheme of things. The desktop PC gamer market is even smaller.

The PC gaming market is a 28.6B a year market for software sells. The actual hardware sales have to be much smaller to the point where it would be even lower than that. Definitely not worth Apple sacrificing being able to move fast.


Yes... nobody is doubting that. It just sucks for us.


> There is a reason that Apple was able to port the core of iOS and many of the APIs to

Microsoft can do this and just exclude the compatibility patches. All of those various windows versions and non-desktop OSes (eg windows phone, Xbox) are certainly the same thing. Porting an OS already means you’re picking what you want, and reusing the kernel. This isn’t that special.

Regarding maintainability, I’m not sure it’s “better”. It’s a liability to depend on mac software and update your mac. Ask how many photographers (or pick a profession) keep an old mac lying around for that one version of photoshop (pick your software) they need that doesn’t work on new macs. What’re the odds old mac is getting security updates and is well maintained?

(Also a nit, the monitor has 64gb of storage not ram).


Apple has ported its entire OS - not just parts - since the introduction of OS X to three different architectures. Should Apple still keep a PPC compatibility layer? If they had ported Carbon to 64 bit, would Adobe have ever moved over to modern MacOS frameworks?

Even further back, should Apple keep supporting OS 9? 68K processors?

How is the ARM transition for Windows working out no matter how hard Microsoft tries?


I mean, Windows on ARM (first 32bit and later 64) has been a thing for years now. I don't the issue is the architecture per se. What made the M1 Macbooks so good wasn't just because they were ARM based but specifically Apple's custom M1 chip.


A thing - barely.

Windows on ARM runs faster on Macs than Windows PCs

https://www.lifewire.com/your-m1-mac-can-run-windows-faster-...

https://www.androidauthority.com/windows-on-arm-2023-predict...

> Most Windows on Arm products offer slower CPUs than today's flagship smartphones


Apple also routinely breaks software compatibility with zero apologies.


This is the right decision.


64 GB of storage, 4 GB of RAM.


By changing the system they have a flag they can turn on for any applications that would be helped by a similar hack. It's not like use after free was a particularly rare event in mid 90s code.


You mean, like watch for an install of SimCity, and modify the game's files? I don't have enough experience in hardware and PCs to know if that was at all possible or practical.


>like watch for an install of SimCity, and modify the game's files?

Yes exactly! Technically easy, a Lawyers thing maybe?


Could also be interesting in a world where most PCs ran anti-virus tools of various different vendors.

Imagine Microsoft adding a magic “we’re the good guys” handshake to their OS that would all those anti-virus tool say “go ahead and do whatever you want”.


Honestly you could probably do it today, but back then it would have been a lot harder. You’d have to find every buggy use after free. Just easier to change the allocator for it. Probably how you’d do it today under emulation.


Legal reasons.


I remember the days of burning all sorts of updates for software to cd or DVD


I remember the days of going down to my friends store because he had a modem and knew which BBSes would have software downloads. I had to bring my own floppy disk because those things cost money.


What you call a “mistake” is actually just having empathy for the user. User experience is king.

It’s not tech debt, it’s a feature.


Yeah... I've put well over 10k hours into writing FOSS and consistently encounter this attitude there, too. I never imagined we could get this far tolerating such frequent contempt for both end-users and their advocates, such as interface designers. If your PR poses even a theoretical future inconvenience to developers, good luck getting it merged, regardless of the user benefit. Until this changes, user-facing open source alternatives will always be alternatives rather than the standard.


Boxed software Microsoft: if it breaks, then Microsoft is wrong.

FOSS and new Microsoft: if it breaks, have you tried pulling the latest? Yes? Then it's a bug in your expectations.


Not just devs and end users, but also devs and other devs. Not in rejecting pulls but changing API's like renaming functions, removing functions, swapping argument positions, changing the complete workflow of a library, etc... without care. The amount of breakage in the OSS world is just ridiculous.

I'm probably biased because I deal with a lot of Javascript where this sort of behaviour is rampant.


> I'm probably biased because I deal with a lot of Javascript where this sort of behaviour is rampant.

It's overall. The size of libraries in a linux system [1] has grown steadily over the years wirhout bringing anything useful.

The QT and GTK libraries are the perfect example of incompatibilities and bad design.

[1] Slackware which did not changed much in term of offered programs over the years.


It’s easy to optimize for developer convenience when you aren’t getting paid to do the work… arguably it’s the only way non-profit open source software can progress at all on average. The tails are heavy, though.


If you write the program for yourself, yes. Why then bother with an OSS licence ?


Surely it’s both? Some technical debt can be okay just like some personal or corporate debt can be okay.


Every piece of code you write automatically becomes code you have to maintain. It’s tech debt.


I agree that it's empathy for the user, but I'd say it's a workaround, and as such it's tech debt.


A workaround does not necessitate tech debt. "Workaround" is a conflated term - it basically implies something works differently than one might expect, which is subjective. Anyway, what is the alternative? Saying "that's not my problem"? Users don't care about who is technically at fault, they care about a well functioning product.


The alternative is to let it break and force developers to update their software.

Doing that allowed Apple to not have to maintain 32 bit compatibility which allowed Apple to make the operating system smaller (all shared libraries have to be duplicated including in memory) and allowed Apple to completely remove 32 bit support in the later ARM processors.


…and forced me to stop using some favorite iOS apps because they didn’t get updated — in one case because the developer had died. Windows is certainly more user-friendly in that respect.


So Apple should have kept 32 bit support in the chip and processor forever?

Libraries being able to consume less memory and being able to either reduce the die size or add more features is a direct consumer benefit.


Yes, absolutely. Memory is cheap, software is valuable, forcing everyone to churn constantly to satisfy some sort of aesthetic is a massive waste of resources.


Die space on a processor is definitely not cheap. Also memory takes energy to keep refreshed both die space and power are at a premium on mobile devices.

Shouid Apple also have kept PPC support in Macs forever? 68K support? OS 9 support? Why stop there, why not ship with Apple //e 65C02 support? I’m sure I lost some valuable AppleSoft basic programs over the years.


I would consider that wonderful. I'm no huge Microsoft fan, but it's very nice that I can run 90s and 2000s programs on my current windows box. Though I hear we're losing Win32...


"Tech debt" is doing things quickly now with the price that you have to clean up (i.e. invest more time) later, hence the word "debt". This is sometimes a good trade-off, just as financial debt is. Not everything that looks a bit ugly is "tech debt".

And yes, it's ugly, but reality is ugly so we have to deal with it.


If you play a lot of SimCity on Windows 3.1, then you upgrade to Windows 95 and SimCity stops working, who are you going to blame?


I would have more sympathy for that if Windows 95 were just suddenly dropped out of the sky to some rock music, but my experience with MSDN is that they are quite liberal with access to beta versions so software vendors can test their products before the unwashed masses get it

And I say this as someone who remembers the binders full of CDROMs that arrived, so not just "download this iso" modern day conveniences


Let's say SimCity took advantage of this beta program and fixed their buggy software. Great!

Now how do you get that fixed software to every user who bought a SimCity CD or floppies? Remember, most of your users don't have a modem and there is no widespread internet infrastructure at the time of the Windows 95 release.


You're arguing who is truly at fault, but as a consumer with less sophistication than "MSDN Subscriber" who are you going to blame when Win95 doesn't run your favorite software?


MSDN ? In windows 95 ?


Those who prioritize code correctness over user experience will soon find themselves in that blessed paradise where they never have to worry about user experience anymore... because there are no more users.


A-list apps have always received special treatment.

MacOS and Windows are both full of app-specific hacks to ensure that misbehaving but popular apps continue to work between system versions.


Correct. And not even always only A list.


Microsoft made most of its money back then in two ways - corporations and individuals buying Windows upgrades and bundling Windows with new computers.

If Windows got a reputation for being incompatible with apps, people wouldn’t upgrade.

iOS doesn’t really have that problem. New phones are always going to come with new operating systems and if your app doesn’t run on the new OS, users are going to blame the app developers.

Also most of the incompatibility with apps and new operating systems comes from developers using unpublished APIs. Apple is very strict about not allowing developers to use unpublished methods [1].

[1] I refuse to use the term “private APIs”. An API is a documented method that the platform vendor documents and promises to support


It's the difference of an OS targeted exclusively (at the time) for home users vs one for academia and web servers.


software distribution had a quite different model in that era.


Nowadays yes, back then this was the more reasonable approach


I believe this is about allowing this kind of markup (that exists on old web pages that haven’t been updated for a long time) to still work:

  <embed src="http://www.youtube.com/v/dQw4w9WgXcQ"></embed>
… by roughly translating it into

  <iframe src="http://www.youtube.com/embed/dQw4w9WgXcQ"></iframe>
Probably also the <object> equivalent, maybe only that and not <embed>, I’m not sure. I never had a great deal to do with those two tags.

I don’t know why it has to be done this way. I’d have thought that without this extra code it’d roughly fall back to being an iframe on the original URL, and then YouTube could just check if it’s in a frame and behave as an embed instead of the main UI. But there’s probably a reason why they’ve all done it this kind of way.


It's strange that they thought of essentially taking responsibility for a change that YouTube did to break embeds.


Someone correct me if I'm wrong, but I think <embed> was used because it embedded a flash player, back when flash existed on the web. Then browsers decided to get rid of flash, and something had to replace it. You can't <embed> HTML pages, so wasn't really up to YouTube if to break it or not.


> Someone correct me if I'm wrong[...] You can't <embed> HTML pages

You are wrong.


16 people say I'm right, one person say I'm wrong. I'm not doubting you, but I'd love it if you could show how I'm wrong? Maybe I misremember how to use <embed>.


Just try it. Here’s a sample URL:

  data:text/html,<embed src=https://example.com>
(Mind you, this shows that it works now, without commenting on whether it worked then, which I know not.)


> 16 people say I'm right

Where? To be clear, it doesn't matter—being wrong is wrong. Those other people, even if they exist, are wrong, too.

(I can half-understand not checking before you posted the original comment. But why wouldn't you, in response to someone letting you know that you are wrong—which was itself in response to you asking, by the way—take half as much time to just check as the amount of time it took to type out such an bewilderingly obnoxious followup?)



Youtube didn't change - browsers did. Embed loads plugin content: browsers broadly moved away from plugins (they'll still technically work if you feel like jumping through installation hoops as a user but they're not maintained and not broadly preinstalled as they used to be).

During this broad migration by the browser community away from supporting plugins within embed tags, there was likely some audits of how widely they were relied upon across the web, and compat hacks put in place to account for the most common uses.

It's very likely Youtube removed endpoints after the browser hacks were in place for some time.


It’s pragmatic. End users don’t care enough to place the blame correctly. All they think is “my iPhone can’t play this video that my friend sent me, my phone sucks”. It just doesn’t matter whose fault it is that that’s the reality.


the all the embed tags video broke on my old site with youtube video embed when this was done, I just changed my code, but I guess a lot people probably complained. So there you go.


Am I the only one who actually visited this Youtube link by copying and pasting in address bar?


Anyone who’s been on the Internet long enough will have wisened up to the fabled YouTube link ending in in XcQ.


> Anyone who’s been on the Internet long enough will have wisened up to the fabled YouTube link ending in in XcQ

"We've known each other for so long"


Funny, it’s the dQw that I recognise.



I didn’t need to, there’s only one video that makes sense, and the “…XcG” seemed familiar


So much that the poor people who were also randomly given a URL finishing with XcQ can’t make people read their video, and Youtube will need a specific exception to ensure generated codes don’t finish with that.


Something really really wrong just happened, I just saw an ad on Youtube. I didn't think that was possible.


Some people here are complaining that this is a hack, technical debt, etc. I thought the point would be the political one, as it were. YouTube.com gets special treatment in a major web browser, whereas Sal's discount video website has to conform to standards like all the other plebs.

It's an erosion (however minor, by itself) of the idea of an open standard.


Apple has a list of websites with quirks that don’t support its “generate strong passwords” feature even though there is HTML spec where you can specify the types of passwords you support.

https://github.com/apple/password-manager-resources

Many of these sites are quite obscure.


https://github.com/apple/password-manager-resources/blob/mai...

For being "quite obscure", I've at least heard of most of these sites before. Banks with "maxlength: 8", you love to see it.


QQ: why do they embed the rules in a string and not just regular json?


I just actually looked at the JSON, I just assumed the rule was going to be defined as regex, not a human readable pattern.


I just love that apple.com itself is included there.


Apple also has a list of websites it autocompletes

https://news.ycombinator.com/item?id=30903246


I’d rather have the companies fighting for the user. What is the purpose of a standard anyway, other than to serve the users? The idea is counterproductive if it results in a worse UX, even if just in the medium term.

In this case, getting those companies to fix their broken code is unrealistic. Less realistic than just providing a whitelist anyway.


You think Google is doing this because they "fight for the user"?! Maybe in the same way cattle ranchers "fight for the livestock" by plumbing wells and seeding grasslands. BTW, almost anything can be justified with this logic: "We propose a convoluted device level tracking scheme that locks down all advert/databroker revenue... a tech moat so wide that, coincidentally, we are the only potential beneficiaries... because we fight for the user!"


I just appreciate that the end result is a better UX. How we got there, I don't care. The standards are important, but they're ultimately there to provide a nice UX and that's it.


> How we got there, I don't care.

Well that is a good way of ensuring that the same class of problems will endlessly reappear, while also providing a broken utilitarian end-justifies-the-means rationale that is certain to be abused.

> The standards are important, but they're ultimately there to provide a nice UX and that's it.

No, standards are there to make interoperability possible, which overcomes the hazards of market network effect, leveling the field for more competing solutions, thus yielding a better <insert literally anything in the whole world, including UX>.


If this goes against your philosophy, you can actually disable this:

Develop Menu > Disable Site-specific Hacks


That doesn't solve the GP's complaint. Defaults are powerful.


However, moving YT videos (and ads!) from embeds or old Flash-code to isolated iframes may be a sane default.


Firefox will also rewrite YouTube embeds: https://searchfox.org/mozilla-central/rev/c6d17806faef8708b6....

Firefox also ships a "system" add-on (https://github.com/mozilla-extensions/webcompat-addon) that has interventions and user-agent overrides for many websites. See for yourself in Firefox on about:compat.


Most platform vendors have this in some form or the other. WebKit has far more here, for example: https://github.com/WebKit/WebKit/blob/main/Source/WebCore/pa.... These are cool and all for when you want software to keep working, but if you're the person writing these, the one thing you should absolutely make sure to do is reach out to the authors of the software you're working around to see if they are willing to fix their code. Most of the time they are! But I invariable see code go into the OS/browser/whatever and engineers bemoaning how they have to work super hard on backcompat, and I'm like…"ok, but when did you send us a bug?"


I'm not sure if it's still there, but for a long time there was a chunk of code in the Mozilla code base that hunted for several browser extensions in Windows every time the browser started up and did some patch up work in the file system to make sure that those extensions could be found in the browser because some older installers would dump them in non-standard places. This was to avoid the issue that if the user had already installed the application with the corresponding extension and it was working in Internet Explorer, it wouldn't automatically work in Firefox without this patch up process. And in that case, it wasn't the extension that was broken from the user's point of view... It was Firefox.

Some technologies are so fundamental to the web experience that when they break, the user perceives the browser to be broken, not that technology.


I bet the AskBar was always in the perfect standard place for Firefox to find it, despite being run by Oracle (Yes, Oracle installers for Java included the AskBar. A crime in my opinion).


This is interesting. It looks like there was even some discussion of making this behaviour part of the standard, since it's implemented by all of the major browsers.

https://github.com/whatwg/html/issues/2390


The video in one of the test cases is Steve Jobs commencement address https://www.youtube.com/v/UF8uR6Z6KLc


Probably the Apple-internal version of Rickrolling.


Could you tell those who are not familiar with WebKit what this code actually does?


When the first iPhone was released, YouTube used Flash instead of HTML5. Safari had special code to play the video with the native player instead of displaying a blank square. I suppose (from the flash-specific detection in the supportsMIMEType method) that this code was in charge of that logic.


Note that while the code was written in 2014 (well after the iphone was released), someone tried to remove the code this year[1], and gave up because some sites now rely on this hack.

[1]: https://github.com/WebKit/WebKit/commit/049188a35af6c67fa30c...


Of course, all observable behaviors of your system will be depended on by somebody.


Relevant xkcd: https://xkcd.com/1172/


The code was added to the public WebKit source tree, but it wasn't written at the time. It was upstreamed from the internal fork of WebKit that Apple used for iOS.


Do you know how long this fork existed?


Sorry, I don't recall.


It didn't specify which websites, now I'm curious.


Also the youTubeFlashPluginReplacementEnabled settings property that it looks for to check if it’s enabled seems like a strong hint.


Most beautiful cpp code I have seen in many years


I was just about to make this same exact comment! I was half way down the page and thought, "Wait... What language is this again?" I had to scroll back up to confirm.


Clean and readable, more like C than meta filled C++ with templates.


Nah, it’s just having professional coding and review standards that are very heavily enforced. This particular code is also aided by being fairly simple in function of course. In my experience C code is generally worse than C++, as a lot of what large C projects do is stuff that C++ does automatically, and with more safety.

That said for the most squirrely code in webkit you need to look to JSC where the perf critical and machine abusing code is stuck (though obviously minimized as much as possible). My most terrible contribution there is the parser which uses macros and templates together (parsing JS is extremely perf critical in real world page loading because the parser often has to deal with megs of code, all of which has to be parsed before you can consider executing it and in many places page loading is blocked on said execution)


Probably because it’s mostly if statements, neat functions and string translation.


It's almost as if the reason C++ can suck is actually because most developers write code that's incomprehensible.


hehe, now let's see all the WebKit-specific code in YouTube :D


Odd that a quarter of the code is parsing the qsps




Consider applying for YC's Winter 2026 batch! Applications are open till Nov 10

Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: