HNHacker News
TopNewBestAskShowJobs

dblohm7

4,280 karma · joined December 1, 2011

Member of Technical Staff, Tailscale Inc. Ex-Mozilla, 2012-2021
submissionscomments
dblohm7··on Experimenting with Rust in Chromium
Not really. That’s a typical workday for many Gecko developers.

Some useful guidelines made it pretty straightforward:

https://wiki.mozilla.org/Oxidation

dblohm7··on What will a Chromium-only Web look like?
How can market share not be part of the discussion concerning who controls the web?

You wrote:

> The fact that both Brave and Vivaldi were able to disable Google's FlOC within a very short period of time

Okay, they disabled some stuff. That isn’t a fundamental divergence from the upstream project.

The original argument was that Google wouldn’t control the web in a Chromium monoculture because anybody can just fork it.

I disagree. My argument has two prongs:

1. A Chromium fork can only sever itself from Google’s control if it is not taking patches from upstream (ie, Google). I’m particularly thinking about the most consequential pieces: web APIs, not Google ad tech. That’s going to require an army of developers who now are immediately thrust onto the web API treadmill.

2. If a Chromium fork’s market share is tiny, how is it going to displace Google’s influence on the direction of the web? It isn’t. Everybody will still be coding against Google’s Chromium.

dblohm7··on What will a Chromium-only Web look like?
Brave and Vivaldi fall into the “don’t matter” category.

Call me when a Chromium fork displaces Chromium.

dblohm7··on What will a Chromium-only Web look like?
> The economics of starting from scratch vs starting from Chromium's latest commit are fundamentally different.

I don’t think they are. That fork then immediately finds itself in the same position as other engines, where now the fork is going to need to keep up with whatever Google is adding to Chromium.

You might then think, “Then the fork can just pull from upstream.”

Okay, so then:

a) Your fork probably isn’t differentiated enough to matter; and more importantly

b) Google is still effectively calling all the shots!

dblohm7··on Cross-compiling binaries for Windows is easier than building natively
https://m.youtube.com/watch?v=qbKGw8MQ0i8
dblohm7··on Cross-compiling binaries for Windows is easier than building natively
> I have set up a toolchain based on Wix, running via Mono and Wine on Linux, for the purpose of packaging some rather complex .msi files in a commercial software project.

That’s exactly how I rigged up building our MSIs at Tailscale.

dblohm7··on Fork() without exec() is dangerous in large programs (2016)
The original POSIX subsystem would have used it.
dblohm7··on Firefox rolls out Total Cookie Protection by default to all users
But GA, statcounter et al don’t use server logs. They use JavaScript.
dblohm7··on Why did InterlockedIncrement/Decrement only return result’s sign? (2004)
Precisely.
dblohm7··on Why did InterlockedIncrement/Decrement only return result’s sign? (2004)
> Windows programmers were more familiar with “critical sections” as an abstraction than mutexes.

I disagree on that front. Mutex kernel objects have existed just as long as critical sections. Critical section objects are cheaper because they don’t switch into the kernel when not contended.

dblohm7··on Must be this tall to write multi-threaded code (2015)
(Former Mozilla employee here)

Rust is encouraged to be used by all developers who are writing native code (it's not supposed to be just the domain of a select few). As I recall, the message was, "Not knowing Rust must not be an excuse for why you're not using Rust." Of course developers must still contend with the practicalities of integrating Rust into an existing C++ codebase, so some guidelines were developed:

https://wiki.mozilla.org/Oxidation

dblohm7··on Tell HN: Google does not list application permissions in the Play Store any more
I still miss the good old days of Android when apps didn't automatically receive the internet permission.

Now get off my lawn.

dblohm7··on Windows 9x Video Minidriver HD+
Ah yes, AllocCStoDSAlias. You could do some fun stuff with that API and its inverse, AllocDStoCSAlias (or PrestoChangoSelector).
dblohm7··on Dangerous Gift
It seems to me like, by that point, the damage has already been done.
dblohm7··on Mozilla releases local machine translation tools as part of Project Bergamot
(Former Mozilla employee, here)

I'm completely speculating, but it's probably a matter of not wanting to complicate iterating on the translation engine by introducing a bunch of cruft from the Firefox build system (which, though it uses GNU make under the hood, is very much bespoke and complicated).

Since the translation engine is intended to run on a product that hosts WASM, they might as well just build to that.

dblohm7··on Sometimes, it is a compiler bug: inding and fixing a bug in a C++ toolchain
(CS452 vet here, Fall 2004)

Am I reading this right, you're using ARM now? We were using a Pentium PC (and that was already old for 2004, but good enough for for the course, obviously).

dblohm7··on Improved Process Isolation in Firefox 100
A lot can happen in five years!

Keep in mind that, in May of 2017, desktop Firefox did not even yet have full support for multiprocess under particular configurations. Obviously you cannot sandbox content processes that don't exist, so there were some prerequisites that needed to be dealt with first. That was pretty much wrapped up by the Firefox Quantum 57 release.

The other thing to note is that the Chromium Sandbox is more like a "sandbox construction kit." It features all kinds of knobs and dials that allow the developer to configure how strict it is. We used to compare adding multiprocess and sandboxing to Gecko to swapping out the warp drive on the Enterprise, while it was still at warp. You can't just flip a switch one day and be sandboxed; too much code existed under the assumption that it could access whatever OS resources it wanted, without restriction. It took time to modify that code to be aware of that restriction and act accordingly. Each time an iteration of modifications were completed, we were able to tighten the screws on the sandbox a little bit more.

Not only has that been very useful as Gecko has been migrated to running in a fully sandboxed environment, it is also a necessity even at the final stage. For example, modern browsers constrain their interactions with the GPU (and its driver) to a dedicated process. That process is sandboxed, but because that process needs access to graphics devices, it obviously needs a weaker sandbox than the other processes hosting web content.

IMHO the win32k lockdown is not "mission accomplished," but is a HUGE indicator of how much code has been migrated to support sandboxing. On desktop, Firefox processes are now site isolated and are disconnected from their platform GUI systems. That's huge -- I'm sure there are still deviations between the Chrome and Firefox sandbox configurations, but they're a lot closer now.

Firefox for Android still has a long way to go (I was working on that when I left Mozilla), but unfortunately it hasn't been treated with the same urgency as desktop. I know that they're still working on that and have been able to make a lot of progress now that site isolation for desktop has been released.

Finally, I should point out that sandboxing is a defense-in-depth measure, but a lot of armchair quarterbacks seem to only ever want to focus on comparing the sandbox between Chrome and Firefox, while completely ignoring how much more of Firefox is written using memory-safe languages. That's important too.

dblohm7··on Improved Process Isolation in Firefox 100
A lot of people don’t know this, but Firefox uses the Chromium sandbox. I should know: I rubber-stamped the commit that first imported that code into the Gecko repo (it is regularly kept in sync with upstream).

That sandbox (and others, for that matter) more or less follow steps as outlined below:

https://blogs.msdn.microsoft.com/david_leblanc/2007/07/27/pr...

https://blogs.msdn.microsoft.com/david_leblanc/2007/07/30/pr...

https://docs.microsoft.com/en-ca/archive/blogs/david_leblanc...

dblohm7··on Improved Process Isolation in Firefox 100
Just to be clear: a ton of kernel32 stuff was already locked down prior to win32k being shut off. (I used to work on the author’s team)
dblohm7··on Improved Process Isolation in Firefox 100
(I used to work on the blog author’s team, and in fact dealt with some of the COM issues mentioned in the post)

You’re right, uxtheme can’t be called directly from content because of win32k dependencies. One option could be for content to request the parent to draw those controls, but as you can imagine there are drawbacks to doing that. As usual, there are a lot of trade offs involved.

dblohm7··on Firefox DNS-over-HTTPS
Firefox has a mechanism for off-cycle updates called system add-ons.
dblohm7··on Firefox 100
So trying to shift development processes more toward continuous delivery (within reason, given desktop software) is meaningless, then? Come on.
dblohm7··on Firefox 100
It wasn't done to copy Chrome, but you keep telling yourself that.
dblohm7··on Kaspersky is declared a US national security threat and is banned by the FCC
I used to work on the team at Mozilla that got stuck with dealing with all the terrible shit that AV programs do to web browsers. My recommendation for Windows users is to just use Defender.

All that other crap does the exact same stuff to other programs that malware does, except they do so in the name of "security."

dblohm7··on TI-99/4A
My first computer. <3
dblohm7··on Open Golf: A cross-platform minigolf game written in C
Why "Works best with Chrome?" It works fine for me in Firefox.
dblohm7··on How much Rust in Firefox?
Yes it is. WebRender shipped a few releases back.
dblohm7··on How much Rust in Firefox?
Codecs, language bindings
dblohm7··on How much Rust in Firefox?
This is incorrect. The front-end for Fenix uses the Fenix and Android-components GitHub repos.

mozilla-central only contains GeckoView (the embedding API for Android) which uses Java for the API itself and Kotlin for all the unit tests.

dblohm7··on How much Rust in Firefox?
Also desktop UI.
← PreviousPage 9 of 33Next →