20 Jun 2025

feedPlanet Mozilla

Mozilla Thunderbird: Thunderbird Mobile Progress Report: May 2025

Thunderbird for iOS

We're growing a few more stars! We're so happy to hear there is great interest in Thunderbird for iOS, and hope to reach a stage soon where you all can be more involved. Thank you, also, to those of you who've submitted an increasing number of ideas via Mozilla Connect.

Todd has been preparing the JMAP implementation for iOS, which will allow us to test the app with real data. We're exploring the possibility of releasing the first community TestFlight a bit earlier by working directly with in-memory live data instead of syncing everything to a database upfront. The app may crash if your inbox has 30GB of email, but this approach should help us iterate more quickly. We still believe offline-first is the right path, and designing a database that supports this will follow soon after.

Further we've set up the initial localization infrastructure. This was surprisingly easy using Weblate's translation propagation feature. We simply needed to add a new component to our Android localization project that pulls from the iOS repository. While Weblate doesn't (yet?) auto-propagate when the component is set up, if there are changes across iOS and Android in the future, the strings will automatically apply to both products.

Thunderbird for Android

We spent a lot of time thinking about the beta and making adjustments. Fast forward to June, we're still experiencing a number of crashes. If you are running the beta, please report crashes and try to find out how to trigger them. If you are not using Beta, please give it a try and report back on the beta list or issue tracker. We'd greatly appreciate it! Here are a few updates worth noting for the month of May:

I also wanted to highlight the new Git Commit Guide that Wolf created to give us a little more stability in our commits and set expectations for pull requests. We have a few more docs coming up in June, stay tuned.

You could be on this list next month, please get in touch if you'd like to help out!

-
Philipp Kewisch (he/him)
Thunderbird Mobile Engineering | Mozilla Thunderbird

The post Thunderbird Mobile Progress Report: May 2025 appeared first on The Thunderbird Blog.

20 Jun 2025 2:47pm GMT

18 Jun 2025

feedPlanet Mozilla

Firefox Nightly: Absolute Unit of an Update – These Weeks in Firefox: Issue 183

Highlights

A conversion of two cups into approximately four hundred and seventy three millilitres.

The Firefox new tab page showing six stories without descriptive text under their headlines.

Friends of the Firefox team

Resolved bugs (excluding employees)

Volunteers that fixed more than one bug

New contributors (🌟 = first patch)

Project Updates

DevTools

WebDriver BiDi

Lint, Docs and Workflow

Migration Improvements

New Tab Page

A variant of trending searches displayed under address bar in the new tab page.

A variant of trending searches displayed within a card — situated between two other story cards — in the new tab page.

Picture-in-Picture

Search and Navigation

Storybook/Reusable Components/Acorn Design System

Three "breadcrumb" sample groups, with one on the left for "first page", one at the center for "previous page", and one on the right for "current page".

The moz-select component with a gear icon and a label "Option 1" positioned after the icon.

A before-and-after comparison of two moz-button components, with the "after" photo showing the moz-button being shorter in height.

18 Jun 2025 7:35pm GMT

This Week In Rust: This Week in Rust 604

Category: This Week in Rust

Hello and welcome to another issue of This Week in Rust! Rust is a programming language empowering everyone to build reliable and efficient software. This is a weekly summary of its progress and community. Want something mentioned? Tag us at @thisweekinrust.bsky.social on Bluesky or @ThisWeekinRust on mastodon.social, or send us a pull request. Want to get involved? We love contributions.

This Week in Rust is openly developed on GitHub and archives can be viewed at this-week-in-rust.org. If you find any errors in this week's issue, please submit a PR.

Want TWIR in your inbox? Subscribe here.

Updates from Rust Community

Official
Foundation
Newsletters
Project/Tooling Updates
Observations/Thoughts
Rust Walkthroughs
Research
Miscellaneous

Crate of the Week

This week's crate is RobustMQ, a next-generation, high-performance, multi-protocol message queue.

Thanks to Yu Liu for the self-suggestion!

Please submit your suggestions and votes for next week!

Calls for Testing

An important step for RFC implementation is for people to experiment with the implementation and give feedback, especially before stabilization.

If you are a feature implementer and would like your RFC to appear in this list, add a call-for-testing label to your RFC along with a comment providing testing instructions and/or guidance on which aspect(s) of the feature need testing.

Let us know if you would like your feature to be tracked as a part of this list.

Call for Participation; projects and speakers

CFP - Projects

Always wanted to contribute to open-source projects but did not know where to start? Every week we highlight some tasks from the Rust community for you to pick and get started!

Some of these tasks may also have mentors available, visit the task page for more information.

If you are a Rust project owner and are looking for contributors, please submit tasks here or through a PR to TWiR or by reaching out on X (formerly Twitter) or Mastodon!

CFP - Events

Are you a new or experienced speaker looking for a place to share something cool? This section highlights events that are being planned and are accepting submissions to join their event as a speaker.

If you are an event organizer hoping to expand the reach of your event, please submit a link to the website through a PR to TWiR or by reaching out on X (formerly Twitter) or Mastodon!

Updates from the Rust Project

461 pull requests were merged in the last week

Compiler
Library
Cargo
Rustdoc
Rustfmt
Clippy

#### Rust-Analyzer

Rust Compiler Performance Triage

Relatively quiet week, with a few improvements to benchmarks leveraging the new trait solver.

Triage done by @kobzol. Revision range: c31cccb7..45acf54e

Summary:

(instructions:u) mean range count
Regressions ❌
(primary)
0.3% [0.1%, 0.5%] 14
Regressions ❌
(secondary)
0.3% [0.1%, 0.5%] 52
Improvements ✅
(primary)
-0.5% [-4.8%, -0.1%] 68
Improvements ✅
(secondary)
-4.3% [-56.5%, -0.1%] 85
All ❌✅ (primary) -0.4% [-4.8%, 0.5%] 82

3 Regressions, 7 Improvements, 4 Mixed; 4 of them in rollups 51 artifact comparisons made in total

Full report here

Approved RFCs

Changes to Rust follow the Rust RFC (request for comments) process. These are the RFCs that were approved for implementation this week:

Final Comment Period

Every week, the team announces the 'final comment period' for RFCs and key PRs which are reaching a decision. Express your opinions now.

Tracking Issues & PRs

Rust

Cargo

Rust RFCs

No Items entered Final Comment Period this week for Language Reference, Language Team or Unsafe Code Guidelines.

Let us know if you would like your PRs, Tracking Issues or RFCs to be tracked as a part of this list.

New and Updated RFCs

Upcoming Events

Rusty Events between 2025-06-18 - 2025-07-16 🦀

Virtual
Asia
Europe
North America
Oceania
South America

If you are running a Rust event please add it to the calendar to get it mentioned here. Please remember to add a link to the event too. Email the Rust Community Team for access.

Jobs

Please see the latest Who's Hiring thread on r/rust

Quote of the Week

But after a few weeks, it compiled and the results surprised us. The code was 10x faster than our carefully tuned Kotlin implementation - despite no attempt to make it faster. To put this in perspective, we had spent years incrementally improving the Kotlin version from 2,000 to 3,000 transactions per second (TPS). The Rust version, written by Java developers who were new to the language, clocked 30,000 TPS.

This was one of those moments that fundamentally shifts your thinking. Suddenly, the couple of weeks spent learning Rust no longer looked like a big deal, when compared with how long it'd have taken us to get the same results on the JVM. We stopped asking, "Should we be using Rust?" and started asking "Where else could Rust help us solve our problems?"

- Dr. Werner Vogels on his blog

Thanks to Brian Kung for the suggestion!

Please submit quotes and vote for next week!

This Week in Rust is edited by: nellshamrell, llogiq, cdmistman, ericseppanen, extrawurst, U007D, joelmarcey, mariannegoldin, bennyvasquez, bdillo

Email list hosting is sponsored by The Rust Foundation

Discuss on r/rust

18 Jun 2025 4:00am GMT

The Servo Blog: This month in Servo: color inputs, SVG, embedder JS, and more!

Two big pieces of news for images in Servo this month:

  1. We now display animated GIFs in all their animated glory (@rayguo17, #36286)! This work required careful architecting to integrate with existing animation mechanisms in the engine without incurring unnecessary CPU usage.
Animated GIFs rendering in Servo
  1. We support loading SVG images in <img src> (@mukilan, @mrobinson, #36721).
SVG image rendering in Servo

Outreachy

We're excited to host two Outreachy interns over the next few months! Jerens Lensun (@jerensl) will be working on improving Servo's CI setup and other Python-focused infrastructure, while Usman Baba Yahaya (@uthmaniv) will implement support for the Network Monitor in our devtools.

They will both be blogging about their internships, and you can follow their work on Jeren's blog and Usman's blog.

Web content

Servo's layout implementation has historically been all-or-nothing - any change in the page, no matter how isolated, requires laying out the entire page from scratch. Fixing this limitation is known as incremental layout, and it's a key performance optimization in all browser engines. This month we've landed a number of changes in this area that make some kinds of CSS changes much more efficient than a full layout (@mrobinson, @Loirooriol, #36896, #36978, #37004, #37047, #37069, #37048, #37088, #37099).

We have also made significant progress on the Trusted Types API, going from 47% of tests passing to 58% over the course of May (@TimvdLippe, #36710, #36668, #36811, #36824, #36941, #36960). Supporting this work on Trusted Types, our Content Security Policy implementation has been steadily improving, now passing 59% of automated tests (@TimvdLippe, @jdm, @simonwuelker, #36709, #36710, #36776, #36832, #36860, #36887, #36923, #36963, #36962, #36961, #36965, #37020).

We've enabled support for URLPattern (@simonwuelker, #36826, #37004, #37116), <input type=color> (@simonwuelker, #36992), plus several other web API features:

Color input integration in Servo

Our layout and CSS support continues to improve. This month, we improved our page background sizing and style computation (@mrobinson, @Loirooriol, #36917, #37147), and added support for 'wavy' and 'double' in the 'text-decoration-line' property (@mrobinson, #37079).

text-decoration rendering in Servo

HTMLVideoElement can now be used as an image source for 2D canvas APIs (@tharkum, #37135), ImageBitmap can be serialized and transferred via postMessage() (@tharkum, #37101), media elements redraw properly whenever their size changes (@tharkum, #37056), polygon image map areas are clickable (@arihant2math, #37064), <select> elements are redrawn when their contents change (@simonwuelker, #36958), and getPreferredCanvasFormat() on GPU returns platform-appropriate values (@arihant2math, #37073).

We've fixed bugs relating to invertible and non-invertible transforms (@Loirooriol, #36749, #37147), missing underlines on macOS (@mrobinson, #37029), and sizing issues for tables and flex containers (@stevennovaryo, @Loirooriol, #36703, #36993, #36980, #37024, #37011). We've also fixed a number of bugs where Servo's behaviour did not match relevant specifications:

Our WebDriver server implementation received a lot of attention this month! Element clicks now receive the expected button value (@longvatrong111, #36871), wheel actions are supported (@PotatoCP, #36744, #36985), and we removed the possibility of races between some input actions and other WebDriver commands (@longvatrong111, @mrobinson, #36932). We've also added support for passing WebDriver references to DOM objects as arguments when executing scripts (@jdm, #36673), and fixed some bugs with JS value serialization (@yezhizhen, #36908) and cancelling inputs (@yezhizhen, #37010).

We've begun preparatory work to integrate Vello as the backend for 2D canvases (@sagudev, #36783, #36790, #36999). We've also landed some changes towards supporting '::placeholder' pseudo-elements and fixing rendering issues with text inputs (@stevennovaryo, #37065).

Embedding

The engine

Embedders can now evaluate JavaScript inside a webview and receive results asynchronously (@Narfinger, @mrobinson, #35720).

All embedders will receive default styling and interactivity for elements like inputs and media elements (@webbeef, #36803), reducing the amount of configuration required to embed the engine.

Any provided system light/dark theme will be propagated to all documents loaded inside of a webview (@mrobinson, #37132).

Servo's developer tools integration now highlights elements in the layout inspector (@simonwuelker, #35822), and displays <!DOCTYPE> nodes correctly (@simonwuelker, #36787).

Highlighting elements from the layout inspector

We have removed the dom_shadowdom_enabled preference, since the feature has been enabled by default since March 2025 (@simonwuelker, #37043).

Our automated benchmarking setup is expanding, and we can now measure how long it takes to start up Servo and load the servo.org homepage on HarmonyOS (@Narfinger, #36878), which will help us identify regressions in the future.

Finally, we can now write unit tests for Servo's embedding API (@mrobinson, #36791), which allows us to write better regression tests for shutdown-related issues (@mrobinson, #36808).

servoshell

The --user-agent (-u) flag now correctly sets the User-Agent header for network requests (@PartiallyUntyped, @mrobinson, #36859).

Service workers have been removed from the list of features enabled by --enable-experimental-web-platform-features until they provide more value (@jdm, #36867).

Building servoshell with --with-asan now causes all C++ dependencies to be built with Address Sanitizer as well, and mach bootstrap on Windows can now use winget as a fallback if choco is unavailable (@jschwe, #32836).

The current system light/dark theme is now queried on startup (@Legend-Master, #37128). Additionally, the screen dimensions and geometry reported by the engine are now correct on OpenHarmony (@PartiallyUntyped, @jschwe, #36915).

Performance

Servo is now better at evicting image data from GPU caches (@webbeef, #36956). We also reduced the memory needed to store HSTS data, saving more than 60mb by doing so (@sebsebmc, #37000, #37015).

We now measure the memory usage of sessionStorage and localStorage data (@jdm, #37053), the Public Suffix List (@sebsebmc, #37049), and system fonts (@jdm, #36834).

In addition, we've reduced the size of the final Servo binary by 2 MB by stripping out DOM code that should never be used outside of automated tests (@jdm, #37034).

Stability

We fixed a number of crashes involving animated images (@simonwuelker, #37058), media elements with an unknown duration (@tharkum, servo-media#437), canvas elements during shutdown (@mrobinson, #37182), adding a Path2D to itself (@Taym95, #36847), calculating IntersectionObserver areas (@webbeef, #36955), the childNodes() method on Node (@jdm, #36889), resizing OffscreenCanvas (@simonwuelker, #36855), querying WebGL extensions (@mrobinson, #36911), and slicing a sliced Blob (@simonwuelker, #36866).

We've also fixed a deadlock involving streams with very large chunks (@wusyong, #36914), and fixed a source of intermittent crashes when closing tabs or removing iframes (@jdm, #37120). Finally, we rewrote the implementation of the text property on HTMLOptionElement to avoid crashes with deeply-nested elements (@kkoyung, #37167).

Having previously noticed an unsafe pattern triggered by using JS-owned values in Rust Drop implementations (#26488), we have begun incrementally removing existing Drop impls to remove that source of unsafety (@willypuzzle, #37136).

Upgrades

We upgraded our fork of WebRender to April 2025 (@mrobinson, #36770), and upgraded our Stylo dependency to May 2025 (@Loirooriol, #36835). These changes ensure that Servo is up to date with ongoing work in Firefox, which shares these dependencies.

Donations

Thanks again for your generous support! We are now receiving 4597 USD/month (−1.4% over April) in recurring donations. This helps cover the cost of our self-hosted CI runners and one of our latest Outreachy interns!

Servo is also on thanks.dev, and already 25 GitHub users (+1 over April) that depend on Servo are sponsoring us there. If you use Servo libraries like url, html5ever, selectors, or cssparser, signing up for thanks.dev could be a good way for you (or your employer) to give back to the community.

4597 USD/month
10000

As always, use of these funds will be decided transparently in the Technical Steering Committee. For more details, head to our Sponsorship page.

18 Jun 2025 12:00am GMT

16 Jun 2025

feedPlanet Mozilla

The Mozilla Blog: The Great British Bake Off’s Janusz on CakeTok and queer joy

A smiling man in a light blue shirt stands in front of a bright pink background, surrounded by colorful confetti. He’s pointing enthusiastically at a small, square sprinkle-topped cake he’s holding in one hand.

Here at Mozilla, we are the first to admit the internet isn't perfect, but we know the internet is pretty darn magical. The internet opens up doors and opportunities, allows for human connection, and lets everyone find where they belong - their corners of the internet. We all have an internet story worth sharing. In My Corner Of The Internet, we talk with people about the online spaces they can't get enough of, the sites and forums that shaped them, and how they would design their own corner of the web.

We caught up with Janusz Domagala, the joyful breakout star of 2022's "The Great British Bake Off" and author of Baking With Pride. He talks about CakeTok, his secret ingredient hot honey, how digital friendships shaped his life, and why history tastes better when baked.

What is your favorite corner of the internet?

I have to say my favourite corner of the internet is American CakeTok. I love the online baking community generally, it's so welcoming, supportive and encouraging. But I do have to admit that American baking really aligns with my personal approach to baking- colourful, bold and daring flavours and visually dramatic. I think food should be an experience for all the senses and it's typically American baking videos on social media that gets my senses tingling…

A recipe spread for a cake called “Semi-Naked Flower Cake” with ingredients and steps on the left, and a photo on the right of a tall layer cake decorated with vibrant buttercream flowers including poppies and lavender, set against a pastel background and green gingham tablecloth.<figcaption class="wp-element-caption">From Baking With Pride by Janusz Domagala: a lavender sponge cake dressed in buttercream blooms, with a wink to queer-coded history. Credit: The Quarto Group</figcaption>

What is an internet deep dive that you can't wait to jump back into?

As well as baking, I'm a big fan of history. Living in the UK I love diving into its rich history online- researching the fashion, culture and popular bakes of certain periods of time. I love recreating historical bakes I discover as not only do I get to imagine what life was like during chapters of time, I get to taste what it was like too.

What is the one tab you always regret closing?

I would be lost and create some very … interesting… bakes if it wasn't for my tab that has an international unit conversion! I love using recipes from around the world but because I'm a speedy baker (thanks to competitive baking, I guess) I don't have time to whip out my calculator mid whisk!

What can you not stop talking about on the internet right now?

Hot honey! As a creative and a genuine foodie, I love seeing the trends that come out in the food world and take over in the internet. Recently we've had caramelised biscuit, pistachio and now hot honey which combines two of my two favourite flavour profiles and is already getting me thinking about my next bake.

"Until [joining a local baking group online] my only chance to talk about baking was with my mother who taught me to bake, so to finally get the chance to talk to people my own age about one of my biggest passions was a big moment for me."

What was the first online community you engaged with?

Like a true millennial the first online community I engaged with was on MySpace, joining a local baking group. Until then my only chance to talk about baking was with my mother who taught me to bake, so to finally get the chance to talk to people my own age about one of my biggest passions was a big moment for me. Within the group, we actually started arranging monthly meet ups at a local park where we would get together in person, taking things we'd baked along, and chat all things baking. I'm still friends with some of the people from that group and that for me is one of the most powerful things about the internet- meeting people you never would normally have met in life and turning them into real life friendships.

If you could create your own corner of the internet, what would it look like?

My corner of the internet would probably look a lot like my wardrobe; bold, colourful and fun! Full of feelgood items and also have different options for different moods, have comfy options when we need that little extra warmness on the days we need but most importantly- get people talking and inspired.

What articles and/or videos are you waiting to read/watch right now?

It's currently Pride Month and each year I get so excited about the digital content that's released, full of stories from the LGBTQ+ community. I'm currently waiting for the OUT100 list to be released which highlights 100 influential people who are currently working towards change and fighting for our rights. It's a great read and a great chance to highlight the work of people that might not always have the spotlight shone on them.

If the internet were a giant Showstopper Challenge and you got to design it for the future, what ingredients would you throw in to make it more delicious for creative people like you - and what baking disaster would you absolutely leave out?

This is a great question… I would start with multiple layers of art flavoured with fashion, food, body positivity and queer joy. I would layer in some curiosity to help people be brave enough to try new things and top with some creativity, kindness and acceptance… and sprinkles! Always sprinkles. A baking disaster I would ban from my internet Showstopper would be fear- wonderful things can happen when we act without fear and if something doesn't go to plan it's not the end of the world. As I say, a bad batch of bread can make excellent breadcrumbs!


Janusz Domagala, or simply Janusz as he's most commonly known, became the instant standout star on 2022's "The Great British Bake Off" when he rightfully declared himself the "Star Caker." Since appearing on the show, Janusz has built a successful social media following, has been featured in multiple print and digital media outlets and was a contestant on the third season of the show "Crime Scene Kitchen." A keen LGBT+ activist, his debut recipe book, "Baking With Pride," was released in May 2024.

Get the browser that puts your privacy first - and always has

Download Firefox

The post The Great British Bake Off's Janusz on CakeTok and queer joy appeared first on The Mozilla Blog.

16 Jun 2025 5:40pm GMT

The Rust Programming Language Blog: Rust compiler performance survey 2025

We're launching a Rust Compiler Performance Survey.

Long compile times of Rust code are frequently being cited as one of the biggest challenges limiting the productivity of Rust developers. Rust compiler contributors are of course aware of that, and they are continuously working to improve the situation, by finding new ways of speeding up the compiler, triaging performance regressions and measuring our long-term performance improvements. Recently, we also made progress on some large changes that have been in the making for a long time, which could significantly improve compiler performance by default.

When we talk about compilation performance, it is important to note that it is not always so simple as determining how long does it take rustc to compile a crate. There are many diverse development workflows that might have competing trade-offs, and that can be bottlenecked by various factors, such as the integration of the compiler with the used build system.

In order to better understand these workflows, we have prepared a Rust Compiler Performance Survey. This survey is focused specifically on compilation performance, which allows us to get more detailed data than what we usually get from the annual State of Rust survey. The data from this survey will help us find areas where we should focus our efforts on improving the productivity of Rust developers.

You can fill out the survey here.

Filling the survey should take you approximately 10 minutes, and the survey is fully anonymous. We will accept submissions until Monday, July 7th, 2025. After the survey ends, we will evaluate the results and post key insights on this blog.

We invite you to fill the survey, as your responses will help us improve Rust compilation performance. Thank you!

16 Jun 2025 12:00am GMT

15 Jun 2025

feedPlanet Mozilla

Don Marti: encouraging first result from an AI right to know

Pretty soon after I posted an agentic AI benchmark, already built, I got Mark Hinkle's newsletter, How to Actually Start Using AI Agents Today. Perfect timing-thank you, universe! Now I have no excuse not to test the most promising AI agents and see if they will help with some of the complex processes that you have to go through to do a right to know (RtK) under CCPA or some other state privacy law.

So I made an account on Manus and tried one of my go-to RtKs, Verizon. I like RtKing them because they have a bunch of LOL-worthy marketing insights (inferences, which under the law must be disclosed) about my family, or at least they did last time. Verizon is a good first RtK for people getting started with this exciting(ish) hobby.

This company is not too hard to RTK, but they do have some forms to get through, so hard enough to be a realistic test for AI. Here's the transcript with my contact info redacted. tl;dr: it worked (mostly).

My first prompt was a little disappointing. I provided what I thought was the right form URL, and Manus got stuck. But I tried again. This time I supplied the privacy policy URL and told Manus to look in the California section, and it got through.

Only one error. I provided a phone number but it filled in n/a until corrected. But as soon as I supplied the right number it did the right thing.

TODO: I'll post an update here when I eventually get the data (or not).

The problem with RtKs compared to other software tests is that one person can only RtK the same company every so often. So I'd be really interested in seeing what happens when other people do variations on this one. Don't feel bad about overloading Verizon with RtKs-if they can afford to pay off the former Twitter to show ads to bots then they can afford to do these.

  1. Make a Manus account.

  2. Prompt it with your contact info and the URL of the privacy policy to start with (don't go down the dead end that I did) https://www.verizon.com/about/privacy/full-privacy-policy

  3. See if it can get to the success screen, and if the RtK data shows up.

Screenshot of the end of an AI agent session <figcaption>Screenshot of the end of an AI agent session</figcaption>

I know a lot of people are still doubtful that AI is making much progress in doing original work, but solving RtK mazes isn't really that. RtK mazes are a class of problems that somebody already designed, like solving CAPTCHAs.

More: personal AI in the rugpull economy The biggest win from personal AI will, strangely enough, be in de-personalizing your personal information environment. By doing the privacy labour for you, the "agentic" AI will limit your "addressability" and reduce personalization risks.

Bonus links

The promise that wasn't kept by Salma Alam-Naylor. What's becoming clear is that the mass adoption of AI is shifting the focus away from human-centred software solutions that provide meaningful value, and is reducing the entire industry to just the tools at its disposal. Just generate the code, bro. Just ship one more app, bro. (via Re: broken promises by Heather Buchel)

Meta Busted Spying on Android Users In Extremely Creepy New Way, Then Lies About It (I'm for removing the Meta apps: WhatsApp, Instagram, Threads, Facebook before the next story like this comes along and surprises everybody. Related: Meta's Failing Ad Moderation: Health Scams Targeting EU Users | AI Forensics from AI Forensics)

Trump's FTC may impose merger condition that forbids advertising boycotts by Jon Brodkin. (like I said, time to sharpen your pencils, people)

Rosemary has been linked to better memory, lower anxiety and even protection from Alzheimer's by Dipa Kamdar. (If you're in the area you're welcome to take a cutting. Rosemary bushes do really well around here.)

America's Newest Gamblers Are Playing a Dangerous Game By Hana Kiros. Sports betting seems to be spurring a rise in gambling addiction-one that the U.S. isn't equipped to address. (don't wait for The Algorithm to target you for deceptive ads, get protected. picking up cheap shoes in front of a steamroller)

15 Jun 2025 12:00am GMT

14 Jun 2025

feedPlanet Mozilla

Karl Dubost: Quick HTML test case

Blueprint of an old steam locomotive.

For reporting a bug or an unexpected behavior, the simpler the test is, the better. You can create a very simple HTML file to demonstrate the issue or you can use an online code web app such as jsfiddle or codepen. (I have a preference for codepen but I don't know why.) But most of the time, I'm using data: URL to share a simple piece of code for a test.

Let's take this code.

<div class="test" style="opacity:clamp(50%,0%,70%)"></div>

The style attribute returns different values when we extract the value using getPropertyValue()

According to the WPT test, Firefox returns the right answer: calc(0.5)

To see the returned value, we coud do :

<!-- The code being tested. -->
<div class="test" style="opacity:clamp(50%,0%,70%)"></div>

<!-- Something that can hold the test result. -->
<div class="log"></div>

<!-- the script extracting the value and writing the test result. -->
<script>
  document.querySelector(".log").textContent=document.querySelector(".test").style.getPropertyValue("opacity");
</script>

This is very simple. I can put all of this on one line.

<div class="test" style="opacity:clamp(50%,0%,70%)"></div><div class="log"></div><script>document.querySelector(".log").textContent=document.querySelector(".test").style.getPropertyValue("opacity");</script>

Then I just need to add the right data URL in front of it. This is HTML, so we add data:text/html,. That's it. This will instruct the browser to parse the code in the URL bar to process it as HTML.

data:text/html,<div class="test" style="opacity:clamp(50%,0%,70%)"></div><div class="log"></div><script>document.querySelector(".log").textContent=document.querySelector(".test").style.getPropertyValue("opacity");</script>

Then you can copy/paste this code in the URL bar of your favorite browser or more exactly in multiple browsers.

Hope it helps! Yes, I opened a bug for the issue.

Note: For those, who are wondering why I didn't use id instead of class. The # sign in the querySelector() would require to escape #, because it would have unintended consequences on the parsing of the URL.

Otsukare!

14 Jun 2025 7:38am GMT

Don Marti: Links for 14 Jun 2025

icymi:

I will speak of Thomas Aquinas instead. I will tell you my dim memories of what he said about the hierarchy of laws on this planet, which was flat at the time. The highest law, he said, was divine law, God's law. Beneath that was natural law, which I suppose would include thunderstorms, and our right to shield our children from poisonous ideas, and so on.

And the lowest law was human law.

Let me clarify this scheme by comparing its parts to playing cards. Enemies of the Bill of Rights do the same sort of thing all the time, so why shouldn't we? Divine law, then, is an ace. Natural law is a king. The Bill of Rights is a lousy queen.

The Thomist hierarchy of laws is so far from being ridiculous that I have never met anybody who did not believe in it right down to the marrow of his or her bones. Everybody knows that there are laws with more grandeur than those which are printed in our statute books. The big trouble is that there is so little agreement as to how those grander laws are worded. Theologians can give us hints of the wording, but it takes a dictator to set them down just right-to dot the i's and cross the t's. A man who had been a mere corporal in the army did that for Germany and then for all of Europe, you may remember, not long ago. There was nothing he did not know about divine and natural law. He had fistfuls of aces and kings to play.

Meanwhile, over on this side of the Atlantic, we were not playing with a full deck, as they say. Because of our Constitution, the highest card anybody had to play was a lousy queen, contemptible human law. That remains true today. I myself celebrate that incompleteness, since it has obviously been so good for us. - Kurt Vonnegut

and some recent links…

Hurricanes are getting so bad, we need a new category, expert warns by Tom Howarth. Hurricanes are a redistribution of heat from the ocean to the atmosphere. Essentially, you need more heat to be distributed before you can push through that lid and cause a hurricane. That means they might become less frequent, but when they go, they really go. At the same time, rising sea levels mean that even storms of the same strength can now push further inland, causing more widespread damage.

Wikipedia Pauses AI-Generated Summaries After Editor Backlash by Emanuel Maiberg. (From what I can see, obvious use of generative AI is, more and more, a political signal. Generative AI is seen as part of a program to de-value human creativity and shift the balance of power toward central points of control and away from distributed decision-making methods like peer production and markets. See Toolmen by Mandy Brown. Engaging with AI as a technology is to play the fool-it's to observe the reflective surface of the thing without taking note of the way it sends roots deep down into the ground, breaking up bedrock, poisoning the soil, reaching far and wide to capture, uproot, strangle, and steal everything within its reach. and A plausible, scalable and slightly wrong black box: why large language models are a fascist technology that cannot be redeemed by Benjamin Gregory Carlisle. In what follows, I will argue that being plausible but slightly wrong and un-auditable-at scale-is the killer feature of LLMs, not a bug that will ever be meaningfully addressed, and this combination of properties makes it an essentially fascist technology. By "fascist" in this context, I mean that it is well suited to centralizing authority, eliminating checks on that authority and advancing an anti-science agenda.)

Possibly related: Please tell us Reg: Why are AI PC sales slower than expected? by Paul Kunert, and Utah Study on Trans Youth Care Extremely Inconvenient for Politicians Who Ordered It by Madison Pauly. It is our expert opinion that policies to prevent access to and use of [gender-affirming hormone therapy] for treatment of [gender dysphoria] in pediatric patients cannot be justified based on the quantity or quality of medical science findings or concerns about potential regret in the future, and that high-quality guidelines are available to guide qualified providers in treating pediatric patients who meet diagnostic criteria. (That's the problem with using human experts. Next time the politicians will use an LLM.)

X's Sales Pitch: Give Us Your Ad Business or We'll Sue - WSJ by Suzanne Vranica, Dana Mattioli, and Jessica Toonkel. Late last year, Verizon Communications got an unusual message from a media company that wanted its business: Spend your ad dollars with us or we'll see you in court….It worked. Verizon, which hadn't advertised on X since 2022, pledged to spend at least $10 million this year on the platform, a person familiar with the matter said. (more coverage: Musk's threat to sue firms that don't buy ads on X seems to have paid off by Jon Brodkin. The WSJ article said that Verizon, which hadn't advertised on X since 2022, was told late last year that it would be added to the lawsuit if it didn't buy ads. Verizon subsequently pledged to spend at least $10 million on the platform this year, the article said.)

Start your own Internet Resiliency Club - Bow Shock Systems Consulting (If we get some interested people turning out at the Alameda Linux Installfest who are looking for a project…)

Texas Legislature Beats Back Assault on Clean Energy by Gabrielle Gurley. It may surprise some people that Texas is the American poster child for clean energy. But a fortunate mix of climatic and topographic elements has made it the leading state in the nation for wind energy generation, while second for solar and battery storage. Billions and billions of dollars of investments unlocked those resources, and its business-friendly opportunities (no corporate or personal income tax!) for all comers, from entrepreneurs to fossil fuel giants to small landowners, have sparked one of the strangest regional energy revolutions in the world. (another contender: Solar power in Pakistan) and Texas Right to Repair bill passes, heads to the governor's desk by Richard Lawler. (It's not about red states vs. blue states, it's about tech oligarchs vs. everybody)

Children need the freedom to play on driveways and streets again - here's how to make it happen by Debbie Watson, Lydia Collison, and Tom Allport. In many places, children's freedom to roam has been diminishing for generations, but the pandemic has hastened the decline of this free play. Since the pandemic, children's physical activity has become ever more structured. It now mostly happens in after-school or sports clubs, while informal, child-led play continues to decline.

A Letter to Europe by Paul Krugman. Above all, Europe needs to overcome its learned helplessness and act like the great power it is - especially given America's apparent determination to destroy the pillars of its own strength. (fortunately, the US IT exports of today are not the dominant products of Windows XP days. They're full of growth hacking and enshittification, and ready to be replaced.)

14 Jun 2025 12:00am GMT

12 Jun 2025

feedPlanet Mozilla

Don Marti: links for 12 Jun 2025

Botnet Part 2: The Web is Broken by Jan Wildeboer. So there is a (IMHO) shady market out there that gives app developers on iOS, Android, MacOS and Windows money for including a library into their apps that sells users network bandwidth.

The Guardian's new whistleblower tool buries leaks to journalists within its own readers' everyday traffic by Joshua Benton. (previously: AdLeaks)

Attorney General Bonta Urges Immediate Action by Meta to Prevent Investment Scam Advertisements on its Platforms | State of California - Department of Justice - Office of the Attorney General (Don't tell me California has a strong privacy law. If we had a strong privacy law there would be a bunch of people in CPPA raid jackets carrying servers and boxes of records out of the Meta offices right now. More: some ways that Facebook ads are optimized for deceptive advertising)

Why Denmark Is Dumping Microsoft Office and Windows for LibreOffice and Linux by Steven Vaughan-Nichols. (why, yes, the future of human civilization does depend on European bureaucrats finally pulling off the Year of the Linux Desktop…so we should have nothing to worry about)

WPP attacks Publicis-owned Epsilon SSP in rare public spat - Ad Age by Jack Neff, Ewan Larkin, and Brian Bonilla. (I'm Team WPP on this one. The test did involve an an unusual buying pattern, but saying that most brands don't buy that way is like saying most restaurant diners don't check the back of the fridge like a health inspector, or most word processor users don't make a document title with 1025 emoji in it like a software tester.)

Taylor Swift now owns all the music she has ever made: a copyright expert breaks it down by Wellett Potter. Swift has repeatedly emphasised the need for artists to retain control over their work and to receive fair compensation. In a 2020 interview she said she believes artists should always own their master records and licence them back to the label for a limited period.

12 Jun 2025 12:00am GMT

11 Jun 2025

feedPlanet Mozilla

This Week In Rust: This Week in Rust 603

Hello and welcome to another issue of This Week in Rust! Rust is a programming language empowering everyone to build reliable and efficient software. This is a weekly summary of its progress and community. Want something mentioned? Tag us at @thisweekinrust.bsky.social on Bluesky or @ThisWeekinRust on mastodon.social, or send us a pull request. Want to get involved? We love contributions.

This Week in Rust is openly developed on GitHub and archives can be viewed at this-week-in-rust.org. If you find any errors in this week's issue, please submit a PR.

Want TWIR in your inbox? Subscribe here.

Updates from Rust Community

Official
Newsletters
Project/Tooling Updates
Observations/Thoughts
Rust Walkthroughs
Research
Miscellaneous

Crate of the Week

This week's crate is optics, a typesafe, fully featured lens library.

Thanks to Akos Vandra for the self-suggestion!

Please submit your suggestions and votes for next week!

Calls for Testing

An important step for RFC implementation is for people to experiment with the implementation and give feedback, especially before stabilization.

If you are a feature implementer and would like your RFC to appear in this list, add a call-for-testing label to your RFC along with a comment providing testing instructions and/or guidance on which aspect(s) of the feature need testing.

Let us know if you would like your feature to be tracked as a part of this list.

RFCs
Rust
Rustup

If you are a feature implementer and would like your RFC to appear on the above list, add the new call-for-testing label to your RFC along with a comment providing testing instructions and/or guidance on which aspect(s) of the feature need testing.

Call for Participation; projects and speakers

CFP - Projects

Always wanted to contribute to open-source projects but did not know where to start? Every week we highlight some tasks from the Rust community for you to pick and get started!

Some of these tasks may also have mentors available, visit the task page for more information.

If you are a Rust project owner and are looking for contributors, please submit tasks here or through a PR to TWiR or by reaching out on X (formerly Twitter) or Mastodon!

CFP - Events

Are you a new or experienced speaker looking for a place to share something cool? This section highlights events that are being planned and are accepting submissions to join their event as a speaker.

If you are an event organizer hoping to expand the reach of your event, please submit a link to the website through a PR to TWiR or by reaching out on X (formerly Twitter) or Mastodon!

Updates from the Rust Project

516 pull requests were merged in the last week

Compiler
Library
Clippy
Rust-Analyzer
Rust Compiler Performance Triage

Mostly positive week, with a lot of improvements in the type system, especially in new solver and one big win in caching code. Regressions come from new warnings, with outsized impact on one benchmark with a lot of generated code.

Triage done by @panstromek. Revision range: 2fc3deed..c31cccb7

Summary:

(instructions:u) mean range count
Regressions ❌
(primary)
3.1% [0.3%, 8.5%] 22
Regressions ❌
(secondary)
0.6% [0.2%, 0.9%] 3
Improvements ✅
(primary)
-1.0% [-3.4%, -0.2%] 151
Improvements ✅
(secondary)
-3.5% [-66.5%, -0.2%] 146
All ❌✅ (primary) -0.4% [-3.4%, 8.5%] 173

Full report here

Approved RFCs

Changes to Rust follow the Rust RFC (request for comments) process. These are the RFCs that were approved for implementation this week:

Final Comment Period

Every week, the team announces the 'final comment period' for RFCs and key PRs which are reaching a decision. Express your opinions now.

Tracking Issues & PRs

Rust

No Items entered Final Comment Period this week for Cargo, Language Reference, Language Team, Rust RFCs or Unsafe Code Guidelines.

Let us know if you would like your PRs, Tracking Issues or RFCs to be tracked as a part of this list.

New and Updated RFCs

Upcoming Events

Rusty Events between 2025-06-11 - 2025-07-09 🦀

Virtual
Africa
Asia
Europe
North America
Oceania
South America

If you are running a Rust event please add it to the calendar to get it mentioned here. Please remember to add a link to the event too. Email the Rust Community Team for access.

Jobs

Please see the latest Who's Hiring thread on r/rust

Quote of the Week

Gaze not into the abyss, lest you become recognized as an abyss domain expert, and they expect you keep gazing into the damn thing.

- Nick Mathewson on twitter

Thanks to robin for the suggestion!

Please submit quotes and vote for next week!

This Week in Rust is edited by: nellshamrell, llogiq, cdmistman, ericseppanen, extrawurst, U007D, joelmarcey, mariannegoldin, bennyvasquez, bdillo

Email list hosting is sponsored by The Rust Foundation

Discuss on r/rust

11 Jun 2025 4:00am GMT

10 Jun 2025

feedPlanet Mozilla

The Mozilla Blog: Firefox features that help you plan a trip (and take it)

Browser window and smartphone with a sync icon, representing syncing data between devices.<figcaption class="wp-element-caption">Start planning on your laptop, pick it back up on your phone with Firefox sync. </figcaption>

Most travel plans start with a handful of tabs. A map here, a few guides there. Then a flurry of bookings, logins and maybe a PDF form you're supposed to sign with your finger. Next thing you know, you're in line at the car rental counter with 3% battery, no confirmation number, and no address for where you're staying.

Firefox can't hand you a charger. But it can keep up before your trip and while you're on it. Haven't downloaded Firefox mobile yet? Now's a good time. Once you enable sync on Firefox mobile, all your travel bookmarks and tabs will come with you - ready to access quickly when you need them. Strong privacy protections are built in by default.

Here are a few features that help you plan, book and get where you're going:

Sync

Start planning on your laptop, pick it back up on your phone. Tabs like your hotel reservation page, bookmarks, passwords and more come with you, so you're not stuck emailing yourself links or searching "best vegan pizza rome" for the third time. Sign in to your Mozilla account to enable sync and access your data across your devices. It stays private and encrypted - even from us. (Firefox sync works in most places, but it's not available in every region.)

AI chatbot in your sidebar

Firefox lets you keep an AI chatbot in the sidebar while you browse. Useful when you're planning an itinerary, overthinking a layover, or asking it to generate a packing list based on the weather, your mood, and your inability to travel light.

Right-click the sidebar > customize sidebar > check "AI chatbot." Pick from tools like Claude, ChatGPT, Gemini and others (availability may vary by region).

Firefox browser window showing the “Customize sidebar” panel, with options to enable vertical tabs and move the sidebar to the right. Under “Firefox tools,” the “AI chatbot” is checked, while “Tabs from other devices,” “History,” and “Bookmarks” are unchecked. A link to “Manage Firefox settings” is at the bottom.

Password manager and generator

Firefox can save your passwords, fill them in when you need them and generate more secure ones than "plzletmein!"

PDF editor

Sometimes the thing that holds up your travel plans is a PDF: tour sign-up sheets, car rental instructions, a transit map. Firefox's built-in PDF editor lets you fill out, sign and annotate PDFs directly in the browser - no downloads, no printing required. Works on desktop and mobile.

Using the text tool in a PDF editor to add and edit text with options for color and size.

Tab groups

Tab groups let you organize your tabs by topic - flights, food, logistics, backup food - so you're not digging through a sea of identical tab titles wondering where the train schedule went.

Vertical tabs

Once the tab count crosses into the regrettable zone, vertical tabs help you see what you're working with. Everything's listed neatly on the side, so you can find the one tab with actual answers and stop clicking through five versions of "best day trips near Milan."

 Firefox browser window open to a TripAdvisor page about Milan, Italy, with a large image of Piazza del Duomo featuring the cathedral, nearby buildings, and people walking. The sidebar on the left shows open tabs related to Milan travel, including Google Flights, YouTube, Reddit, Google Docs, and Maps.

Right-click the toolbar > turn on vertical tabs.

Built-in translation

Firefox can translate full pages instantly for supported languages. Useful when you're trying to fill out a form, make a reservation, or read a menu where the only word you recognize is cornetto.

VPN extension for Windows

Sometimes travel means needing to book something as if you're already there, or reading the news like you're still at home. With Mozilla VPN, you can locate yourself wherever in the world you want - even back home. And with the VPN extension for Windows, you can do this on a per site basis, so you can check what you need without changing your whole device's location. (Available as part of a paid subscription.)

 List of location options in Mozilla VPN settings, showing the default location selected and a list of countries including Australia, Austria, Belgium, and Brazil.

Firefox keeps up with your tabs, logins, pages, even the one in another language. Just remember to pack your charger.

Get the browser that puts your privacy first - and always has

Download Firefox

The post Firefox features that help you plan a trip (and take it) appeared first on The Mozilla Blog.

10 Jun 2025 9:15pm GMT

Dave Townsend: What would you say you do here?

Featured image of post What would you say you do here?

I'm currently joining a couple of new projects and the inevitable first step is introductions over Zoom and the usual questions: who are you, where are you based, and what is your role on this project. I'm a Principal Engineer here at Mozilla, which might make you think that my role is going to be a lot of development. But this isn't the case and I thought others might be interested in what it actually means. Somehow along the way it ended up turning into a post about how I see the different career levels for engineers at Mozilla, but hey maybe that is useful for others too?

One quick disclaimer for Mozilla engineers reading this. I am not your manager. If you want to know the specifics about what your manager wants to see from you in order to progress in your career you're better off talking to them first. This is also a simplification of a complex topic. I've talked in general terms about the career levels here, but no two engineers or career paths are the same, exceptions exist.

Like a number of companies these days Mozilla has two tracks for career progression. Engineers here are levelled along the Individual Contributor (IC) track. This didn't used to be the case. Previously, other than a few exceptional cases, when engineers reached one of the more senior levels they were expected to move into people management. That happened to me and for four years I managed a team of about seven engineers and I very quickly learned that people management wasn't for me. So I was extremely grateful when my manager at the time announced that Mozilla were building a more comprehensive track for engineers who wanted to continue to grow without needing to become managers. And they were talking with folks that they felt might have been pushed into management when there was no other option and giving them the choice to switch back. Which I jumped at.

Now Mozilla has an IC track that has 9 levels numbered from IC1 to IC8 (yes you read that right). We have the career level guide which is the hallowed spreadsheet that managers can point to to help engineers understand what the expectations are for the different levels. I actually helped write one of the original versions of this many moons ago so I have a lot of familiarity with it. And I find that those levels split into three chunks.

Engineers (IC1-IC3)

The first three levels (Software Engineer 1, Software Engineer 2, and Senior Software Engineer) are primarily about the work you do yourself as an engineer. You start by learning the ropes with your manager telling you what bugs to work on with other engineers helping you figure out how to fix things and help you when you get stuck. You grow to be more and more independent and by IC3 you are more self directing. You can generally figure out what bugs are most important to work on and how to unblock yourself. Your work is mostly directed by your manager at these levels but as you reach senior you'll be helping your manager understand which bugs are hard or easy to fix to help inform their prioritisation decisions.

Engineers fix bugs and become more senior by getting better at fixing bugs.

Staff engineers (IC4-IC5)

The next two levels (Staff Engineer and Senior Staff Engineer) change things up. All of the levels are ranked in terms of the overall impact you have to Mozilla, but while in the first three levels your impact is fairly direct (the bugs you fix) at the staff level your impact becomes more indirect. You're now growing into technical leadership. Figuring out and prioritising the issues that need to be worked on. Building a roadmap for your feature. Likely assigning bugs to other engineers. You work directly with other teams where there are dependencies and other functions of the organisation to guide the project as a whole. More of your time is spent helping the engineers around you get their work done than your own (though you still do a lot yourself too). The guidance from your manager is less about telling you specifically what to work on and more of a conversation where the manager brings the business needs and you bring the engineering needs and together you reach agreement on how to prioritise projects.

Perhaps the most important difference between staff and the earlier levels is that how you work becomes much more important. For the first three levels you can fix bugs largely in isolation. Once you reach staff communication becomes key. You have to be able to explain yourself well so others understand you and have confidence in your decisions. You have to be able to work productively with others, helping them do their work but also importantly listening to them when they have expertise that you don't. A staff engineer is on a team to provide technical leadership and decision making. This doesn't mean they have to be the expert on the project. Sometimes there might be an IC3 who understands the technology better. The staff engineer has to be humble enough to trust their subject matter expert in this case, this is often a hard shift in thinking for an engineer to make.

A staff engineer should make everyone on their project more productive.

Principal and above (IC6+)

The final levels start with IC6 which is where I am. Principal Engineer. I recall when we worked on the original level guide we got a bit stuck here. In part there were only a few engineers at this level or above to use as examples (this was back when this separate track was for the exceptional cases). But the other problem was that all of those engineers were different. I recall we basically gave up at one point and just wrote something along the lines of "You are an unstoppable force of nature". The levels are thankfully better defined now but there is still a lot of difference between the principals.

Some specialise in technical depth. They work on extremely complex, risky, or mission critical projects with many moving parts and have a deep understanding of how it all fits together so they can guide the work on it. They may still write a lot of code.

Others may barely write any code at all and spend their entire time working at the higher level of projects that span large areas of the company. They understand how all the pieces of Firefox fit together and so when technical questions need answering they can either answer them directly or very quickly find the person who knows the answer. They help evaluate and steer new projects with an eye on the technical capabilities we have available and the business needs. They identify potential roadblocks quickly because they have that overarching view.

And there are many principals who sit somewhere in between those two extremes.

There are some commonalities though. While staff engineers tend to have their impact limited to a single project at a time, IC6 and above will be impacting multiple projects at once. Even those who are deep in the technical pieces of one project will still be working with other projects. Principals will also work directly with Directors and VPs to help decide what projects should and shouldn't happen. The levels above principal will be working directly with the C level execs. We will also often be working with people from other companies, perhaps companies we are partnering with, or standards bodies, or even governments in some cases. Principals and above have to have a good understanding on the goals of Mozilla as a whole, not just those for any one particular part of Mozilla.

Principal engineers should make the entire company more successful.

What about me?

So what kind of a principal engineer am I? Well here is my commit graph for Firefox.

A github commit graph showing very few commits this year

As you can see I do very little coding. I have ended up towards the other end of that spectrum and I spend most of my time advising projects. I was looking at a new ultra-wide monitor that became available the other day and my half-serious joke was "Damn, I could fit so many Google Docs on that thing".

In the past I have been thrown into teams where a specific project has become blocked and they need help figuring out how to unblock it. Or a VP needs a more direct link with a critical project and wants me to act as liaison between them and the team, someone who they can trust to be their eyes and ears but also often their voice.

More recently I've done work where I've been the first engineer on a new project and I spent time working with product management and user experience to figure out the basics of what we are going to implement, what impact that will have on the rest of the product, which other teams we have dependencies on, and the technical feasibility of what we're planning. This then helps us decide which engineers we need to do the actual work and how long we need them for. Sometimes once other engineers join to start on the implementation I step back, letting the new tech lead handle most of the decision making. Though I'm often having private conversations with them to help them if they need it. Sometimes a project has enough complexity and cross-team dependencies that I stay more actively involved, letting the tech lead focus on the decisions that need to be made for the implementation while I handle some of the burden of making sure that everything surrounding the project is running smoothly. These are the sorts of roles I took for the recent Tab Groups and Profile Management projects.

One of my new projects is a similar ask again, helping a new project get up and running. It has a lot of moving pieces both within Firefox and across the rest of the company. Identifying the hard parts so we can tackle them sooner is going to be very important. I'll be doing very little implementation work here, possibly some prototyping. Another of my new projects has me diving into a team that wants a more senior engineer around to just generally help them with making decisions on tricky projects and figure out their priorities. This will be more mentorship than development work which is something I've been wanting to do more.

What I see at Mozilla is that the more senior the engineer the less likely you'll be able to guess what they actually do on a day to day basis from their job title alone. Having not really worked at other organisations of this size I can't really say whether the same is true elsewhere, but I suspect that it is.

10 Jun 2025 10:12am GMT

Cameron Kaiser: macOS Tahoe

It's WWDC again, and Apple has turned the volume knob to add 11, jumping from 15 to 26 with macOS Tahoe. Meanwhile, Tahoe keeps Intel Mac owners blue by eliminating support for all but four models - and Intel MacBook Airs and minis are SOL. In fact, assuming macOS 27 Earlimart Ceres Lathrop drops Intel Macs completely (which seems most likely), that would have been six years of legacy support since Apple silicon was first surfaced in 2020, right up to seven for critical updates with Apple's typical year-over-year support history. Power Macs got from 2006 during Tiger to 2011 when Lion came out and Leopard updates ceased. Rosetta may have been a factor in Steve Jobs dropping the PowerPC like a bad habit, but it seems like Rosetta 2 (or at least the lack of Apple Intelligence) is making Tim Cook kick Intel to the curb nearly as quickly.

And Liquid Glass? Translucency? Transparency? Isn't that ... Aqua? The invisible menu bar and control centre is an interesting touch but sounds like a step backwards in accessibility (or at least visual contrast). I also look forward to the enhanced Spotlight actually finding anything in a way Sequoia on this M1 Air doesn't. Which will probably not make it to macOS 28 either.

[UPDATE: Apple has made it official - 27 will drop all Intel Macs, though 26 will get support until fall 2028, so Power Macs really did get screwed. Simultaneously, in or around macOS 28 Stockton, Rosetta 2 will become limited to only a subset of apps and the virtualization framework. Hope you didn't buy one of the new cheesegrater Intel Mac Pros, because you just got the Tim Cook version of IIvxed.]

10 Jun 2025 12:58am GMT

06 Jun 2025

feedPlanet Mozilla

Firefox Nightly: Smarter Searches – These Weeks in Firefox: Issue 182

Highlights

Friends of the Firefox team

Resolved bugs (excluding employees)

Volunteers that fixed more than one bug
New contributors (🌟 = first patch)

Project Updates

Add-ons / Web Extensions

WebExtensions Framework
WebExtension APIs
Addon Manager & about:addons

DevTools

WebDriver BiDi

Lint, Docs and Workflow

Migration Improvements

New Tab Page

Picture-in-Picture

Search and Navigation

Storybook/Reusable Components/Acorn Design System

06 Jun 2025 8:52pm GMT

Karl Dubost: Les Liaisons Dangereuses Or The Wrong Love For Proxy Detections

a street sign with the following words: World Wide Love. LET'S KEEP THINGS FRIENDLY FOR OUR OWN GOOD.

The temptation is high. The desire for shortcuts is permanent. But the story is often full of painful moments without any winners. "Les liaisons dangereuses" of detecting browsers and devices are common.

ce n'est pas à l'illusion d'un moment à régler le choix de notre vie. - Les liaisons dangereuses. Choderlos de Laclos. 1782

which can be translated as "it is not for the illusion of a moment to govern the choice of a lifetime."

window.installTrigger

Firefox (Gecko) had the property window.installTrigger to signal that a web extension could be installed. This was a Firefox-only property. Soon enough, obviously, people started to use it as a signal that the browser accessing the website was Firefox.

if ("installTrigger" in window) {
    // do something for Firefox
} else {
    // do something for others
}

When the property was retired, because it was not standard and used for things which were completely different from its initial purpose, websites started to break. It had to be shimmed. Gecko had to imitate the property so that some websites would continue to work.

Another example -webkit-touch-callout

-webkit-touch-callout was implemented in 2013 in WebKit to give the possibility for Web developers to opt out of the contextual menu given on iPhone during a long press. The long press on a link makes it possible to also get a preview of the page behind the link.

Screenshot of the contextual menu on an iPhone after a long press showing the preview of the page.

-webkit-touch-callout: none permits web developers to cancel this behavior when, for example, developing a web app they need to be able to long-press user gestures such as a drag and drop.

But I discovered today that this was used as a proxy detection for iPhone in CSS. This is bad. Some CSS stylesheets contain a combination of @support and -webkit-touch-callout: none to have a specific behavior in their CSS.

@supports (-webkit-touch-callout: none) {
    body {
        /* DON'T DO THAT! */
    }
}

This has many implications for the future. Here are some examples of how it can become very sour.

These are only a few examples of the complexity…

Do Not Misuse Terms

There are plenty of other examples of this type, such as the abuse of maxTouchPoints (this one will be (not) "funny" if touch screens on desktop computers become more prevalent) or window.standalone which created plenty of issues when web apps for desktop computers became a thing.

We all know the benefits of feature detection, we made a lot of progress as a community to go away as much as possible from User Agent detection. It's not perfect. There are always difficult trade-offs.

L'humanité n'est parfaite dans aucun genre, pas plus dans le mal que dans le bien. Le scélérat a ses vertus, comme l'honnête homme a ses faiblesses. - Les liaisons dangereuses. Choderlos de Laclos. 1782

Something along "Humanity is not perfect in any fashion; no more in the case of evil than in that of good. The criminal has his virtues, just as the honest man has his weaknesses."

Stay away from proxy detections, aka using a feature of the Web platform which seems a solution, at a point in time, to detect a specific browser or device. It clutters the Web platform. It makes it very hard to have a better Web without plenty of hacks here and there.

Use feature detections for what they are, detecting the feature to affect the behavior of this specific feature.


See Also

Otsukare!

06 Jun 2025 7:37am GMT