20 May 2025

feedHacker News

Litestream: Revamped

Comments

20 May 2025 7:58pm GMT

The NSA Selector

Comments

20 May 2025 6:30pm GMT

Google AI Ultra

Comments

20 May 2025 6:20pm GMT

feedUbuntu blog

What is geopatriation?

Geopatriation refers to the relocation of workloads and applications from global cloud hyperscalers to regional or national alternatives due to geopolitical uncertainty.

20 May 2025 8:11am GMT

19 May 2025

feedOMG! Ubuntu

Microsoft Open-Sources Windows Subsystem for Linux

Well here's a turn up: Microsoft just released the source code for Windows Subsystem for Linux (WSL), making the nifty tech open-source nearly a decade after development began. The tech giant announced the news at this year's BUILD event, where it made some other open-source related announcements, including its own CLI text editor called Edit. Source code for WSL was quickly made available on the Microsoft GitHub. For those not familiar with it, WSL is a specialised virtualisation setup that lets Windows users run Linux distributions (like Ubuntu) inside of Windows, with tight system, software and hardware integration. Microsoft says […]

You're reading Microsoft Open-Sources Windows Subsystem for Linux, a blog post from OMG! Ubuntu. Do not reproduce elsewhere without permission.

19 May 2025 7:49pm GMT

feedLinuxiac

A New Era: Microsoft Open Sources WSL

A New Era: Microsoft Open Sources WSL

After years of anticipation, the Windows Subsystem for Linux is now fully open source-developers can build, enhance, and contribute to WSL starting today.

19 May 2025 6:46pm GMT

Niri 25.05 Wayland Compositor Introduces Workspace Overview

Niri 25.05 Wayland Compositor Introduces Workspace Overview

Niri 25.05 scrollable-tiling Wayland compositor introduces a powerful Overview mode, enabling intuitive workspace and window navigation.

19 May 2025 3:08pm GMT

feedOMG! Ubuntu

Vivaldi 7.4 Update Adds New Keyboard Shortcut Controls

A new version of the Vivaldi web browser is available to download, carrying changes said to make our collective "everyday browsing smoother, faster, and just a little more delightful." How does Vivaldi 7.4 make browsing the increasingly gamified, algorithmically manipulative and Ai slopified modern web more 'delightful'? Shortcuts. More specifically, Vivaldi 7.4 gives you the ability to "fine-tune" how shortcuts behave on a per-site basis. If you want a website's shortcuts to take priority over Vivaldi's, you can. "It's about putting you in control, making sure your shortcuts work where and when you need them most", says Jon von Tetzchner, […]

You're reading Vivaldi 7.4 Update Adds New Keyboard Shortcut Controls, a blog post from OMG! Ubuntu. Do not reproduce elsewhere without permission.

19 May 2025 12:49pm GMT

feedLinuxiac

Authelia Authentication Server Achieves OpenID Certified Status

Authelia Authentication Server Achieves OpenID Certified Status

Authelia open-source authentication and authorization server passes OpenID Connect certification, confirming full conformance with implemented profiles.

19 May 2025 11:07am GMT

feedUbuntu blog

Rethinking virtualization: open source alternatives for resellers

Organizations facing uncertainty in the virtualization market have multiple open source options to choose from, including OpenStack for large private clouds and MicroCloud for smaller setups.

19 May 2025 9:11am GMT

16 May 2025

feedKubernetes Blog

Kubernetes v1.33: In-Place Pod Resize Graduated to Beta

On behalf of the Kubernetes project, I am excited to announce that the in-place Pod resize feature (also known as In-Place Pod Vertical Scaling), first introduced as alpha in Kubernetes v1.27, has graduated to Beta and will be enabled by default in the Kubernetes v1.33 release! This marks a significant milestone in making resource management for Kubernetes workloads more flexible and less disruptive.

What is in-place Pod resize?

Traditionally, changing the CPU or memory resources allocated to a container required restarting the Pod. While acceptable for many stateless applications, this could be disruptive for stateful services, batch jobs, or any workloads sensitive to restarts.

In-place Pod resizing allows you to change the CPU and memory requests and limits assigned to containers within a running Pod, often without requiring a container restart.

Here's the core idea:

You can try it out on a v1.33 Kubernetes cluster by using kubectl to edit a Pod (requires kubectl v1.32+):

kubectl edit pod <pod-name> --subresource resize

For detailed usage instructions and examples, please refer to the official Kubernetes documentation: Resize CPU and Memory Resources assigned to Containers.

Why does in-place Pod resize matter?

Kubernetes still excels at scaling workloads horizontally (adding or removing replicas), but in-place Pod resizing unlocks several key benefits for vertical scaling:

What's changed between Alpha and Beta?

Since the alpha release in v1.27, significant work has gone into maturing the feature, improving its stability, and refining the user experience based on feedback and further development. Here are the key changes:

Notable user-facing changes

Stability and reliability enhancements

What's next?

Graduating to Beta means the feature is ready for broader adoption, but development doesn't stop here! Here's what the community is focusing on next:

Getting started and providing feedback

With the InPlacePodVerticalScaling feature gate enabled by default in v1.33, you can start experimenting with in-place Pod resizing right away!

Refer to the documentation for detailed guides and examples.

As this feature moves through Beta, your feedback is invaluable. Please report any issues or share your experiences via the standard Kubernetes communication channels (GitHub issues, mailing lists, Slack). You can also review the KEP-1287: In-place Update of Pod Resources for the full in-depth design details.

We look forward to seeing how the community leverages in-place Pod resize to build more efficient and resilient applications on Kubernetes!

16 May 2025 6:30pm GMT

feedOMG! Ubuntu

elementary OS Preview Cool Upcoming Features

The elementary OS 8.0.1 release back in March brought an appreciable set of improvements with it, including a much-improved Files app, but as ever in development: the work never stops! Project founder, Danielle Foré, recently recapped a few smaller features that have been issued to users of the Ubuntu-based Linux distribution as software updates, including: If you run elementary OS 8.x, install your updates and eat your greens, you should be benefitting from the changes listed above (if you don't have them, go update to get 'em). But Danielle also gave us an early-look at an exciting new app and […]

You're reading elementary OS Preview Cool Upcoming Features, a blog post from OMG! Ubuntu. Do not reproduce elsewhere without permission.

16 May 2025 3:15pm GMT

feedJavaScript Weekly

The power of generators

#​736 - May 16, 2025

Read on the Web

JavaScript Weekly

'I Think the Ergonomics of Generators is Growing on Me' - The author notes generator functions have been widely available in JavaScript for a long time, yet "their practicality hasn't exactly caught on." This is a great look at what they are and where they can be useful.

Alex MacArthur

JavaScript's New Superpower? Explicit Resource Management - V8 v13.8 introduces the idea of deterministic resource cleanup. Among a range of new symbols and objects for the task, the basic idea is you can wrap any file handle, stream or connection in a using/await using block and the runtime will handle any cleanup once resources go out of scope.

Rezvan Mahdavi Hezaveh (V8)

Write CSS Like a Pro - Kevin Powell shares how to create a responsive website from scratch using modern CSS features (such as nesting, utility classes, custom properties, and more). This detailed video course also dives into adding additional polish via animations, view transitions, and more.

Frontend Masters sponsor

Basecoat: shadcn/ui's Magic, But Minus React - shadcn/ui is a popular suite of well designed React components, but if you'd like to use them in other contexts too, Basecoat is for you. Basecoat ports the components to a more vanilla form you can use with your framework (or not) of choice.

Ronan Berder

IN BRIEF:

RELEASES:

📖 Articles

JavaScript, When (and What) is this? - Dives into the complexities of the this keyword, explaining how its value is ultimately determined by the context in which a function is called, rather than where it's defined. It's been many years since we've covered this elementary topic, but this is a fantastic, fresh two-part take.

Mat 'Wilto' Marquis

How We Debugged a Broken Checkout Flow in Flask + React - Dropped carts = lost revenue. See how Sentry tracing can catch a full-stack bug in a Flask + React checkout flow-before it can become a support fire drill.

Sentry sponsor

Building a React App with GitHub Copilot - A good walkthrough, complete with video, if you prefer, of bringing together several of GitHub Copilot's features for building a modern JavaScript app quickly.

Kedasha Kerr (GitHub)

Regular Expressions in JavaScript - Powerful but often misunderstood, many will benefit from this roundup of the potential regexes offer to JavaScript developers.

Adebayo Adams

📄 Robust Data Fetching Architecture for Complex React/Next.js Apps Trevor I. Lasn

▶️ Native and RxJS Observables: A Direct Comparison Rainer Hahnekamp

📄 Angular's httpResource in the Wild - A modern way to make HTTP requests in Angular. DrDreo

📄 Node.js 24 is Here: What You Need to Know Lizz Parody

📄 Building the Bridge: Running JavaScript Modules from Dart Chima Precious

🛠 Code & Tools

ANSIS 4.0: ANSI Color Library for Everywhere - A library to use the power of ANSI escape sequences for coloring and styling text in many environments including the terminal, Chromium-based browsers, Node, Bun, Deno, and even Next.js. v4.0 is a big upgrade with enough breaking changes to warrant a migration guide for existing users.

webdiscus

TanStack DB: A Reactive Client Store with Fast Real-Time Sync - A new entry to the TanStack family of libraries that extends TanStack Query with collections, live queries and optimistic mutations.

TanStack

Introducing Clerk Billing - Set up subscriptions in your B2B or B2C app without writing custom payment code or building your own UI.

Clerk sponsor

Svelte Sonner: A Toast Notification Component for Svelte - You may be familiar with the fantastic Sonner in the React world - now there's a Svelte version.

Robert Soriano

tscircuit: Use React for Building Electronics Projects - An interesting way to design and lay out electronic circuit boards using a JSX-based approach. GitHub repo.

tscircuit Inc.

jsdiff 8.0: A JavaScript Text Diffing Implementation - Can compare strings for differences in various ways including creating patches. There's an online demo.

Kevin Decker

Feedsmith: A Fresh New Web Feed Parser and Generator - A new, modern way to both parse and generate RSS, Atom, JSON Feed, OPML, and RDF feeds with support for common namespaces as used in podcast, media, and other niche types of feed.

Maciej Lamberski

📰 Classifieds

Meticulous automatically creates and maintains an E2E UI test suite with zero developer effort. Relied on by Dropbox, Wiz, Lattice, Bilt Rewards, etc.

Build a professional design system in less than a day, using Hope AI, new model by Bit.Cloud. Enjoy reusable UI components ready for import.

👀 This could be useful..

Fx 36.0: A Command-Line JSON Viewer & Processing Tool - It's written in Go, but if you've got some files full of JSON that you want to slice and dice, Fx is for you (it's easy to install). This week's v36 release adds support for streaming JSON and tailing such streams, it's also much faster and less memory hungry when parsing large JSON files. A solid update for a handy tool.

Anton Medvedev

P.S. If you're into React or Node.js, we focus more directly on those in React Status and Node Weekly respectively, so check out the latest issues of those too :-)

16 May 2025 12:00am GMT

feedKubernetes Blog

Announcing etcd v3.6.0

This announcement originally appeared on the etcd blog.

Today, we are releasing etcd v3.6.0, the first minor release since etcd v3.5.0 on June 15, 2021. This release introduces several new features, makes significant progress on long-standing efforts like downgrade support and migration to v3store, and addresses numerous critical & major issues. It also includes major optimizations in memory usage, improving efficiency and performance.

In addition to the features of v3.6.0, etcd has joined Kubernetes as a SIG (sig-etcd), enabling us to improve project sustainability. We've introduced systematic robustness testing to ensure correctness and reliability. Through the etcd-operator Working Group, we plan to improve usability as well.

What follows are the most significant changes introduced in etcd v3.6.0, along with the discussion of the roadmap for future development. For a detailed list of changes, please refer to the CHANGELOG-3.6.

A heartfelt thank you to all the contributors who made this release possible!

Security

etcd takes security seriously. To enhance software security in v3.6.0, we have improved our workflow checks by integrating govulncheck to scan the source code and trivy to scan container images. These improvements have also been backported to supported stable releases.

etcd continues to follow the Security Release Process to ensure vulnerabilities are properly managed and addressed.

Features

Migration to v3store

The v2store has been deprecated since etcd v3.4 but could still be enabled via --enable-v2. It remained the source of truth for membership data. In etcd v3.6.0, v2store can no longer be enabled as the --enable-v2 flag has been removed, and v3store has become the sole source of truth for membership data.

While v2store still exists in v3.6.0, etcd will fail to start if it contains any data other than membership information. To assist with migration, etcd v3.5.18+ provides the etcdutl check v2store command, which verifies that v2store contains only membership data (see PR 19113).

Compared to v2store, v3store offers better performance and transactional support. It is also the actively maintained storage engine moving forward.

The removal of v2store is still ongoing and is tracked in issues/12913.

Downgrade

etcd v3.6.0 is the first version to fully support downgrade. The effort for this downgrade task spans both versions 3.5 and 3.6, and all related work is tracked in issues/11716.

At a high level, the process involves migrating the data schema to the target version (e.g., v3.5), followed by a rolling downgrade.

Ensure the cluster is healthy, and take a snapshot backup. Validate whether the downgrade is valid:

$ etcdctl downgrade validate 3.5
Downgrade validate success, cluster version 3.6

If the downgrade is valid, enable downgrade mode:

$ etcdctl downgrade enable 3.5
Downgrade enable success, cluster version 3.6

etcd will then migrate the data schema in the background. Once complete, proceed with the rolling downgrade.

For details, refer to the Downgrade-3.6 guide.

Feature gates

In etcd v3.6.0, we introduced Kubernetes-style feature gates for managing new features. Previously, we indicated unstable features through the --experimental prefix in feature flag names. The prefix was removed once the feature was stable, causing a breaking change. Now, features will start in Alpha, progress to Beta, then GA, or get deprecated. This ensures a much smoother upgrade and downgrade experience for users.

See feature-gates for details.

livez / readyz checks

etcd now supports /livez and /readyz endpoints, aligning with Kubernetes' Liveness and Readiness probes. /livez indicates whether the etcd instance is alive, while /readyz indicates when it is ready to serve requests. This feature has also been backported to release-3.5 (starting from v3.5.11) and release-3.4 (starting from v3.4.29). See livez/readyz for details.

The existing /health endpoint remains functional. /livez is similar to /health?serializable=true, while /readyz is similar to /health or /health?serializable=false. Clearly, the /livez and /readyz endpoints provide clearer semantics and are easier to understand.

v3discovery

In etcd v3.6.0, the new discovery protocol v3discovery was introduced, based on clientv3. It facilitates the discovery of all cluster members during the bootstrap phase.

The previous v2discovery protocol, based on clientv2, has been deprecated. Additionally, the public discovery service at https://discovery.etcd.io/, which relied on v2discovery, is no longer maintained.

Performance

Memory

In this release, we reduced average memory consumption by at least 50% (see Figure 1). This improvement is primarily due to two changes:

Diagram of memory usage

Figure 1: Memory usage comparison between etcd v3.5.20 and v3.6.0-rc.2 under different read/write ratios. Each subplot shows the memory usage over time with a specific read/write ratio. The red line represents etcd v3.5.20, while the teal line represents v3.6.0-rc.2. Across all tested ratios, v3.6.0-rc.2 exhibits lower and more stable memory usage.

Throughput

Compared to v3.5, etcd v3.6 delivers an average performance improvement of approximately 10% in both read and write throughput (see Figure 2, 3, 4 and 5). This improvement is not attributed to any single major change, but rather the cumulative effect of multiple minor enhancements. One such example is the optimization of the free page queries introduced in PR/419.

etcd read transaction performance with a high write ratio

Figure 2: Read throughput comparison between etcd v3.5.20 and v3.6.0-rc.2 under a high write ratio. The read/write ratio is 0.0078, meaning 1 read per 128 writes. The right bar shows the percentage improvement in read throughput of v3.6.0-rc.2 over v3.5.20, ranging from 3.21% to 25.59%.

etcd read transaction performance with a high read ratio

Figure 3: Read throughput comparison between etcd v3.5.20 and v3.6.0-rc.2 under a high read ratio. The read/write ratio is 8, meaning 8 reads per write. The right bar shows the percentage improvement in read throughput of v3.6.0-rc.2 over v3.5.20, ranging from 4.38% to 27.20%.

etcd write transaction performance with a high write ratio

Figure 4: Write throughput comparison between etcd v3.5.20 and v3.6.0-rc.2 under a high write ratio. The read/write ratio is 0.0078, meaning 1 read per 128 writes. The right bar shows the percentage improvement in write throughput of v3.6.0-rc.2 over v3.5.20, ranging from 2.95% to 24.24%.

etcd write transaction performance with a high read ratio

Figure 5: Write throughput comparison between etcd v3.5.20 and v3.6.0-rc.2 under a high read ratio. The read/write ratio is 8, meaning 8 reads per write. The right bar shows the percentage improvement in write throughput of v3.6.0-rc.2 over v3.5.20, ranging from 3.86% to 28.37%.

Breaking changes

This section highlights a few notable breaking changes. For a complete list, please refer to the Upgrade etcd from v3.5 to v3.6 and the CHANGELOG-3.6.

Old binaries are incompatible with new schema versions

Old etcd binaries are not compatible with newer data schema versions. For example, etcd 3.5 cannot start with data created by etcd 3.6, and etcd 3.4 cannot start with data created by either 3.5 or 3.6.

When downgrading etcd, it's important to follow the documented downgrade procedure. Simply replacing the binary or image will result in the incompatibility issue.

Peer endpoints no longer serve client requests

Client endpoints (--advertise-client-urls) are intended to serve client requests only, while peer endpoints (--initial-advertise-peer-urls) are intended solely for peer communication. However, due to an implementation oversight, the peer endpoints were also able to handle client requests in etcd 3.4 and 3.5. This behavior was misleading and encouraged incorrect usage patterns. In etcd 3.6, this misleading behavior was corrected via PR/13565; peer endpoints no longer serve client requests.

Clear boundary between etcdctl and etcdutl

Both etcdctl and etcdutl are command line tools. etcdutl is an offline utility designed to operate directly on etcd data files, while etcdctl is an online tool that interacts with etcd over a network. Previously, there were some overlapping functionalities between the two, but these overlaps were removed in 3.6.0.

Critical bug fixes

Correctness has always been a top priority for the etcd project. In the process of developing 3.6.0, we found and fixed a few notable bugs that could lead to data inconsistency in specific cases. These fixes have been backported to previous releases, but we believe they deserve special mention here.

Previously, when etcd was applying data, it would update the consistent-index first, followed by committing the data. However, these operations were not atomic. If etcd crashed in between, it could lead to data inconsistency (see issue/13766). The issue was introduced in v3.5.0, and fixed in v3.5.3 with PR/13854.

When a client writes data and receives a success response, the data is expected to be persisted. However, the data might be lost if etcd crashes immediately after sending the success response to the client. This was a legacy issue (see issue/14370) affecting all previous releases. It was addressed in v3.4.21 and v3.5.5 with PR/14400, and fixed in raft side in main branch (now release-3.6) with PR/14413.

If etcd crashed during the defragmentation operation, upon restart, it might reapply some entries which had already been applied, accordingly leading to the revision inconsistency issue (see the discussions in PR/14685). The issue was introduced in v3.5.0, and fixed in v3.5.6 with PR/14730.

Upgrade issue

This section highlights a common issue issues/19557 in the etcd v3.5 to v3.6 upgrade that may cause the upgrade process to fail. For a complete upgrade guide, refer to Upgrade etcd from v3.5 to v3.6.

The issue was introduced in etcd v3.5.1, and resolved in v3.5.20.

Key takeaway: users are required to first upgrade to etcd v3.5.20 (or a higher patch version) before upgrading to etcd v3.6.0; otherwise, the upgrade may fail.

For more background and technical context, see upgrade_from_3.5_to_3.6_issue.

Testing

We introduced the Robustness testing to verify correctness, which has always been our top priority. It plays traffic of various types and volumes against an etcd cluster, concurrently injects a random failpoint, records all operations (including both requests and responses), and finally performs a linearizability check. It also verifies that the Watch APIs guarantees have not been violated. The robustness test increases our confidence in ensuring the quality of each etcd release.

We have migrated most of the etcd workflow tests to Kubernetes' Prow testing infrastructure to take advantage of its benefit, such as nice dashboards for viewing test results and the ability for contributors to rerun failed tests themselves.

Platforms

While retaining all existing supported platforms, we have promoted Linux/ARM64 to Tier 1 support. For more details, please refer to issues/15951. For the complete list of supported platforms, see supported-platform.

Dependencies

Dependency bumping guide

We have published an official guide on how to bump dependencies for etcd's main branch and stable releases. It also covers how to update the Go version. For more details, please refer to dependency_management. With this guide available, any contributors can now help with dependency upgrades.

Core Dependency Updates

bbolt and raft are two core dependencies of etcd.

Both etcd v3.4 and v3.5 depend on bbolt v1.3, while etcd v3.6 depends on bbolt v1.4.

For the release-3.4 and release-3.5 branches, raft is included in the etcd repository itself, so etcd v3.4 and v3.5 do not depend on an external raft module. Starting from etcd v3.6, raft was moved to a separate repository (raft), and the first standalone raft release is v3.6.0. As a result, etcd v3.6.0 depends on raft v3.6.0.

Please see the table below for a summary:

etcd versions bbolt versions raft versions
3.4.x v1.3.x N/A
3.5.x v1.3.x N/A
3.6.x v1.4.x v3.6.x

grpc-gateway@v2

We upgraded grpc-gateway from v1 to v2 via PR/16595 in etcd v3.6.0. This is a major step toward migrating to protobuf-go, the second major version of the Go protocol buffer API implementation.

grpc-gateway@v2 is designed to work with protobuf-go. However, etcd v3.6 still depends on the deprecated gogo/protobuf, which is actually protocol buffer v1 implementation. To resolve this incompatibility, we applied a patch to the generated *.pb.gw.go files to convert v1 messages to v2 messages.

grpc-ecosystem/go-grpc-middleware/providers/prometheus

We switched from the deprecated (and archived) grpc-ecosystem/go-grpc-prometheus to grpc-ecosystem/go-grpc-middleware/providers/prometheus via PR/19195. This change ensures continued support and access to the latest features and improvements in the gRPC Prometheus integration.

Community

There are exciting developments in the etcd community that reflect our ongoing commitment to strengthening collaboration, improving maintainability, and evolving the project's governance.

etcd Becomes a Kubernetes SIG

etcd has officially become a Kubernetes Special Interest Group: SIG-etcd. This change reflects etcd's critical role as the primary datastore for Kubernetes and establishes a more structured and transparent home for long-term stewardship and cross-project collaboration. The new SIG designation will help streamline decision-making, align roadmaps with Kubernetes needs, and attract broader community involvement.

New contributors, maintainers, and reviewers

We've seen increasing engagement from contributors, which has resulted in the addition of three new maintainers:

Their continued contributions have been instrumental in driving the project forward.

We also welcome two new reviewers to the project:

We appreciate their dedication to code quality and their willingness to take on broader review responsibilities within the community.

New release team

We've formed a new release team led by ivanvc and jmhbnz, streamlining the release process by automating many previously manual steps. Inspired by Kubernetes SIG Release, we've adopted several best practices, including clearly defined release team roles and the introduction of release shadows to support knowledge sharing and team sustainability. These changes have made our releases smoother and more reliable, allowing us to approach each release with greater confidence and consistency.

Introducing the etcd Operator Working Group

To further advance etcd's operational excellence, we have formed a new working group: WG-etcd-operator. The working group is dedicated to enabling the automatic and efficient operation of etcd clusters that run in the Kubernetes environment using an etcd-operator.

Future Development

The legacy v2store has been deprecated since etcd v3.4, and the flag --enable-v2 was removed entirely in v3.6. This means that starting from v3.6, there is no longer a way to enable or use the v2store. However, etcd still bootstraps internally from the legacy v2 snapshots. To address this inconsistency, We plan to change etcd to bootstrap from the v3store and replay the WAL entries based on the consistent-index. The work is being tracked in issues/12913.

One of the most persistent challenges remains the large range of queries from the kube-apiserver, which can lead to process crashes due to their unpredictable nature. The range stream feature, originally outlined in the v3.5 release blog/Future roadmaps, remains an idea worth revisiting to address the challenges of large range queries.

For more details and upcoming plans, please refer to the etcd roadmap.

16 May 2025 12:00am GMT

15 May 2025

feedKubernetes Blog

Kubernetes 1.33: Job's SuccessPolicy Goes GA

On behalf of the Kubernetes project, I'm pleased to announce that Job success policy has graduated to General Availability (GA) as part of the v1.33 release.

About Job's Success Policy

In batch workloads, you might want to use leader-follower patterns like MPI, in which the leader controls the execution, including the followers' lifecycle.

In this case, you might want to mark it as succeeded even if some of the indexes failed. Unfortunately, a leader-follower Kubernetes Job that didn't use a success policy, in most cases, would have to require all Pods to finish successfully for that Job to reach an overall succeeded state.

For Kubernetes Jobs, the API allows you to specify the early exit criteria using the .spec.successPolicy field (you can only use the .spec.successPolicy field for an indexed Job). Which describes a set of rules either using a list of succeeded indexes for a job, or defining a minimal required size of succeeded indexes.

This newly stable field is especially valuable for scientific simulation, AI/ML and High-Performance Computing (HPC) batch workloads. Users in these areas often run numerous experiments and may only need a specific number to complete successfully, rather than requiring all of them to succeed. In this case, the leader index failure is the only relevant Job exit criteria, and the outcomes for individual follower Pods are handled only indirectly via the status of the leader index. Moreover, followers do not know when they can terminate themselves.

After Job meets any Success Policy, the Job is marked as succeeded, and all Pods are terminated including the running ones.

How it works

The following excerpt from a Job manifest, using .successPolicy.rules[0].succeededCount, shows an example of using a custom success policy:

 parallelism: 10
 completions: 10
 completionMode: Indexed
 successPolicy:
 rules:
 - succeededCount: 1

Here, the Job is marked as succeeded when one index succeeded regardless of its number. Additionally, you can constrain index numbers against succeededCount in .successPolicy.rules[0].succeededCount as shown below:

parallelism: 10
completions: 10
completionMode: Indexed
successPolicy:
 rules:
 - succeededIndexes: 0 # index of the leader Pod
 succeededCount: 1

This example shows that the Job will be marked as succeeded once a Pod with a specific index (Pod index 0) has succeeded.

Once the Job either reaches one of the successPolicy rules, or achieves its Complete criteria based on .spec.completions, the Job controller within kube-controller-manager adds the SuccessCriteriaMet condition to the Job status. After that, the job-controller initiates cleanup and termination of Pods for Jobs with SuccessCriteriaMet condition. Eventually, Jobs obtain Complete condition when the job-controller finished cleanup and termination.

Learn more

Get involved

This work was led by the Kubernetes batch working group in close collaboration with the SIG Apps community.

If you are interested in working on new features in the space I recommend subscribing to our Slack channel and attending the regular community meetings.

15 May 2025 6:30pm GMT

feedUbuntu blog

Building an end-to-end Retrieval- Augmented Generation (RAG) workflow 

In this guide, we will take you through setting up a RAG pipeline. We will utilize open source tools such as Charmed OpenSearch for efficient search retrieval and KServe for machine learning inference, specifically in Azure and Ubuntu environments while leveraging silicons.

15 May 2025 2:31pm GMT

09 May 2025

feedJavaScript Weekly

Big Node, VS Code, and Mantine updates

#​735 - May 9, 2025

Read on the Web

JavaScript Weekly

k6 1.0: Go-Powered Load Testing with JavaScript - A full-featured, configurable load generation tool that uses the Sobek Go-powered JavaScript engine to support writing test scripts in JavaScript. v1.0 promises stability, first-class TypeScript support, and better extensibility.

Grafana Labs

JSON-Powered White-Label Form Builder for Your JavaScript App - Build dynamic JSON-driven forms in your JavaScript application with SurveyJS - a fully customizable, drag-and-drop form-building UI component. It integrates seamlessly with React, Angular, and Vue 3, and has no backend limitations. Perfect for form-heavy apps.

SurveyJS sponsor

Node 24 (Current) Released - Node's release lines are shifting a little lately - v18 has gone EOL and now v23 gives way to v24 as the 'Current' release for when you need the cutting edge features. It comes with npm 11, V8 13.6 (hello RegExp.escape, Float16Array, and Error.isError), the URLPattern API exposed by default, plus Undici 7.

Node.js Team

💡 Technically, Node v24.0.1 is the latest version temporarily reintroducing an EOL feature due to breakages in popular dependencies.

Visual Studio Code Version 1.100 - Not to be confused with a 1.1 release, this update to VS Code has quite a few goodies for JavaScript developers with improved 'Next Edit Suggestions' that will suggest adding missing imports, support for Node's enhanced network debugging capabilities, improved visibility of type information, remote MCP server support, GPT 4.1 as the new default base model, and more.

Microsoft

IN BRIEF:

RELEASES:

  • 🤖 ESLint v9.26.0 - An interesting release for the popular static analysis tool as it adds support for MCP as a way for ESLint to be used directly by AI models and coding agents.

  • 🗾 Mapbox GL JS 3.12 - Interactive, customizable vector maps in the browser, rendered with WebGL.

  • Relay v19 - Facebook's declarative React/GraphQL framework.

  • Material UI 7.1 - React components using Material Design. Now Tailwind CSS 4 compatible

  • Rspack 1.3.9, Babylon.js 8.7, Electron 36 (official blog post)

📖 Articles

The Power of the Spread and Rest Syntax - A quick run through the opportunities opened up with just three little dots ...

Matt Smith

React Server Components for Astro Developers - Astro's 'island' architecture and React Server Components share a strikingly similar mental model. Dan compares the two, digs into some of the quirks, and suggests Astro offers a 'gentler onramp' to some of RSC's ideas if you're struggling with them.

Dan Abramov

Wallaby MCP: Deep Runtime Context for Your AI Agent - Wallaby gives your AI agent live execution data, dynamic coverage, and real-time insights to fix and generate tests, and write code with confidence.

Wallaby Team sponsor

Migrating a Project from Prettier and ESLint to Biome - Prettier and ESLint are staples in many JavaScript build processes, but Biome offers an interesting 'one stop shop' alternative.

Damilola Olatunji

📄 'Electron Ain't Bad, Actually' - Worth re-reading next time you see the clichéd criticisms of Electron. Vaxry

📺 The React Compiler Explained in Three Minutes Better Stack

📄 You're Misunderstanding DDD in Angular Tomasz Ducin

📄 The Story of Fastify + Vue Jonas Galvez

🛠 Code & Tools

HelloCSV: A Drop-In, CSV Importing Workflow for JS Apps - If you or your users have CSV files to import, here's a complete CSV importing workflow for the frontend that you can drop into your app. Basic docs.

HelloCSV

PptxGenJS 4.0: Build PowerPoint Presentations with JavaScript - A mature library that outputs standards-compliant Open Office XML files compatible with PowerPoint, Apple Keynote, and other common presentation tools. Supports graphics, text, tables, and other typical slide objects. Lots of demos.

Brent Ely

Introducing Clerk Billing - Clerk Billing lets you add B2C/B2B subscriptions with no payment code or UI work-just drop in components and go.

Clerk sponsor

Mantine 8.0: The Full Featured React Components Library - Mantine is one of the most celebrated React components libraries, and for good reason: it's full featured, modern, and looks great. v8.0 ups its chart game with a little Recharts magic, adds over twenty new components (including a GitHub-style Heatmap, Tree and SemiCircleProgress), submenus, and much more.

Vitaly Rtishchev et al.

Hyparquet: Parquet File Parser for JavaScript - Parquet is a popular column-oriented data file format frequently used for storing large datasets for analysis. Hyparquet is a dependency-free JavaScript library for working with Parquet files, even in the browser (as in this demo).

Hyperparam

🔊 react-sounds: Add Sound Effects to React Apps - Having sound effects on the Web might sound like your idea of a nightmare, but this is a well put together project with delicate, well thought out examples that strike the right tone.

Aedilic Inc.

mono-jsx: <html> as a Response - A server-side JSX runtime that renders <html> to a Response with no build step needed and works across numerous server-side JS runtimes.

Je Xia

📰 Classifieds

Meticulous automatically creates and maintains an E2E UI test suite with zero developer effort. Relied on by Dropbox, Wiz, Lattice, Bilt Rewards, etc.

🕹️ Craft delightful games that change how the world learns as an engineer at Brilliant. Remote/NYC/SF: brilliant.org/careers/

👀 Elsewhere..

Here's a selection of things from the broader ecosystem we've noticed this week:

P.S. If you're into React or Node.js, we focus more directly on those in React Status and Node Weekly respectively, so check out the latest issues of those too :-)

09 May 2025 12:00am GMT

02 May 2025

feedJavaScript Weekly

Making V8 eager to compile your JavaScript

#​734 - May 2, 2025

Read on the Web

JavaScript Weekly

GSAP v3.13: JavaScript Animation Set Free - Last year the popular GSAP (a.k.a. GreenSock) animation library was acquired by Webflow and as of this new version the entire GSAP toolkit is freely available (including formerly paid addons like MorphSVG and SplitText) even for commercial use. If you're unfamiliar with GSAP and want to see some of what it can do, they have a showcase, lots of code demos, and amazing docs.

Cassie Evans and Jack Doyle

💡 Take care with the license though. GSAP is not formally 'open source' but has a 'no charge' license that prevents you using it to directly compete with Webflow.

AG Charts: The Best JavaScript Charting Library in the World - Create beautiful JavaScript Charts in minutes with our open-source library. Built by AG Grid, AG Charts has an intuitive, flexible API, 20+ series types and advanced features, including Financial Charts. Supports React, Angular & Vue. Try for free.

AG Charts sponsor

Converting Values to Strings in JavaScript - When Dr. Axel says "converting values to strings in JavaScript is more complicated than it might seem", I'm inclined to believe him. An interesting poke about into something seemingly simple you might not think about very much.

Dr. Axel Rauschmayer

📉 Giving V8 a Heads-Up: Faster Startup with Explicit Compile Hints - A look at a V8 optimization that lets you direct V8 to eagerly compile specific files as a way to speed up startup. It ships with Chrome 136 and the performance gains are more compelling than you might expect.

Marja Hölttä

IN BRIEF:

RELEASES:

📖 Articles

Export Google Analytics Data to Google Sheets via Apps Script - Google Apps Script is a JavaScript-based platform for dynamically automating tasks in all sorts of Google apps. Here's how to use it to bring Google Analytics data into a Google Sheet.

Kayce Basques

Building an Offline-Friendly Image Upload System - How to leverage PWA tech such as IndexedDB, service workers, and the Background Sync API to help improve the reliability of web apps for users, particularly those with unreliable internet connectivity.

Amejimaobari Ollornwi

How to Take Clerk to Production - How to take a Clerk app to production with custom domains, OAuth credentials, and DNS setup.

Clerk sponsor

What Does React's 'use client' Do? - Dan Abramov takes a practical look at how to think about the use client and use server directives React Server Components introduced and how they let you elegantly structure a client/server app as "a single program spanning two environments" - a concept that Dan thinks could be more widely used, even outside of React.

Dan Abramov

📄 Deno's Decline? - A critical view of Deno's Deno Deploy edge platform which has been steadily dropping regions. David Bushell

📺 How to Detect Memory Leaks in Your Web App Decoded Frontend

📄 Pwning the Ladybird Browser - The vector is Ladybird's LibJS JavaScript engine. Jess

🛠 Code & Tools

PDFSlick 3.0: View and Interact with PDF Documents in JS Apps - A full-featured PDF viewer for React, Solid, Svelte and vanilla JS apps. Built on top of PDF.js, it offers a wide array of features from simple PDF viewing to working with multiple and large documents with annotations. Demo. v3.0 bumps up to PDF.js v5 with ICC profile support, better JPEG 2000 support, and improved rendering of large pages.

Vancho Stojkov

Koa 3.0: The Expressive HTTP Middleware Framework - Koa first appeared a decade ago as a 'next-generation' Web framework that shared some of the lineage of Express.js, but leaning on more modern JS features. While Express has been making a comeback, Koa remains a compelling alternative.

Koa contributors

Your Terminal, Evolved - The new agentic CLI from AWS works with you to write files locally, run bash commands, or call AWS APIs. Start for free!

Amazon sponsor

Seyfert: A Framework for Building Discord Bots - Create bots for the popular chat system starting from bots that respond to simple commands up to creating components and getting user input. Supports Deno, Bun, and Node.

socram03

Storybook 9 Beta - A strong step forward for the UI 'frontend workshop' with several experimental features from Storybook 8 becoming stable. v9 has a strong focus on component testing, plus React Native support.

Michael Shilman

PGlite 0.3: Postgres but in WebAssembly - A WebAssembly-based build of the Postgres SQL database meaning you can run it wherever WebAssembly can be run (such as in the browser as in this demo).

ElectricSQL

📰 Classifieds

Meticulous automatically creates and maintains an E2E UI test suite with zero developer effort. Relied on by Dropbox, Wiz, Lattice, Bilt Rewards, etc.

🎹 STRICH: Add blazing fast and reliable 1D/2D Barcode Scanning to your web apps. Free demo app and 30-day trial available.

📢 Elsewhere

A quick roundup of other interesting updates and useful resources from across the broader developer landscape:

  • Redis is open source again! The popular Redis in-memory data store ran into a bit of drama in recent years with a license change following its acquisition. The good news is that an AGPL license is now an option for the new Redis 8 release making Redis truly 'open source again.'

  • TypeScript ←→ C#: I've been dabbling with a little C# recently (it's the main language used in Unity game development) and enjoyed this TypeScript is Like C# guide oriented largely around showing TypeScript/JavaScript vs C# examples of doing the same things.

  • ❤️ JS + HTML: It's a simple thing, but Simon Willison reminds us that static HTML enriched with JavaScript and served up on GitHub Pages is one of the best ways you can give software freely for the world to use.

  • Emulators-a-plenty: Tiny Emus is a showcase of almost 200 emulators that run in the browser, largely for 8 bit platforms, games, and even some visual CPU demos.

  • CSS shapes: Did you know CSS now has a shape() function for drawing complex shapes for clipping paths?

02 May 2025 12:00am GMT