16 Jan 2026
Planet Mozilla
Mozilla GFX: Experimental High Dynamic Range video playback on Windows in Firefox Nightly 148
Modern computer displays have gained more colorful capabilities in recent years with High Dynamic Range (HDR) being a headline feature. These displays can show vibrant shades of red, purple and green that were outside the capability of past displays, as well as higher brightness for portions of the displayed videos.
We are happy to announce that Firefox is gaining support for HDR video on Windows, now enabled in Firefox Nightly 148. This is experimental for the time being, as we want to gather feedback on what works and what does not across varied hardware in the wild before we deploy it for all Firefox users broadly. HDR video has already been live on macOS for some time now, and is being worked on for Wayland on Linux.
To get the full experience, you will need an HDR display, and the HDR feature needs to be turned on in Windows (Settings -> Display Settings) for that display. This release also changes how HDR video looks on non-HDR displays in some cases: this used to look very washed out, but it should be improved now. Feedback on whether this is a genuine improvement is also welcome. Popular streaming websites may be checking for this HDR capability, so they may now offer HDR video content to you, but only if HDR is enabled on the display.
We are actively working on HDR support for other web functionality such as WebGL, WebGPU, Canvas2D and static images, but have no current estimates on when those features will be ready: this is a lot of work, and relevant web standards are still in flux.
Note for site authors: Websites can use the CSS video-dynamic-range functionality to make separate HDR and SDR videos available for the same video element. This functionality detects if the user has the display set to HDR, not necessarily whether the display is capable of HDR mode. Displaying an HDR video on an SDR display is expected to work reasonably but requires more testing - we invite feedback on that.
Notes and limitations:
- Some streaming sites offer HDR video only if the page is on an HDR-enabled display at the time the page is loaded. Refreshing the page will update that status if you have enabled/disabled HDR mode on the display or moved the window to another display with different capabilities. On the other hand, you can use this behavior to make side-by-side comparisons of HDR and non-HDR versions of a video on these streaming sites if that interests you.
- Some streaming sites do not seem to offer HDR video to Firefox users at this time. This is not necessarily a problem with the HDR video functionality in Firefox; they may simply use codecs we do not currently support.
- Viewing videos in HEVC format on Windows may require obtaining 'HEVC Video Extensions' format support from the Microsoft Store. This is a matter of codec support and not directly related to HDR, but some websites may use this codec for HDR content.
- If you wish to not be offered HDR video by websites, you can set the pref 'layout.css.video-dynamic-range.allows-high' to false in
about:config, we may decide to add this pref to the general browser settings if there is interest. Local files and websites that only offer HDR videos will still be HDR if the encoding is HDR. - If you wish to experiment with the previous 'washed out' look for HDR video, you can set the pref 'gfx.color_management.hdr_video' to false. This is unlikely to be useful, but if you find you need to use it for some reason we would like to know (file a bug on Bugzilla).
- No attempt has been made to read and use HDR metadata in video streams at this time. Windows seems to do something smart with tonemapping for this in our testing, but we will want to implement full support as in other browsers.
- On the technical side: we're defining HDR video as video using the BT2020 colorspace with the Perceptual Quantizer (PQ) transfer function defined in BT2100. In our observations, all HDR video on the web uses this exact combination of colorspace and transfer function, so we assume all BT2020 video is PQ as a matter of convenience. We've been making this assumption for a few years on macOS already. The 'washed out' HDR video look arose from using the stock BT2020 transfer function rather than PQ, as well as the use of a BGRA8 overlay. Now we use the RGB10A2 format if the colorspace is BT2020, as HDR requires at least 10 bits to match the quality of SDR video. Videos are assumed to be opaque (alpha channel not supported): we're not aware of any use of transparency in videos in the wild. It would be interesting to know if that feature is used anywhere.
16 Jan 2026 2:40am GMT
14 Jan 2026
Planet Mozilla
The Mozilla Blog: How founders are meeting the moment: Lessons from Mozilla Ventures’ 2025 portfolio convening

At Mozilla, we've long believed that technology can be built differently - not only more openly, but more responsibly, more inclusively, and more in service of the people who rely on it. As AI reshapes nearly every layer of the internet, those values are being tested in real time.
Our 2025 Mozilla Ventures Portfolio Convening Report captures how a new generation of founders is meeting that moment.
At the Mozilla Festival 2025 in Barcelona, from Nov. 7-9, we brought together 50 founders from 30 companies across our portfolio to grapple with some of the most pressing questions in technology today: How do we build AI that is trustworthy and governable? How do we protect privacy at scale? What does "better social" look like after the age of the global feed? And how do we ensure that the future of technology is shaped by people and communities far beyond today's centers of power?
Over three days of panels, talks, and hands-on sessions, founders shared not just what they're building, but what they're learning as they push into new terrain. What emerged is a vivid snapshot of where the industry is heading - and the hard choices required to get there.
Open source as strategy, not slogan
A major theme emerging across conversations with our founders was that open source is no longer a "nice to have." It's the backbone of trust, adoption, and long‑term resilience in AI, and a critical pillar for the startup ecosystem. But these founders aren't naïve about the challenges. Training frontier‑scale models costs staggering sums, and the gravitational pull of a few dominant labs is real. Yet companies like Union.ai, Jozu, and Oumi show that openness can still be a moat - if it's treated as a design choice, not a marketing flourish.
Their message is clear: open‑washing won't cut it. True openness means clarity about what's shared -weights, data, governance, standards - and why. It means building communities that outlast any single company. And it means choosing investors who understand that open‑source flywheels take time to spin up.
Community as the real competitive edge
Across November's sessions, founders returned to a simple truth: community is the moat. Flyte's growth into a Linux Foundation project, Jozu's push for open packaging standards, and Lelapa's community‑governed language datasets all demonstrate that the most durable advantage isn't proprietary code - it's shared infrastructure that people trust.
Communities harden technology, surface edge cases, and create the kind of inertia that keeps systems in place long after competitors appear. But they also require care: documentation, governance, contributor experience, and transparency. As one founder put it, "You can't build community overnight. It's years of nurturing."
Ethics as infrastructure
One of the most powerful threads came from Lelapa AI, which reframes data not as raw material to be mined but as cultural property. Their licensing model, inspired by Māori data sovereignty, ensures that African languages - and the communities behind them - benefit from the value they create. This is openness with accountability, a model that challenges extractive norms and points toward a more equitable AI ecosystem.
It's a reminder that ethical design isn't a layer on top of technology - it's part of the architecture.
The real competitor: fear
Founders spoke candidly about the biggest barrier to adoption: fear. Enterprises default to hyperscalers because no one gets fired for choosing the biggest vendor. Overcoming that inertia requires more than values. It requires reliability, security features, SSO, RBAC, audit logs - the "boring" but essential capabilities that make open systems viable in real organizations.
In other words, trust is built not only through ideals but through operational excellence.
A blueprint for builders
Across all 16 essays, a blueprint started to emerge for founders and startups committed to building responsible technology and open source AI:
- Design openness as a strategic asset, not a giveaway.
- Invest in community early, even before revenue.
- Treat data ethics as non‑negotiable, especially when working with marginalized communities.
- Name inertia as a competitor, and build the tooling that makes adoption feel safe.
- Choose aligned investors, because misaligned capital can quietly erode your mission.
Taken together, the 16 essays in this report point to something larger than any single technology or trend. They show founders wrestling with how AI is governed, how trust is earned, how social systems can be rebuilt at human scale, and how innovation looks different when it starts from Lagos or Johannesburg instead of Silicon Valley.
The future of AI doesn't have to be centralized, extractive or opaque. The founders in this portfolio are proving that openness, trustworthiness, diversity, and public benefit can reinforce one another - and that competitive companies can be built on all four.
We hope you'll dig into the report, explore the ideas these founders are surfacing, and join us in backing the people building what comes next.
The post How founders are meeting the moment: Lessons from Mozilla Ventures' 2025 portfolio convening appeared first on The Mozilla Blog.
14 Jan 2026 5:00pm GMT
This Week In Rust: This Week in Rust 634
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
- Bevy 0.18
- Exponential growth continued - cargo-semver-checks 2025 Year in Review
- This Week in Slatron v1.1: The intelligent TV station manager introduces AI DJ hosts w/ TTS support for DIY hackable TV stations, radio, and digital signage.
- SeaORM 2.0 Migration Guide
- BugStalker v0.4.0 - Modern debugger for Linux x86-64. Written in Rust for Rust programs. now with VSCode support.
- Announcing cadd: a library for painless checked arithmetic and conversions
- READ_ONCE(), WRITE_ONCE(), but not for Rust
- GuardianDB 0.14.0 - High-performance, local-first decentralized database built on Rust and Iroh
- A year of work on the ALPM project
- GlueSQL v0.19 adds parameter binding and customizable query planners
- diesel-guard: Your Diesel Migrations Might Be Ticking Time Bombs.
- The Rapier physics engine 2025 review and 2026 goals
- Tako v0.5.0 → v0.7.1-2: from "nice router" to "mini platform"
Observations/Thoughts
- The State of Rust Cryptography in 2026
- Garbage collection is contrarian
- Virtual Places and Borrow Checker Integration
- [video] 39c3 - Xous: A Pure-Rust Rethink of the Embedded Operating System
- [video] Fast and Safe Image Decoding in Rust
- [video] ere: Compiling Regular Expressions at Build-Time
- [video] Rust at Volvo Cars
- [audio] Radar with Jeff Kao
Rust Walkthroughs
[ES] Command Pattern in Rust: When intent doesn't need to be an object
- [series] Part 3: Model Architecture, Building an LLM from Scratch in Rust
- The Impatient Programmer's Guide to Bevy and Rust: Chapter 5 - Let There Be Pickups
- [audio] Netstack.FM episode 22 - Rust URL with Simon Sapin
Miscellaneous
Crate of the Week
This week's crate is diesel-guard, a linter against dangerous Postgres migrations.
Thanks to Alex Yarotsky 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.
- No calls for testing were issued this week by Rust, Cargo, Rustup or Rust language RFCs.
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.
- Diesel - diesel print-schema produces uncompileable schema with column named "table"
- GuardianDB - Create Benchmarks
- GuardianDB - Create cohesive usage examples
- GuardianDB - Translate documentation to English
- rung - Add shell completions for bash/zsh/fish
- rung - Add --quiet flag to suppress non-essential output
- rung - Support NO_COLOR environment variable
- rung - Add rung top / rung bottom navigation commands
- rung - Add rung log command to show stack commits
- rung - Add integration test for sync with merge conflicts
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 Bluesky 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.
- RustWeek 2026 | CFP closes 2026-01-18 | Utrecht, The Netherlands | 2026-05-19 - 2026-05-20
- RustConf 2026 | CFP closes 2026-02-16 | Montreal, Quebec, Canada | 2026-09-08 - 2026-09-11
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 Bluesky or Mastodon!
Updates from the Rust Project
539 pull requests were merged in the last week
Compiler
Library
- add
AtomicPtr::null Vec::pushin consts MVP- add allocator parameter to
HashMap - implement
partial_sort_unstablefor slice - reflection MVP
- stabilize
Peekable::next_if_map(#![feature(peekable_next_if_map)]) - stabilize
slice::element_offset
Cargo
docs(unstable): expand docs for-Zbuild-analysisfeat(test): MakeCARGO_BIN_EXE_available at runtimefix(build-std): std link metadata propagate to userfix(info): resolve underscore vs hyphen mismatch in schema lookupfix(package): detect dirty files when run from workspace member- add Clippy like lint groups
- add
--idflag tocargo report timingsandcargo report rebuilds - display lockfile path in very verbose mode when blocking
- feat: in-memory only
Manifest - fix(timing)!: remove
--timings=<FMT>optional format values - fix: preserve
dep_namefor build script metadata - fixed incorrect version comparision during build script dependency selection
- improve error message for missing dependencies
- isolate build script metadata progation between std and non-std crates
- refactor: new type for unit index
- test: add
-Zunstable-optionswith custom targets
Rustdoc
Clippy
- A
returnin an iterator closure should not triggernever_loop strlen_on_c_strings: mention the specific type (CString orCStr)float_point_arithmetic: respect reduced applicabilitysingle_range_in_vec_init: don't apply the suggestion automaticallyunnecessary_map_or: respect reduced applicabilityuseless_conversion: respect reduced applicabilitymissing_enforced_import_rename: Do not enforce for underscoressuspicious_to_owned: improve lint messagestransmuting_null: Add checks forwithout_provenanceandwithout_provenance_mut- add new
duration_suboptimal_unitslint - allow
expectonimplforderive_ord_xor_partial_ord - clean-up
unnecessary_map_orandmanual_is_variant_and - do not ignore statements before a
breakwhen simplifying loop - do not show spans from external crates in
missing_trait_methods - do not warn about large stack arrays without having a valid span
- do not warn on arithmetic side effect for
String+String - enhance
needless_collectto cover vecpush-alike - fix
LimitStack::pop_atrin release builds - fix
clippy_utils::std_or_core(_)markingno_corecrates asstd - fix
map_unwrap_orfail to coverResult::unwrap_or - fix
significant_drop_tighteningsuggests wrongly for non-method usage - fix
str_to_stringwrongly unmangled macros - fix
unnecessary_to_ownedwrongly unmangled macros - fix: restrict
match_boolto 2 arms - improve
useless_conversion .into_iter()suggestion for nested references - more fixes for handling of macros
- overhaul
int_plus_one
Rust-Analyzer
- add inherit attributes for
extract_functionassist - configure flycheck using workspace.discoverConfig
- allow rust paths in symbol search
- fix ignore flag for test attributes with values
- fix loses exists guard for
move_guard - fix not applicable on statement for
convert_to_guarded_return - fix not complete
mutandrawin&x.foo() - fix not disable string escape highlights
- disable
unused_variablesandunused_mutwarnings - fix crate root search in world symbols duplicating root entries
- fix lifetimes len diagnostics for fn pointers
- fixes for builtin derive expansions
- hide renamed imports from macros in symbol index
- lowering crash with supertrait predicates
- make
naked_asm!()always return! - properly lower
SelfOnlypredicates - remove code made redundant by method resolution rewrite
- suggest traits other than ones in the environment crate
- sync cast checks to rustc again
- implement
Span::ByteRangefor proc-macro-srv - migrate
generate_mut_trait_implassist to use SyntaxEditor
Rust Compiler Performance Triage
Fairly quiet week, most changes due to new features which naturally carry some overhead for existing programs. Overall though a small improvement.
Triage done by @simulacrum. Revision range: 7c04f5d2..840245e9
3 Regressions, 1 Improvement, 4 Mixed; 2 of them in rollups 31 artifact comparisons made in total
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
- Stabilize ppc inline assembly
- const-eval: always do mem-to-mem copies if there might be padding involved
- Tracking Issue for
Vec::push_mut - Tracking Issue for
error_generic_member_access - FCW Lint when using an ambiguously glob imported trait
No Items entered Final Comment Period this week for Cargo, Rust RFCs, Leadership Council, Language Team, Language Reference 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 2026-01-14 - 2026-02-11 🦀
Virtual
- 2026-01-15 | Virtual (Berlin, DE) | Rust Berlin
- 2026-01-15 | Hybrid (Seattle, WA, US) | Seattle Rust User Group
- 2026-01-15 | Virtual (Berlin, DE) | Rust Berlin
- 2026-01-16 | Virtual (Tel Aviv-yafo, IL) | Rust 🦀 TLV
- 2026-01-18 | Virtual (Tel Aviv-yafo, IL) | Code Mavens 🦀 - 🐍 - 🐪
- 2026-01-20 | Virtual (Washington, DC, US) | Rust DC
- 2026-01-21 | Virtual (Girona, ES) | Rust Girona
- 2026-01-21 | Virtual (Vancouver, BC, CA) | Vancouver Rust
- 2026-01-27 | Virtual (Dallas, TX, US) | Dallas Rust User Meetup
- 2026-01-27 | Virtual (London, UK) | Women in Rust
- 2026-01-28 | Virtual (Girona, ES) | Rust Girona
- 2026-01-29 | Virtual (Amsterdam, NL) | Bevy Game Development
- 2026-01-29 | Virtual (Berlin, DE) | Rust Berlin
- 2026-01-29 | Virtual (Charlottesville, VA, US) | Charlottesville Rust Meetup
- 2026-02-04 | Virtual (Indianapolis, IN, US) | Indy Rust
- 2026-02-07 | Virtual (Kampala, UG) | Rust Circle Meetup
- 2026-02-10 | Virtual (Dallas, TX, US) | Dallas Rust User Meetup
- 2026-02-10 | Virtual (London, UK) | Women in Rust
- 2026-02-11 | Virtual (Girona, ES) | Rust Girona
Asia
- 2026-01-17 | Delhi, IN | Rust Delhi
- 2026-02-05 | Seoul, KR | Seoul Rust (Programming Language) Meetup
- 2026-02-11 | Kuala Lumpur, MY | Rust Malaysia
Europe
- 2026-01-14 | Girona, ES | Rust Girona
- 2026-01-14 | Reading, UK | Reading Rust Workshop
- 2026-01-16 | Edinburgh, UK | Rust and Friends
- 2026-01-20 | Leipzig, SN, DE | Rust - Modern Systems Programming in Leipzig
- 2026-01-20 | Paris, FR | Rust Paris
- 2026-01-21 | Cambridge, UK | Cambridge Rust Meetup
- 2026-01-26 | Augsburg, DE | Rust Meetup Augsburg
- 2026-01-28 | Dortmund, DE | Rust Dortmund
- 2026-01-29 | Ostrava, CZ | MeetUpdate Ostrava
- 2026-02-04 | Darmstadt, DE | Rust Rhein-Main
- 2026-02-04 | München, DE | Rust Munich
- 2026-02-04 | Oxford, UK | Oxford ACCU/Rust Meetup.
- 2026-02-05 | Karlsruhe, DE | Rust Hack & Learn Karlsruhe
- 2026-02-11 | Basel, CH | Rust Basel
- 2026-02-11 | Reading, UK | Reading Rust Workshop
North America
- 2026-01-14 | Chicago, IL, US | Chicago Rust Meetup
- 2026-01-15 | Hybrid (Seattle, WA, US) | Seattle Rust User Group
- 2026-01-17 | Boston, MA, US | Boston Rust Meetup
- 2026-01-17 | Herndon, VA, US | NoVaLUG
- 2026-01-20 | San Francisco, CA, US | Svix
- 2026-01-20 | San Francisco, CA, US | San Francisco Rust Study Group
- 2026-01-21 | Austin, TX, US | Rust ATX
- 2026-01-22 | Boston, MA, US | Boston Rust Meetup
- 2026-01-22 | Mountain View, CA, US | Hacker Dojo
- 2026-01-24 | Boston, MA, US | Boston Rust Meetup
- 2026-01-28 | Los Angeles, CA, US | Rust Los Angeles
- 2026-01-29 | Atlanta, GA, US | Rust Atlanta
- 2026-01-29 | Nashville, TN, US | Music City Rust Developers
- 2026-01-31 | Boston, MA, US | Boston Rust Meetup
- 2026-02-03 | New York, NY, US | Rust NYC
- 2026-02-05 | Saint Louis, MO, US | STL Rust
- 2026-02-07 | Boston, MA, US | Boston Rust Meetup
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
I have written in dozens of computer languages, including specialized ones that were internal to Pixar (including one I designed). I spent decades writing C and C++. I wrote bit-slice microcode, coded for SIMD before many folks outside of Pixar had it.
I wrote the first malloc debugger that would stop your debugger at the source code line that was the problem. Unix workstation manufacturers had to do an unexpected release when this revealed all of the problems in their C libraries.
I am a better programmer in Rust for anything low-level or high-performance. It just keeps me from making an entire class of mistakes that were too easy to make in any language without garbage-collection.
Over the long term, anything that improves quality is going to win. There is a lot of belly-aching by folks who are too in love with what they've been using for decades, but it is mostly substance-free. Like people realizing that code marked "unsafe" is, surprise, unsafe. And that unsafe can be abused.
Thanks to Brian Kung for the suggestion!
Please submit quotes and vote for next week!
This Week in Rust is edited by:
- nellshamrell
- llogiq
- ericseppanen
- extrawurst
- U007D
- mariannegoldin
- bdillo
- opeolluwa
- bnchi
- KannanPalani57
- tzilist
Email list hosting is sponsored by The Rust Foundation
14 Jan 2026 5:00am GMT