❌

Normale weergave

Colin Watson: Free software activity in August 2026

7 September 2026 om 21:25

My Debian contributions this month were all sponsored by Freexian.

You can also support my work directly via Liberapay or GitHub Sponsors.

Personal note

This month, my Dad unexpectedly passed away after a short illness. As a result I obviously got less work done than usual, and I still have a lot to take care of (since I’m the executor of his will, as well as helping with funeral arrangements) while grieving and generally having less focus and energy. Having routine work to do is one of the ways I cope with this sort of thing, but all the same, I hope people will bear with me and maybe remind me if I seem to be dropping the ball on something you especially need.

LLM vote

[Content note: strong opinions.]

I voted in General Resolution: LLM usage in Debian. My vote was pretty much the opposite of what ended up winning, so I’m quite disappointed. My personal opinion is that LLMs are cognitive hazards to their users that impose ecological costs far out of proportion to their utility at a time when the world absolutely cannot afford them. When the impossible economics of the large commercial models are finally allowed to catch up with reality, I expect there to be significant macroeconomic consequences, and that people who have become dependent on them will have problems; and who knows what the copyright situation on their output really is. I’m not convinced that local models are better enough on these axes to be worth the costs.

Debian’s direct contribution to all that will be negligible on a global scale, and even the most radical proposals in the GR didn’t expect that we could do much about upstreams that have gone all-in on LLMs. Even so, I’d hoped that my fellow developers might be more willing to lean on our position in the free software ecosystem to make at least a moderately radical statement. Instead, we’ve at best presented an undistinguished fence-sitting position to the world, and further entrenched the idea that humans can reliably do a good job of reviewing the output of tools that are designed to produce output plausible to humans. I certainly don’t trust my own code review skills that far.

Since I’ve never voluntarily used an LLM (not counting LLMs being foisted on me by things like search results, support chatbots, or incoming pull requests, regardless of whether I asked for them), and don’t intend to for the foreseeable future, I doubt this will change much for me in terms of the way I work. The winning option is a very weak one that imposes no new requirements on developers, which means that it also does nothing to stop me continuing to reject LLM-generated material from Debian bug reports and merge requests in my areas of responsibility. I know this probably won’t do much to satisfy people who have decided that Debian is slop now, but it’s the best I can do.

OpenSSH

I finally landed the GSS-API key exchange package split in our OpenSSH packaging. Here’s the NEWS entry:

openssh (1:10.4p1-5) unstable; urgency=medium

  The openssh-client and openssh-server packages no longer include GSS-API
  authentication and key exchange support; this adds pre-authentication
  attack surface and generally increases complexity, and should only be used
  where specifically needed.  Users who need these features should install
  openssh-client-gssapi or openssh-server-gssapi instead.

 -- Colin Watson <cjwatson@debian.org>  Sun, 23 Aug 2026 17:39:55 +0100

I fixed a flaky autopkgtest.

I upgraded from 10.4p1 to 10.5p1, which was a good test of keeping openssh and the new openssh-gssapi source package in sync.

PuTTY

I upgraded from 0.84 to 0.85.

Python packaging

New upstream versions:

The version treadmill continues: we’ve just finished dropping Python 3.13 as a supported version, so now we’ve started working on enabling Python 3.15 as a supported version. Maximiliano Curia has been very helpfully driving this. I didn’t get as much done here as I’d have liked (see the top of this post), but I fixed a couple of packages:

Other build/test failures:

I fixed some other bugs:

bugs.debian.org

I deployed the fix for Invalid link rel=”canonical” on bugs.debian.org. In the process I found a few bugs in recent undeployed code and fixed them.

  •  

Five iPhone 18 Pro Camera Features Seemingly Leak in Code

7 September 2026 om 18:07
Apple is working on a broader set of Camera app improvements in iOS 27 it has announced, according to a new deep dive from MacRumors forum member "pdfu."


‌iOS 27‌ beta code apparently points to five features that could arrive alongside new iPhone models this week or in a future software update:


  • Exposure scopes: The Camera app can display a waveform or histogram to help judge exposure while shooting. A histogram shows how much of the image is too dark, too bright, or in between, while a waveform shows similar information but keeps it lined up with where those areas are in the frame.

  • Focus peaking and highlight warnings: New code overlays helpful information right on top of the camera preview. Focus peaking highlights the edges of whatever's in sharp focus using a colored outline, while a separate overlay warns when part of the image is getting overexposed, using a solid color, a pulsing color, diagonal stripes, or a checkerboard pattern.

  • Repeated self-timer shots: Apple is adding the ability to take several timed photos in a row rather than just one. After each shot, the countdown starts again right away instead of waiting for the photo to finish saving, so the shots can be taken back to back.

  • Manual focus: A control for manually setting and locking focus, rather than relying on autofocus, has also turned up in testing, similar to what's already available in Apple's Final Cut Camera app. A version of this existed in iOS 26 with a focus slider, but that slider was removed in ‌iOS 27‌ beta 1. The underlying focus-locking code is still there, but Apple has restricted it to devices that ship with ‌iOS 27‌ or later, so it won't work on any current iPhone.

  • Aperture-based image correction: A change to how photos are processed could be tied to a future iPhone with a variable aperture, a lens opening that can widen or narrow rather than staying fixed. ‌iOS 27‌ can adjust lens corrections depending on the aperture setting, blending between up to four reference points to smooth out the results.


Although the hidden features could be made available to other iPhone models, the presence of aperture-based image correction when the iPhone 18 Pro is widely expected to offer a variable aperture main camera suggests that at least some of the capabilities could arrive with the new models.

None of the five features are accessible to users in the current betas, and Apple could still hold some or all of them back from the September release. The findings follow pdfu's recent code discoveries covering unreleased game controllers, a four-speaker HomePod surround system, and new Apple Watch details.
Related Roundups: iOS 27, iPadOS 27, iPhone 18 Pro

This article, "Five iPhone 18 Pro Camera Features Seemingly Leak in Code" first appeared on MacRumors.com

Discuss this article in our forums

  •  

Leak Hints at Four New Features for Apple Watch Series 12 and Ultra 4

7 September 2026 om 17:58
Ahead of the announcement of the Apple Watch Series 12 and Ultra 4 later this week, code in the watchOS 27 and iOS 27 betas points to a series of new features for the product line.


The information comes from a new post from MacRumors forums member "pdfu." The findings include:


  • New "Readiness" app: An all-new separate Watch app referred to in code as "Readiness," distinct from the existing Vitals app. The ‌watchOS 27‌ launcher apparently includes it in the default Home Screen layout immediately after the Workout app, and the Watch companion app on ‌iOS 27‌ references the same app in its logic for arranging apps on the ‌Home Screen‌. Its name and placement next to the Workout app suggest Apple is preparing a more substantial readiness or recovery experience for the Apple Watch.

  • Richer strength workouts: Expanded health infrastructure to store individual sets, repetition counts, weight, equipment, body side, and duration.

  • New optical-sensing system: A new sensor family called "Sunstone4p0" with lower noise coefficients, and wrist- and orientation-based channel selection. This could point to revised heart-sensing hardware on an upcoming Apple Watch, featuring improved readings when the reflected pulse signal is weak and specialized sensing according to the watch's placement.

  • 128GB storage: A NAND storage profile tied to the T8320 chip for the Apple Watch Series 12 and Apple Watch Ultra 4 suggesting that they could offer 128GB of storage, up from 64GB on previous models.


Bloomberg's Mark Gurman previously reported that the Apple Watch Series 12 and Ultra 4 will tout new health and fitness features.

pdfu has emerged as an intriguing source of code discoveries in recent weeks. The forum member previously spotted references to two unreleased game controllers in the first macOS 26.7 release candidate, identified by the internal names T6502 and T1057, and separately found evidence in audioOS 27 beta 8 pointing to a four-speaker HomePod surround sound system and a new "Party Mode" feature.


Related Forum: Apple Watch

This article, "Leak Hints at Four New Features for Apple Watch Series 12 and Ultra 4" first appeared on MacRumors.com

Discuss this article in our forums

  •  

Xiaomi Announces Foldable iPhone Rival

7 September 2026 om 17:26
Xiaomi today officially announced the 18 Fold, its first wide-format foldable, at a product event in China, two days before Apple is expected to unveil its own first foldable iPhone.


The Xiaomi 18 Fold uses a similar wide-folding design to the Samsung Z Fold8 and Apple's upcoming foldable iPhone. It features a 5.38-inch outer display and a 7.58-inch inner display, both with 120Hz LTPO technology and 4000 nits of peak brightness. The display is protected by a new double-layer ultra-thin glass structure.

The phone folds around a redesigned hinge Xiaomi calls the "Dragon Bone" hinge, which the company says underwent 492 structural optimizations, facilitating a noticeably more rounded design than Samsung's Galaxy Z Fold8. It launches in four finishes, including a Nishino Red colorway and a limited Ceramic Special Edition capped at 1,500 units.

The 18 Fold is the first flagship to contain Xiaomi's in-house Xring O3 chip, built using a 3nm process with a 10-core CPU clocked to 4.35GHz and a 16-core GPU. Xiaomi says the chip delivers a 60% multi-core CPU gain and an 85% GPU performance gain over its predecessor, with power draw down 25% and 64% respectively, alongside a dedicated NPU rated at 200 TOPS.

The rear camera system was developed with Leica and is led by a 200-megapixel main sensor, alongside a 50-megapixel ultrawide and a 50-megapixel periscope telephoto lens with 3.5x optical zoom. Apple's first foldable iPhone is expected to feature two rear cameras only, with no dedicated telephoto camera.

The device ships with Xiaomi's HyperOS 4 software and a 6,000mAh battery supporting 67W wired and 50W wireless charging. Pricing starts at 10,999 yuan (approximately $1,638), for the base 12GB RAM and 256GB storage configuration, rising to 14,999 yuan (approximately $2,235) for the top 16GB/1TB model, with a limited Ceramic Special Edition at 15,999 yuan (approximately $2,384). Apple's foldable is widely expected to be priced above $2,000.

Xiaomi also introduced the Xiaomi Pad 9 Pro Max tablet at the event, which shares the Xring O3 chip, along with three electric vehicles under its Pengcheng brand. The company has not announced global availability for the 18 Fold; its earlier Mix Fold foldables have stayed exclusive to China.

Apple is set to hold its own event on September 9 at Apple Park, where the company is expected to unveil its first foldable iPhone alongside the iPhone 18 Pro and ‌iPhone 18 Pro‌ Max.
Related Roundup: iPhone Fold

This article, "Xiaomi Announces Foldable iPhone Rival" first appeared on MacRumors.com

Discuss this article in our forums

  •  

iPhone 18 Pro Event Could Hit Apple Shares, KeyBanc Warns

7 September 2026 om 16:33
Apple's September 9 iPhone announcement event could become a negative catalyst for the stock, KeyBanc Capital Markets warns.


In a research note seen by Investing.com, KeyBanc said the event could motivate investors to weigh pricing decisions against the impact of higher costs on demand and margins. KeyBanc added that Apple faces a choice to either raise prices broadly to offset gross margin pressure, which could hurt unit volumes and trigger "sticker shock," or raise prices more selectively.

This could invite greater scrutiny of margins and raise the prospect of further price increases later down the line. The firm maintained an "Underweight" rating on Apple and a $250 price target, against a share price of $324.96 at the time of publication.

KeyBanc models total iPhone 18 lineup builds at around 80 million units across the fourth quarter of fiscal 2026 and first quarter of fiscal 2027, down from roughly 91 million units a year earlier. The firm attributed most of the decline to the absence of a base ‌iPhone 18‌ model in this part of the product cycle, with higher pricing and a richer product mix expected to partially offset the lower volumes.

KeyBanc is also expecting a $150 price increase for the iPhone 18 Pro, raising it to $1,249, and a $200 increase for the ‌iPhone 18 Pro‌ Max, raising it to $1,399. The firm expects the foldable "iPhone Ultra" to start at $2,199.

KeyBanc also pointed to a historical pattern of Apple shares weakening around iPhone announcements, with the stock averaging a 0.72% decline on announcement day over the past five years and a 1.22% decline five trading days later. Apple's "Surprise and shine" event commences at 10 a.m. Pacific time on Wednesday, September 9.
Related Roundups: iPhone 18 Pro, iPhone Fold

This article, "iPhone 18 Pro Event Could Hit Apple Shares, KeyBanc Warns" first appeared on MacRumors.com

Discuss this article in our forums

  •  

iPhone 18 Pro: Nine Reasons Not to Upgrade This Year

7 September 2026 om 14:01
Apple is set to unveil new iPhone 18 Pro and iPhone 18 Pro Max models on Wednesday, September 9, and the devices are expected to feature a design that's largely similar to the iPhone 17 Pro models, with a peppering of enhancements inside. Major changes are not expected until next year, when Apple is expected to introduce a radically redesigned 20th-anniversary iPhone.


If you're thinking of trading in your current iPhone for this year's latest, consider the following features rumored to be coming to next September's iPhone 20 models (Apple is expected to skip the iPhone 19 for its commemorative edition). Taken together, they may just give you pause for thought.

  • A quad-curved, all-glass design: The display glass reportedly curves away on all four sides of the iPhone 20, concealing the metal frame during normal use for a borderless effect. Apple is said to be working with Samsung on an "equal-depth quad-curved" display to achieve the feat.

  • Advanced OLED technology: Apple is planning to use a brighter, thinner OLED panel for the 20th anniversary iPhone. Rumors suggest that Apple will adopt Samsung ‌OLED‌ displays with Color Filter on Encapsulation (COE) technology, which reduces the thickness of the overall display stack, and lets more light through to improve brightness while reducing power draw.

  • Under-display Face ID and camera: Apple is reportedly continuing to test hardware that would eliminate the Dynamic Island – the visible cutout – from the front of the device, with Face ID components moving under the screen and an under-camera display said to be in development. Whether the technology will be ready in time for a fall 2027 launch remains uncertain.

  • Custom Apple image sensor: Apple is said to be developing its own stacked image sensor to replace the Sony sensors it has traditionally used for the iPhone. Apple has reportedly already developed a working prototype. The sensor is said to use LOFIC technology, which would let each pixel store varying amounts of light and potentially reach up to 20 stops of dynamic range.

  • Solid-state buttons: Apple is said to be testing haptic replacements for the Side, Volume, Action, and Camera Control buttons. The buttons could be integrated directly into the device's frame, with no actual physical movement when pressed, yet retaining a tactile responsiveness.

  • A 2-nanometer A21 chip: The 20th anniversary models are expected to feature a second-generation 2-nanometer chip. With the upcoming iPhone 18 Pro models widely expected to debut the A20 Pro chip, the anniversary models would likely be powered by the A21 Pro.

  • Silicon anode battery: Apple is reportedly exploring a new battery technology that uses a silicon anode capable of storing more lithium ions per gram, potentially delivering longer battery life without increasing the physical size of the battery.

  • Mobile high bandwidth memory: Apple is rumored to be evaluating vertically stacked DRAM technology to improve memory bandwidth and boost on-device AI performance.

  • Two sizes: The two anniversary models could have a larger display size compared to this September's iPhone 18 Pro and iPhone 18 Pro Max, which are expected to use 6.3-inch and 6.9-inch displays similar to iPhone 17 Pro models. In contrast, Apple is rumored to be prototyping a 6.4-inch display for the iPhone 20 Pro, and a 7-inch display for the larger 20 Pro Max.

With all that said, we're still 12 months out, and Apple's plans shift constantly behind closed doors, plus features this ambitious have a habit of slipping a year or two. Under-display Face ID in particular has been "two years away" for about five years now.

Still, the combined leaks describe the most dramatic iPhone rethink since 2017 when the 10th-anniversary iPhone X debuted. If even half of the features make it to the shipped device, the iPhone 20 should be worth holding out for. For everything we know so far, check out our dedicated guide.
Related Roundup: iPhone 18 Pro

This article, "iPhone 18 Pro: Nine Reasons Not to Upgrade This Year" first appeared on MacRumors.com

Discuss this article in our forums

  •  

Vincent Bernat: Sidenotes with CSS anchor positioning

7 September 2026 om 08:49

I am a heavy user of sidenotes:1 they keep optional content next to the text instead of sending the reader to the bottom of the page and back. Tufte CSS renders them without JavaScript but only accepts inline content. CSS anchor positioning, now supported by recent browsers,2 is an elegant alternative. Sidenotes can hold several blocks, still without JavaScript, and fall back below the paragraph referencing them on narrow viewports and older browsers.

In 2023, Eric Meyer demonstrated this technique in “Nuclear Anchored Sidenotes.” The main improvement over other solutions is that the notes can sit anywhere in the HTML document. You can place them after the paragraph referencing them, as regular block elements for text browsers, screen readers, feed readers, and reader mode to render them properly:

Sidenotes rendered in Lynx appear after the paragraph they are called from.
Rendering in Lynx, a text browser

When the viewport is too narrow or the browser does not support CSS anchor positioning, you can style them so the reader can skip them or glance at them without losing their position in the text:

Sidenotes rendered on a narrow viewport appear with a distinctive typography after the paragraph they are called from.
Rendering below the paragraph on a narrow viewport

Once the viewport is large enough, they appear in the margin, at the same vertical position as the matching reference mark, unless they would collide with a previous sidenote, as in the example below:3

Sidenotes rendered on a large viewport appear in the margin. There are two of them. The first one is vertically aligned with the matching reference mark, while the second is rendered below as it would collide with the first otherwise.
Rendering in the margin on a large viewport

The gist of CSS anchoring is to position an element relative to another element—the anchor. For the sidenotes, the anchor is the reference mark. I use the following markup, with a data attribute to specify the anchor name:

<sup id="fnref:YYY" data-anchor="--lf-sn-YYY">
  <a href="#sidenote-YYY">1</a>
</sup>

The matching note is an <aside> element carrying the same data attribute for the anchor name. We put it after the paragraph holding the reference mark:

<aside role="note" id="sidenote-YYY" data-anchor="--lf-sn-YYY">
  <sup>1</sup>
  <p>A first paragraph.</p>
  <p>A second paragraph.</p>
</aside>

On a narrow viewport or when the browser is too old for CSS anchoring, we style the sidenote, which stays below its paragraph, with a muted color:

aside[role="note"] {
  margin-block: 1rlh;
  color: #444;
}

On a wide viewport and when the browser is recent enough, we move the sidenote to the right margin:

@supports (anchor-name: attr(data-anchor type(<custom-ident>))) {
  @media (min-width: 72rem) {
    main {
      position: relative;
      sup[data-anchor] {
        anchor-name: attr(data-anchor type(<custom-ident>));
        /* → anchor-name: --lf-sn-YYY */
      }
      aside[role="note"][data-anchor] {
        anchor-name: --lf-sidenote;
        position: absolute;
        position-anchor: attr(data-anchor type(<custom-ident>));
        /* → position-anchor: --lf-sn-YYY */
        top: max(anchor(top), anchor(--lf-sidenote bottom, -1rlh) + 1rlh);
        left: 100%;
        margin: 0 2rem;
        width: 18rem;
        color: inherit;
      }
    }
  }
}

attr() extracts the anchor name for the reference mark from the data-anchor attribute. It returns a string, unless we specify a CSS unit or a type, like here: the browser parses the data attribute as a custom identifier, which anchor-name validates as a dashed identifier, a custom identifier starting with two dashes.4

The note itself is absolutely positioned past the right edge of the main block. It selects the matching reference mark as its anchor with position-anchor set to the value of the data-anchor attribute. Each note is also an anchor named --lf-sidenote. We use it to keep the next note from colliding with this one.

The anchor() CSS function lets us position the note’s top edge relative to its anchor: anchor(top) aligns the top edge of the note with the top edge of the reference mark. It can also take another anchor as a parameter: anchor(--lf-sidenote bottom) would align the top edge of the note with the bottom edge of the closest preceding anchor named --lf-sidenote—so the previous note.5 Like attr(), anchor() accepts a fallback value as its second parameter and use it when the named anchor does not exist.

The top property handles three cases, illustrated in the following diagram:

Diagram of three sidenotes anchored to their reference marks. The first one is aligned with the top of its own reference mark, as no note comes before it. The second one would overlap the first, so it takes the bottom of the first note as anchor and sits one line below it. The third one comes far enough down the page to align with its own reference mark again.
The three cases for the vertical position of a note
  1. The first note’s top edge aligns with the top edge of its reference mark: as there is no previous note, anchor(--lf-sidenote bottom, -1rlh) + 1rlh resolves to 0 and max() returns anchor(top).
  2. When the reference mark of a later note sits above the bottom of the previous note, plus some vertical space, the note goes below the previous one to avoid a collision. max() returns anchor(--lf-sidenote bottom) + 1rlh.
  3. Otherwise, the note’s top edge aligns with the reference mark’s top edge, as max() returns anchor(top).

Have a look at the complete stylesheet, which also adapts the reference mark to the location of the note: a “↓” arrow when the note sits below the paragraph, a “→” arrow when it moves to the margin. Gwern’s “Sidenotes In Web Design” lists more implementations and their trade-offs.

Some bloggers aim to write a post in 30 minutes. I planned to publish three web-related articles this weekend. Instead, I spent an inordinate amount of time elsewhere: about 15 commits on the build system, a pull request to update CSS highlighting for nested selectors in Pygments, and a small correction to MDN’s article on the anchor() CSS function. The SVG illustration took a bit less than an hour and the article itself a handful of hours. The attr() function came in after I thought “inline style looks ugly, isn’t there a better way?” But, hey, I still think this is worth it! 🎨


  1. My PhD advisor told me this is unwise. ↩

  2. The first bits of anchor positioning are supported from Chrome 125 (May 2024), Firefox 147 (January 2026), and Safari 26 (September 2025).

    Before Safari 26.5, sidenotes may collide due to a bug in how dependency chains are handled. You can detect this situation with some JavaScript. It is, however, not needed in the solution described here as we depend on a more recent feature. ↩

  3. If you noticed the runt in the first note, I share your pain and lament that Firefox does not implement text-wrap: pretty. ↩

  4. Typed attr() is supported from Chrome 133 (February 2025), Firefox 155 (September 2026), and Safari 27 (September 2026). Check Una Kravets’ article for details. To support more browsers, you can inline the anchor name and the position anchor directly in the HTML:

    <sup id="…" style="anchor-name: --lf-sn-…">
      <a href="#sidenote-…">1</a>
    </sup>
    

    “Managing Anchor Associations With Data Attributes and Advanced attr(),” by Daniel Schwarz, explores CSS anchors and typed attr() in more detail. ↩

  5. The exact rule for the target anchor element is more complex: “if an ancestor of [the note] satisfies the following conditions, return the nearest such element to [the note]. Otherwise, return the last element in tree order that satisfies the conditions.” One of these conditions is that “[the candidate] is an acceptable anchor element for [the note],” which requires that “[the candidate] is laid out strictly before [the note],” where the relevant clause is that “[the candidate] is either not absolutely positioned or occurs earlier in the flat tree order than [the note].” ↩

  •  

Apple Plans to Squeeze More Revenue From the App Store, Report Says

7 September 2026 om 12:19
Apple is looking at further ways to monetize the App Store and increase the company's recurring revenue from the platform, according to a new report.


Writing in his latest Power On newsletter, Bloomberg's Mark Gurman said that newly appointed Apple CEO John Ternus and services chief Eddy Cue are behind the effort to raise margins from the App Store, which already generates Apple an estimated $30 billion a year.

Interestingly, Gurman ties the effort to Apple Fellow Phil Schiller's decision to step away from running the App Store and work on other unspecified projects. Schiller, now 66 and edging toward retirement, "seems to believe that such moves will only irk developers and governments," he said. Based on what Gurman has heard from internal sources at the company, he added that "there was no internal blowup or anything like that, [but] it's something he wanted no part of."

Back in February 2025, as part of Apple's ongoing legal battle with Epic Games, Schiller testified that he initially opposed the 27 percent commission Apple originally wanted to charge on purchases made outside the App Store, citing compliance risks and potential developer backlash.

Schiller said in court that he had concerns that the fee would create an "antagonistic relationship" between Apple and developers, and worried about Apple becoming "some kind of collection agency" that might need to audit developers who didn't pay.

Apple has not collected fees from App Store link-outs in the U.S. since April 2025, after being found to be in contempt of court for charging 27 percent commission and ordered by a judge to stop the practice. The Supreme Court has agreed to hear Apple's challenge to the contempt ruling, but hasn't yet decided it.

Meanwhile, Apple is now said to be moving responsibility for the ‌App Store‌ to Cue, who oversaw it until 2015, when Schiller took over. Carson Oliver, who has long been on the ‌App Store‌ team, will oversee its day-to-day operations.

App Store Earnings Down


Apple admitted during its July earnings call that regulatory changes have started to weigh on its Services growth. Apple reported services revenue of $30.7 billion for the June quarter, a record for the period but short of the $31.4 billion that analysts expected.

Separately, analytics firm Appfigures said in August that Apple's U.S. commission revenue from the App Store has fallen 18 percent since the start of 2026. It also found App Store revenue declining in Brazil and Japan since both countries introduced new regulations.
This article, "Apple Plans to Squeeze More Revenue From the App Store, Report Says" first appeared on MacRumors.com

Discuss this article in our forums

  •  

Freexian Collaborators: Debusine can now hand you debug symbols! (by Jugal Patel)

7 September 2026 om 02:00
Contributor: Jugal Patel (Jugal59)
Organization: Debian
Project: Provide debuginfod server
Mentor: Colin Watson

About the project and me

Your program crashes. You open gdb and get ?? instead of a stack trace. So you go find the right -dbgsym package, for the right version, for the right architecture, install it, and start again. Debuginfod removes that entire detour: gdb asks a server for symbols by the build-ID baked into the binary. Debusine already built packages, already produced -dbgsym files, and already hosted the archives; it just couldn’t answer the question.

This summer I made it answer. My project was to add debuginfod server functionality to Debusine so that it not only hosts -dbgsym packages, but also serves their debug symbols over the debuginfod(8) protocol. Debian developers can then debug binaries by setting a single URL that gdb uses to fetch the matching debug symbols. This project took me through design, backend work, an extraction pipeline on the worker, HTTP serving, documentation, and testing from the first blueprint all the way to a live demo on debusine.debian.net.

Initial planning and design changes

A design first, in !3030. The proposal submitted for GSoC 2026 was just an overview of how things will work, but in reality there were a lot of design questions which needed to be answered before starting with contribution. Debusine keeps development blueprints in its docs tree, reviewed like code, it’s basically a blueprint of what feature or new changes are we going to make. I was assigned the work item #957, which was basically about how the idea of implementing a debuginfod server functionality inside Debusine was initially proposed by a fellow member which later became a project idea under GSoC 2026. My developer blueprint pinned down the four decisions everything else depends on: extraction happens on the worker after the build, symbols are stored as artifacts keyed by build-ID, they’re published into suites alongside their binaries, and they’re served from the archive root rather than per-suite. Settling that up front meant the design discussions happened in a document instead of across three merged branches.

Provide debuginfod server work item and all my merged PRs till now

One of those arguments became its own fix. My wording implied symbols were unpacked inside the isolated sbuild environment (the consequence was I was handed a bug to be solved in the first week of contribution period), when they’re actually extracted afterwards on the worker, where the build output already sits, a distinction that matters, because doing work inside the unshare environment means extra tooling in the chroot and more ways to affect the build. !3119 corrected it before the wrong model spread into the code.

Bug raised for inconsistent wordings in developer blueprint

A new artifact type

Artifacts are a major concept in Debusine overall, so as per the developer blueprint we introduced a new artifact which was debian:debug-symbols. It holds every .debug file from one -dbgsym package. Its data is a validated list of lowercase 40-character build-IDs, and each file is stored under its build-ID as the path, so answering “what are the symbols for this ID?” is a direct lookup, with no path translation in the request handler. One artifact per package rather than per file: a util-linux build would otherwise spray hundreds of artifacts, collection items and relations across the database for no benefit. For implementing debian:debug-symbols artifact, I changed the main models.py file, along with that since it’s a norm to write unit tests, all mentioned under !3088.

sbuild task output showing the new debian:debug-symbols artifact

Publishing workflow and solving a bug

Extracting symbols is only useful if they reach the archive people actually install from, so !3180 taught package_publish to follow the relates-to relation: copying binaries into a suite now brings their debug symbols along automatically, with nothing extra for the publisher to configure. Each build-ID becomes its own collection item, for example debugsym:hello_2.10-5_amd64_fcc9064… each carrying the package name, version and architecture copied from the binary, so the item is meaningful on its own without dereferencing anything. Uniqueness is enforced at both the suite and archive level, because the serving URLs are archive-wide and two suites must never disagree about what a build-ID means: republishing an identical file is accepted quietly, while two different files claiming the same ID is an error worth failing on. A partial index on the build-ID keeps the eventual HTTP lookup fast.

That looked finished until symbols started arriving in target suites disconnected from their binaries published, but unfindable, because copying items between collections silently dropped their artifact relations, and that relation is the only thing tying the two together. The fix sat one level above my feature, in the generic CopyCollectionItems task that does the copying, and since it was reusable infrastructure rather than anything debuginfod-specific, Colin implemented it himself in !3228. My project needed it to work at all; every other Debusine feature that copies items now gets it for free.

Endpoint and CI tests

With symbols in the archive, !3212 added the part users actually touch: GET /{scope}/{workspace}/buildid/<build-id>/debuginfo looks the ID up across every suite in that workspace’s archive, streams the file, and sets the X-DEBUGINFOD-FILE and X-DEBUGINFOD-SIZE headers the protocol expects. It also handles the two things gdb actually does: a HEAD probe before committing to a download, and ranged requests to pull individual ELF sections instead of the whole file. Scoping it to the archive rather than the suite is what lets one URL cover a whole workspace, so the developer never has to know which suite their binary came from.

Fetching debug files from debusine.debian.net

Every merge request above landed with unit tests, but those only tell you that the pieces behave correctly. What Colin and I wanted was a real gdb fetching real symbols from a real instance, so !3261 adds an autopkgtest that builds a package, publishes it, checks the HTTP headers, then sets DEBUGINFOD_URLS and makes gdb go and get the symbols, wired into the CI integration tests so it runs on every change. It took me a day to learn that skipping the signing worker doesn’t simplify that test, it just hangs until the 30-minute timeout, because update_suites needs signing to produce a usable repository.

The last piece, !3301 covers the new artifact, the suite and archive changes, the new archive URL, and a how-to for using it. My first how-to draft explained how everything worked and offered four ways to set DEBUGINFOD_URLS; the version that shipped gives one recommended setup and gets out of the way. The same pass trimmed the blueprint down to only what’s still unimplemented, since a design document describing merged code is just an obstacle for the next reader.

Setting debuginfod url for gdb and debugging session!

What’s left

Only one item on my original plan didn’t land: an archive-level build_debug_symbols switch, modelled on Launchpad’s equivalent, letting an archive skip building -dbgsym packages entirely by passing DEB_BUILD_OPTIONS=noautodbgsym to sbuild. It was always the stretch goal rather than core scope, landing the extract-publish-serve path solidly mattered more than landing it broadly. The design is written up in the blueprint, and I intend to implement it myself.

The other gaps were deliberately out of scope from the start, and the blueprint says so. DWZ supplement files aren’t ingested, so packages using compressed debug info may render without the alternate strings table; debugging still works, it’s just less complete. Source-file serving runs into the same Debian packaging limits that constrain debuginfod.debian.net today, making it a design question rather than a coding one. Executable serving, the metrics and metadata endpoints, and federation to upstream debuginfod servers were excluded for similar reasons, none of them are needed for Debusine’s core use case, and each would have crowded out the parts that are.

One open bug is left too. On the last day of the coding period, Stefano Rivera found that publishing ledger and linux was failing, because I had told the database that a build-ID identifies one exact debug file which isn’t true in Debian, since dh_dwz runs once per binary package, so when one object ships in two binary packages their .debug files differ while describing identical code. How to fix it is still an open discussion #1582, though it may not land before the formal end of the project.

None of that is a handoff. GSoC’s timeline is ending, my involvement isn’t, I’m carrying on with Debusine until both the build_debug_symbols switch and DWZ supplement support are merged, and I expect to keep contributing beyond that. This project got me familiar with a codebase I enjoy working in, and the remaining pieces are mine to finish.

Thanks!

The biggest thanks go to my mentor, Colin Watson, whose reviews consistently found the thing I hadn’t thought about. He also gave me room to get things wrong first and understand why, which taught me more than being handed the answer would have.

Thanks as well to Raphaël Hertzog, Enrico Zini, Stefano Rivera, Carles Pina i Estany and Helmut Grohne and everyone else around Debusine and Freexian for reviews, comments and patience with my questions.

Special thanks to Freexian for developing Debusine in the open and for giving me access to test on debusine.debian.net.

Finally, thanks to the wider Debian community, whose build-ID and -dbgsym conventions did most of the hard work before I arrived and to Google Summer of Code for providing a platform and the time to do this properly.

  •  

Tim Cook Won't Appear in Apple's September 9 Event Video

7 September 2026 om 11:27
Tim Cook will attend the screening for Apple's "Surprise and Shine" event this Wednesday, but he will not feature in the event video itself, according to sources cited by Bloomberg's Mark Gurman. Cook stepped down as Apple CEO on September 1 to become executive chairman of the company, paving the way for John Ternus to take over the top job.

In his latest Power On newsletter, Gurman said that Apple has "carefully orchestrated this transition to make Ternus the face of the foldable iPhone and all the new products to come. Putting Cook in the presentation would just undermine that."
This article, "Tim Cook Won't Appear in Apple's September 9 Event Video" first appeared on MacRumors.com

Discuss this article in our forums

  •  

Daniel Lange: Getting AVIF thumbnails in XFCE4 thunar (Debian Trixie)

7 September 2026 om 10:50

The AVIF image format gets more and more popular in the web dev community, so I needed to teach XFCE4's thunar (file manager) and Ristretto (image viewer) to thumbnail these.

Luckily that is not too hard:

Debian Trixie separates its gdk-pixbuf libraries slightly differently than previous versions. That's why it is not "automatically there". Ensure you have the libavif-gdk-pixbuf plugin and the tumbler service (which XFCE uses to process thumbnails):

sudo apt --update install libavif-gdk-pixbuf tumbler

Thunar has likely tried (and failed) to load your AVIF files before you installed the package, it will have saved a blank or "broken image" placeholder in a thumbnail cache directory. It will not attempt to regenerate them unless you clear this cache:

# Clear the thumbnail cache
rm -rf ~/.cache/thumbnails/*

# Force-quit thunar and the tumblerd background service
thunar -q
pkill tumblerd

Tumbled will restart on its own when it is needed. When you open thunar again and navigate to your image directory ... your AVIF images will now generate thumbnails automatically like the other image format did already.

Avif thumbnails in thunar

  •  

DistroWatch Weekly, Issue 1189

7 September 2026 om 02:18
The DistroWatch news feed is brought to you by TUXEDO COMPUTERS. This week in DistroWatch Weekly:
Review: Genuen 6.0.0
News: Multikernel Linux, bots swarm the kernel repository, Debian being deployed at CERN, Debian 11 reaches its end of life
Questions and answers: Avoiding LLM-written code
Released last week: Linux From Scratch 13.1, Grml 2026.09, Talos Linux 1.14.0, Zenwalk GNU Linux 260905, NetBSD....
  •  
❌