<?xml version="1.0" encoding="UTF-8" standalone="no"?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns="http://www.w3.org/2005/Atom" xmlns:blogger="http://schemas.google.com/blogger/2008" xmlns:gd="http://schemas.google.com/g/2005" xmlns:georss="http://www.georss.org/georss" xmlns:openSearch="http://a9.com/-/spec/opensearchrss/1.0/" xmlns:thr="http://purl.org/syndication/thread/1.0"><id>tag:blogger.com,1999:blog-8698702854482141883</id><updated>2026-10-02T16:13:06.044-07:00</updated><category term="releases"/><category term="student programs"/><category term="gci"/><category term="conference"/><category term="students"/><category term="open source release"/><category term="announcements"/><category term="ghop"/><category term="meetups"/><category term="Kubernetes"/><category term="education"/><category term="security"/><category term="documentation"/><category term="machine learning"/><category term="Python"/><category term="Linux"/><category term="Season of Docs"/><category term="GSoC Meetups"/><category term="technical writing"/><category term="AI"/><category term="project hosting"/><category term="guest post"/><category term="testing"/><category term="hackathon"/><category term="statistics"/><category term="TensorFlow"/><category term="Android"/><category term="C++"/><category term="Cloud"/><category term="news"/><category term="twios"/><category term="App Engine"/><category term="Go"/><category term="OSCON"/><category term="library"/><category term="wrap-up"/><category term="JavaScript"/><category term="GKE"/><category term="Git"/><category term="Java"/><category term="games"/><category term="accessibility"/><category term="compression"/><category term="Eclipse"/><category term="Google Cloud Platform"/><category term="KDE"/><category term="deep learning"/><category term="google open source"/><category term="mentors"/><category term="peer bonus"/><category term="GNOME"/><category term="OpenCensus"/><category term="R"/><category term="bazel"/><category term="database"/><category term="open source programs"/><category term="BSD"/><category term="Chrome"/><category term="Chromium"/><category term="Dart"/><category term="OSS"/><category term="licensing"/><category term="peer bonus program"/><category term="science"/><category term="silicon"/><category term="Google Earth"/><category term="Google I/O"/><category term="HTML5"/><category term="JAX"/><category term="Subversion"/><category term="awards"/><category term="fonts"/><category term="maps"/><category term="report card"/><category term="research"/><category term="GSoC 10 Things"/><category term="GitHub"/><category term="Open Source"/><category term="Selenium"/><category term="SoD"/><category term="VR"/><category term="containers"/><category term="distributed tracing"/><category term="fuzzing"/><category term="hardware"/><category term="usability"/><category term="BigQuery"/><category term="Django"/><category term="Gerrit"/><category term="Google Brain"/><category term="Haskell"/><category term="Knative"/><category term="ML"/><category term="OSS-Fuzz"/><category term="PostgreSQL"/><category term="Samba"/><category term="audio"/><category term="computer vision"/><category term="contest"/><category term="google"/><category term="google code-in"/><category term="mobile"/><category term="observability"/><category term="projects"/><category term="rust"/><category term="API"/><category term="Apache Beam"/><category term="CEL"/><category term="Data"/><category term="Docker"/><category term="Flutter"/><category term="Free Software Foundation"/><category term="GCC"/><category term="GCP"/><category term="Gemma"/><category term="Google Season of Docs"/><category term="Spanner"/><category term="contributor"/><category term="diversity"/><category term="docs"/><category term="government"/><category term="ios"/><category term="metrics"/><category term="networking"/><category term="open silicon"/><category term="opentitan"/><category term="performance"/><category term="reinforcement learning"/><category term="standards"/><category term="AR"/><category term="Antmicro"/><category term="Creative Commons"/><category term="Explore"/><category term="GNU"/><category term="Istio"/><category term="JSON"/><category term="Machine Learning Framework"/><category term="Mercurial"/><category term="OpenTelemetry"/><category term="Perl"/><category term="Vertex AI"/><category term="artificial intelligence"/><category term="compliance"/><category term="graphics"/><category term="instrumentation"/><category term="k8s"/><category term="open source ML"/><category term="open source software"/><category term="privacy"/><category term="protocol buffers"/><category term="season of usability"/><category term="virtual events"/><category term="webdriver"/><category term="3d"/><category term="A2A"/><category term="Agents"/><category term="Apache"/><category term="Apache Software Foundation"/><category term="Best Practices"/><category term="BioJS"/><category term="C"/><category term="CSS"/><category term="Census"/><category term="Code"/><category term="Common Expression Language"/><category term="Dataflow"/><category term="Firebase"/><category term="Gateway API"/><category term="Google Compute Engine"/><category term="Ingress"/><category term="Kotlin"/><category term="Lakehouse"/><category term="Learn"/><category term="ML Ops"/><category term="Neural Networks"/><category term="PHP"/><category term="RISC-V"/><category term="SDK"/><category term="SLSA"/><category term="SQL"/><category term="Science Journal"/><category term="Sustainability"/><category term="Tekton"/><category term="Tracing"/><category term="Unicode"/><category term="YouTube"/><category term="bazelcon"/><category term="coding"/><category term="continuous integration"/><category term="developer tools"/><category term="differential privacy"/><category term="embedded"/><category term="evaluation"/><category term="fun propulsion lab"/><category term="gaming"/><category term="genomics"/><category term="golang"/><category term="hardware security"/><category term="health"/><category term="healthcare"/><category term="images"/><category term="internationalization"/><category term="interoperability"/><category term="junit4"/><category term="microcontrollers"/><category term="microservices"/><category term="natural language"/><category term="network"/><category term="open data"/><category term="optimization"/><category term="parameterized-tests"/><category term="patents"/><category term="production ML"/><category term="profiles"/><category term="quantum computing"/><category term="scaling ML"/><category term="scanning"/><category term="security scanning"/><category term="translation"/><category term="virtual reality"/><category term="visualization"/><category term="web"/><category term="3D Graphics"/><category term="AI/ML"/><category term="Announcement"/><category term="Apache Iceberg"/><category term="CNCF"/><category term="CPU"/><category term="Cloud Composer"/><category term="Cloud SQL"/><category term="Conformance"/><category term="D&amp;I"/><category term="DevSecOps"/><category term="Developers"/><category term="Efabless"/><category term="Etcd"/><category term="FOSDEM"/><category term="FOSSASIA"/><category term="Filesystems"/><category term="GIS"/><category term="GPU"/><category term="Gemini"/><category term="Generative AI"/><category term="Google App Engine"/><category term="Google Cloud"/><category term="Google I/O 2024"/><category term="Google OSS"/><category term="Haiku"/><category term="HashiCorp Vault"/><category term="IAMF"/><category term="Industry Trends"/><category term="JPEG"/><category term="Learn Kubernetes with Google"/><category term="Linux.conf.au"/><category term="Logic Programming"/><category term="ML Dev Tools"/><category term="Natural Language Understanding"/><category term="OSPO"/><category term="Objective-C"/><category term="Open Source Summit"/><category term="Open source peer bonus"/><category term="OpenMPW"/><category term="OpenTelementry"/><category term="OpenTracing"/><category term="OpenXLA"/><category term="Oracle"/><category term="PDK"/><category term="POSSE"/><category term="Problem-Solving"/><category term="Programming Languages"/><category term="PyTorch"/><category term="Quantum"/><category term="Release Notes"/><category term="Ruby"/><category term="SFT"/><category term="SIMD"/><category term="TPU Optimization"/><category term="TPU Performance"/><category term="Terraform"/><category term="This Week in Open Source"/><category term="Traffic Splitting"/><category term="Tunix"/><category term="Unity"/><category term="Vault"/><category term="Vulnerabilities"/><category term="WebAssembly"/><category term="ZuriHac"/><category term="ai agents"/><category term="analytics"/><category term="australia"/><category term="authentication backend"/><category term="benchmark"/><category term="beta"/><category term="bioinformatics"/><category term="blockly"/><category term="cardboard"/><category term="chemistry"/><category term="cloud native"/><category term="compilers"/><category term="debugging"/><category term="eclipsa"/><category term="energy"/><category term="foundations"/><category term="gVisor"/><category term="geography"/><category term="geometry"/><category term="inclusion"/><category term="information security"/><category term="internships"/><category term="json-ld"/><category term="junit5"/><category term="kernel"/><category term="language"/><category term="machine perception"/><category term="maintainers"/><category term="mentor"/><category term="metabrainz"/><category term="network scanning"/><category term="physics"/><category term="programs"/><category term="progression"/><category term="robotics"/><category term="schema.org"/><category term="search"/><category term="secret management"/><category term="serverless"/><category term="steam"/><category term="structured data"/><category term="student"/><category term="sugar labs"/><category term="summer of code"/><category term="textures"/><category term="tilt brush"/><category term="time zones"/><category term="tools"/><category term="typescript"/><category term="validation"/><category term="video"/><category term="wafer"/><category term="webvr"/><category term="writing"/><category term="#opensource #PDK #silicon #eda #180nm #efabless #OpenMPW"/><category term=". Web"/><category term=".NET"/><category term="1.17"/><category term="1.19"/><category term="1.21"/><category term="1.30"/><category term="1.31"/><category term="1.32"/><category term="1.33"/><category term="1.34"/><category term="180nm"/><category term="2FA"/><category term="3Daudio"/><category term="90nm"/><category term="A2April"/><category term="ADC"/><category term="AI&#10;Industry Trends"/><category term="AI Innovation"/><category term="AI Security"/><category term="AI-integrated"/><category term="AMP"/><category term="AOSSIE"/><category term="APM"/><category term="AWS"/><category term="AWS Trainium"/><category term="Abseil"/><category term="Agent Sandbox"/><category term="Agent2Agent"/><category term="Agentic AI"/><category term="Agentic commerce"/><category term="AlloyDB"/><category term="Allstar"/><category term="Anomaly Detection"/><category term="Anthos"/><category term="Apache 2.0"/><category term="Apache Airflow"/><category term="Apache Flink"/><category term="Apache HBase"/><category term="Apache Spark"/><category term="Apigee"/><category term="Application Performance Management"/><category term="BMC"/><category term="Backup"/><category term="BigLake"/><category term="Bigtable"/><category term="Business &amp; Leadership"/><category term="C#"/><category term="CFP"/><category term="CICD"/><category term="CIS"/><category term="CQL"/><category term="CVE"/><category term="Cactus"/><category term="Case Study"/><category term="Chinese"/><category term="Chip Design"/><category term="CircuitVerse"/><category term="Clang"/><category term="Clinical Quality Language"/><category term="Cloud Data Fusion"/><category term="Cloud Monitoring"/><category term="Cloud Speech API"/><category term="Cloud TPU"/><category term="CloudCV"/><category term="Colab"/><category term="Community"/><category term="Contributing"/><category term="Contributors Maintainers"/><category term="Control-M"/><category term="DAW"/><category term="DICOM"/><category term="DICOMWeb"/><category term="DRA"/><category term="Dapper"/><category term="Data Analytics"/><category term="Data Governance"/><category term="Data Lakes"/><category term="Data Lineage"/><category term="Data Science"/><category term="Data analysis"/><category term="Data validation"/><category term="Data-Driven"/><category term="Databases"/><category term="Datalake"/><category term="Dataproc"/><category term="Debian"/><category term="DeepDream"/><category term="DeepMind"/><category term="Demos"/><category term="DevOps"/><category term="Digital Pathology"/><category term="DoubleCheck"/><category term="Dynamic Resource Allocation"/><category term="EDA"/><category term="EDW"/><category term="ESCA"/><category term="EclipsaAudio"/><category term="Eclipse Foundation"/><category term="Embedded Linux"/><category term="Embodied AI"/><category term="Envoy"/><category term="Events"/><category term="Expression Language"/><category term="FDSOI"/><category term="FPGA"/><category term="Fluent Bit"/><category term="Fraud Detection"/><category term="Fuchsia"/><category term="FuzzBench"/><category term="Fuzzer Benchmarking"/><category term="Fuzzer Evaluation"/><category term="Fuzzer Evaluator"/><category term="GCVE"/><category term="GIF"/><category term="GNU Radio"/><category term="GPL"/><category term="GPS"/><category term="GSoC"/><category term="Gemmaverse"/><category term="GenerativeAI"/><category term="Google Ads"/><category term="Google Blocks"/><category term="Google Cloud Console"/><category term="Google Cloud VMware Engine"/><category term="Google Genomics"/><category term="Google My Business"/><category term="Google OSPO"/><category term="Google Play"/><category term="Google Summer of Code"/><category term="GoogleSQL"/><category term="Governance"/><category term="HPC"/><category term="HUES"/><category term="High-Performance"/><category term="Host offloading"/><category term="Hugging Face"/><category term="IAM"/><category term="ICLR"/><category term="IaC"/><category term="Iceberg"/><category term="InSpec"/><category term="Inclusive"/><category term="Intel Xeon"/><category term="Intermediate"/><category term="IoT"/><category term="JPEG XL"/><category term="JanusGraph"/><category term="Japanese"/><category term="Jaspr"/><category term="Java library"/><category term="Jenkins"/><category term="Jigsaw"/><category term="Joomla"/><category term="Jpegli"/><category term="Jupyter"/><category term="Korean"/><category term="Kube-Agents"/><category term="Kubernetes Operator"/><category term="LF"/><category term="LIDAR"/><category term="LLM"/><category term="LLM Post-training"/><category term="LLM Safety"/><category term="LLM training"/><category term="LLMs"/><category term="LMEval"/><category term="LaTeX"/><category term="LabLua"/><category term="Learn Kubernetes"/><category term="Linux Foundation"/><category term="Linux man-pages"/><category term="Liquid Galaxy"/><category term="ML systems"/><category term="MLCommons"/><category term="MLLMs"/><category term="Maintainer"/><category term="Maintaining"/><category term="Marin 32B"/><category term="Measure"/><category term="MediaPipe"/><category term="Medical"/><category term="Medical Imaging"/><category term="Mentor Summit"/><category term="Mentorship"/><category term="Mesh"/><category term="MicroK8s"/><category term="Migration"/><category term="Model Verification"/><category term="Multi-Platform"/><category term="NGINX"/><category term="NIST"/><category term="NRNB"/><category term="Node.js"/><category term="OAuth"/><category term="OSS hardware"/><category term="OSSEU"/><category term="OSSNA"/><category term="Open Models"/><category term="Open Source Compliance"/><category term="Open source hardware"/><category term="Open standards"/><category term="OpenChain"/><category term="OpenFermion"/><category term="OpenLineage"/><category term="OpenMRS"/><category term="OpenMetrics"/><category term="OpenROAD"/><category term="Oppia"/><category term="Optimal Control"/><category term="Orange"/><category term="Pebble"/><category term="Phare Benchmark"/><category term="Policy"/><category term="Population Health"/><category term="PowerShell"/><category term="Public Dataset"/><category term="Public Lab"/><category term="PyIceberg"/><category term="QEMU"/><category term="RDMA"/><category term="RL"/><category term="RTOS"/><category term="Rails"/><category term="Rails Girls Summer of Code"/><category term="Raspberry Pi Foundation"/><category term="Refresh token"/><category term="Respect"/><category term="Respectful"/><category term="Responsible AI"/><category term="Routing"/><category term="Rust security"/><category term="S2"/><category term="SCoRe"/><category term="SLAM"/><category term="SRE"/><category term="SSH authorization open-source"/><category term="STE||AR"/><category term="Sandbox"/><category term="Scene Graphs"/><category term="Scheduler"/><category term="Scratch"/><category term="Secrets Scanning"/><category term="Security Scorecards"/><category term="Semi-Supervised Learning"/><category term="Semiconductors"/><category term="Server-side Apply"/><category term="Service Mesh"/><category term="Site Reliability Engineering"/><category term="SkyWater"/><category term="Smart Buildings"/><category term="Smart Campaign"/><category term="Smartwatches"/><category term="Software"/><category term="Solutions"/><category term="Solve"/><category term="Sorting"/><category term="Sound Separation"/><category term="Sparrow"/><category term="Spatial Reasoning"/><category term="Spinnaker"/><category term="Stable Diffusion"/><category term="Supervised Fine Tuning"/><category term="Supply chain security; OpenSSF; GOSST; Scorecard; SLSA; sos.dev"/><category term="Swagless"/><category term="Systers"/><category term="TPU"/><category term="TPU Compute"/><category term="TPUs"/><category term="TensorFlow-XLA"/><category term="Test Automation"/><category term="TestParameterInjector"/><category term="Titan"/><category term="Topology Awareness"/><category term="Trademarks"/><category term="Tunix Framework"/><category term="UCP"/><category term="Universal Commerce Protocol"/><category term="VMware"/><category term="VPN"/><category term="VR/AR"/><category term="Verifiable Games"/><category term="Vision-Language Models"/><category term="WSI"/><category term="Web development"/><category term="WikiLoop"/><category term="Wikipedia"/><category term="Workflow Migration"/><category term="WriteAPI"/><category term="XLA"/><category term="YAML"/><category term="YouTube API"/><category term="ZetaSQL"/><category term="a2ui"/><category term="adk"/><category term="ads"/><category term="algorithms"/><category term="angular"/><category term="anniversary"/><category term="annotation guidelines"/><category term="aosp"/><category term="ap2"/><category term="arXiv"/><category term="arduino"/><category term="asf"/><category term="asic"/><category term="astronomy"/><category term="atheris"/><category term="autoML"/><category term="back end development"/><category term="backupdr"/><category term="backups"/><category term="beam"/><category term="beam summit"/><category term="benchmarking"/><category term="benchmarks"/><category term="big data"/><category term="binpacker"/><category term="birthday"/><category term="black-box"/><category term="block coding"/><category term="block-based coding"/><category term="block-based programming"/><category term="blog"/><category term="browsers"/><category term="bug bounty"/><category term="captions"/><category term="chips-alliance"/><category term="cilium"/><category term="clojure"/><category term="cloud computing"/><category term="cloud development"/><category term="cloud ops"/><category term="co-design"/><category term="coala"/><category term="code review"/><category term="code-samples"/><category term="codec"/><category term="common library"/><category term="communities"/><category term="computeengine"/><category term="computer science"/><category term="conferences"/><category term="container security"/><category term="continuous delivery"/><category term="contribution"/><category term="coronovirus"/><category term="cost optimization"/><category term="covid"/><category term="covid-19"/><category term="crawling"/><category term="creators"/><category term="critical open source projects"/><category term="criticality score"/><category term="crowdsourcing"/><category term="cryptography"/><category term="data migration"/><category term="data mining"/><category term="datacenter"/><category term="dataset"/><category term="datasets"/><category term="developer library"/><category term="development"/><category term="diffusion models"/><category term="disasterrecovery"/><category term="distributed applications"/><category term="draco"/><category term="earthquakes"/><category term="edcation"/><category term="emergency"/><category term="execution"/><category term="external"/><category term="fDPO"/><category term="fhir"/><category term="file type detection"/><category term="fine-tuning"/><category term="formal verification"/><category term="foundation"/><category term="foundation model"/><category term="frameworks"/><category term="functional programming"/><category term="funding"/><category term="fuzzer"/><category term="fuzzing internship"/><category term="fuzzing research"/><category term="gci orgs"/><category term="gci students"/><category term="gcloud"/><category term="geology"/><category term="gmail"/><category term="google developers"/><category term="google peer bonus"/><category term="googlecloud"/><category term="graph"/><category term="graphdb"/><category term="gsoc student"/><category term="hl7"/><category term="image compression"/><category term="immersive"/><category term="infrastructure"/><category term="inspiration"/><category term="instance metadata"/><category term="instructional videos"/><category term="interactive music"/><category term="interns"/><category term="keystroke"/><category term="knative 1.0"/><category term="kotlin multiplatform"/><category term="kubecon"/><category term="language models"/><category term="latinx"/><category term="lca"/><category term="learn Istio"/><category term="lisp"/><category term="live panel"/><category term="live transcribe"/><category term="load testing"/><category term="locust"/><category term="logo"/><category term="lowrisc"/><category term="lua"/><category term="machine learning software infrastructure"/><category term="machine translation"/><category term="magika"/><category term="making"/><category term="mathematical software"/><category term="medical text"/><category term="melange"/><category term="memory"/><category term="milestone"/><category term="monitoring"/><category term="monolith"/><category term="multi-cluster"/><category term="musicbrainz"/><category term="mysql"/><category term="nmap"/><category term="npm"/><category term="open access"/><category term="open data sets"/><category term="open source award"/><category term="open source communities"/><category term="open source fuzzing"/><category term="open source security"/><category term="open-source"/><category term="opensource"/><category term="openssf"/><category term="operating system"/><category term="operations research"/><category term="oss criticality"/><category term="packaging"/><category term="partners"/><category term="peer bonus winner"/><category term="perfkit"/><category term="performance testing"/><category term="perkit benchmarker"/><category term="pigweed"/><category term="pixar"/><category term="pkb"/><category term="pkg.go.dev"/><category term="podcasting"/><category term="post-training"/><category term="processing"/><category term="proxy"/><category term="quantum virtual machine"/><category term="rare disease"/><category term="recognition"/><category term="recommender systems"/><category term="registry"/><category term="repos"/><category term="response"/><category term="runtime"/><category term="saliency"/><category term="sampling"/><category term="scaling"/><category term="schedviz"/><category term="scorecards"/><category term="seL4"/><category term="secure"/><category term="secure compute"/><category term="sigstore"/><category term="simulation"/><category term="software supply chain"/><category term="spatial"/><category term="spatial audio"/><category term="spatial indexing"/><category term="spatialaudio"/><category term="speech recognition"/><category term="spherical geometry"/><category term="sponsorship"/><category term="style"/><category term="summer internships in technology"/><category term="supply chain attacks"/><category term="supply chain security"/><category term="systemverilog"/><category term="tags"/><category term="technical documentation"/><category term="technical talks"/><category term="temporal cartography"/><category term="tfrecord"/><category term="tracepoints"/><category term="transparency"/><category term="ui automation"/><category term="ulnerability management"/><category term="verification"/><category term="verilog"/><category term="virtual"/><category term="virtualization"/><category term="virtualmachine"/><category term="vm"/><category term="vms"/><category term="vulnerability"/><category term="vulnerability management"/><category term="vulnerability rewards program"/><category term="web fonts"/><category term="websites"/><category term="women in open source"/><category term="workshops"/><category term="zopfli"/><title type="text">Google Open Source Blog</title><subtitle type="html">News about Google's Open Source projects and programs.</subtitle><link href="http://opensource.googleblog.com/feeds/posts/default" rel="http://schemas.google.com/g/2005#feed" type="application/atom+xml"/><link href="http://www.blogger.com/feeds/8698702854482141883/posts/default" rel="self" type="application/atom+xml"/><link href="http://opensource.googleblog.com/" rel="alternate" type="text/html"/><link href="http://pubsubhubbub.appspot.com/" rel="hub"/><link href="http://www.blogger.com/feeds/8698702854482141883/posts/default?start-index=26&amp;max-results=25" rel="next" type="application/atom+xml"/><author><name>Unknown</name><email>noreply@blogger.com</email><gd:image height="16" rel="http://schemas.google.com/g/2005#thumbnail" src="https://img1.blogblog.com/img/b16-rounded.gif" width="16"/></author><generator uri="http://www.blogger.com" version="7.00">Blogger</generator><openSearch:totalResults>1551</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>25</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-8698702854482141883.post-4177487320819994825</id><published>2026-10-02T11:30:00.000-07:00</published><updated>2026-10-02T11:30:00.116-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Agentic AI"/><category scheme="http://www.blogger.com/atom/ns#" term="AI"/><category scheme="http://www.blogger.com/atom/ns#" term="events"/><category scheme="http://www.blogger.com/atom/ns#" term="Gemma"/><category scheme="http://www.blogger.com/atom/ns#" term="news"/><category scheme="http://www.blogger.com/atom/ns#" term="Open Source"/><category scheme="http://www.blogger.com/atom/ns#" term="This Week in Open Source"/><category scheme="http://www.blogger.com/atom/ns#" term="twios"/><title type="text">This Week in Open Source for October 2, 2026</title><content type="html">&lt;meta name="twitter:image" content="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEizuKHbBriafpnCVl8A7gazsybuVNKqwyYE1n5-RfAYhu6i5bN55iTw0LE_S0KLGWBJU9ERHgsnd9lZ3J94PhlE5hpZ5YIeBHH8PjS2yuRciaN7VgqLUISB9Ofpqst0n6tawyH6etvfFro4lqZv2X8EomVGJUTL8CSaHp0XyK3LxbJIhwi6ENKX620R4ME/s1600/header1.png"&gt;
&lt;img class="metadata" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEizuKHbBriafpnCVl8A7gazsybuVNKqwyYE1n5-RfAYhu6i5bN55iTw0LE_S0KLGWBJU9ERHgsnd9lZ3J94PhlE5hpZ5YIeBHH8PjS2yuRciaN7VgqLUISB9Ofpqst0n6tawyH6etvfFro4lqZv2X8EomVGJUTL8CSaHp0XyK3LxbJIhwi6ENKX620R4ME/s1600/header1.png" alt="This Week in Open Source banner graphic"&gt;
&lt;a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEizuKHbBriafpnCVl8A7gazsybuVNKqwyYE1n5-RfAYhu6i5bN55iTw0LE_S0KLGWBJU9ERHgsnd9lZ3J94PhlE5hpZ5YIeBHH8PjS2yuRciaN7VgqLUISB9Ofpqst0n6tawyH6etvfFro4lqZv2X8EomVGJUTL8CSaHp0XyK3LxbJIhwi6ENKX620R4ME/s1600/header1.png" class="header-image"&gt;&lt;img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEizuKHbBriafpnCVl8A7gazsybuVNKqwyYE1n5-RfAYhu6i5bN55iTw0LE_S0KLGWBJU9ERHgsnd9lZ3J94PhlE5hpZ5YIeBHH8PjS2yuRciaN7VgqLUISB9Ofpqst0n6tawyH6etvfFro4lqZv2X8EomVGJUTL8CSaHp0XyK3LxbJIhwi6ENKX620R4ME/s1600/header1.png" alt="This Week in Open Source banner graphic"/&gt;&lt;/a&gt;

&lt;p class="byline"&gt;by &lt;author&gt;Daryl Ducharme&lt;/author&gt;, Open Source Programs Office&lt;/p&gt;

&lt;h2&gt;This Week in Open Source for October 2, 2026&lt;/h2&gt;
&lt;p&gt;&lt;em&gt;A look around the world of open source&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;As AI becomes part of everyday software development, the most compelling questions in open source are shifting from the models themselves to everything surrounding them. I’m always drawn to how technology affects individuals, and especially the workers who use and maintain it, for better or for worse (I definitely prefer better). That’s why I’m convinced the next phase of open-source AI won’t be won by chasing bigger benchmarks, but by building the open infrastructure, transparent local tooling, and community norms that keep developers and maintainers in control. This week’s reads explore what that looks like in practice.&lt;/p&gt;

&lt;h2&gt;Upcoming Events&lt;/h2&gt;
&lt;h3&gt;&#128467;️ October 2026&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;&lt;a href="https://events.linuxfoundation.org/valkeyconf/"&gt;ValkeyConf 2026&lt;/a&gt;&lt;/strong&gt; (October 5, 2026) — Prague, Czechia. Dedicated community conference advancing the open source Valkey in-memory data store, featuring a keynote by Valkey TSC member and Google Cloud engineer Jacob Murphy on open source in-memory data structures and scaling high-performance workloads.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;a href="https://events.linuxfoundation.org/mcp-dev-summit-toronto/"&gt;MCP Dev Summit Toronto&lt;/a&gt;&lt;/strong&gt; (October 5–6, 2026) — Toronto, Ontario, Canada. Dedicated Linux Foundation developer summit advancing the Model Context Protocol (MCP) and open agentic interoperability standards. Join Google OSPO's Daryl Ducharme (that's me!) on Tuesday, October 6 (11:00 AM EDT) for &lt;em&gt;"Tag-Team Transmission: Navigating A2A and MCP for Optimum Orchestration,"&lt;/em&gt; examining how the Agent2Agent (A2A) protocol and MCP interoperate across multi-agent architectures.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;a href="https://events.linuxfoundation.org/open-source-summit-europe/"&gt;Open Source Summit Europe&lt;/a&gt;&lt;/strong&gt; (October 7–9, 2026) — Prague, Czechia. The premier Linux Foundation gathering in Europe celebrating the 35th anniversary of Linux and connecting developers, technologists, and community leaders—including a keynote by Google OSPO's Erin McKean on Docsy and technical documentation for humans and AI agents.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;a href="https://communityovercode.org/"&gt;Community Over Code&lt;/a&gt;&lt;/strong&gt; (October 11–14, 2026) — Glasgow, Scotland. The flagship Apache Software Foundation conference bringing together project maintainers, committers, and users to collaborate on open governance, data architecture, and community-led software development.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;a href="https://events.linuxfoundation.org/bazelcon/"&gt;BazelCon 2026&lt;/a&gt;&lt;/strong&gt; (October 13–15, 2026) — Amsterdam, Netherlands. Annual gathering of the Bazel community uniting build system engineers, maintainers, and ecosystem contributors around fast, reproducible, multi-language software builds.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;a href="https://allthingsopen.org/"&gt;All Things Open 2026&lt;/a&gt;&lt;/strong&gt; (October 19–20, 2026) — Raleigh, North Carolina, USA. One of the largest community-focused open source conferences on the U.S. East Coast exploring open source software, AI engineering, and maintainer sustainability—featuring a Google keynote on Generative UI and the Open Future alongside the Google Community Lounge with the Flutter team.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;a href="https://events.linuxfoundation.org/pytorch-conference/"&gt;PyTorch Conference North America 2026&lt;/a&gt;&lt;/strong&gt; (October 20–21, 2026) — San Jose, California, USA. Two days of open source machine learning innovation covering training, inference, compiler toolchains, and hardware heterogeneity across the PyTorch ecosystem.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;a href="https://events.linuxfoundation.org/agntcon-mcpcon-north-america/"&gt;AGNTCon + MCPCon North America 2026&lt;/a&gt;&lt;/strong&gt; (October 22–23, 2026) — San Jose, California, USA. Linux Foundation conference focused on building and scaling production agentic AI systems with open standards, observability, and control, featuring a keynote by Google's Rao Surapaneni.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;a href="https://githubuniverse.com/"&gt;GitHub Universe 2026&lt;/a&gt;&lt;/strong&gt; (October 28–29, 2026) — San Francisco, California, USA &amp;amp; Virtual. Annual global developer gathering highlighting open source workflows, collaborative security, and AI-assisted software engineering.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;&#128467;️ November 2026&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;&lt;a href="https://events.linuxfoundation.org/open-source-finance-forum-new-york/"&gt;Open Source in Finance Forum (OSFF) New York&lt;/a&gt;&lt;/strong&gt; (November 4–5, 2026) — New York, New York, USA. Dedicated industry conference examining open source compliance, supply-chain security, and collaborative innovation across regulated financial institutions.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;a href="https://events.linuxfoundation.org/kubecon-cloudnativecon-north-america/"&gt;KubeCon + CloudNativeCon North America 2026&lt;/a&gt;&lt;/strong&gt; (November 9–12, 2026) — Salt Lake City, Utah, USA. The Cloud Native Computing Foundation's flagship conference uniting adopters and maintainers around Kubernetes, platform engineering, and cloud-native infrastructure.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;a href="https://www.sfscon.it/"&gt;SFSCON (South Tyrol Free Software Conference) 2026&lt;/a&gt;&lt;/strong&gt; (November 13–14, 2026) — Bolzano, Italy. One of Europe's longest-running Free Software conferences bringing together public-sector decision-makers and developers to advance digital sovereignty and open infrastructure.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;Open Source Reads and Links&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;[Article] &lt;a href="https://blog.mozilla.org/en/mozilla/mila-canada-open-source-ai-initiative/"&gt;Mila and Mozilla announce new initiative to build trustworthy open source AI for everyone, with Canadian government support&lt;/a&gt; — As a Canadienthusiast, seeing Mozilla and Mila partner with the Canadian government on an open source AI foundation layer immediately grabbed my attention. The crossover of open source and public-sector sovereign systems seems clear on the surface, yet real-world adoption reveals unexpected decisions. How do we make open source and open models useful to governments—is it in the open source infrastructure around them?&lt;/li&gt;
&lt;li&gt;[Article] &lt;a href="https://venturebeat.com/orchestration/googles-open-source-envharness-lets-ai-agents-train-against-environments-that-evolve-with-them"&gt;Google’s open source EnvHarness lets AI agents train against environments that evolve with them&lt;/a&gt; — As AI adoption matures, the need for solid infrastructure around AI is becoming more evident. It is nice to see Google Research’s work leading to open source tools like EnvHarness, which adapts training sandboxes to an agent’s failure modes—and raises the question of how our evaluation infrastructure must evolve alongside the agents themselves.&lt;/li&gt;
&lt;li&gt;[Blog] &lt;a href="https://iamulya.one/posts/decoder-forward-pass-dimensions/"&gt;Inside LLM Inference: Every Calculation from Text to Token using Gemma 4 12B&lt;/a&gt; — LLM inference often feels like an opaque black box, making Amulya Bhatia’s calculation-by-calculation trace of a token moving through Google’s open source Gemma 4 12B fascinating to ponder. Seeing how hybrid attention bounds memory under the hood prompts a broader question: how differently do we design AI systems when we actually understand the math happening inside the model?&lt;/li&gt;
&lt;li&gt;[Video] &lt;a href="https://www.youtube.com/watch?v=EHEN6Ce-9Ps"&gt;100% Local RAG Without Internet: Qdrant Edge and Google LiteRT&lt;/a&gt; — GDE Tarun R Jain pairs Google LiteRT and Gemma 4 with Qdrant Edge to run retrieval-augmented generation 100% offline. It prompts an interesting question for system design: how differently do teams experiment with their knowledge bases when local prototyping is free—and how much of what we default to the cloud could stay on the edge?&lt;/li&gt;
&lt;li&gt;[Post] &lt;a href="https://www.linkedin.com/feed/update/urn:li:activity:7490844827085918209/"&gt;UISurf: An Operator-Centric Multi-Agent Platform for Observable and Cross-Environment UI Automation&lt;/a&gt; — UISurf explores orchestrating UI agents across Web, Desktop, and Mobile boundaries using the open Agent2Agent (A2A) protocol. Beyond the tool itself, its lessons on sandboxing and human-in-the-loop oversight are worth pondering: when autonomous agents coordinate across environments, what level of observability do human operators actually need to stay in control?&lt;/li&gt;
&lt;li&gt;[Article] &lt;a href="https://frvr.com/blog/news/ps5-linux-lead-quits-as-open-source-projects-have-become-a-bunch-of-noobs-using-llms-that-they-dont-even-understand/"&gt;PS5 Linux lead quits as open-source projects have become “a bunch of noobs using LLMs” that “they don’t even understand”&lt;/a&gt; — When maintainers leave high-profile projects like PS5 Linux, it is important to look at the reasons. In the age of AI-assisted software development, unvetted LLM code and shifting bounty incentives are straining both maintainers and community trust. What can we learn from these events as we update open source and AI governance best practices to keep projects safe, secure, and viable?&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Which of these stories will you be chatting about at your next meetup or conference? Let us know! Share with us on our &lt;a href="https://x.com/GoogleOSS"&gt;@GoogleOSS&lt;/a&gt; X account or our &lt;a href="https://bsky.app/profile/opensource.google"&gt;@opensource.google&lt;/a&gt; Bluesky account.&lt;/p&gt;
</content><link href="http://www.blogger.com/feeds/8698702854482141883/posts/default/4177487320819994825" rel="edit" type="application/atom+xml"/><link href="http://www.blogger.com/feeds/8698702854482141883/posts/default/4177487320819994825" rel="self" type="application/atom+xml"/><link href="http://opensource.googleblog.com/2026/10/this-week-in-open-source-for-october-2-2026.html" rel="alternate" title="This Week in Open Source for October 2, 2026" type="text/html"/><author><name>Google Open Source</name><uri>http://www.blogger.com/profile/03718388509216889937</uri><email>noreply@blogger.com</email><gd:image height="16" rel="http://schemas.google.com/g/2005#thumbnail" src="https://img1.blogblog.com/img/b16-rounded.gif" width="16"/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" height="72" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEizuKHbBriafpnCVl8A7gazsybuVNKqwyYE1n5-RfAYhu6i5bN55iTw0LE_S0KLGWBJU9ERHgsnd9lZ3J94PhlE5hpZ5YIeBHH8PjS2yuRciaN7VgqLUISB9Ofpqst0n6tawyH6etvfFro4lqZv2X8EomVGJUTL8CSaHp0XyK3LxbJIhwi6ENKX620R4ME/s72-c/header1.png" width="72"/></entry><entry><id>tag:blogger.com,1999:blog-8698702854482141883.post-6465713310998310931</id><published>2026-10-01T11:30:00.000-07:00</published><updated>2026-10-01T11:30:00.123-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Apache Iceberg"/><category scheme="http://www.blogger.com/atom/ns#" term="Data Governance"/><category scheme="http://www.blogger.com/atom/ns#" term="Lakehouse"/><category scheme="http://www.blogger.com/atom/ns#" term="Open Source"/><title type="text">Standardizing fine-grained access control in Apache Iceberg's REST catalog</title><content type="html">&lt;p class="byline"&gt;by &lt;author&gt;Talat Uyarer&lt;/author&gt; &amp;amp; &lt;author&gt;Sung Yun&lt;/author&gt;, Google Cloud&lt;/p&gt;

&lt;meta name="twitter:image" content="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhEXQgyAEhULOnOFhWFIYXZW39BrvFMbqPdg3pFztuFLBgWZux_WlfcY1AlwLu1F9ZU2KwlxF0owAXEpL4rU3SK4oTMfzNguNn6KqhDAh0974imNQ4t1_6wPREMs-k1c3Xgjl9v6huAiNaDh9U_oZr9HZVOw3i35ADbf0tWGZsH-jlRw3wA3twdnGW4OxE/s1600/one-standard.png"&gt;
&lt;img class="metadata" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhEXQgyAEhULOnOFhWFIYXZW39BrvFMbqPdg3pFztuFLBgWZux_WlfcY1AlwLu1F9ZU2KwlxF0owAXEpL4rU3SK4oTMfzNguNn6KqhDAh0974imNQ4t1_6wPREMs-k1c3Xgjl9v6huAiNaDh9U_oZr9HZVOw3i35ADbf0tWGZsH-jlRw3wA3twdnGW4OxE/s1600/one-standard.png"&gt;

&lt;p&gt;The Apache Iceberg community recently merged a &lt;a href="https://github.com/apache/iceberg/pull/13879"&gt;change&lt;/a&gt; to the REST Catalog specification that gives lakehouses something they have long been missing: a standard, engine-neutral way to express column masking and row filtering. It is a small change, but it addresses a structural gap in how open table formats handle data governance. This post walks through the problem, the design, and why the details matter.&lt;/p&gt;

&lt;figure class="wide borderless"&gt;
  &lt;a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhEXQgyAEhULOnOFhWFIYXZW39BrvFMbqPdg3pFztuFLBgWZux_WlfcY1AlwLu1F9ZU2KwlxF0owAXEpL4rU3SK4oTMfzNguNn6KqhDAh0974imNQ4t1_6wPREMs-k1c3Xgjl9v6huAiNaDh9U_oZr9HZVOw3i35ADbf0tWGZsH-jlRw3wA3twdnGW4OxE/s1600/one-standard.png"&gt;&lt;img alt="Finally a single fine-grained access control standard for any engine" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhEXQgyAEhULOnOFhWFIYXZW39BrvFMbqPdg3pFztuFLBgWZux_WlfcY1AlwLu1F9ZU2KwlxF0owAXEpL4rU3SK4oTMfzNguNn6KqhDAh0974imNQ4t1_6wPREMs-k1c3Xgjl9v6huAiNaDh9U_oZr9HZVOw3i35ADbf0tWGZsH-jlRw3wA3twdnGW4OxE/s1600/one-standard.png" /&gt;&lt;/a&gt;
&lt;/figure&gt;

&lt;h2&gt;The problem: there is no server in the read path&lt;/h2&gt;

&lt;p&gt;In a traditional database, access control is straightforward because there is exactly one door. Every query passes through the database server, the server knows who is asking, and if policy says "this user only sees the last four digits of the card number," the server applies that policy before returning results. One process, one enforcement point.&lt;/p&gt;

&lt;p&gt;Apache Iceberg deliberately removed that door. The data is Parquet files in object storage, and any engine—such as BigQuery, Spark, Trino, Flink, PyIceberg, or DuckDB—can read those files directly. This design is what makes Iceberg fast and interoperable. But it also means that once an engine asks the catalog &lt;em&gt;"where is the &lt;code class="inline"&gt;payments&lt;/code&gt; table?"&lt;/em&gt; and receives the metadata pointer, it has full access to the files. The catalog can grant or deny access to the whole table, but it has had no vocabulary for &lt;em&gt;"access granted, but mask the email column"&lt;/em&gt; or &lt;em&gt;"access granted, but only on rows where &lt;code class="inline"&gt;region = 'US'&lt;/code&gt;."&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;Until now, Iceberg had no built-in answer to this. The REST spec did offer coarser instruments like credential vending, which controls storage access per table, and server-side scan planning, which lets a catalog withhold entire data files. But neither can express &lt;em&gt;"mask this column"&lt;/em&gt; or filter rows that are not already physically separated into their own files. So users who needed fine-grained access control had to step outside the open protocol entirely. They could adopt a vendor-provided client that understands its proprietary policy format, or route every read through a vendor's proxy service, giving up the direct-to-storage performance that motivated the use of Iceberg in the first place. It also quietly undermines Iceberg's core promise: the moment governance requires a specific vendor's client, the table is no longer open to any engine.&lt;/p&gt;

&lt;p&gt;The new &lt;code class="inline"&gt;read-restrictions&lt;/code&gt; field in the REST Catalog spec is the community standardizing that vocabulary.&lt;/p&gt;

&lt;h2&gt;The mechanism&lt;/h2&gt;

&lt;p&gt;When an engine calls &lt;code class="inline"&gt;loadTable&lt;/code&gt;, the response may now include an optional &lt;code class="inline"&gt;read-restrictions&lt;/code&gt; object:&lt;/p&gt;

&lt;figure class="wide borderless"&gt;
  &lt;a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiKdDrAf5R0h_5OPiUPLfcQICiwTrXGAqJ_wBSmkaUtEXpv1SlfXhtcf9rTNh1SMVIs7Ag9f9Jtdv7ocKI1AJOu7D7ap1niCZbytzdtcof7o3gyQOixu3Qxg3SnCuiBOt632_3cqkTvCpqd1jrYKDVbJpw3qZuwjtlvH7IUah7gLIsB3Fvii3NsNivEzUI/s1600/payload.png"&gt;&lt;img alt="Read restrictions payload showing required column projections and required row projections" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiKdDrAf5R0h_5OPiUPLfcQICiwTrXGAqJ_wBSmkaUtEXpv1SlfXhtcf9rTNh1SMVIs7Ag9f9Jtdv7ocKI1AJOu7D7ap1niCZbytzdtcof7o3gyQOixu3Qxg3SnCuiBOt632_3cqkTvCpqd1jrYKDVbJpw3qZuwjtlvH7IUah7gLIsB3Fvii3NsNivEzUI/s1600/payload.png" /&gt;&lt;/a&gt;
&lt;/figure&gt;

&lt;p&gt;Read restrictions are expressed in two fields:&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;&lt;strong&gt;&lt;code class="inline"&gt;required-row-filter&lt;/code&gt;&lt;/strong&gt;: a standard Iceberg predicate expression. Rows for which it evaluates to false must not appear in the result, and no information derived from them may be included.&lt;/li&gt;
  &lt;li&gt;&lt;strong&gt;&lt;code class="inline"&gt;required-column-projections&lt;/code&gt;&lt;/strong&gt;: a list of columns, identified by field ID, each with a transformation the reader must apply before returning values.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;One evaluation rule ties them together: &lt;strong&gt;the row filter is evaluated against the original, untransformed column values, and projections are applied to the rows that survive.&lt;/strong&gt; This ordering is what makes the two features composable. A policy can filter on &lt;code class="inline"&gt;region = 'US'&lt;/code&gt; and also mask &lt;code class="inline"&gt;region&lt;/code&gt; in the output, and the filter still works. If masking ran first, any policy that filtered on a masked column would silently break.&lt;/p&gt;

&lt;p&gt;Note what the catalog is doing here. It evaluates the access policy server-side—it knows the caller's identity from the authentication token—and returns only the &lt;em&gt;result&lt;/em&gt; of that evaluation. The policy itself, with its roles, tags, and governance model, never crosses the wire. The engine does not need to understand how any particular catalog models governance. It needs to understand nine actions and a predicate.&lt;/p&gt;

&lt;p&gt;The whole architecture fits in one sequence:&lt;/p&gt;

&lt;figure class="wide borderless"&gt;
  &lt;a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi0wMil9FpdXzE62JjByQlxedOTfGYhwv5KsZWdGGms_TQgTfQRH4Ex_RkW4OIl_f3CDTyv2o3m3QWH6izLHQo4JiTOu5KwX18WLChGPC8BotkicmU1XE759f_0YpJSaIzotsh67NavzTwIRzOojzq46bWRB2ZBoFrgleaMd6gJJ4yhdqaajd8Tla_bURc/s1600/read-restrictions.png"&gt;&lt;img alt="Sequence diagram illustrating the Lakehouse credential vending and reader-side fine-grained access control workflow between an End User, a Trusted Engine (BigQuery/Spark), the Lakehouse runtime catalog, and Google Cloud Storage (GCS)." src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi0wMil9FpdXzE62JjByQlxedOTfGYhwv5KsZWdGGms_TQgTfQRH4Ex_RkW4OIl_f3CDTyv2o3m3QWH6izLHQo4JiTOu5KwX18WLChGPC8BotkicmU1XE759f_0YpJSaIzotsh67NavzTwIRzOojzq46bWRB2ZBoFrgleaMd6gJJ4yhdqaajd8Tla_bURc/s1600/read-restrictions.png" /&gt;&lt;/a&gt;
  &lt;figcaption&gt;&lt;em&gt;The catalog stays the policy decision point; the trusted engine becomes the policy enforcement point; the end user never holds storage credentials. Sections below unpack the three load-bearing details in this picture: the enforcement ordering, the fail-closed branch, and the trust boundary.&lt;/em&gt;&lt;/figcaption&gt;
&lt;/figure&gt;

&lt;h2&gt;The nine masking actions&lt;/h2&gt;

&lt;p&gt;The specification defines a closed set of nine masking actions, each with an exact, per-type definition. The goal is cross-engine consistency: Spark, Trino, and PyIceberg must produce &lt;em&gt;identical&lt;/em&gt; output for any given masking action. These actions are being implemented in &lt;code class="inline"&gt;iceberg-core&lt;/code&gt;, providing engines with spec-compliant transformations out of the box rather than requiring them to reimplement byte-level logic independently.&lt;/p&gt;

&lt;p&gt;Below, the actions are grouped by the analytical utility of the resulting masked data:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Preserve the shape, hide the value&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;&lt;code class="inline"&gt;mask-alphanum&lt;/code&gt;—digits become &lt;code class="inline"&gt;n&lt;/code&gt;, other characters become &lt;code class="inline"&gt;x&lt;/code&gt;, with a small allowlist of punctuation (&lt;code class="inline"&gt;( ) , . - @&lt;/code&gt;) preserved. &lt;code class="inline"&gt;iceberg16112018@apache.org&lt;/code&gt; becomes &lt;code class="inline"&gt;xxxxxxxnnnnnnnn@xxxxxx.xxx&lt;/code&gt;—recognizably an email address, but not whose.&lt;/li&gt;
  &lt;li&gt;&lt;code class="inline"&gt;show-first-4&lt;/code&gt; / &lt;code class="inline"&gt;show-last-4&lt;/code&gt;—preserve four code points, and apply &lt;code class="inline"&gt;mask-alphanum&lt;/code&gt; to the rest. &lt;code class="inline"&gt;4111-1111-1111-4444&lt;/code&gt; becomes &lt;code class="inline"&gt;nnnn-nnnn-nnnn-4444&lt;/code&gt;, the familiar customer-support view of a card number.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Hide everything&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;&lt;code class="inline"&gt;replace-with-null&lt;/code&gt;—the value becomes NULL. Only valid for optional fields; a server must not return it for a required field, and a reader that receives one must fail the query.&lt;/li&gt;
  &lt;li&gt;&lt;code class="inline"&gt;mask-to-fixed-value&lt;/code&gt;—the value becomes a type-specific constant (&lt;code class="inline"&gt;0&lt;/code&gt;, &lt;code class="inline"&gt;"XXXXXXXX"&lt;/code&gt;, the epoch, an all-zero UUID, an empty list, and so on, each spelled out in the spec). Uniquely among the actions, this one also replaces NULL inputs—even the null-or-not bit is hidden.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Reduce precision&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;&lt;code class="inline"&gt;truncate-to-year&lt;/code&gt; / &lt;code class="inline"&gt;truncate-to-month&lt;/code&gt;—&lt;code class="inline"&gt;2024-07-15&lt;/code&gt; becomes &lt;code class="inline"&gt;2024-01-01&lt;/code&gt; or &lt;code class="inline"&gt;2024-07-01&lt;/code&gt;. Cohort analytics keeps working; identifying individuals gets harder.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Allow joins, hide values&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;&lt;code class="inline"&gt;sha-256-global&lt;/code&gt;—deterministic SHA-256, with exact byte-encoding rules per input type. The same input always produces the same output, everywhere, so &lt;code class="inline"&gt;GROUP BY user_id&lt;/code&gt; and joins across tables on a hashed key still work. The cost of that determinism is that hashed values can be tested against precomputed guesses—this is pseudonymization, not encryption.&lt;/li&gt;
  &lt;li&gt;&lt;code class="inline"&gt;sha-256-query-local&lt;/code&gt;—the same hash, salted with a fresh, cryptographically random salt (at least 16 bytes) per query. Values remain consistent within a single query, so self-joins and aggregation work, but cannot be correlated across queries, and precomputed-guess attacks no longer apply.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;This last pair is a nice piece of design: the tradeoff between linkability and privacy, expressed as two enum values that a policy author chooses between per column.&lt;/p&gt;

&lt;p&gt;Every action produces a value of the same type as its input—masked strings are strings, truncated dates are dates—so restrictions never change the schema an engine plans against. Queries do not need rewriting; values simply arrive transformed.&lt;/p&gt;

&lt;h2&gt;Fail-closed by design&lt;/h2&gt;

&lt;p&gt;The most consequential sentence in the specification is this one:&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;If a trusted reader that supports read-restrictions cannot apply any returned restriction, it must fail the query and must not silently return raw, partial, or empty results.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Consider the failure modes. A catalog sends an action added in a future spec version that the engine does not recognize. Or an expression type it cannot evaluate. The convenient behavior would be to skip what it does not understand and return the data. The spec rules this out: unrecognized action, fail; unparseable filter, fail; duplicate field ID in the projections, fail. Every ambiguity resolves to "no data" rather than "raw data." This is the right default for an access control mechanism, and it is also the one implementers would be tempted to soften—which is exactly why it is normative in the spec rather than left to judgment. It is also what allows the action vocabulary to grow in future versions without older engines becoming silent leak vectors.&lt;/p&gt;

&lt;p&gt;A few prohibitions in the spec reward a closer look, because each one closes a subtle correctness hole:&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;&lt;strong&gt;No projections on map keys.&lt;/strong&gt; Masking a map's keys can collapse two keys into one, or produce null keys, which engines silently coalesce or reject—data corruption presented as privacy. The spec bans it outright.&lt;/li&gt;
  &lt;li&gt;&lt;strong&gt;No projection on both a nested type and a field inside it.&lt;/strong&gt; Masking a struct and also a field within that struct has no well-defined order of operations, so the spec refuses to define one: servers must not send it, and readers must reject it.&lt;/li&gt;
  &lt;li&gt;&lt;strong&gt;Everything references field IDs, never column names.&lt;/strong&gt; This is standard Iceberg discipline: if &lt;code class="inline"&gt;ssn&lt;/code&gt; is renamed to &lt;code class="inline"&gt;national_id&lt;/code&gt;, the policy remains bound to the same physical column. A name-based policy would silently detach on rename—the worst possible failure mode for access control.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;The trust model, stated plainly&lt;/h2&gt;

&lt;p&gt;All of this is enforced by the reader. The catalog hands the engine the file locations along with the restrictions, and a client that chooses to ignore the restrictions can read the raw files. So what is this actually protecting?&lt;/p&gt;

&lt;p&gt;The specification is explicit: this mechanism assumes a trust relationship between the catalog and the engine, and how that trust is established is deliberately out of scope. The intended deployment is one where a platform team's engines—the shared Spark and Trino clusters—are trusted enforcement points that hold storage access (for example, through credential vending), while end users only ever talk to those engines and never hold storage credentials themselves. The trusted engine becomes the enforcement point, playing the role the database server played in the traditional architecture. The difference is that its behavior is now defined by a common, open protocol rather than by N proprietary integrations.&lt;/p&gt;

&lt;p&gt;In other words, read restrictions do not protect data &lt;em&gt;from&lt;/em&gt; the engine; they let the catalog direct a trusted engine to protect data from the engine's users. For genuinely untrusted readers, the coarse-grained model still applies: they are restricted to vended credentials where the storage access granted to the user aligns with the data permission of the user.&lt;/p&gt;

&lt;p&gt;One operational subtlety deserves attention: restrictions are per-response and per-identity. The same &lt;code class="inline"&gt;loadTable&lt;/code&gt; call made by a different principal—or by the same principal later—may return different restrictions, and the restrictions attach to every read performed with that response, including subsequent &lt;code class="inline"&gt;planTableScan&lt;/code&gt; and &lt;code class="inline"&gt;fetchScanTasks&lt;/code&gt; calls. The spec therefore requires that the response not be cached outside its authentication scope. If your platform caches &lt;code class="inline"&gt;loadTableResponse&lt;/code&gt;, that cache is now security-sensitive and worth an audit.&lt;/p&gt;

&lt;h2&gt;What is still missing&lt;/h2&gt;

&lt;p&gt;Read restrictions are a foundation, not the finished building. It is worth being honest about the gaps between this specification and complete fine-grained access control:&lt;/p&gt;

&lt;ol&gt;
  &lt;li&gt;&lt;strong&gt;The action vocabulary is fixed, because Iceberg Expressions are not implemented yet.&lt;/strong&gt; Nine actions cover the common masking policies, but they are a deliberately closed set: a policy like "apply this custom redaction function" cannot be expressed, and the row filter is limited to predicates—comparisons that produce true or false. The path to generalizing this already exists on paper: the &lt;a href="https://github.com/apache/iceberg/blob/587f7984ff811b1240b0ccf8e34e73e1a52f94d0/format/expressions-spec.md"&gt;Iceberg Expressions specification&lt;/a&gt;, proposed by Ryan Blue and adopted in mid-2026, defines a portable structure for value expressions—constants, field references, and calls to well-defined functions or &lt;a href="https://iceberg.apache.org/udf-spec/"&gt;SQL UDFs&lt;/a&gt;. Once engines can evaluate those expressions, a catalog could return arbitrary transformations instead of choosing from an enum. Today no engine implements general expression evaluation, which is why the initial design confines itself to a small vocabulary that can be specified bit-for-bit.&lt;/li&gt;
  &lt;li&gt;&lt;strong&gt;There is no policy definition—deliberately.&lt;/strong&gt; The specification standardizes the &lt;em&gt;result&lt;/em&gt; of policy evaluation, never the policy itself. How an organization expresses "analysts see masked PII, auditors see everything"—the roles, tags, rules, and administrative APIs—remains entirely the catalog vendor's domain, and the assumption is that it stays there. Only the consequences of a policy are portable across engines; the policy definition is not. Whether communities eventually want a portable policy format is an open question the spec does not attempt to answer.&lt;/li&gt;
  &lt;li&gt;&lt;strong&gt;Trusted clients are asserted, not proven.&lt;/strong&gt; As the trust-model section noted, how a catalog establishes that a caller is a trusted, enforcing engine is out of scope. In practice that trust is deployment configuration—service identities, network boundaries, and which principals receive vended credentials. There is no attestation mechanism in the protocol by which an engine proves it enforces restrictions; the trusted-client mechanism is an assumption the platform operator must make true.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;None of these gaps undermines the design—each is a deliberate scoping decision that kept the proposal small enough to reach consensus—but they define the roadmap for what "complete" fine-grained access control in the open lakehouse still requires.&lt;/p&gt;

&lt;h2&gt;Why this matters&lt;/h2&gt;

&lt;p&gt;The specification change itself does not ship enforcement; that work in the engines begins now, starting with the default actions. But the shape of the design is right in three ways:&lt;/p&gt;

&lt;ol&gt;
  &lt;li&gt;&lt;strong&gt;It picks the honest enforcement point.&lt;/strong&gt; In an architecture with no server in the read path, the trusted engine is the only place enforcement can live without giving up direct storage reads. The spec accepts that constraint explicitly rather than obscuring it.&lt;/li&gt;
  &lt;li&gt;&lt;strong&gt;It standardizes the narrow waist.&lt;/strong&gt; Catalogs keep their own rich policy engines—roles, tags, and attribute-based rules. Engines implement nine actions and a predicate evaluator, once. N×M becomes N+M.&lt;/li&gt;
  &lt;li&gt;&lt;strong&gt;It is fail-closed everywhere&lt;/strong&gt;, which is what makes the vocabulary safely extensible.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;The pattern—the catalog evaluates policy against the caller's identity and returns a small, closed vocabulary of obligations that the client must enforce or fail—is a useful template, and it would not be surprising to see more of the governance surface expressed this way over time.&lt;/p&gt;

&lt;p&gt;The proposal was approved on the Apache Iceberg dev list with eight binding +1 votes and no objections. This is a strong signal of consensus across the many companies and open source communities that participate in the project. Consistent, engine-independent enforcement of fine-grained policies is a property the ecosystem has long wanted; it now has a specification for it, and the interesting work of implementing it in engines and catalogs is underway. If you work on either, the &lt;a href="https://lists.apache.org/list.html?dev@iceberg.apache.org"&gt;dev list&lt;/a&gt; is the place to get involved.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;The full schema is available in &lt;a href="https://github.com/apache/iceberg/blob/main/open-api/rest-catalog-open-api.yaml"&gt;&lt;code class="inline"&gt;rest-catalog-open-api.yaml&lt;/code&gt;&lt;/a&gt; under &lt;code class="inline"&gt;ReadRestrictions&lt;/code&gt;. View the full &lt;a href="https://lists.apache.org/thread/0zloqhp8wkgyn04yg69j71cwcg5n7g74"&gt;vote thread&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;
</content><link href="http://www.blogger.com/feeds/8698702854482141883/posts/default/6465713310998310931" rel="edit" type="application/atom+xml"/><link href="http://www.blogger.com/feeds/8698702854482141883/posts/default/6465713310998310931" rel="self" type="application/atom+xml"/><link href="http://opensource.googleblog.com/2026/10/standardizing-fine-grained-access-control-in-apache-icebergs-rest-catalog.html" rel="alternate" title="Standardizing fine-grained access control in Apache Iceberg's REST catalog" type="text/html"/><author><name>Google Open Source</name><uri>http://www.blogger.com/profile/03718388509216889937</uri><email>noreply@blogger.com</email><gd:image height="16" rel="http://schemas.google.com/g/2005#thumbnail" src="https://img1.blogblog.com/img/b16-rounded.gif" width="16"/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" height="72" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhEXQgyAEhULOnOFhWFIYXZW39BrvFMbqPdg3pFztuFLBgWZux_WlfcY1AlwLu1F9ZU2KwlxF0owAXEpL4rU3SK4oTMfzNguNn6KqhDAh0974imNQ4t1_6wPREMs-k1c3Xgjl9v6huAiNaDh9U_oZr9HZVOw3i35ADbf0tWGZsH-jlRw3wA3twdnGW4OxE/s72-c/one-standard.png" width="72"/></entry><entry><id>tag:blogger.com,1999:blog-8698702854482141883.post-4269031649793023216</id><published>2026-09-30T11:30:00.000-07:00</published><updated>2026-09-30T11:30:00.181-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Apache Iceberg"/><category scheme="http://www.blogger.com/atom/ns#" term="BigLake"/><category scheme="http://www.blogger.com/atom/ns#" term="Google Cloud"/><category scheme="http://www.blogger.com/atom/ns#" term="Lakehouse"/><category scheme="http://www.blogger.com/atom/ns#" term="Open Source"/><category scheme="http://www.blogger.com/atom/ns#" term="PyIceberg"/><title type="text">New public datasets available in Google Cloud Lakehouse</title><content type="html">&lt;p class="byline"&gt;by &lt;author&gt;Daniel Rodrigues&lt;/author&gt; &amp;amp; &lt;author&gt;Alex Stephen&lt;/author&gt;, Google Cloud&lt;/p&gt;

&lt;meta name="twitter:image" content="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg1RvzpVVMi_f0ZNhvVXJg1gnoTyaNj52capD3ShJ-_2WFg5pcNhCsr-3o85ThyNY7RPfD5-OhI8epWZMZFFUqWPh4t4iyic-KJXOO_o0q0CbwKXhOmdszNQQ9iuaRabheTdlX-gefde7D4QwBVROQT57eYn7MP_ELCS7_XeyaI4fpX5tZ63_RYQyqrvz0/s1600/image_1789582157097852.png"&gt;
&lt;img class="metadata" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg1RvzpVVMi_f0ZNhvVXJg1gnoTyaNj52capD3ShJ-_2WFg5pcNhCsr-3o85ThyNY7RPfD5-OhI8epWZMZFFUqWPh4t4iyic-KJXOO_o0q0CbwKXhOmdszNQQ9iuaRabheTdlX-gefde7D4QwBVROQT57eYn7MP_ELCS7_XeyaI4fpX5tZ63_RYQyqrvz0/s1600/image_1789582157097852.png"&gt;
&lt;a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg1RvzpVVMi_f0ZNhvVXJg1gnoTyaNj52capD3ShJ-_2WFg5pcNhCsr-3o85ThyNY7RPfD5-OhI8epWZMZFFUqWPh4t4iyic-KJXOO_o0q0CbwKXhOmdszNQQ9iuaRabheTdlX-gefde7D4QwBVROQT57eYn7MP_ELCS7_XeyaI4fpX5tZ63_RYQyqrvz0/s1600/image_1789582157097852.png" class="header-image"&gt;&lt;img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg1RvzpVVMi_f0ZNhvVXJg1gnoTyaNj52capD3ShJ-_2WFg5pcNhCsr-3o85ThyNY7RPfD5-OhI8epWZMZFFUqWPh4t4iyic-KJXOO_o0q0CbwKXhOmdszNQQ9iuaRabheTdlX-gefde7D4QwBVROQT57eYn7MP_ELCS7_XeyaI4fpX5tZ63_RYQyqrvz0/s1600/image_1789582157097852.png" alt="An image of a castle with an ice block coming out of the front gate"/&gt;&lt;/a&gt;

&lt;p&gt;Did you know the Google Chrome Wikipedia page received over 36 million page views in 2025, or that Chromium logged over 3,700 commits in April 2010? If you have needed large, real-world datasets to benchmark query engines on Apache Iceberg, Google Cloud’s Lakehouse team is excited to announce the release of new public datasets in Google Cloud Lakehouse to help you explore and analyze open data at scale.&lt;/p&gt;

&lt;p&gt;Google Cloud’s Lakehouse provides a high-performance storage catalog using Apache Iceberg as its open table format. By decoupling storage from compute, it enables you to use your preferred query engines—such as BigQuery, Apache Spark, or Trino—while managing data in an open format to avoid vendor lock-in.&lt;/p&gt;

&lt;p&gt;These new public datasets are designed to help you explore the Apache Iceberg ecosystem and begin working immediately with real-world data. We are providing access to some of the most popular BigQuery public datasets, including Wikipedia pageviews and GitHub commit histories. Let’s dive into how you can start querying them.&lt;/p&gt;

&lt;h2&gt;Prerequisites&lt;/h2&gt;
&lt;ul&gt;
  &lt;li&gt;A Google Cloud project (for authentication).&lt;/li&gt;
  &lt;li&gt;Standard Google Application Default Credentials (ADC) configured in your environment.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;Explore metadata with PyIceberg&lt;/h2&gt;
&lt;p&gt;To explore table metadata using PyIceberg, install the required Python packages in a virtual environment:&lt;/p&gt;

&lt;pre&gt;&lt;code class="codebox bash"&gt;sudo apt-get install python3-venv
python3 -m venv public_data_lakehouse
source public_data_lakehouse/bin/activate
pip install google-auth
pip install pyiceberg
pip install pyarrow&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;After installing the required packages, you can inspect a table’s schema using the Python script below. Here is how to inspect the table containing Wikipedia page view data from 2016:&lt;/p&gt;

&lt;pre&gt;&lt;code class="codebox python"&gt;from pyiceberg import catalog as pyiceberg_catalog

PROJECT = "&amp;lt;YOUR_PROJECT_ID&amp;gt;"
NAMESPACE = "wikipedia"
TABLE = "pageviews_2016"

def load_catalog() -&amp;gt; pyiceberg_catalog.Catalog:
  properties = {
      "type": "rest",
      "uri": "https://biglake.googleapis.com/iceberg/v1/restcatalog",
      "warehouse": "gs://lakehouse-public-data",
      "auth": {"type": "google"},
      "header.X-Iceberg-Access-Delegation": "vended-credentials",
      "header.x-goog-user-project": PROJECT,
  }
  return pyiceberg_catalog.load_catalog(PROJECT, **properties)

def main() -&amp;gt; None:
  catalog = load_catalog()
  table = catalog.load_table((NAMESPACE, TABLE))
  print(f"Schema for `{NAMESPACE}.{TABLE}`:", table.schema())

if __name__ == "__main__":
  main()&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;&lt;em&gt;Note: Replace &lt;code class="inline python"&gt;&amp;lt;YOUR_PROJECT_ID&amp;gt;&lt;/code&gt; with your actual Google Cloud Project ID. This is required for the REST catalog to authenticate your quota usage, even for free public access.&lt;/em&gt;&lt;/p&gt;

&lt;h2&gt;PySpark and Managed Service for Apache Spark&lt;/h2&gt;
&lt;p&gt;Now that we have explored the table’s schema, we can use a managed, serverless Spark notebook to query the tables. This provides the speed and flexibility of Apache Spark without creating or managing a cluster. You can run this script in Google Cloud's serverless Managed Service for Apache Spark (formerly Dataproc):&lt;/p&gt;

&lt;pre&gt;&lt;code class="codebox python"&gt;from google.cloud.dataproc_v1 import Session
from google.cloud.dataproc_spark_connect import DataprocSparkSession

PROJECT_ID = "&amp;lt;YOUR_PROJECT_ID&amp;gt;"
spark_catalog = "lakehouse-public-data"

session = Session()
session.runtime_config.properties = {
  "spark.sql.extensions": "org.apache.iceberg.spark.extensions.IcebergSparkSessionExtensions",
  f"spark.sql.catalog.{spark_catalog}": "org.apache.iceberg.spark.SparkCatalog",
  f"spark.sql.catalog.{spark_catalog}.type": "rest",
  f"spark.sql.catalog.{spark_catalog}.uri": "https://biglake.googleapis.com/iceberg/v1/restcatalog",
  f"spark.sql.catalog.{spark_catalog}.rest.auth.type": "org.apache.iceberg.gcp.auth.GoogleAuthManager",
  f"spark.sql.catalog.{spark_catalog}.io-impl": "org.apache.iceberg.gcp.gcs.GCSFileIO",
  f"spark.sql.catalog.{spark_catalog}.header.X-Iceberg-Access-Delegation": "vended-credentials",
  f"spark.sql.catalog.{spark_catalog}.warehouse": "gs://lakehouse-public-data",
  f"spark.sql.catalog.{spark_catalog}.header.x-goog-user-project": PROJECT_ID,
}

spark = (
   DataprocSparkSession.builder
     .appName("Lakehouse Public Data Demo")
     .dataprocSessionConfig(session)
     .getOrCreate()
)
spark.conf.set("spark.sql.defaultCatalog", spark_catalog)&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;With the session active, you can query monthly Wikipedia view counts for BigQuery-related articles by executing the following code in a new cell:&lt;/p&gt;

&lt;pre&gt;&lt;code class="codebox python"&gt;df1 = spark.sql("""
SELECT
  title,
  wiki,
  SUM(views) AS total_views
FROM wikipedia.pageviews_2026
WHERE datehour &amp;gt;= TIMESTAMP '2026-01-01 00:00:00'
  AND datehour &amp;lt;  TIMESTAMP '2026-02-01 00:00:00'
  AND LOWER(title) LIKE '%bigquery%'
GROUP BY title, wiki
ORDER BY total_views DESC
LIMIT 20
""")
df1.show(10)&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;Or, you can retrieve recent GitHub commits referencing Iceberg using the following snippet:&lt;/p&gt;

&lt;pre&gt;&lt;code class="codebox python"&gt;df2 = spark.sql("""
SELECT
  commits.commit,
  commits.subject,
  commits.message,
  commits.author.name AS author_name,
  timestamp_seconds(commits.committer.date.seconds) AS commit_time,
  repo_name
FROM github_repos.commits AS commits
WHERE LOWER(commits.subject) LIKE '%iceberg%'
   OR LOWER(commits.message) LIKE '%iceberg%'
ORDER BY commit_time DESC
LIMIT 50
""")
df2.show(10)&lt;/code&gt;&lt;/pre&gt;

&lt;h2&gt;Start building today&lt;/h2&gt;
&lt;p&gt;These datasets were imported from their BigQuery counterparts and transformed using Apache Iceberg as the table format and Parquet as the data file format. Our goal is to lower the entry barrier so you can learn and explore Apache Iceberg with your favorite query engine without managing any infrastructure. To get started with building an open, managed, and high-performance Iceberg lakehouse, visit the &lt;a href="https://cloud.google.com/products/lakehouse"&gt;Google Cloud Lakehouse page&lt;/a&gt;.&lt;/p&gt;
</content><link href="http://www.blogger.com/feeds/8698702854482141883/posts/default/4269031649793023216" rel="edit" type="application/atom+xml"/><link href="http://www.blogger.com/feeds/8698702854482141883/posts/default/4269031649793023216" rel="self" type="application/atom+xml"/><link href="http://opensource.googleblog.com/2026/09/new-public-datasets-available-in-google-cloud-lakehouse.html" rel="alternate" title="New public datasets available in Google Cloud Lakehouse" type="text/html"/><author><name>Google Open Source</name><uri>http://www.blogger.com/profile/03718388509216889937</uri><email>noreply@blogger.com</email><gd:image height="16" rel="http://schemas.google.com/g/2005#thumbnail" src="https://img1.blogblog.com/img/b16-rounded.gif" width="16"/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" height="72" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg1RvzpVVMi_f0ZNhvVXJg1gnoTyaNj52capD3ShJ-_2WFg5pcNhCsr-3o85ThyNY7RPfD5-OhI8epWZMZFFUqWPh4t4iyic-KJXOO_o0q0CbwKXhOmdszNQQ9iuaRabheTdlX-gefde7D4QwBVROQT57eYn7MP_ELCS7_XeyaI4fpX5tZ63_RYQyqrvz0/s72-c/image_1789582157097852.png" width="72"/></entry><entry><id>tag:blogger.com,1999:blog-8698702854482141883.post-1076768601866535984</id><published>2026-09-24T11:30:00.000-07:00</published><updated>2026-09-24T11:30:00.190-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="AI"/><category scheme="http://www.blogger.com/atom/ns#" term="events"/><category scheme="http://www.blogger.com/atom/ns#" term="Governance"/><category scheme="http://www.blogger.com/atom/ns#" term="news"/><category scheme="http://www.blogger.com/atom/ns#" term="Open Source"/><category scheme="http://www.blogger.com/atom/ns#" term="Sustainability"/><category scheme="http://www.blogger.com/atom/ns#" term="This Week in Open Source"/><category scheme="http://www.blogger.com/atom/ns#" term="twios"/><title type="text">This Week in Open Source for September 24, 2026</title><content type="html">&lt;meta name="twitter:image" content="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEizuKHbBriafpnCVl8A7gazsybuVNKqwyYE1n5-RfAYhu6i5bN55iTw0LE_S0KLGWBJU9ERHgsnd9lZ3J94PhlE5hpZ5YIeBHH8PjS2yuRciaN7VgqLUISB9Ofpqst0n6tawyH6etvfFro4lqZv2X8EomVGJUTL8CSaHp0XyK3LxbJIhwi6ENKX620R4ME/s1600/header1.png"&gt;
&lt;img class="metadata" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEizuKHbBriafpnCVl8A7gazsybuVNKqwyYE1n5-RfAYhu6i5bN55iTw0LE_S0KLGWBJU9ERHgsnd9lZ3J94PhlE5hpZ5YIeBHH8PjS2yuRciaN7VgqLUISB9Ofpqst0n6tawyH6etvfFro4lqZv2X8EomVGJUTL8CSaHp0XyK3LxbJIhwi6ENKX620R4ME/s1600/header1.png" alt="This Week in Open Source banner graphic"&gt;
&lt;a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEizuKHbBriafpnCVl8A7gazsybuVNKqwyYE1n5-RfAYhu6i5bN55iTw0LE_S0KLGWBJU9ERHgsnd9lZ3J94PhlE5hpZ5YIeBHH8PjS2yuRciaN7VgqLUISB9Ofpqst0n6tawyH6etvfFro4lqZv2X8EomVGJUTL8CSaHp0XyK3LxbJIhwi6ENKX620R4ME/s1600/header1.png" class="header-image"&gt;&lt;img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEizuKHbBriafpnCVl8A7gazsybuVNKqwyYE1n5-RfAYhu6i5bN55iTw0LE_S0KLGWBJU9ERHgsnd9lZ3J94PhlE5hpZ5YIeBHH8PjS2yuRciaN7VgqLUISB9Ofpqst0n6tawyH6etvfFro4lqZv2X8EomVGJUTL8CSaHp0XyK3LxbJIhwi6ENKX620R4ME/s1600/header1.png" alt="This Week in Open Source banner graphic"/&gt;&lt;/a&gt;

&lt;p class="byline"&gt;by &lt;author&gt;Daryl Ducharme&lt;/author&gt;, Open Source Programs Office&lt;/p&gt;

&lt;h2&gt;This Week in Open Source for September 24, 2026&lt;/h2&gt;
&lt;p&gt;&lt;em&gt;A look around the world of open source&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;Open source underpins an $8.8 trillion global economy, yet sustaining it requires moving beyond voluntary charity and philosophical appeals. This week’s reads examine how the ecosystem is adapting to modern economic and AI pressures—from proposing package-registry royalties and quantifying 2–5x net value for regulated utility grids, to turning autonomous AI security incidents into hardened supply-chain defenses that empower open-science breakthroughs like NASA and IBM’s Lunar Foundation Model.&lt;/p&gt;

&lt;h2&gt;Upcoming Events&lt;/h2&gt;
&lt;h3&gt;&#128467;️ October 2026&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;&lt;a href="https://events.linuxfoundation.org/mcp-dev-summit-toronto/"&gt;MCP Dev Summit Toronto&lt;/a&gt;&lt;/strong&gt; (October 5–6, 2026) — Toronto, Ontario, Canada. Dedicated Linux Foundation developer summit advancing the Model Context Protocol (MCP) and open agentic interoperability standards. Join Google OSPO's Daryl Ducharme on October 6 for &lt;em&gt;"Tag-Team Transmission: Navigating A2A and MCP for Optimum Orchestration,"&lt;/em&gt; examining how the Agent2Agent (A2A) protocol and MCP interoperate across multi-agent architectures.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;a href="https://events.linuxfoundation.org/open-source-summit-europe/"&gt;Open Source Summit Europe&lt;/a&gt;&lt;/strong&gt; (October 7–9, 2026) — Prague, Czechia. The premier Linux Foundation gathering in Europe celebrating the 35th anniversary of Linux and connecting developers, technologists, and community leaders across open AI, embedded systems, and digital trust.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;a href="https://communityovercode.org/"&gt;Community Over Code&lt;/a&gt;&lt;/strong&gt; (October 11–14, 2026) — Glasgow, Scotland. The flagship Apache Software Foundation conference bringing together project maintainers, committers, and users to collaborate on open governance, data architecture, and community-led software development.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;a href="https://allthingsopen.org/"&gt;All Things Open 2026&lt;/a&gt;&lt;/strong&gt; (October 19–20, 2026) — Raleigh, North Carolina, USA. One of the largest community-focused open source conferences on the U.S. East Coast exploring open source software, AI engineering, DevSecOps, and maintainer sustainability.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;a href="https://githubuniverse.com/"&gt;GitHub Universe 2026&lt;/a&gt;&lt;/strong&gt; (October 28–29, 2026) — San Francisco, California, USA &amp;amp; Virtual. Annual global developer gathering highlighting open source workflows, collaborative security, and AI-assisted software engineering.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;&#128467;️ November 2026&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;&lt;a href="https://events.linuxfoundation.org/open-source-finance-forum-new-york/"&gt;Open Source in Finance Forum (OSFF) New York&lt;/a&gt;&lt;/strong&gt; (November 4–5, 2026) — New York, New York, USA. Dedicated industry conference examining open source compliance, supply-chain security, and collaborative innovation across regulated financial institutions.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;a href="https://events.linuxfoundation.org/kubecon-cloudnativecon-north-america/"&gt;KubeCon + CloudNativeCon North America 2026&lt;/a&gt;&lt;/strong&gt; (November 9–12, 2026) — Salt Lake City, Utah, USA. The Cloud Native Computing Foundation's flagship conference uniting adopters and maintainers around Kubernetes, platform engineering, and modern cloud infrastructure.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;a href="https://www.sfscon.it/"&gt;SFSCON (South Tyrol Free Software Conference) 2026&lt;/a&gt;&lt;/strong&gt; (November 13–14, 2026) — Bolzano, Italy. One of Europe's longest-running Free Software conferences bringing together public-sector decision-makers and developers to advance digital sovereignty and open infrastructure.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;Open Source Reads and Links&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;[Blog] &lt;a href="https://seldo.com/posts/nobody-pays-for-open-source-we-can-force-them-to/"&gt;Nobody pays for open source. We can force them to.&lt;/a&gt; — Companies already spend over $1 billion a year on open source, but that money goes to supply-chain mirror and security vendors rather than the maintainers writing the code. Laurie Voss breaks down why voluntary charity and license changes always fail, arguing that commercial package registries and mirror vendors should pay automatic royalties down the dependency tree to long-tail maintainers.&lt;/li&gt;
&lt;li&gt;[Article] &lt;a href="https://www.eurekalert.org/news-releases/1144074"&gt;AI Is reshaping open source software and straining the systems that sustain it&lt;/a&gt; — As conversations grow around moderating the speed of AI development across the industry, it is critical to watch the friction points where AI and open source overlap—particularly as an influx of AI-generated code and vulnerability discovery strains maintainers of an $8.8 trillion ecosystem. Funding remains front and center, requiring not just raw capital but continuous monitoring for effectiveness in sustaining the human governance, consensus-building, and non-coding infrastructure that AI cannot replace.&lt;/li&gt;
&lt;li&gt;[Report] &lt;a href="https://www.linuxfoundation.org/press/lf-energy-research-finds-open-source-software-can-deliver-2-5x-greater-net-value-for-grid-operators"&gt;LF Energy Research Finds Open Source Software Can Deliver 2-5x Greater Net Value for Grid Operators&lt;/a&gt; — While open source software and public utilities seem like natural philosophical allies as public goods, philosophical appeals routinely fail in regulated infrastructure sectors where operators are bound by strict reliability mandates and ratepayer accountability. This new LF Energy report demonstrates how to bridge that gap: by translating collaborative "make together" governance into an auditable benefit-cost framework showing two to five times greater net value over proprietary procurement.&lt;/li&gt;
&lt;li&gt;[Article] &lt;a href="https://time.com/article/2026/09/09/ai-is-at-a-turning-point/"&gt;AI Is at a Turning Point&lt;/a&gt; — High-profile incidents of autonomous AI agents breaching Hugging Face or social-engineering open source maintainers inevitably dominate headlines and amplify purely negative narratives around AI. However, treating these security failures as concrete post-mortems—exposing how standard reinforcement learning incentivizes deceptive subgoals—is exactly what allows open source communities to establish hardened supply-chain defenses and safely advance high-impact, positive AI use cases.&lt;/li&gt;
&lt;li&gt;[Article] &lt;a href="https://newsroom.ibm.com/2026-09-10-ibm-and-nasa-release-open-source-ai-model-to-support-lunar-exploration"&gt;IBM and NASA Release Open-Source AI Model to Support Lunar Exploration&lt;/a&gt; — Seeing open source, AI, open data, and space science converge is genuinely inspiring, especially when it demonstrates that open scientific models are only as useful as the open datasets beneath them. While NASA and JAXA planetary archives have long been public, IBM and NASA's release of the Lunar Foundation Model alongside the first harmonized, machine-learning-ready lunar dataset (unifying 30+ multi-instrument layers) proves that transforming raw open data into shared, interoperable infrastructure is what unlocks domain discovery.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Which of these stories will you be chatting about at your next meetup or conference? Let us know! Share with us on our &lt;a href="https://x.com/GoogleOSS"&gt;@GoogleOSS&lt;/a&gt; X account or our &lt;a href="https://bsky.app/profile/opensource.google"&gt;@opensource.google&lt;/a&gt; Bluesky account.&lt;/p&gt;</content><link href="http://www.blogger.com/feeds/8698702854482141883/posts/default/1076768601866535984" rel="edit" type="application/atom+xml"/><link href="http://www.blogger.com/feeds/8698702854482141883/posts/default/1076768601866535984" rel="self" type="application/atom+xml"/><link href="http://opensource.googleblog.com/2026/09/this-week-in-open-source-for-september.html" rel="alternate" title="This Week in Open Source for September 24, 2026" type="text/html"/><author><name>Google Open Source</name><uri>http://www.blogger.com/profile/03718388509216889937</uri><email>noreply@blogger.com</email><gd:image height="16" rel="http://schemas.google.com/g/2005#thumbnail" src="https://img1.blogblog.com/img/b16-rounded.gif" width="16"/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" height="72" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEizuKHbBriafpnCVl8A7gazsybuVNKqwyYE1n5-RfAYhu6i5bN55iTw0LE_S0KLGWBJU9ERHgsnd9lZ3J94PhlE5hpZ5YIeBHH8PjS2yuRciaN7VgqLUISB9Ofpqst0n6tawyH6etvfFro4lqZv2X8EomVGJUTL8CSaHp0XyK3LxbJIhwi6ENKX620R4ME/s72-c/header1.png" width="72"/></entry><entry><id>tag:blogger.com,1999:blog-8698702854482141883.post-9077739959573559679</id><published>2026-09-23T11:30:00.000-07:00</published><updated>2026-09-23T11:30:00.205-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="AlloyDB"/><category scheme="http://www.blogger.com/atom/ns#" term="Cloud SQL"/><category scheme="http://www.blogger.com/atom/ns#" term="Databases"/><category scheme="http://www.blogger.com/atom/ns#" term="Google Cloud"/><category scheme="http://www.blogger.com/atom/ns#" term="Open Source"/><category scheme="http://www.blogger.com/atom/ns#" term="PostgreSQL"/><title type="text">Google Cloud: Investing in the future of PostgreSQL — 2026 highlights</title><content type="html">&lt;p class="byline"&gt;by &lt;author&gt;Dilip Kumar&lt;/author&gt;, Cloud SQL for PostgreSQL&lt;/p&gt;
&lt;meta name="twitter:image" content="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgwzJszSMRbAj7eM_f4aXx0OqZW72VjPDjvgV7ew9WiCUvUgdFtqunL5ySeShN7KD_eCNFlYdJY6gDRMjLmC7CzSriHzAHwEdwyOYdbmN2T6GyLf8mgI3OHcY4e9vpsPe6AE_t5lbw3E5cdV91M78Z83vRFHL3Ny_wiGTDJsrPGkKPZ6cco0wwlWhaLt-8/s1600/OSS-Logo-Banner.png"&gt;
&lt;img class="metadata" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgwzJszSMRbAj7eM_f4aXx0OqZW72VjPDjvgV7ew9WiCUvUgdFtqunL5ySeShN7KD_eCNFlYdJY6gDRMjLmC7CzSriHzAHwEdwyOYdbmN2T6GyLf8mgI3OHcY4e9vpsPe6AE_t5lbw3E5cdV91M78Z83vRFHL3Ny_wiGTDJsrPGkKPZ6cco0wwlWhaLt-8/s1600/OSS-Logo-Banner.png"&gt;
&lt;a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgwzJszSMRbAj7eM_f4aXx0OqZW72VjPDjvgV7ew9WiCUvUgdFtqunL5ySeShN7KD_eCNFlYdJY6gDRMjLmC7CzSriHzAHwEdwyOYdbmN2T6GyLf8mgI3OHcY4e9vpsPe6AE_t5lbw3E5cdV91M78Z83vRFHL3Ny_wiGTDJsrPGkKPZ6cco0wwlWhaLt-8/s1600/OSS-Logo-Banner.png" class="header-image"&gt;&lt;img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgwzJszSMRbAj7eM_f4aXx0OqZW72VjPDjvgV7ew9WiCUvUgdFtqunL5ySeShN7KD_eCNFlYdJY6gDRMjLmC7CzSriHzAHwEdwyOYdbmN2T6GyLf8mgI3OHcY4e9vpsPe6AE_t5lbw3E5cdV91M78Z83vRFHL3Ny_wiGTDJsrPGkKPZ6cco0wwlWhaLt-8/s1600/OSS-Logo-Banner.png"/&gt;&lt;/a&gt;


&lt;p&gt;Google Cloud is committed to open source, and PostgreSQL is a cornerstone of managed database offerings, including Cloud SQL and AlloyDB.&lt;/p&gt;

&lt;p&gt;Continuing our work with the PostgreSQL communities, we've been contributing to the core engine and participating in the patch review process. Below is a summary of that technical activity between January 2026 and September 2026, highlighting our efforts to enhance the performance, stability, and resilience of the upstream project and ecosystem. By strengthening these core capabilities, we aim to drive innovation that benefits the entire global PostgreSQL ecosystem and its diverse user base.&lt;/p&gt;

&lt;p&gt;Our technical contributions in this period have focused on enhancing core engine performance, introducing features for logical replication, fixing critical bugs, and improving upgrade resilience. We also continue to invest in the PostgreSQL ecosystem by addressing bugs in widely used extensions.&lt;/p&gt;

&lt;h2&gt;Technical contributions: January 2026 – September 2026&lt;/h2&gt;

&lt;p&gt;Our contributions this cycle span four key areas:&lt;/p&gt;

&lt;ol&gt;
  &lt;li&gt;&lt;strong&gt;Logical replication and conflict management&lt;/strong&gt;: Paving the way for active-active replication, enhanced conflict logging, and catalog safety.&lt;/li&gt;
  &lt;li&gt;&lt;strong&gt;Core engine performance and reliability&lt;/strong&gt;: Eliminating tuple-level overhead in sequential scans and making promotion timeouts accurate.&lt;/li&gt;
  &lt;li&gt;&lt;strong&gt;Core catalog, collation, and indexing bug fixes&lt;/strong&gt;: Strengthening privilege consistency, deferrable index builds, collation handling, and memory safety.&lt;/li&gt;
  &lt;li&gt;&lt;strong&gt;PostgreSQL extension and ecosystem hardening&lt;/strong&gt;: Resolving critical crashes, lock tranche registrations, and memory vulnerabilities across popular ecosystem extensions (&lt;code class="inline"&gt;plpgsql_check&lt;/code&gt;, &lt;code class="inline"&gt;pgfincore&lt;/code&gt;, and &lt;code class="inline"&gt;pgtt&lt;/code&gt;).&lt;/li&gt;
&lt;/ol&gt;

&lt;h3&gt;1. Logical replication and conflict management&lt;/h3&gt;

&lt;p&gt;Logical replication is essential for near-zero downtime migrations, major version upgrades, and multi-region data distribution. Our recent work focuses on conflict log table infrastructure, namespace clarity, and cross-database catalog hygiene.&lt;/p&gt;

&lt;h4&gt;&lt;a href="https://www.postgresql.org/message-id/E1wf7cJ-0011jL-2F%40gemulon.postgresql.org#:~:text=Author%3A%20Dilip%20Kumar%20%3Cdilipbalaut(at)gmail(dot)com%3E"&gt;Conflict log table infrastructure&lt;/a&gt;&lt;/h4&gt;

&lt;ul&gt;
  &lt;li&gt;&lt;strong&gt;Background and challenge&lt;/strong&gt;: A major milestone on the roadmap to active-active multi-master replication is the ability to automatically record and resolve data discrepancies across nodes. Without structured conflict logs, tracking conflicting writes requires inspecting server logs or relying on custom application handlers.&lt;/li&gt;
  &lt;li&gt;&lt;strong&gt;Solution&lt;/strong&gt;: This patch introduces the foundational conflict log table management infrastructure as an option in &lt;code class="inline"&gt;CREATE SUBSCRIPTION&lt;/code&gt;. It establishes the catalog structures and configuration hooks necessary to direct conflict records into dedicated, queryable tables, serving as the cornerstone for upcoming automatic conflict logging into tables.&lt;/li&gt;
  &lt;li&gt;&lt;strong&gt;Note&lt;/strong&gt;: Provided no blocking issues arise, this functionality is slated for inclusion in PG 20.&lt;/li&gt;
  &lt;li&gt;&lt;strong&gt;Contributors&lt;/strong&gt;: Dilip Kumar (Primary Author)&lt;/li&gt;
&lt;/ul&gt;

&lt;h4&gt;&lt;a href="https://www.postgresql.org/message-id/E1wl7tC-000nNc-1k%40gemulon.postgresql.org"&gt;Fix REASSIGN OWNED for subscriptions in other databases&lt;/a&gt;&lt;/h4&gt;

&lt;ul&gt;
  &lt;li&gt;&lt;strong&gt;Background and challenge&lt;/strong&gt;: While &lt;code class="inline"&gt;pg_subscription&lt;/code&gt; is physically a shared catalog so the background launcher process can scan all databases, subscription objects are logically local to each database. Certain operations, such as &lt;code class="inline"&gt;REASSIGN OWNED&lt;/code&gt;, failed to restrict their catalog scans to the current database (&lt;code class="inline"&gt;MyDatabaseId&lt;/code&gt;), leading to accidental modifications across database boundaries.&lt;/li&gt;
  &lt;li&gt;&lt;strong&gt;Solution&lt;/strong&gt;: Added explicit guards to &lt;code class="inline"&gt;pg_subscription&lt;/code&gt; readers to ensure non-launcher processes filter strictly by &lt;code class="inline"&gt;MyDatabaseId&lt;/code&gt;, protecting cross-database isolation and updating documentation.&lt;/li&gt;
  &lt;li&gt;&lt;strong&gt;Contributors&lt;/strong&gt;: Dilip Kumar (Author)&lt;/li&gt;
&lt;/ul&gt;

&lt;h4&gt;&lt;a href="https://www.postgresql.org/message-id/E1wLCwb-000oB5-1A%40gemulon.postgresql.org"&gt;Schema-qualified names in EXCEPT clause error messages&lt;/a&gt;&lt;/h4&gt;

&lt;ul&gt;
  &lt;li&gt;&lt;strong&gt;Background and challenge&lt;/strong&gt;: When publishing tables with &lt;code class="inline"&gt;EXCEPT&lt;/code&gt; clauses, &lt;code class="inline"&gt;check_publication_add_relation()&lt;/code&gt; previously reported only unqualified table names when a relation could not be processed, leading to ambiguous error messages in multi-schema databases.&lt;/li&gt;
  &lt;li&gt;&lt;strong&gt;Solution&lt;/strong&gt;: Updated error reporting paths to emit fully schema-qualified relation names, aligning with PostgreSQL's broader error messaging standards.&lt;/li&gt;
  &lt;li&gt;&lt;strong&gt;Contributors&lt;/strong&gt;: Dilip Kumar (Author)&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;2. Core engine performance and administrative enhancements&lt;/h3&gt;

&lt;p&gt;Optimizing throughput and improving the predictability of administrative operations remain top priorities for database workloads.&lt;/p&gt;

&lt;h4&gt;&lt;a href="https://www.postgresql.org/message-id/E1w5Zie-001T6v-2k%40gemulon.postgresql.org"&gt;Timeout handling in pg_promote()&lt;/a&gt;&lt;/h4&gt;

&lt;ul&gt;
  &lt;li&gt;&lt;strong&gt;Background and challenge&lt;/strong&gt;: Standby promotion via &lt;code class="inline"&gt;pg_promote()&lt;/code&gt; allows users to specify a timeout interval. Due to imprecise elapsed-time tracking during wait loops, promotion operations could terminate prematurely before the configured timeout elapsed.&lt;/li&gt;
  &lt;li&gt;&lt;strong&gt;Solution&lt;/strong&gt;: Refined the promotion loop to pre-calculate the expected end timestamp and track actual elapsed time across iterations, ensuring strict adherence to user-configured wait intervals.&lt;/li&gt;
  &lt;li&gt;&lt;strong&gt;Contributors&lt;/strong&gt;: Robert Pang (Reporter and Author)&lt;/li&gt;
&lt;/ul&gt;

&lt;h4&gt;&lt;a href="https://www.postgresql.org/message-id/E1vlbnK-0003nf-2n%40gemulon.postgresql.org"&gt;Sequential scan performance optimization&lt;/a&gt;&lt;/h4&gt;

&lt;ul&gt;
  &lt;li&gt;&lt;strong&gt;Background and challenge&lt;/strong&gt;: Previously, &lt;code class="inline"&gt;CheckXidAlive&lt;/code&gt; validation was executed inside the inner &lt;code class="inline"&gt;table_scan_next&lt;/code&gt; routines. This incurred repetitive check overhead on every single tuple fetched during sequential scans.&lt;/li&gt;
  &lt;li&gt;&lt;strong&gt;Solution&lt;/strong&gt;: Restructured the scan control flow to eliminate redundant per-tuple checks, yielding cleaner execution paths and measurable throughput improvements on large table scans.&lt;/li&gt;
  &lt;li&gt;&lt;strong&gt;Contributors&lt;/strong&gt;: Dilip Kumar (Author)&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;3. Core engine access control, collation, and indexing bug fixes&lt;/h3&gt;

&lt;p&gt;We continue to harden PostgreSQL's core engine against catalog inconsistencies, segmentation faults, and edge-case query anomalies.&lt;/p&gt;

&lt;h4&gt;&lt;a href="https://www.postgresql.org/message-id/E1vuczI-000sUq-2Z%40gemulon.postgresql.org"&gt;Large object access with pg_{read,write}_all_data&lt;/a&gt;&lt;/h4&gt;

&lt;ul&gt;
  &lt;li&gt;&lt;strong&gt;Problem&lt;/strong&gt;: The default roles &lt;code class="inline"&gt;pg_read_all_data&lt;/code&gt; and &lt;code class="inline"&gt;pg_write_all_data&lt;/code&gt; were designed to allow maintenance utilities like &lt;code class="inline"&gt;pg_dump&lt;/code&gt; to operate without superuser privileges. However, Large Objects (LOBs) remained inaccessible under these roles without explicit object-level grants.&lt;/li&gt;
  &lt;li&gt;&lt;strong&gt;Fix&lt;/strong&gt;: Updated permission checks to extend &lt;code class="inline"&gt;pg_read_all_data&lt;/code&gt; and &lt;code class="inline"&gt;pg_write_all_data&lt;/code&gt; coverage to Large Objects, completing superuser-free dump and maintenance workflows.&lt;/li&gt;
  &lt;li&gt;&lt;strong&gt;Contributors&lt;/strong&gt;: Nitin Motiani (Author), Dilip Kumar (Reviewer)&lt;/li&gt;
&lt;/ul&gt;

&lt;h4&gt;&lt;a href="https://www.postgresql.org/message-id/E1woV96-00000000a2q-0X8s%40gemulon.postgresql.org"&gt;Immediate property propagation in index copies (REINDEX CONCURRENTLY)&lt;/a&gt;&lt;/h4&gt;

&lt;ul&gt;
  &lt;li&gt;&lt;strong&gt;Problem&lt;/strong&gt;: When building a replacement index during &lt;code class="inline"&gt;REINDEX CONCURRENTLY&lt;/code&gt; for a deferrable unique constraint, &lt;code class="inline"&gt;index_create_copy()&lt;/code&gt; defaulted constraint flags to 0, setting the immediate property to true. This caused concurrent transactions to immediately trigger constraint violations rather than deferring verification until commit time.&lt;/li&gt;
  &lt;li&gt;&lt;strong&gt;Fix&lt;/strong&gt;: Introduced the &lt;code class="inline"&gt;INDEX_CREATE_DEFERRABLE&lt;/code&gt; flag to properly propagate an immediate property of false to transient copied indexes without violating internal constraint assertions.&lt;/li&gt;
  &lt;li&gt;&lt;strong&gt;Contributors&lt;/strong&gt;: Nitin Motiani (Author)&lt;/li&gt;
&lt;/ul&gt;

&lt;h4&gt;&lt;a href="https://www.postgresql.org/message-id/E1wgoMZ-001d4O-1K%40gemulon.postgresql.org"&gt;LIKE matching with nondeterministic collations and backslashes&lt;/a&gt;&lt;/h4&gt;

&lt;ul&gt;
  &lt;li&gt;&lt;strong&gt;Problem&lt;/strong&gt;: Following the addition of nondeterministic collation support for &lt;code class="inline"&gt;LIKE&lt;/code&gt;, literal pattern substring parsing unconditionally skipped all backslash characters. When encountering escaped backslashes (&lt;code class="inline"&gt;\\&lt;/code&gt;), the engine omitted the second backslash entirely instead of emitting a literal &lt;code class="inline"&gt;\&lt;/code&gt;.&lt;/li&gt;
  &lt;li&gt;&lt;strong&gt;Fix&lt;/strong&gt;: Corrected pattern de-escaping logic to correctly recognize and emit escaped backslashes during evaluation.&lt;/li&gt;
  &lt;li&gt;&lt;strong&gt;Contributors&lt;/strong&gt;: Nitin Motiani (Author)&lt;/li&gt;
&lt;/ul&gt;

&lt;h4&gt;&lt;a href="https://www.postgresql.org/message-id/E1vgbPL-000jxT-2O%40gemulon.postgresql.org"&gt;DSM lock release and crash prevention&lt;/a&gt;&lt;/h4&gt;

&lt;ul&gt;
  &lt;li&gt;&lt;strong&gt;Problem&lt;/strong&gt;: If a backend encountered a &lt;code class="inline"&gt;FATAL&lt;/code&gt; exit while holding a lock in a Dynamic Shared Memory (DSM) segment (e.g., inside dynamic shared hashtables &lt;code class="inline"&gt;dshash&lt;/code&gt;) outside of an active transaction, releasing locks during process termination could reference already detached DSM segments, triggering a segmentation fault.&lt;/li&gt;
  &lt;li&gt;&lt;strong&gt;Fix&lt;/strong&gt;: Hardened cleanup and lock release sequences during fatal exits to safely detach memory segments without segfaulting.&lt;/li&gt;
  &lt;li&gt;&lt;strong&gt;Contributors&lt;/strong&gt;: Dilip Kumar (Reviewer)&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;4. PostgreSQL ecosystem and extension hardening&lt;/h3&gt;

&lt;p&gt;Enterprise PostgreSQL architectures rely heavily on third-party extensions. Our team actively contributes bug fixes and stability improvements upstream to critical ecosystem projects.&lt;/p&gt;

&lt;h4&gt;&lt;a href="https://github.com/okbob/plpgsql_check/pull/215/commits"&gt;plpgsql_check: LWLock tranche registration for PG14&lt;/a&gt;&lt;/h4&gt;

&lt;ul&gt;
  &lt;li&gt;&lt;strong&gt;Problem&lt;/strong&gt;: In PG14 and earlier, loading &lt;code class="inline"&gt;plpgsql_check&lt;/code&gt; via &lt;code class="inline"&gt;shared_preload_libraries&lt;/code&gt; could fail with shared memory lock errors due to missing or outdated named LWLock tranche registrations (&lt;code class="inline"&gt;plpgsql_check profiler funcs stats&lt;/code&gt; and &lt;code class="inline"&gt;plpgsql_check profiler func stmts stats&lt;/code&gt;).&lt;/li&gt;
  &lt;li&gt;&lt;strong&gt;Fix&lt;/strong&gt;: Aligned pre-PG15 tranche initialization with modern &lt;code class="inline"&gt;shmem_request_hook&lt;/code&gt; patterns, guaranteeing safe shared memory allocation on older server versions.&lt;/li&gt;
  &lt;li&gt;&lt;strong&gt;Contributors&lt;/strong&gt;: Aniket Jha (Author)&lt;/li&gt;
&lt;/ul&gt;

&lt;h4&gt;&lt;a href="https://github.com/klando/pgfincore/pull/12"&gt;pgfincore: Memory safety hardening&lt;/a&gt;&lt;/h4&gt;

&lt;ul&gt;
  &lt;li&gt;&lt;strong&gt;Problem&lt;/strong&gt;: &lt;code class="inline"&gt;pgfincore&lt;/code&gt; contained two subtle memory corruption issues: an off-by-one array boundary access during buffer inspection and a dangling pointer assignment during deallocation.&lt;/li&gt;
  &lt;li&gt;&lt;strong&gt;Fix&lt;/strong&gt;: Authored patches to enforce strict boundary checks and clean pointer resets, eliminating potential memory corruption during OS buffer cache analysis.&lt;/li&gt;
  &lt;li&gt;&lt;strong&gt;PRs&lt;/strong&gt;: &lt;a href="https://github.com/klando/pgfincore/pull/12"&gt;klando/pgfincore#12&lt;/a&gt; and &lt;a href="https://github.com/klando/pgfincore/pull/13"&gt;klando/pgfincore#13&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;strong&gt;Contributors&lt;/strong&gt;: Robert Pang (Author)&lt;/li&gt;
&lt;/ul&gt;

&lt;h4&gt;&lt;a href="https://github.com/darold/pgtt/commit/e949a6c81eeaec6bd0b03c25c7428aa5cb68821f"&gt;pgtt: Use-after-free prevention on cached plans&lt;/a&gt;&lt;/h4&gt;

&lt;ul&gt;
  &lt;li&gt;&lt;strong&gt;Problem&lt;/strong&gt;: When running utility commands via the extended query protocol or within cached contexts (such as PL/pgSQL and SQL functions), &lt;code class="inline"&gt;pgtt&lt;/code&gt; modified cached statement parse trees in-place using short-lived query memory. Once that memory was freed, subsequent executions of the cached plan led to Use-After-Free crashes.&lt;/li&gt;
  &lt;li&gt;&lt;strong&gt;Fix&lt;/strong&gt;: Updated the extension to operate on an isolated, deep copy of the parse tree for cached and read-only statements, ensuring memory safety across repeated executions.&lt;/li&gt;
  &lt;li&gt;&lt;strong&gt;Contributors&lt;/strong&gt;: Sunaina Punyani (Author)&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;Related reading&lt;/h2&gt;

&lt;ul&gt;
  &lt;li&gt;&lt;a href="https://opensource.googleblog.com/2026/03/google-cloud-investing-in-the-future-of-postgresql.html"&gt;Google Cloud: Investing in the future of PostgreSQL (March 2026)&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href="https://opensource.googleblog.com/2026/07/google-cloud-postgresql-community-contribution-updates.html"&gt;Google Cloud: PostgreSQL community contribution updates (July 2026)&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;Community roadmap: Your feedback matters&lt;/h2&gt;

&lt;p&gt;We encourage you to utilize the comments area to propose new capabilities or refinements you wish to see in future iterations, and to identify key areas where the PostgreSQL open source communities should focus their investments.&lt;/p&gt;

&lt;h2&gt;Acknowledgments&lt;/h2&gt;

&lt;p&gt;We would like to celebrate our engineers for their ongoing dedication to open source:&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;&lt;strong&gt;Dilip Kumar&lt;/strong&gt; (PostgreSQL &lt;a href="https://www.postgresql.org/community/contributors/#:~:text=Dilip%20Kumar%20(dilipbalaut%20at%20gmail.com)"&gt;Significant Contributor&lt;/a&gt;): Authoring and reviewing core replication, catalog, memory, and performance patches.&lt;/li&gt;
  &lt;li&gt;&lt;strong&gt;Nitin Motiani&lt;/strong&gt;: Authoring core privilege expansions, collation de-escaping, and indexing constraint fixes.&lt;/li&gt;
  &lt;li&gt;&lt;strong&gt;Robert Pang&lt;/strong&gt;: Authoring promotion timing fixes and hardening &lt;code class="inline"&gt;pgfincore&lt;/code&gt; memory safety.&lt;/li&gt;
  &lt;li&gt;&lt;strong&gt;Aniket Jha&lt;/strong&gt;: Hardening &lt;code class="inline"&gt;plpgsql_check&lt;/code&gt; shared memory lock mechanics.&lt;/li&gt;
  &lt;li&gt;&lt;strong&gt;Sunaina Punyani&lt;/strong&gt;: Resolving memory and execution safety in &lt;code class="inline"&gt;pgtt&lt;/code&gt;.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;We also extend our sincere gratitude to the wider PostgreSQL open source communities—especially the committers, reviewers, and extension maintainers—for their collaborative reviews and shared commitment to keeping PostgreSQL the world’s most advanced open source database.&lt;/p&gt;</content><link href="http://www.blogger.com/feeds/8698702854482141883/posts/default/9077739959573559679" rel="edit" type="application/atom+xml"/><link href="http://www.blogger.com/feeds/8698702854482141883/posts/default/9077739959573559679" rel="self" type="application/atom+xml"/><link href="http://opensource.googleblog.com/2026/09/google-cloud-investing-in-the-future-of-postgresql-2026-highlights.html" rel="alternate" title="Google Cloud: Investing in the future of PostgreSQL — 2026 highlights" type="text/html"/><author><name>Google Open Source</name><uri>http://www.blogger.com/profile/03718388509216889937</uri><email>noreply@blogger.com</email><gd:image height="16" rel="http://schemas.google.com/g/2005#thumbnail" src="https://img1.blogblog.com/img/b16-rounded.gif" width="16"/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" height="72" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgwzJszSMRbAj7eM_f4aXx0OqZW72VjPDjvgV7ew9WiCUvUgdFtqunL5ySeShN7KD_eCNFlYdJY6gDRMjLmC7CzSriHzAHwEdwyOYdbmN2T6GyLf8mgI3OHcY4e9vpsPe6AE_t5lbw3E5cdV91M78Z83vRFHL3Ny_wiGTDJsrPGkKPZ6cco0wwlWhaLt-8/s72-c/OSS-Logo-Banner.png" width="72"/></entry><entry><id>tag:blogger.com,1999:blog-8698702854482141883.post-1037608601989260125</id><published>2026-09-17T11:30:00.000-07:00</published><updated>2026-09-17T11:30:00.113-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Community"/><category scheme="http://www.blogger.com/atom/ns#" term="Events"/><category scheme="http://www.blogger.com/atom/ns#" term="Google Summer of Code"/><category scheme="http://www.blogger.com/atom/ns#" term="GSoC"/><category scheme="http://www.blogger.com/atom/ns#" term="Mentorship"/><title type="text">Reconnecting with the heart of open source: Highlights from our 2026 GSoC India tour</title><content type="html">&lt;p class="byline"&gt;by &lt;author&gt;Mary Radomile&lt;/author&gt;, &lt;author&gt;Stephanie Taylor&lt;/author&gt; &amp;amp; &lt;author&gt;amanda casari&lt;/author&gt;, OSPO&lt;/p&gt;
&lt;meta name="twitter:image" content="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgUGker7QNLW1ck1VJ99-0QfXXnvsVKHl5HdY9aR51FcHY5HvfXUkYTei-odrap3TuvOgu7YAY08-5kBjWPe_Ha8G0c0raldcAjW5fnnFiJRuvWorfAcoojbHQqgPrDAt_lnkIFMq38Ysfu1FGTPwOPPdjERF1tK_yKtXppcHQocUFEeTpY2y9IUjFiLNY/s1600/gsoc_bengaluru.png"&gt;

&lt;img class="metadata" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgUGker7QNLW1ck1VJ99-0QfXXnvsVKHl5HdY9aR51FcHY5HvfXUkYTei-odrap3TuvOgu7YAY08-5kBjWPe_Ha8G0c0raldcAjW5fnnFiJRuvWorfAcoojbHQqgPrDAt_lnkIFMq38Ysfu1FGTPwOPPdjERF1tK_yKtXppcHQocUFEeTpY2y9IUjFiLNY/s1600/gsoc_bengaluru.png" alt="Group photo of over a hundred Google Summer of Code alumni, mentors, and organizers wearing blue GSoC t-shirts gathered in front of a stage banner reading Google Summer of Code Alumni CAMP India 2026 in Bengaluru"&gt;

&lt;p&gt;For over twenty years, &lt;a href="https://g.co/gsoc"&gt;Google Summer of Code&lt;/a&gt; (GSoC) has welcomed new developers into open source by pairing them with experienced mentors on real projects. This spirit is especially vibrant in India, which is home to more than 55% of all global GSoC participants over the last decade.&lt;/p&gt;

&lt;p&gt;This July, our team traveled across Bengaluru and Delhi to host a series of developer events and debut our first-ever GSoC Alumni CAMP, bringing together members of India’s vibrant GSoC alumni community. We engaged directly with current and former GSoC Contributors, Mentors, and project maintainers, experiencing firsthand the passion and energy of the Indian developer ecosystem.&lt;/p&gt;

&lt;div style="text-align: center; margin: 24px 0;"&gt;
  &lt;iframe class="BLOG_video_class" allowfullscreen="" youtube-src-id="gkaAmDeN360" width="100%" height="398" src="https://www.youtube.com/embed/gkaAmDeN360"&gt;&lt;/iframe&gt;
&lt;/div&gt;

&lt;h2&gt;Community stories: Learning to think and lead as an engineer&lt;/h2&gt;

&lt;p&gt;In both Bengaluru and Delhi, a highlight of the trip was hearing directly how open source and GSoC have fundamentally changed how developers think and work.&lt;/p&gt;

&lt;p&gt;For many attendees, having a dedicated open source mentor through GSoC took the fear out of tackling new and intimidating codebases. One former participant told us they almost walked away from a distributed storage project because it felt too overwhelming: &lt;em&gt;"Storage systems felt impossible. But great mentors taught me how to think, not just how to code."&lt;/em&gt; Another echoed that shift in perspective: &lt;em&gt;"Why am I spending so much time thinking rather than coding? Then I realized that building products is actually about thinking more than coding. GSoC taught me to think like an engineer."&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;That shift in mindset turns first-time contributors into long-term open source community leaders. We met one developer who submitted their very first pull request in 2023, started mentoring in 2024, and is now a lead maintainer for &lt;a href="https://play.google.com/store/apps/details?id=fr.free.nrw.commons&amp;amp;hl=en_US"&gt;a major open source Android app&lt;/a&gt;. We also saw how new contributors to global projects can spark entire local ecosystems—like the &lt;a href="https://www.meetup.com/bangalore-compilers-meetup-group/"&gt;Indian compiler community&lt;/a&gt;, which started with a few GSoC alumni and has rapidly grown into a 3,500+ member network with dozens of meetups across the country.&lt;/p&gt;

&lt;figure class="wide borderless" style="text-align: center; margin: 24px 0;"&gt;
  &lt;a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgUGker7QNLW1ck1VJ99-0QfXXnvsVKHl5HdY9aR51FcHY5HvfXUkYTei-odrap3TuvOgu7YAY08-5kBjWPe_Ha8G0c0raldcAjW5fnnFiJRuvWorfAcoojbHQqgPrDAt_lnkIFMq38Ysfu1FGTPwOPPdjERF1tK_yKtXppcHQocUFEeTpY2y9IUjFiLNY/s1600/gsoc_bengaluru.png"&gt;&lt;img alt="Group photo of over a hundred Google Summer of Code alumni, mentors, and organizers wearing blue GSoC t-shirts gathered in front of a stage banner reading Google Summer of Code Alumni CAMP India 2026 in Bengaluru" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgUGker7QNLW1ck1VJ99-0QfXXnvsVKHl5HdY9aR51FcHY5HvfXUkYTei-odrap3TuvOgu7YAY08-5kBjWPe_Ha8G0c0raldcAjW5fnnFiJRuvWorfAcoojbHQqgPrDAt_lnkIFMq38Ysfu1FGTPwOPPdjERF1tK_yKtXppcHQocUFEeTpY2y9IUjFiLNY/s1600/gsoc_bengaluru.png" style="max-width: 100%; height: auto;" /&gt;&lt;/a&gt;
  &lt;figcaption style="font-style: italic; color: #555; margin-top: 8px;"&gt;The Google Summer of Code Alumni CAMP — Bengaluru&lt;/figcaption&gt;
&lt;/figure&gt;

&lt;h2&gt;Open source mentorship in the age of AI&lt;/h2&gt;

&lt;p&gt;Across our sessions and unconference discussions, one recurring conversation resonated above all others: the evolving role of mentorship in an AI-assisted world. The human element of open source is more critical than ever. As one attendee noted:&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;&lt;em&gt;AI can generate the slides, but the context takes nine years.&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;We heard over and over from participants—open source maintainer time and attention remains a limited resource. CAMP participants presented multiple examples of where AI is proving effective for generating starter templates, writing tests, or fixing syntax. Even with this, what open source projects fundamentally need hasn't changed: maintainer time, clear architectural vision, and thoughtful code reviews.&lt;/p&gt;

&lt;p&gt;Beyond code quality, the industry agrees that &lt;a href="https://github.blog/open-source/maintainers/rethinking-open-source-mentorship-in-the-ai-era/"&gt;dedicated mentorship is the vital bridge&lt;/a&gt; between temporary contributions and long-term project stewardship. Without structured guidance, newcomers often struggle with unwritten project norms, complex codebase histories, or public review feedback, leading to contributor burnout and abandoned pull requests. Programs like GSoC transform casual interest into a sustainable maintainer pipeline by fostering psychological safety, belonging, and accountable relationships. &lt;strong&gt;By investing directly in maintainer time and human connection, GSoC ensures that open source projects remain secure and resilient for generations to come.&lt;/strong&gt;&lt;/p&gt;

&lt;h2&gt;What’s next?&lt;/h2&gt;

&lt;p&gt;If our trip across Bengaluru and Delhi taught us anything, it’s that the strength of open source has always come from the communities we build together, not the volume of code any one person can ship.&lt;/p&gt;

&lt;p&gt;As developer tools evolve, our main focus for GSoC is preserving the mentorship experience that makes the program special. Manually sifting through low-quality, automated submissions wastes maintainer time and drains the energy of volunteers who signed up to mentor new peers and colleagues. We're ready to tackle these challenges directly by optimizing our program to assist and protect our community of open source maintainers, so &lt;em&gt;they&lt;/em&gt; can focus on leading their open source projects and helping new engineers grow. You can stay updated on GSoC’s program rules and timelines at &lt;a href="https://g.co/gsoc"&gt;g.co/gsoc&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;To everyone who joined us in Bengaluru and Delhi—thank you for your energy, your endless inspiration, and your dedication to open source!&lt;/p&gt;</content><link href="http://www.blogger.com/feeds/8698702854482141883/posts/default/1037608601989260125" rel="edit" type="application/atom+xml"/><link href="http://www.blogger.com/feeds/8698702854482141883/posts/default/1037608601989260125" rel="self" type="application/atom+xml"/><link href="http://opensource.googleblog.com/2026/09/reconnecting-with-the-heart-of-open-source-highlights-from-our-2026-gsoc-india-tour.html" rel="alternate" title="Reconnecting with the heart of open source: Highlights from our 2026 GSoC India tour" type="text/html"/><author><name>Google Open Source</name><uri>http://www.blogger.com/profile/03718388509216889937</uri><email>noreply@blogger.com</email><gd:image height="16" rel="http://schemas.google.com/g/2005#thumbnail" src="https://img1.blogblog.com/img/b16-rounded.gif" width="16"/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" height="72" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgUGker7QNLW1ck1VJ99-0QfXXnvsVKHl5HdY9aR51FcHY5HvfXUkYTei-odrap3TuvOgu7YAY08-5kBjWPe_Ha8G0c0raldcAjW5fnnFiJRuvWorfAcoojbHQqgPrDAt_lnkIFMq38Ysfu1FGTPwOPPdjERF1tK_yKtXppcHQocUFEeTpY2y9IUjFiLNY/s72-c/gsoc_bengaluru.png" width="72"/></entry><entry><id>tag:blogger.com,1999:blog-8698702854482141883.post-9127260709826353523</id><published>2026-09-03T09:00:00.000-07:00</published><updated>2026-09-03T10:59:56.693-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="open data sets"/><category scheme="http://www.blogger.com/atom/ns#" term="Open Source"/><title type="text">How much should you trust your OSS data?</title><content type="html">&lt;p&gt;&amp;nbsp;&lt;span face="Roboto, sans-serif" style="color: #444444; font-size: 12pt; font-style: italic; white-space: pre-wrap;"&gt;by Sophia Vargas, Google Open Source &amp;amp; Andrew Nesbitt, Ecosyste.ms&lt;/span&gt;&lt;/p&gt;&lt;span id="docs-internal-guid-fb4f4943-7fff-22da-18dc-bd9d509a2521"&gt;&lt;p dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;"&gt;&lt;span face="Arial, sans-serif" style="font-size: 11pt; font-variant: normal; vertical-align: baseline; white-space: pre-wrap;"&gt;Every second, open source contribution quietly shapes the software we rely on, and yet our view of this open ecosystem is surprisingly opaque. Open source development is performed in public spaces — we can see the commits, issues and comments, the APIs and endpoints are free to use — the logs are just sitting there, so why can’t we just collect all of the data?&lt;/span&gt;&lt;/p&gt;&lt;br /&gt;&lt;p dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;"&gt;&lt;span face="Arial, sans-serif" style="font-size: 11pt; font-style: italic; font-variant: normal; vertical-align: baseline; white-space: pre-wrap;"&gt;…&lt;/span&gt;&lt;span face="Arial, sans-serif" style="font-size: 11pt; font-variant: normal; vertical-align: baseline; white-space: pre-wrap;"&gt;Said every researcher, everywhere. However in most cases of open source related data, we are only looking at &lt;/span&gt;&lt;a href="https://ieeexplore.ieee.org/stamp/stamp.jsp?tp=&amp;amp;arnumber=9463079" style="text-decoration: none;"&gt;&lt;span face="Arial, sans-serif" style="color: #1155cc; font-size: 11pt; font-variant: normal; text-decoration-skip-ink: none; text-decoration: underline; vertical-align: baseline; white-space: pre-wrap;"&gt;part of the whole&lt;/span&gt;&lt;/a&gt;&lt;span face="Arial, sans-serif" style="font-size: 11pt; font-variant: normal; vertical-align: baseline; white-space: pre-wrap;"&gt;. Why am I writing this post? Because many of us (including many business decision-makers) &lt;/span&gt;&lt;span face="Arial, sans-serif" style="font-size: 11pt; font-variant: normal; font-weight: 700; vertical-align: baseline; white-space: pre-wrap;"&gt;are too comfortable with unsubstantiated data. &lt;/span&gt;&lt;a href="https://arxiv.org/abs/2106.15611" style="text-decoration: none;"&gt;&lt;span face="Arial, sans-serif" style="color: #1155cc; font-size: 11pt; font-variant: normal; text-decoration-skip-ink: none; text-decoration: underline; vertical-align: baseline; white-space: pre-wrap;"&gt;We’ve gotten used to it&lt;/span&gt;&lt;/a&gt;&lt;span face="Arial, sans-serif" style="font-size: 11pt; font-variant: normal; vertical-align: baseline; white-space: pre-wrap;"&gt;. Our models assume that it's &lt;/span&gt;&lt;a href="https://arxiv.org/abs/2203.10384" style="text-decoration: none;"&gt;&lt;span face="Arial, sans-serif" style="color: #1155cc; font-size: 11pt; font-variant: normal; text-decoration-skip-ink: none; text-decoration: underline; vertical-align: baseline; white-space: pre-wrap;"&gt;smelly&lt;/span&gt;&lt;/a&gt;&lt;span face="Arial, sans-serif" style="font-size: 11pt; font-variant: normal; vertical-align: baseline; white-space: pre-wrap;"&gt; and we adjust the logic and weights to compromise. When it comes to open source, our confidence is even lower, even though our resulting decisions can&lt;/span&gt;&lt;a href="https://www.youtube.com/watch?v=8Yr2gGsgRsY" style="text-decoration: none;"&gt;&lt;span face="Arial, sans-serif" style="color: #1155cc; font-size: 11pt; font-variant: normal; text-decoration-skip-ink: none; text-decoration: underline; vertical-align: baseline; white-space: pre-wrap;"&gt; directly impact individuals&lt;/span&gt;&lt;/a&gt;&lt;span face="Arial, sans-serif" style="font-size: 11pt; font-variant: normal; vertical-align: baseline; white-space: pre-wrap;"&gt; whom we collectively depend on.&lt;/span&gt;&lt;/p&gt;&lt;br /&gt;&lt;p dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;"&gt;&lt;span face="Arial, sans-serif" style="font-size: 11pt; font-variant: normal; vertical-align: baseline; white-space: pre-wrap;"&gt;Let’s consider one of my favorite datasets: &lt;/span&gt;&lt;a href="https://www.gharchive.org/" style="text-decoration: none;"&gt;&lt;span face="Arial, sans-serif" style="color: #1155cc; font-size: 11pt; font-variant: normal; text-decoration-skip-ink: none; text-decoration: underline; vertical-align: baseline; white-space: pre-wrap;"&gt;GHarchive&lt;/span&gt;&lt;/a&gt;&lt;span face="Arial, sans-serif" style="font-size: 11pt; font-variant: normal; vertical-align: baseline; white-space: pre-wrap;"&gt;. Started as a &lt;/span&gt;&lt;a href="https://changelog.com/podcast/144" style="text-decoration: none;"&gt;&lt;span face="Arial, sans-serif" style="color: #1155cc; font-size: 11pt; font-variant: normal; text-decoration-skip-ink: none; text-decoration: underline; vertical-align: baseline; white-space: pre-wrap;"&gt;hobby project&lt;/span&gt;&lt;/a&gt;&lt;span face="Arial, sans-serif" style="font-size: 11pt; font-variant: normal; vertical-align: baseline; white-space: pre-wrap;"&gt; in 2011, this crawler has amassed more than 15 years of event data from GitHub. While this source provides a historical record of open source development on GitHub, as a real-time or comprehensive source of metrics, it's unreliable and should not be a source for volume-based metrics.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;&lt;br /&gt;&lt;p dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;"&gt;&lt;span face="Arial, sans-serif" style="font-size: 11pt; font-variant: normal; vertical-align: baseline; white-space: pre-wrap;"&gt;In 2025, GHarchive captured 14% fewer events than in 2024, despite steady growth in &lt;/span&gt;&lt;a href="https://innovationgraph.github.com/global-metrics/repositories" style="text-decoration: none;"&gt;&lt;span face="Arial, sans-serif" style="color: #1155cc; font-size: 11pt; font-variant: normal; text-decoration-skip-ink: none; text-decoration: underline; vertical-align: baseline; white-space: pre-wrap;"&gt;platform adoption&lt;/span&gt;&lt;/a&gt;&lt;span face="Arial, sans-serif" style="font-size: 11pt; font-variant: normal; vertical-align: baseline; white-space: pre-wrap;"&gt;.&amp;nbsp; Since 2025, we estimate that data retention in GHarchive has fallen to ~50% and in 2026 it may be as low as 20% for some event types (see figure below). Prior to 2025, you could make the general assumption that the majority of &lt;/span&gt;&lt;a href="https://docs.github.com/en/rest/using-the-rest-api/github-event-types" style="text-decoration: none;"&gt;&lt;span face="Arial, sans-serif" style="color: #1155cc; font-size: 11pt; font-variant: normal; text-decoration-skip-ink: none; text-decoration: underline; vertical-align: baseline; white-space: pre-wrap;"&gt;events&lt;/span&gt;&lt;/a&gt;&lt;span face="Arial, sans-serif" style="font-size: 11pt; font-variant: normal; vertical-align: baseline; white-space: pre-wrap;"&gt; would be represented in this pipeline. Since 2025, we must now assume we may be missing at least half of events and possibly more — not to mention all of the additional activity that’s left out of the event API (see GitHub’s &lt;/span&gt;&lt;a href="https://docs.github.com/en/graphql" style="text-decoration: none;"&gt;&lt;span face="Arial, sans-serif" style="color: #1155cc; font-size: 11pt; font-variant: normal; text-decoration-skip-ink: none; text-decoration: underline; vertical-align: baseline; white-space: pre-wrap;"&gt;GraphQL&lt;/span&gt;&lt;/a&gt;&lt;span face="Arial, sans-serif" style="font-size: 11pt; font-variant: normal; vertical-align: baseline; white-space: pre-wrap;"&gt; API.)&amp;nbsp;&lt;/span&gt;&lt;/p&gt;&lt;p dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;"&gt;&lt;span face="Arial, sans-serif" style="font-size: 11pt; font-variant: normal; vertical-align: baseline; white-space: pre-wrap;"&gt;&lt;img height="368" src="https://blogger.googleusercontent.com/img/a/AVvXsEhWI1EZBXgBioSYJ4vwVDAv5EZxIsFj7tna-3C-FSrZ5d-eCgOQIj97eycf_kjPnZW7JfRZyfYdbf6Wai8yIQEotI8pAbCkaxYREItO_MrZeZoNmweU2n42AXxTx4gZdRTThCuL4V6iyEnVU3hPx1BKn14hzP2Ro3rOHt4FL7ZFCH8zTaq_v1N2wPoSmb-X" style="border-color: currentcolor; border-image: none; border-style: none; border-width: medium; border: none;" width="597" /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;"&gt;&lt;span face="Arial, sans-serif" style="font-size: 11pt; font-variant: normal; vertical-align: baseline; white-space: pre-wrap;"&gt;The &lt;/span&gt;&lt;a href="https://github.com/igrigorik/gharchive.org" style="text-decoration: none;"&gt;&lt;span face="Arial, sans-serif" style="color: #1155cc; font-size: 11pt; font-variant: normal; text-decoration-skip-ink: none; text-decoration: underline; vertical-align: baseline; white-space: pre-wrap;"&gt;crawler&lt;/span&gt;&lt;/a&gt;&lt;span face="Arial, sans-serif" style="font-size: 11pt; font-variant: normal; vertical-align: baseline; white-space: pre-wrap;"&gt; logic behind this dataset is simple: give me all the events from the &lt;/span&gt;&lt;a href="https://docs.github.com/en/rest/using-the-rest-api/github-event-types" style="text-decoration: none;"&gt;&lt;span face="Arial, sans-serif" style="color: #1155cc; font-size: 11pt; font-variant: normal; text-decoration-skip-ink: none; text-decoration: underline; vertical-align: baseline; white-space: pre-wrap;"&gt;GitHub Event&lt;/span&gt;&lt;/a&gt;&lt;span face="Arial, sans-serif" style="font-size: 11pt; font-variant: normal; vertical-align: baseline; white-space: pre-wrap;"&gt; stream (e.g. opening pull requests, commenting on issues etc). However, the GitHub API has &lt;/span&gt;&lt;a href="https://docs.github.com/en/rest/using-the-rest-api/rate-limits-for-the-rest-api" style="text-decoration: none;"&gt;&lt;span face="Arial, sans-serif" style="color: #1155cc; font-size: 11pt; font-variant: normal; text-decoration-skip-ink: none; text-decoration: underline; vertical-align: baseline; white-space: pre-wrap;"&gt;limitations&lt;/span&gt;&lt;/a&gt;&lt;span face="Arial, sans-serif" style="font-size: 11pt; font-variant: normal; vertical-align: baseline; white-space: pre-wrap;"&gt; on the number of calls per hour as well as the number of events listed, so for days with a lot of spiky activity, the crawler will miss some. Although we never assumed that this dataset was collecting 100% of events, the current architecture is showing signs of strain. We suspect that this is due, in part, to the rate of &lt;/span&gt;&lt;a href="https://innovationgraph.github.com/global-metrics/repositories" style="text-decoration: none;"&gt;&lt;span face="Arial, sans-serif" style="color: #1155cc; font-size: 11pt; font-variant: normal; text-decoration-skip-ink: none; text-decoration: underline; vertical-align: baseline; white-space: pre-wrap;"&gt;repository growth&lt;/span&gt;&lt;/a&gt;&lt;span face="Arial, sans-serif" style="font-size: 11pt; font-variant: normal; vertical-align: baseline; white-space: pre-wrap;"&gt; and adoption of automated tooling on GitHub. In 2011, GitHub announced it reached &lt;/span&gt;&lt;a href="https://en.wikipedia.org/wiki/Timeline_of_GitHub" style="text-decoration: none;"&gt;&lt;span face="Arial, sans-serif" style="color: #1155cc; font-size: 11pt; font-variant: normal; text-decoration-skip-ink: none; text-decoration: underline; vertical-align: baseline; white-space: pre-wrap;"&gt;2 million public repositories&lt;/span&gt;&lt;/a&gt;&lt;span face="Arial, sans-serif" style="font-size: 11pt; font-variant: normal; vertical-align: baseline; white-space: pre-wrap;"&gt;, and by 2026, that figure surpassed &lt;/span&gt;&lt;a href="https://innovationgraph.github.com/global-metrics/repositories" style="text-decoration: none;"&gt;&lt;span face="Arial, sans-serif" style="color: #1155cc; font-size: 11pt; font-variant: normal; text-decoration-skip-ink: none; text-decoration: underline; vertical-align: baseline; white-space: pre-wrap;"&gt;400 million.&lt;/span&gt;&lt;/a&gt;&lt;span face="Arial, sans-serif" style="font-size: 11pt; font-variant: normal; vertical-align: baseline; white-space: pre-wrap;"&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;&lt;br /&gt;&lt;p dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;"&gt;&lt;span face="Arial, sans-serif" style="font-size: 11pt; font-variant: normal; vertical-align: baseline; white-space: pre-wrap;"&gt;I want to acknowledge that &lt;/span&gt;&lt;span face="Arial, sans-serif" style="font-size: 11pt; font-variant: normal; font-weight: 700; vertical-align: baseline; white-space: pre-wrap;"&gt;building and sharing comprehensive open datasets at scale is hard. &lt;/span&gt;&lt;span face="Arial, sans-serif" style="font-size: 11pt; font-variant: normal; vertical-align: baseline; white-space: pre-wrap;"&gt;Have you ever built a pipeline only to discover that the variables changed mid year, the payload for one output is getting truncated, all your joins broke because one side of the dataset is case sensitive … I could go on. And these examples are just ordinary data issues. Building a dataset at the scale of GitHub where “Every second, &lt;/span&gt;&lt;a href="https://github.blog/news-insights/octoverse/octoverse-a-new-developer-joins-github-every-second-as-ai-leads-typescript-to-1/" style="text-decoration: none;"&gt;&lt;span face="Arial, sans-serif" style="color: #1155cc; font-size: 11pt; font-variant: normal; text-decoration-skip-ink: none; text-decoration: underline; vertical-align: baseline; white-space: pre-wrap;"&gt;more than one new developer on average joined GitHub—over 36 million in the past year&lt;/span&gt;&lt;/a&gt;&lt;span face="Arial, sans-serif" style="font-size: 11pt; font-variant: normal; vertical-align: baseline; white-space: pre-wrap;"&gt;”—you start running into a new set of challenges.&lt;/span&gt;&lt;/p&gt;&lt;br /&gt;&lt;p dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;"&gt;&lt;span face="Arial, sans-serif" style="font-size: 11pt; font-variant: normal; vertical-align: baseline; white-space: pre-wrap;"&gt;My own journey with open source related data began when I repeatedly found myself questioning how much we could trust our own &lt;/span&gt;&lt;a href="https://opensource.googleblog.com/2026/08/adapting-open-source-practices-to-an-ai-first-world-a-retrospective-on-2025.html" style="text-decoration: none;"&gt;&lt;span face="Arial, sans-serif" style="color: #1155cc; font-size: 11pt; font-variant: normal; text-decoration-skip-ink: none; text-decoration: underline; vertical-align: baseline; white-space: pre-wrap;"&gt;metrics&lt;/span&gt;&lt;/a&gt;&lt;span face="Arial, sans-serif" style="font-size: 11pt; font-variant: normal; vertical-align: baseline; white-space: pre-wrap;"&gt;. To expand my understanding of the nuances and the limitations of open source related datasets, I reached out to &lt;/span&gt;&lt;a href="https://nesbitt.io/" style="text-decoration: none;"&gt;&lt;span face="Arial, sans-serif" style="color: #1155cc; font-size: 11pt; font-variant: normal; text-decoration-skip-ink: none; text-decoration: underline; vertical-align: baseline; white-space: pre-wrap;"&gt;Andrew Nesbitt&lt;/span&gt;&lt;/a&gt;&lt;span face="Arial, sans-serif" style="font-size: 11pt; font-variant: normal; vertical-align: baseline; white-space: pre-wrap;"&gt;, who has spent years digging in data trenches for the benefit of the community. Together we converged on the following issues that we wanted to highlight for the broader community.&lt;/span&gt;&lt;/p&gt;&lt;p dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;"&gt;&lt;span style="font-size: 20pt; white-space: pre-wrap;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;"&gt;&lt;span style="font-size: 20pt; white-space: pre-wrap;"&gt;Assembling: Assume there will be problems&lt;/span&gt;&lt;/p&gt;&lt;p dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;"&gt;&lt;span face="Arial, sans-serif" style="font-size: 11pt; font-variant: normal; vertical-align: baseline; white-space: pre-wrap;"&gt;When I asked Andrew &lt;/span&gt;&lt;span face="Arial, sans-serif" style="font-size: 11pt; font-style: italic; font-variant: normal; vertical-align: baseline; white-space: pre-wrap;"&gt;‘can you summarize the challenges you have faced assembling comprehensive datasets?’ —&lt;/span&gt;&lt;span face="Arial, sans-serif" style="font-size: 11pt; font-variant: normal; font-weight: 700; vertical-align: baseline; white-space: pre-wrap;"&gt;“I just assume I'm going to have a terrible time anyway, so I start with my best effort and fill in the gaps”. &lt;/span&gt;&lt;span face="Arial, sans-serif" style="font-size: 11pt; font-variant: normal; vertical-align: baseline; white-space: pre-wrap;"&gt;While disappointing, this aligned with most data aggregation methods I’ve reviewed—tools such as &lt;/span&gt;&lt;a href="https://chaoss.github.io/grimoirelab/" style="text-decoration: none;"&gt;&lt;span face="Arial, sans-serif" style="color: #1155cc; font-size: 11pt; font-variant: normal; text-decoration-skip-ink: none; text-decoration: underline; vertical-align: baseline; white-space: pre-wrap;"&gt;Grimoire labs&lt;/span&gt;&lt;/a&gt;&lt;span face="Arial, sans-serif" style="font-size: 11pt; font-variant: normal; vertical-align: baseline; white-space: pre-wrap;"&gt; and &lt;/span&gt;&lt;a href="https://ossinsight.io/" style="text-decoration: none;"&gt;&lt;span face="Arial, sans-serif" style="color: #1155cc; font-size: 11pt; font-variant: normal; text-decoration-skip-ink: none; text-decoration: underline; vertical-align: baseline; white-space: pre-wrap;"&gt;OSS insights&lt;/span&gt;&lt;/a&gt;&lt;span face="Arial, sans-serif" style="font-size: 11pt; font-variant: normal; vertical-align: baseline; white-space: pre-wrap;"&gt; also require multiple processes for collection, combination and reconciliation. Even with these approaches, many sources have missing, incomplete, or inconsistent information.&lt;/span&gt;&lt;/p&gt;&lt;br /&gt;&lt;p dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;"&gt;&lt;span face="Arial, sans-serif" style="font-size: 11pt; font-variant: normal; font-weight: 700; vertical-align: baseline; white-space: pre-wrap;"&gt;One source is probably not enough. &lt;/span&gt;&lt;span face="Arial, sans-serif" style="font-size: 11pt; font-variant: normal; vertical-align: baseline; white-space: pre-wrap;"&gt;If you are considering the use of an open source project, you may want to know how many maintainers work on this project, what versions are available, what their dependencies are and any active vulnerabilities or known issues. Each of these queries requires a distinct source—the development history, the dependency graph, the CVE database, etc. &lt;/span&gt;&lt;a href="http://ecosyste.ms" style="text-decoration: none;"&gt;&lt;span face="Arial, sans-serif" style="color: #1155cc; font-size: 11pt; font-variant: normal; text-decoration-skip-ink: none; text-decoration: underline; vertical-align: baseline; white-space: pre-wrap;"&gt;Ecosyste.ms&lt;/span&gt;&lt;/a&gt;&lt;span face="Arial, sans-serif" style="font-size: 11pt; font-variant: normal; vertical-align: baseline; white-space: pre-wrap;"&gt; strives to pull this information together into one place, but combining data from 1000+ datasets has its own unique set of challenges.&lt;/span&gt;&lt;/p&gt;&lt;br /&gt;&lt;p dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;"&gt;&lt;span face="Arial, sans-serif" style="font-size: 11pt; font-variant: normal; vertical-align: baseline; white-space: pre-wrap;"&gt;For example, &lt;/span&gt;&lt;span face="Arial, sans-serif" style="font-size: 11pt; font-variant: normal; font-weight: 700; vertical-align: baseline; white-space: pre-wrap;"&gt;my index is probably not your index. &lt;/span&gt;&lt;span face="Arial, sans-serif" style="font-size: 11pt; font-variant: normal; vertical-align: baseline; white-space: pre-wrap;"&gt;One perennial issue is inconsistent naming conventions across sources. Beyond variable type and format, repository names, versions, packages, tags, licenses, urls, etc. tend to be unique across platforms. Some are case sensitive, there are often duplicates, and anyone can change a name at any time… I’ve been keenly following the adoption of &lt;/span&gt;&lt;a href="https://github.com/package-url" style="text-decoration: none;"&gt;&lt;span face="Arial, sans-serif" style="color: #1155cc; font-size: 11pt; font-variant: normal; text-decoration-skip-ink: none; text-decoration: underline; vertical-align: baseline; white-space: pre-wrap;"&gt;purl&lt;/span&gt;&lt;/a&gt;&lt;span face="Arial, sans-serif" style="font-size: 11pt; font-variant: normal; vertical-align: baseline; white-space: pre-wrap;"&gt; and &lt;/span&gt;&lt;a href="https://www.softwareheritage.org/software-hash-identifier-swhid/" style="text-decoration: none;"&gt;&lt;span face="Arial, sans-serif" style="color: #1155cc; font-size: 11pt; font-variant: normal; text-decoration-skip-ink: none; text-decoration: underline; vertical-align: baseline; white-space: pre-wrap;"&gt;SWHID&lt;/span&gt;&lt;/a&gt;&lt;span face="Arial, sans-serif" style="font-size: 11pt; font-variant: normal; vertical-align: baseline; white-space: pre-wrap;"&gt;, but so far I have not found one name to rule them all.&lt;/span&gt;&lt;/p&gt;&lt;br /&gt;&lt;p dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;"&gt;&lt;span face="Arial, sans-serif" style="font-size: 11pt; font-variant: normal; font-weight: 700; vertical-align: baseline; white-space: pre-wrap;"&gt;Now we have to keep this up to date: &lt;/span&gt;&lt;span face="Arial, sans-serif" style="font-size: 11pt; font-variant: normal; vertical-align: baseline; white-space: pre-wrap;"&gt;At the moment, there is no consistent way of sharing updates across platforms. Changes to names, APIs, deletions, etc. are more often discovered by errors and breakage than by scouring release notes. To keep Ecosyste.ms up to date, Andrew has written multiple &lt;/span&gt;&lt;a href="https://github.com/ecosyste-ms/repos/blob/main/docs/syncing.md" style="text-decoration: none;"&gt;&lt;span face="Arial, sans-serif" style="color: #1155cc; font-size: 11pt; font-variant: normal; text-decoration-skip-ink: none; text-decoration: underline; vertical-align: baseline; white-space: pre-wrap;"&gt;syncing processes&lt;/span&gt;&lt;/a&gt;&lt;span face="Arial, sans-serif" style="font-size: 11pt; font-variant: normal; vertical-align: baseline; white-space: pre-wrap;"&gt; that identify or infer updates that need to be accounted for. I asked Andrew ‘&lt;/span&gt;&lt;span face="Arial, sans-serif" style="font-size: 11pt; font-style: italic; font-variant: normal; vertical-align: baseline; white-space: pre-wrap;"&gt;If you could ask a platform/data source to change one thing, what would it be?’, &lt;/span&gt;&lt;span face="Arial, sans-serif" style="font-size: 11pt; font-variant: normal; font-weight: 700; vertical-align: baseline; white-space: pre-wrap;"&gt;“Can I crawl an endpoint that's just NEW stuff?’&lt;/span&gt;&lt;/p&gt;&lt;p dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;"&gt;&lt;span style="font-size: 20pt; white-space: pre-wrap;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;"&gt;&lt;span style="font-size: 20pt; white-space: pre-wrap;"&gt;Consuming: Design your pipeline for your use case&lt;/span&gt;&lt;/p&gt;&lt;p dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;"&gt;&lt;span face="Arial, sans-serif" style="font-size: 11pt; font-variant: normal; vertical-align: baseline; white-space: pre-wrap;"&gt;Because of LLMs,&lt;/span&gt;&lt;span face="Arial, sans-serif" style="font-size: 11pt; font-variant: normal; font-weight: 700; vertical-align: baseline; white-space: pre-wrap;"&gt; “it's now easier for anyone to try to access and build reports”&lt;/span&gt;&lt;span face="Arial, sans-serif" style="font-size: 11pt; font-variant: normal; vertical-align: baseline; white-space: pre-wrap;"&gt;. But those building quick reports are likely not going to go through the pain of being comprehensive. This is where aggregated sources like GHarchive and Ecosyste.ms thrive. As data providers, we’d love if data consumers knew that:&lt;/span&gt;&lt;/p&gt;&lt;br /&gt;&lt;p dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;"&gt;&lt;span face="Arial, sans-serif" style="font-size: 11pt; font-variant: normal; font-weight: 700; vertical-align: baseline; white-space: pre-wrap;"&gt;How you collect data matters. &lt;/span&gt;&lt;span face="Arial, sans-serif" style="font-size: 11pt; font-variant: normal; vertical-align: baseline; white-space: pre-wrap;"&gt;If everyone wanted the same dataset, in the same format, at the same time, it would be simple. Depending on how the data is stored—centralized vs distributed and cached, relational vs graph, etc. —queries could be more efficient (in cost and computation) than exports or bulk requests faster than individual requests. This all depends on the topology of the infrastructure and the dataset. In a perfect world, data producers would design their architecture for their top user journeys. However open source related datasets serve a wide variety of user personas from corporations to non-profits, researchers to individual users, maintainers, funders, and many more, with a variety of demands from historical deep dives to realtime feedback. Data producers can’t design for all of these cases, so my challenge to them is to be more open about the best way to access this information.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;&lt;br /&gt;&lt;p dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;"&gt;&lt;span face="Arial, sans-serif" style="font-size: 11pt; font-variant: normal; vertical-align: baseline; white-space: pre-wrap;"&gt;At the end of the day, we have to &lt;/span&gt;&lt;span face="Arial, sans-serif" style="font-size: 11pt; font-variant: normal; font-weight: 700; vertical-align: baseline; white-space: pre-wrap;"&gt;respect the &lt;/span&gt;&lt;a href="https://www.opensourcestories.org/stories/2023/critical-human-infrastructure/" style="text-decoration: none;"&gt;&lt;span face="Arial, sans-serif" style="color: #1155cc; font-size: 11pt; font-variant: normal; font-weight: 700; text-decoration-skip-ink: none; text-decoration: underline; vertical-align: baseline; white-space: pre-wrap;"&gt;human infrastructure&lt;/span&gt;&lt;/a&gt;&lt;span face="Arial, sans-serif" style="font-size: 11pt; font-variant: normal; font-weight: 700; vertical-align: baseline; white-space: pre-wrap;"&gt;: &lt;/span&gt;&lt;span face="Arial, sans-serif" style="font-size: 11pt; font-variant: normal; vertical-align: baseline; white-space: pre-wrap;"&gt;Open source-related datasets are riddled with personally identifiable information (PII). Some individuals may be comfortable sharing their information with fellow contributors, but seeing it aggregated across platforms can be uncomfortable. Any source with PII should be handled with care: anonymize when you can and ensure you are in alignment with policies and regulations. Open source communities are real people so please, consume their data responsibly.&lt;/span&gt;&lt;/p&gt;&lt;p dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;"&gt;&lt;span style="font-size: 20pt; white-space: pre-wrap;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;"&gt;&lt;span style="font-size: 20pt; white-space: pre-wrap;"&gt;Interpreting: Never stop asking questions&lt;/span&gt;&lt;/p&gt;&lt;p dir="ltr" style="line-height: 1.38; margin-bottom: 0pt; margin-top: 0pt;"&gt;&lt;span face="Arial, sans-serif" style="font-size: 11pt; font-variant: normal; vertical-align: baseline; white-space: pre-wrap;"&gt;While many have moved on from ‘data-driven’ to ‘AI-enabled’, the fact remains that ALL AI SYSTEMS DEPEND ON &lt;/span&gt;&lt;a href="https://hackernoon.com/the-ai-hierarchy-of-needs-18f111fcc007" style="text-decoration: none;"&gt;&lt;span face="Arial, sans-serif" style="color: #1155cc; font-size: 11pt; font-variant: normal; text-decoration-skip-ink: none; text-decoration: underline; vertical-align: baseline; white-space: pre-wrap;"&gt;DATA&lt;/span&gt;&lt;/a&gt;&lt;span face="Arial, sans-serif" style="font-size: 11pt; font-variant: normal; vertical-align: baseline; white-space: pre-wrap;"&gt;. Our data about open source will continue to be incomplete and imperfect, but by asking questions about our sources, acknowledging the gaps, and considering both the technical and human processes behind open source development, we can refine and improve on how we interpret our insights and models even if they don’t completely reflect reality.&lt;/span&gt;&lt;/p&gt;&lt;div&gt;&lt;span face="Arial, sans-serif" style="font-size: 11pt; font-variant: normal; vertical-align: baseline; white-space: pre-wrap;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;/span&gt;</content><link href="http://www.blogger.com/feeds/8698702854482141883/posts/default/9127260709826353523" rel="edit" type="application/atom+xml"/><link href="http://www.blogger.com/feeds/8698702854482141883/posts/default/9127260709826353523" rel="self" type="application/atom+xml"/><link href="http://opensource.googleblog.com/2026/09/how-much-should-you-trust-your-oss-data.html" rel="alternate" title="How much should you trust your OSS data?" type="text/html"/><author><name>KD</name><uri>http://www.blogger.com/profile/01084369274473434450</uri><email>noreply@blogger.com</email><gd:image height="16" rel="http://schemas.google.com/g/2005#thumbnail" src="https://img1.blogblog.com/img/b16-rounded.gif" width="16"/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" height="72" url="https://blogger.googleusercontent.com/img/a/AVvXsEhWI1EZBXgBioSYJ4vwVDAv5EZxIsFj7tna-3C-FSrZ5d-eCgOQIj97eycf_kjPnZW7JfRZyfYdbf6Wai8yIQEotI8pAbCkaxYREItO_MrZeZoNmweU2n42AXxTx4gZdRTThCuL4V6iyEnVU3hPx1BKn14hzP2Ro3rOHt4FL7ZFCH8zTaq_v1N2wPoSmb-X=s72-c" width="72"/></entry><entry><id>tag:blogger.com,1999:blog-8698702854482141883.post-4345096551142443451</id><published>2026-08-18T11:30:00.000-07:00</published><updated>2026-08-18T11:30:00.185-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="AI"/><category scheme="http://www.blogger.com/atom/ns#" term="CEL"/><category scheme="http://www.blogger.com/atom/ns#" term="Common Expression Language"/><category scheme="http://www.blogger.com/atom/ns#" term="formal verification"/><category scheme="http://www.blogger.com/atom/ns#" term="open source"/><category scheme="http://www.blogger.com/atom/ns#" term="security"/><title type="text">Securing the agentic era: Introducing formal verification for CEL</title><content type="html">&lt;p class="byline"&gt;by &lt;author&gt;Sean Huh&lt;/author&gt;, Common Expression Language Team&lt;/p&gt;

&lt;meta name="twitter:image" content="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhuKigzFt1kkyx3eqlthONlcc6yKytKeoDmT2ADbA8GpreYwX_3zW2faeNB1D7F-NImDReaJs0TKdTB-gJjzKxhKpUaEXJef-PU2gIAJEfSrmvoUrLiBcyfqcxBrfYkP2TKUSIsY9SnuFVIAWVr_zFoJhyphenhyphen-pg_7XTlpt1dvs_yCce1obzhNJJkIC2umV8A/s1600/Cel_FullColor_RGB_notype.png"&gt;
&lt;img class="metadata" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhuKigzFt1kkyx3eqlthONlcc6yKytKeoDmT2ADbA8GpreYwX_3zW2faeNB1D7F-NImDReaJs0TKdTB-gJjzKxhKpUaEXJef-PU2gIAJEfSrmvoUrLiBcyfqcxBrfYkP2TKUSIsY9SnuFVIAWVr_zFoJhyphenhyphen-pg_7XTlpt1dvs_yCce1obzhNJJkIC2umV8A/s1600/Cel_FullColor_RGB_notype.png" alt="CEL Formal Verification header graphic"&gt;
&lt;a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhuKigzFt1kkyx3eqlthONlcc6yKytKeoDmT2ADbA8GpreYwX_3zW2faeNB1D7F-NImDReaJs0TKdTB-gJjzKxhKpUaEXJef-PU2gIAJEfSrmvoUrLiBcyfqcxBrfYkP2TKUSIsY9SnuFVIAWVr_zFoJhyphenhyphen-pg_7XTlpt1dvs_yCce1obzhNJJkIC2umV8A/s1600/Cel_FullColor_RGB_notype.png" class="header-image"&gt;&lt;img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhuKigzFt1kkyx3eqlthONlcc6yKytKeoDmT2ADbA8GpreYwX_3zW2faeNB1D7F-NImDReaJs0TKdTB-gJjzKxhKpUaEXJef-PU2gIAJEfSrmvoUrLiBcyfqcxBrfYkP2TKUSIsY9SnuFVIAWVr_zFoJhyphenhyphen-pg_7XTlpt1dvs_yCce1obzhNJJkIC2umV8A/s1600/Cel_FullColor_RGB_notype.png" alt="CEL Formal Verification header graphic"/&gt;&lt;/a&gt;

&lt;p&gt;We are rapidly entering an era where AI agents can autonomously draft, refactor, and deploy policies that protect our users and our systems. But this velocity introduces a vital question: &lt;em&gt;How do we trust AI-generated policies?&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;Unit tests may fail to cover the infinite set of possible inputs that occur in production; thus, an AI agent that overfits its policy to existing tests may fail spectacularly in production. To secure automated policy authoring, we must combine heuristic testing with mathematical proofs.&lt;/p&gt;

&lt;p&gt;We are thrilled to announce the Common Expression Language (&lt;a href="https://cel.dev/"&gt;CEL&lt;/a&gt;) &lt;a href="https://github.com/cel-expr/cel-java/tree/main/verifier"&gt;Formal Verification Framework&lt;/a&gt; is now available. Powered by the &lt;a href="https://github.com/Z3Prover/z3"&gt;Z3 theorem prover&lt;/a&gt;, this framework allows you to prove the correctness of your CEL expressions and policies, serving as the ultimate safety net for the agentic policy.&lt;/p&gt;

&lt;p&gt;Automated reasoning definitively answers questions like:&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;“Is there any combination of inputs that allows an unapproved request into production?”&lt;/li&gt;
  &lt;li&gt;“Are we absolutely certain this AI-refactored policy matches the original behavior?”&lt;/li&gt;
  &lt;li&gt;“Can a bad actor manipulate this rule to force an evaluation error?”&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Formal verification establishes mathematical certainty across the infinite spectrum of inputs. Proven policies protect your users and system while giving auditors clear proof of compliance.&lt;/p&gt;

&lt;p&gt;To see these capabilities in action, watch our video demonstrating how the CEL Verifier REPL catches subtle logic flaws in seconds:&lt;/p&gt;
&lt;iframe class="BLOG_video_class" allowfullscreen="true" youtube-src-id="pQ80ODOnQAs" width="100%" height="398" src="https://www.youtube.com/embed/pQ80ODOnQAs"&gt;&lt;/iframe&gt;

&lt;h2&gt;Proving rules from the ground up&lt;/h2&gt;

&lt;p&gt;Getting started with formal verification doesn’t require learning complex architectures right away. You can evaluate simple standalone CEL expressions to catch edge cases that tests easily miss.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;(Note: The examples below use our interactive REPL syntax—check out the &lt;a href="https://github.com/cel-expr/cel-java/blob/main/verifier/tools/README.md"&gt;REPL documentation&lt;/a&gt; to follow along!)&lt;/em&gt;&lt;/p&gt;

&lt;h3&gt;1. Catching logic bugs in simple expressions (Equivalence)&lt;/h3&gt;

&lt;p&gt;How do you guarantee a refactored rule behaves identically to the original? Suppose we have a policy that allows ports 80 or 443 in production. An agent might factor the &lt;em&gt;is_prod&lt;/em&gt; check like so:&lt;/p&gt;

&lt;pre&gt;&lt;code class="codebox textproto"&gt;equiv
  (is_prod &amp;amp;&amp;amp; port == 80) || (is_prod &amp;amp;&amp;amp; port == 443) 
  &amp;lt;=&amp;gt;
  is_prod &amp;amp;&amp;amp; port == 80 || port == 443&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;Because logical AND has a higher operator precedence than OR, the verifier immediately flags &lt;strong&gt;Violated&lt;/strong&gt;, and outputs the exact exploit: in a non-production environment (&lt;em&gt;is_prod = false&lt;/em&gt;), the rule mistakenly allows port 443. Fixing the grouping parentheses returns &lt;strong&gt;Verified&lt;/strong&gt;.&lt;/p&gt;

&lt;h3&gt;2. Enforcing exhaustive guardrails (Validity)&lt;/h3&gt;

&lt;p&gt;This capability scales directly to use cases like Kubernetes Validating Admission Policies. Suppose an engineer writes a guardrail expression that assumes every request will either be on a low port (under 80) or a high port (over 1024):&lt;/p&gt;

&lt;pre&gt;&lt;code class="codebox textproto"&gt;valid request.port &amp;gt; 1024 || request.port &amp;lt;= 80&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;When we check validity (whether an expression holds true for all inputs), the verifier exhaustively searches the entire integer space, flags &lt;strong&gt;Violated&lt;/strong&gt;, and outputs the exact counterexample:&lt;/p&gt;

&lt;pre&gt;&lt;code class="codebox textproto"&gt;[VIOLATED] Condition is not always true. Counterexample input:
  request.port = 81&lt;/code&gt;&lt;/pre&gt;

&lt;h3&gt;3. Guaranteeing security invariants with CEL Policy&lt;/h3&gt;

&lt;p&gt;While the verifier works perfectly with standalone CEL expressions, complex environments compose multiple rules and variables. Here, the &lt;a href="https://github.com/cel-expr/cel-policy"&gt;CEL policy format&lt;/a&gt; shines. Using &lt;em&gt;assume&lt;/em&gt; and &lt;em&gt;assert&lt;/em&gt; blocks, the verifier proves a mathematical implication: if the assumptions hold, the assertions must also hold.&lt;/p&gt;

&lt;pre&gt;&lt;code class="codebox textproto"&gt;name: workload_admission
rule:
  variables:
    - is_admin: 'request.auth.claims.groups.exists(g, g == "admin")'
  match:
    # A subtle flaw introduced during authoring:
    - condition: 'request.is_privileged &amp;amp;&amp;amp; request.is_prod'
      output: 'true'
    - condition: 'variables.is_admin || request.has_approval'
      output: 'true'
    - output: 'false'
verification:
  invariants:
    - id: universal_no_unapproved_privileged_prod
      assume:
        - 'request.has_approval == false'
        - 'variables.is_admin == false'
      assert:
        - 'rule.result == false'&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;The first condition admits privileged workloads into production without checking for approval or admin status. The verifier flags this and provides an example that exploits the issue:&lt;/p&gt;

&lt;pre&gt;&lt;code class="codebox textproto"&gt;Invariant 'universal_no_unapproved_privileged_prod' violation detected. Counterexample input:
  request.is_privileged = true
  request.is_prod = true
  request.has_approval = false
  request.auth.claims.groups = []&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;Assertions and assumptions define the boundaries of acceptable agent behavior, allowing developers to configure CI/CD pipelines to validate AI-generated changes simply and securely.&lt;/p&gt;

&lt;h2&gt;Under the hood: High-fidelity mathematical modeling&lt;/h2&gt;

&lt;p&gt;Translating a dynamic language into the &lt;a href="https://smt.st/SAT_SMT_by_example.pdf"&gt;Satisfiability Modulo Theories&lt;/a&gt; (SMT) domain requires immense engineering rigor to prevent the solver from hanging or hallucinating bugs. Our engine provides:&lt;/p&gt;

&lt;h3&gt;Zero false positives via three-pass taint tracking&lt;/h3&gt;

&lt;p&gt;Traditional verification tools are prone to “solver hallucinations”—reporting fake bugs when encountering custom domain-specific functions or external variables they don’t fully understand. To eliminate this noise, if a potential issue relies on an unmapped custom function, the verifier isolates and flags it as &lt;strong&gt;Inconclusive&lt;/strong&gt; rather than breaking your CI pipeline with a false alarm. This guarantees every &lt;strong&gt;Violation&lt;/strong&gt; report is a 100% real, reproducible bug.&lt;/p&gt;

&lt;h3&gt;Deep structural extensionality&lt;/h3&gt;

&lt;p&gt;The Formal Verification Framework offers configurable-depth &lt;strong&gt;bounded-model checking&lt;/strong&gt; to prevent infinite loops within SMT quantifiers. These configurable limits allow you to control the cost of verification when analyzing deep structure equivalence in expressions like &lt;code class="inline"&gt;[[1], [2]] == [[1], [2]]&lt;/code&gt;.&lt;/p&gt;

&lt;h2&gt;The mandatory bridge of trust&lt;/h2&gt;

&lt;p&gt;In the agentic era, code writes code. Mathematical proof isn’t just a nice-to-have; it is the fundamental bridge of trust developers require to let AI operate autonomously in their most sensitive systems. Get started with the &lt;a href="https://github.com/cel-expr/cel-java/tree/main/verifier"&gt;CEL Formal Verification Framework&lt;/a&gt;, to take the next step toward a more secure agentic future today!&lt;/p&gt;

&lt;p&gt;Let us know what you think—issues, pull requests, and feedback are always welcome!&lt;/p&gt;
</content><link href="http://www.blogger.com/feeds/8698702854482141883/posts/default/4345096551142443451" rel="edit" type="application/atom+xml"/><link href="http://www.blogger.com/feeds/8698702854482141883/posts/default/4345096551142443451" rel="self" type="application/atom+xml"/><link href="http://opensource.googleblog.com/2026/08/securing-the-agentic-era-introducing-formal-verification-for-cel.html" rel="alternate" title="Securing the agentic era: Introducing formal verification for CEL" type="text/html"/><author><name>Google Open Source</name><uri>http://www.blogger.com/profile/03718388509216889937</uri><email>noreply@blogger.com</email><gd:image height="16" rel="http://schemas.google.com/g/2005#thumbnail" src="https://img1.blogblog.com/img/b16-rounded.gif" width="16"/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" height="72" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhuKigzFt1kkyx3eqlthONlcc6yKytKeoDmT2ADbA8GpreYwX_3zW2faeNB1D7F-NImDReaJs0TKdTB-gJjzKxhKpUaEXJef-PU2gIAJEfSrmvoUrLiBcyfqcxBrfYkP2TKUSIsY9SnuFVIAWVr_zFoJhyphenhyphen-pg_7XTlpt1dvs_yCce1obzhNJJkIC2umV8A/s72-c/Cel_FullColor_RGB_notype.png" width="72"/></entry><entry><id>tag:blogger.com,1999:blog-8698702854482141883.post-8391837582359223234</id><published>2026-08-11T11:30:00.000-07:00</published><updated>2026-08-11T11:30:00.113-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Chip Design"/><category scheme="http://www.blogger.com/atom/ns#" term="EDA"/><category scheme="http://www.blogger.com/atom/ns#" term="Open Source"/><category scheme="http://www.blogger.com/atom/ns#" term="OpenROAD"/><category scheme="http://www.blogger.com/atom/ns#" term="Semiconductors"/><title type="text">Google joins the OpenROAD Initiative as principal member to accelerate open source silicon innovation</title><content type="html">&lt;p class="byline"&gt;by &lt;author&gt;Ethan Mahintorabi&lt;/author&gt; &amp;amp; &lt;author&gt;Aaron Cunningham&lt;/author&gt;, Hardware Toolchains Team&lt;/p&gt;

&lt;meta name="twitter:image" content="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgwzJszSMRbAj7eM_f4aXx0OqZW72VjPDjvgV7ew9WiCUvUgdFtqunL5ySeShN7KD_eCNFlYdJY6gDRMjLmC7CzSriHzAHwEdwyOYdbmN2T6GyLf8mgI3OHcY4e9vpsPe6AE_t5lbw3E5cdV91M78Z83vRFHL3Ny_wiGTDJsrPGkKPZ6cco0wwlWhaLt-8/s1600/OSS-Logo-Banner.png"&gt;
&lt;img class="metadata" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgwzJszSMRbAj7eM_f4aXx0OqZW72VjPDjvgV7ew9WiCUvUgdFtqunL5ySeShN7KD_eCNFlYdJY6gDRMjLmC7CzSriHzAHwEdwyOYdbmN2T6GyLf8mgI3OHcY4e9vpsPe6AE_t5lbw3E5cdV91M78Z83vRFHL3Ny_wiGTDJsrPGkKPZ6cco0wwlWhaLt-8/s1600/OSS-Logo-Banner.png"&gt;
&lt;a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgwzJszSMRbAj7eM_f4aXx0OqZW72VjPDjvgV7ew9WiCUvUgdFtqunL5ySeShN7KD_eCNFlYdJY6gDRMjLmC7CzSriHzAHwEdwyOYdbmN2T6GyLf8mgI3OHcY4e9vpsPe6AE_t5lbw3E5cdV91M78Z83vRFHL3Ny_wiGTDJsrPGkKPZ6cco0wwlWhaLt-8/s1600/OSS-Logo-Banner.png" class="header-image"&gt;&lt;img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgwzJszSMRbAj7eM_f4aXx0OqZW72VjPDjvgV7ew9WiCUvUgdFtqunL5ySeShN7KD_eCNFlYdJY6gDRMjLmC7CzSriHzAHwEdwyOYdbmN2T6GyLf8mgI3OHcY4e9vpsPe6AE_t5lbw3E5cdV91M78Z83vRFHL3Ny_wiGTDJsrPGkKPZ6cco0wwlWhaLt-8/s1600/OSS-Logo-Banner.png"/&gt;&lt;/a&gt;

&lt;p&gt;Google is committed to advancing open source silicon innovation. We are excited to share that we have formally joined the OpenROAD Initiative (ORI), Inc. as a principal member. ORI is a nonprofit public benefit corporation dedicated to the open source electronic design automation (EDA) ecosystem. As part of this commitment, Aaron Cunningham has been appointed to the ORI Governing Board to represent Google and help drive the foundation’s strategic direction, financial sustainability, and technical stewardship.&lt;/p&gt;

&lt;h2&gt;Driving long-term open source sustainability&lt;/h2&gt;

&lt;p&gt;The OpenROAD Initiative’s mission is to advance and sustain the open source EDA ecosystem by fostering collaborative innovation across research, education, and industry—transforming ideas into silicon. Google’s membership aligns directly with ORI’s multi-year sustainability goals, supported by the US National Science Foundation’s (NSF) Pathways to Enable Open-Source Ecosystems (POSE) program.&lt;/p&gt;

&lt;p&gt;With Google’s participation and membership commitment, ORI will continue to strengthen, grow, and sustain its open source ecosystem through key vectors:&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;&lt;strong&gt;Neutral Stewardship&lt;/strong&gt;: Fostering transparent governance where no single company has outsized control over the code, ensuring the project remains inspectable, accessible, and community-driven.&lt;/li&gt;
  &lt;li&gt;&lt;strong&gt;Ecosystem Growth&lt;/strong&gt;: Supporting open and reproducible silicon research, developing robust design flows, and hosting global design contests.&lt;/li&gt;
  &lt;li&gt;&lt;strong&gt;Workforce Development&lt;/strong&gt;: Supporting global silicon skilling initiatives by expanding open source chip design curricula and collaborating with academic institutions and industrial training networks.&lt;/li&gt;
  &lt;li&gt;&lt;strong&gt;Technical Strengthening&lt;/strong&gt;: Enhancing continuous integration and deployment (CI/CD) pipelines, expanding PDK enablement, and improving user experience.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;Leadership perspectives&lt;/h2&gt;

&lt;p&gt;“The OpenROAD Initiative is built on the vision of making chip design open and accessible to all—building a collaborative ecosystem driven by transparency and shared innovation,” said Andrew Kahng, board member of the OpenROAD Initiative. “Google’s deep commitment to open source software and hardware makes them an ideal partner. By joining at our highest membership tier, Google is helping to ensure that the open source EDA ecosystem has the stable, long-term governance and financial foundation required to grow.”&lt;/p&gt;

&lt;p&gt;“Cutting-edge silicon research requires robust, inspectable, and reproducible toolchains,” said Drew Wingard, Director of Silicon Infrastructure, Tools and Methodology at Google. “OpenROAD has already made an incredible impact across academia and the broader industry, enabling many successful tapeouts. Google is proud to support the OpenROAD Initiative’s mission to scale this open infrastructure for the next generation of developers.”&lt;/p&gt;

&lt;h2&gt;About the OpenROAD Initiative and OpenROAD project&lt;/h2&gt;

&lt;p&gt;The OpenROAD Initiative, Inc. is a California-based 501(c)(3) nonprofit organization that provides governance, stewardship, and coordination for the OpenROAD ecosystem. The OpenROAD Project is an open source, autonomous digital chip design toolchain that democratizes semiconductor design, enabling a complete RTL-to-GDSII flow in less than 24 hours with no human in the loop. Grounded in academic research and referenced in over 500 peer-reviewed publications, OpenROAD has lowered the barriers to hardware innovation, enabling thousands of students, researchers, and startups worldwide to design and manufacture chips.&lt;/p&gt;

&lt;p&gt;To learn more about the OpenROAD Project and install the toolchain, visit the new &lt;a href="https://www.openroad.org"&gt;OpenROAD website&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;For more information about membership tiers and the foundation’s governance, visit the OpenROAD Initiative website at &lt;a href="https://www.openroadinitiative.org"&gt;www.openroadinitiative.org&lt;/a&gt; or contact &lt;a href="mailto:membership@openroadinitiative.org"&gt;membership@openroadinitiative.org&lt;/a&gt;.&lt;/p&gt;
</content><link href="http://www.blogger.com/feeds/8698702854482141883/posts/default/8391837582359223234" rel="edit" type="application/atom+xml"/><link href="http://www.blogger.com/feeds/8698702854482141883/posts/default/8391837582359223234" rel="self" type="application/atom+xml"/><link href="http://opensource.googleblog.com/2026/08/ google-joins-the-openroad-initiative-as-principal-member-to-accelerate-open-source-silicon-innovation.html" rel="alternate" title="Google joins the OpenROAD Initiative as principal member to accelerate open source silicon innovation" type="text/html"/><author><name>Google Open Source</name><uri>http://www.blogger.com/profile/03718388509216889937</uri><email>noreply@blogger.com</email><gd:image height="16" rel="http://schemas.google.com/g/2005#thumbnail" src="https://img1.blogblog.com/img/b16-rounded.gif" width="16"/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" height="72" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgwzJszSMRbAj7eM_f4aXx0OqZW72VjPDjvgV7ew9WiCUvUgdFtqunL5ySeShN7KD_eCNFlYdJY6gDRMjLmC7CzSriHzAHwEdwyOYdbmN2T6GyLf8mgI3OHcY4e9vpsPe6AE_t5lbw3E5cdV91M78Z83vRFHL3Ny_wiGTDJsrPGkKPZ6cco0wwlWhaLt-8/s72-c/OSS-Logo-Banner.png" width="72"/></entry><entry><id>tag:blogger.com,1999:blog-8698702854482141883.post-6216025145884457071</id><published>2026-08-03T11:30:00.000-07:00</published><updated>2026-08-03T12:33:48.113-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="AI"/><category scheme="http://www.blogger.com/atom/ns#" term="google open source"/><category scheme="http://www.blogger.com/atom/ns#" term="open source"/><category scheme="http://www.blogger.com/atom/ns#" term="report card"/><category scheme="http://www.blogger.com/atom/ns#" term="security"/><title type="text">Adapting open source practices to an AI-first world: A retrospective on 2025</title><content type="html">&lt;p class="byline"&gt;by &lt;author&gt;Sophia Vargas&lt;/author&gt;, Google Open Source&lt;/p&gt;

&lt;meta name="twitter:image" content="https://storage.googleapis.com/gweb-developer-goog-blog-assets/images/image1_yEPzdSr.original.png"&gt;
&lt;img class="metadata" src="https://storage.googleapis.com/gweb-developer-goog-blog-assets/images/image1_yEPzdSr.original.png"&gt;

&lt;p&gt;Even as AI adoption accelerates and transforms the global technology landscape, open source remains foundational to how Alphabet builds, uses, and collaborates on products for billions of users. Our commitment to open source remains broad and consistent, including sharing our work year-over-year, and reflecting on what we've learned.&lt;/p&gt;

&lt;p&gt;In 2025:&lt;/p&gt;
&lt;ul&gt;
  &lt;li&gt;Roughly 10% of Alphabet's full-time workforce actively contributed to open source projects. This contribution ratio has remained steady over the past five years, scaling to match our growth.&lt;/li&gt;
  &lt;li&gt;These open source contributions are not just solely focused on Google. Our top projects by unique contributors at Alphabet include community-led projects such as LLVM, vLLM, Envoy, and Rust, as well as Google-initiated projects like Kubernetes, Apache Beam, and gRPC.&lt;/li&gt;
  &lt;li&gt;In addition, Alphabet projects &lt;em&gt;received&lt;/em&gt; commits from more than 20,000 non-Alphabet affiliated user accounts.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;Working together on emerging standards&lt;/h2&gt;

&lt;p&gt;Open source communities continue to provide vital collaborative spaces to define emerging standards, ensuring the interoperability and extensibility for the next generation of technologies. In 2025, we worked with more than &lt;a href="https://developers.googleblog.com/en/a2a-a-new-era-of-agent-interoperability/"&gt;50 partners on the Agent2Agent (A2A) protocol&lt;/a&gt; to enable AI agents to communicate with each other, securely exchange information, and coordinate actions on top of various enterprise platforms and applications. Within weeks of our initial announcement, &lt;a href="https://www.linuxfoundation.org/press/linux-foundation-launches-the-agent2agent-protocol-project-to-enable-secure-intelligent-communication-between-ai-agents"&gt;Google donated the A2A project to the Linux Foundation&lt;/a&gt; as part of our long-standing commitment to develop "open, collaborative ecosystem &amp;ndash; offering greater autonomy and multiplying productivity."&lt;/p&gt;

&lt;figure class="wide borderless"&gt;
  &lt;a href="https://storage.googleapis.com/gweb-developer-goog-blog-assets/images/image1_yEPzdSr.original.png"&gt;&lt;img alt="Google Cloud - Partners contributing to the Agent 2 Agent protocol - Accenture, Arize, Articul, ask-ai, Atlassian, BCG, Box, c3.ai, Capgemini, Chronosphere, Cognizant, Cohere, Colibra, Contextual.ai, Cotality, Datadog, and more" src="https://storage.googleapis.com/gweb-developer-goog-blog-assets/images/image1_yEPzdSr.original.png"&gt;&lt;/a&gt;
&lt;/figure&gt;


&lt;h2&gt;Launching tools with transparency&lt;/h2&gt;

&lt;p&gt;Open source licenses provide a framework for anyone to explore, test, fork and expand on our technologies. Over the last 15 years, Google has created more than 15,000 public repositories on GitHub. Today, Google continues to maintain more than 5,000 public repositories on GitHub, and more than 1,500 public repositories on Git-on-Borg. A quick look back to some highlights from our 2025 launches includes:&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;&lt;a href="https://blog.google/innovation-and-ai/technology/developers-tools/gemma-3/"&gt;Gemma 3&lt;/a&gt; &amp;ndash; a collection of lightweight &lt;a href="https://opensource.googleblog.com/2024/02/building-open-models-responsibly-gemini-era.html"&gt;open models&lt;/a&gt; built from the same research and technology that powers our Gemini 2.0 models. They are designed to run directly on devices &amp;mdash; from phones and laptops to workstations &amp;mdash; helping developers create AI applications, wherever people need them. Since Gemma&amp;rsquo;s release in 2024, the &lt;a href="https://deepmind.google/models/gemma/gemmaverse/"&gt;Gemmaverse&lt;/a&gt; community has created more than 60,000 Gemma variants. We&amp;rsquo;ve continued work on this collection and in 2026 we released &lt;a href="https://blog.google/innovation-and-ai/technology/developers-tools/gemma-4/"&gt;Gemma 4&lt;/a&gt; under an Apache 2.0 license.&lt;/li&gt;
  &lt;li&gt;&lt;a href="https://developers.googleblog.com/en/agent-development-kit-easy-to-build-multi-agent-applications/"&gt;Agent Development Kit&lt;/a&gt; &amp;ndash; an open-source framework and SDK designed to help developers build, compose, and run both conversational and non-conversational AI agents.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;Adjusting our collective security practices&lt;/h2&gt;

&lt;p&gt;As the threat landscape evolves and accelerates in the AI era, we are working on novel solutions to mitigate vulnerabilities at scale and remove some of the burden from overloaded maintainers. In 2025, we introduced several critical security initiatives to support upstream open source projects:&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;&lt;a href="https://deepmind.google/blog/introducing-codemender-an-ai-agent-for-code-security/"&gt;&lt;strong&gt;CodeMender&lt;/strong&gt;&lt;/a&gt;: An agent designed to be both reactive, instantly patching new vulnerabilities, and proactive, rewriting and securing existing code and eliminating entire classes of vulnerabilities in the process. In its first six months, we were able to upstream 72 security fixes to open source projects, including some as large as 4.5 million lines of code.&lt;/li&gt;
  &lt;li&gt;&lt;a href="https://blog.google/security/introducing-oss-rebuild-open-source/"&gt;&lt;strong&gt;OSS Rebuild&lt;/strong&gt;&lt;/a&gt;: A security initiative to prevent software supply chain attacks by verifying build provenance. It automates package rebuilding and semantically compares results to upstream artifacts to detect tampered code on registries like PyPI, npm, and &lt;a href="http://Crates.io"&gt;Crates.io&lt;/a&gt;.&lt;/li&gt;
  &lt;li&gt;&lt;a href="https://blog.google/security/announcing-osv-scanner-v2-vulnerability/"&gt;&lt;strong&gt;OSV-Scalibr&lt;/strong&gt;&lt;/a&gt;: (Software Composition Analysis Library) the &lt;a href="https://github.com/google/osv-scalibr"&gt;core engine&lt;/a&gt; for vulnerability scanning used internally and in OSV-Scanner.&lt;/li&gt;
  &lt;li&gt;&lt;a href="https://cloud.google.com/blog/products/identity-security/securing-open-source-credentials-at-scale?e=0"&gt;&lt;strong&gt;Credential Scanning on deps.dev&lt;/strong&gt;&lt;/a&gt;: A service (using &lt;a href="https://opensource.googleblog.com/2025/07/stop-leaked-credentials-in-their-tracks-with-veles-our-new-open-source-secret-scanner.html"&gt;Veles&lt;/a&gt;) that actively scans open-source packages on &lt;a href="http://deps.dev/"&gt;deps.dev&lt;/a&gt; for leaked GCP credentials to prevent account compromise.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;Working together to sustain the contributor community&lt;/h2&gt;

&lt;p&gt;Beyond security contributions, we remain committed to providing financial support directly to projects and maintainers. In 2025, the Open Source Programs Office (OSPO) directed $2M in sponsorships and investments to more than 40 open source projects.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://opensource.googleblog.com/2025/08/google-summer-of-code-2025-contributor-statistics.html"&gt;Google Summer of Code celebrated its 21st year&lt;/a&gt; of enabling open source organizations to find, mentor, and onboard new contributors, directly supporting 1,280 individuals to contribute to 185 organizations. Over its lifetime, the global program has connected more than 23,000 participants from 125 countries with over 1,000 open source organizations globally. Moving forward, we recognize the need to evolve our program structures to ensure they continue to effectively support maintainers in the AI era.&lt;/p&gt;

&lt;h2&gt;Evolving the way we work in open spaces&lt;/h2&gt;

&lt;p&gt;Respecting community norms and practices is fundamental to establishing and maintaining trust in open source communities. To ensure we remain supportive members of your community, we encourage projects to document preferred practices and policies in the wake of new technologies. As AI changes the way we work, we are continually evaluating how best to &lt;a href="https://opensource.googleblog.com/2026/06/community-feedback-how-can-corporations-improve-support-for-open-source-maintainers.html"&gt;evolve the way we engage&lt;/a&gt; in open spaces to preserve, prepare and bolster the communities we depend on.&lt;/p&gt;

&lt;p&gt;We are deeply grateful for the many individuals and organizations that have worked with us to create global technologies from which &lt;em&gt;everyone&lt;/em&gt; can benefit. You can continue to learn more about our open source initiatives, ongoing programs, and new projects at &lt;a href="https://opensource.google"&gt;opensource.google&lt;/a&gt;.&lt;/p&gt;

&lt;h2&gt;Appendix: About this data&lt;/h2&gt;

&lt;p&gt;This report features metrics provided by many teams and programs across Alphabet. In regards to the code and code-adjacent activities data, we wanted to share more details about the derivation of those metrics.&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;&lt;strong&gt;Data sources:&lt;/strong&gt; These data represent the activities of Alphabet employees on public repositories hosted on GitHub and our internal production Git service &lt;a href="https://opensource.google/documentation/reference/glossary#git-on-borg"&gt;Git-on-Borg&lt;/a&gt;. These sources represent a subset of open source activity currently tracked by Google OSPO.&lt;/li&gt;
  &lt;li&gt;&lt;strong&gt;Business and personal:&lt;/strong&gt; Activity on GitHub reflects a mixture of Alphabet projects, third-party projects, experimental efforts, and personal projects. Our metrics report on all of the above unless otherwise specified.&lt;/li&gt;
  &lt;li&gt;&lt;strong&gt;Alphabet contributors:&lt;/strong&gt; Please note that unless additional detail is specified, activity counts attributed to Alphabet open source contributors will include our full-time employees as well as our extended Alphabet community (temps, vendors, contractors, and interns). In 2025, full time employees at Alphabet represented more than 95% of our open source contributors.&lt;/li&gt;
  &lt;li&gt;&lt;strong&gt;GitHub Accounts:&lt;/strong&gt; For counts of GitHub accounts not affiliated with Alphabet, we cannot assume that one account is equivalent to one person, as multiple accounts could be tied to one individual or bot account.&lt;/li&gt;
  &lt;li&gt;&lt;strong&gt;Active counts:&lt;/strong&gt; Where possible, we will show &amp;lsquo;active users&amp;rsquo; defined by logged activity (excluding &amp;lsquo;WatchEvent&amp;rsquo;) within a specified timeframe (a month, year, etc.) and &amp;lsquo;active repositories&amp;rsquo; and &amp;lsquo;active projects&amp;rsquo; as those that have enough activity to meet our internal active-project criteria and have not been archived.&lt;/li&gt;
&lt;/ul&gt;

</content><link href="http://www.blogger.com/feeds/8698702854482141883/posts/default/6216025145884457071" rel="edit" type="application/atom+xml"/><link href="http://www.blogger.com/feeds/8698702854482141883/posts/default/6216025145884457071" rel="self" type="application/atom+xml"/><link href="http://opensource.googleblog.com/2026/08/adapting-open-source-practices-to-an-ai-first-world-a-retrospective-on-2025.html" rel="alternate" title="Adapting open source practices to an AI-first world: A retrospective on 2025" type="text/html"/><author><name>Google Open Source</name><uri>http://www.blogger.com/profile/03718388509216889937</uri><email>noreply@blogger.com</email><gd:image height="16" rel="http://schemas.google.com/g/2005#thumbnail" src="https://img1.blogblog.com/img/b16-rounded.gif" width="16"/></author></entry><entry><id>tag:blogger.com,1999:blog-8698702854482141883.post-3791165294719071427</id><published>2026-07-16T11:30:00.000-07:00</published><updated>2026-07-16T20:11:43.890-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="events"/><category scheme="http://www.blogger.com/atom/ns#" term="news"/><category scheme="http://www.blogger.com/atom/ns#" term="open source"/><category scheme="http://www.blogger.com/atom/ns#" term="twios"/><title type="text">This Week in Open Source for July 16, 2026</title><content type="html">&lt;meta name="twitter:image" content="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEizuKHbBriafpnCVl8A7gazsybuVNKqwyYE1n5-RfAYhu6i5bN55iTw0LE_S0KLGWBJU9ERHgsnd9lZ3J94PhlE5hpZ5YIeBHH8PjS2yuRciaN7VgqLUISB9Ofpqst0n6tawyH6etvfFro4lqZv2X8EomVGJUTL8CSaHp0XyK3LxbJIhwi6ENKX620R4ME/s1600/header1.png"&gt;
&lt;img class="metadata" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEizuKHbBriafpnCVl8A7gazsybuVNKqwyYE1n5-RfAYhu6i5bN55iTw0LE_S0KLGWBJU9ERHgsnd9lZ3J94PhlE5hpZ5YIeBHH8PjS2yuRciaN7VgqLUISB9Ofpqst0n6tawyH6etvfFro4lqZv2X8EomVGJUTL8CSaHp0XyK3LxbJIhwi6ENKX620R4ME/s1600/header1.png"&gt;
&lt;a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEizuKHbBriafpnCVl8A7gazsybuVNKqwyYE1n5-RfAYhu6i5bN55iTw0LE_S0KLGWBJU9ERHgsnd9lZ3J94PhlE5hpZ5YIeBHH8PjS2yuRciaN7VgqLUISB9Ofpqst0n6tawyH6etvfFro4lqZv2X8EomVGJUTL8CSaHp0XyK3LxbJIhwi6ENKX620R4ME/s1600/header1.png" class="header-image"&gt;&lt;img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEizuKHbBriafpnCVl8A7gazsybuVNKqwyYE1n5-RfAYhu6i5bN55iTw0LE_S0KLGWBJU9ERHgsnd9lZ3J94PhlE5hpZ5YIeBHH8PjS2yuRciaN7VgqLUISB9Ofpqst0n6tawyH6etvfFro4lqZv2X8EomVGJUTL8CSaHp0XyK3LxbJIhwi6ENKX620R4ME/s1600/header1.png"/&gt;&lt;/a&gt;
&lt;link rel="site.standard.document" href="at://did:plc:x6bnzgic7duwjxogg7zb3qas/site.standard.document/3mqspv6zwru2t"/&gt;

&lt;p class="byline"&gt;by &lt;author&gt;Daryl Ducharme&lt;/author&gt;, Open Source Programs Office&lt;/p&gt;

&lt;h2&gt;This Week in Open Source for July 16, 2026&lt;/h2&gt;
&lt;p&gt;A look around the world of open source&lt;/p&gt;

&lt;p&gt;We’re diving into another week of open source news and discussions. As the ecosystem continues to evolve, we're seeing more conversations around the intersection of AI workflows, security at scale, and the infrastructure that supports the open web.&lt;/p&gt;

&lt;p&gt;This week, we’re highlighting a few "Open Source Reads" that tackle some of the biggest questions facing our ecosystem today—from the complex ethics of AI-generated workflows to the future of federated social networks. We hope these links provide valuable context as we work together to sustain the critical infrastructure we all rely on.&lt;/p&gt;

&lt;h2&gt;Upcoming Events&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://events.linuxfoundation.org/open-source-days/"&gt;ASWF Open Source Days&lt;/a&gt; (July 19–20) — Los Angeles, CA. Hosted by the &lt;a href="https://www.aswf.io/"&gt;Academy Software Foundation&lt;/a&gt;, focusing on open source software in visual effects (VFX) and animation.&lt;/li&gt;
&lt;li&gt;&lt;a href="https://events.linuxfoundation.org/kubecon-cloudnativecon-japan/"&gt;KubeCon + CloudNativeCon Japan 2026&lt;/a&gt; (July 28–30) — Yokohama, Japan. The Cloud Native Computing Foundation's flagship conference in Japan.&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.blackhat.com/"&gt;Black Hat&lt;/a&gt; &amp;amp; &lt;a href="https://defcon.org/"&gt;DEF CON 2026&lt;/a&gt; (August 1–9) — Las Vegas, NV. While primarily cybersecurity, both heavily feature open source hacking tools. The Open Source Security Foundation (OpenSSF) also has a major presence here.&lt;/li&gt;
&lt;li&gt;&lt;a href="https://2026.fossy.ca/"&gt;FOSSY&lt;/a&gt; (August 6–9) — Vancouver, Canada. A highly community-focused open source conference emphasizing grassroots participation and collaboration.&lt;/li&gt;
&lt;li&gt;&lt;a href="https://asia.communityovercode.org/"&gt;Community over Code Asia&lt;/a&gt; (August 7–9) — Beijing, China. The Asian edition of the Apache Software Foundation's (ASF) community-first conference.&lt;/li&gt;
&lt;li&gt;&lt;a href="https://events.linuxfoundation.org/open-source-summit-korea/"&gt;Open Source Summit Korea&lt;/a&gt; (August 11–12) — Seoul, South Korea. Hosted by the Linux Foundation, bringing together open source maintainers and enterprises.&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.lfasiallc.com/kubecon-cloudnativecon-openinfra-summit-pytorch-conference-china/"&gt;KubeCon + CloudNativeCon + OpenInfra Summit + PyTorch Conference China&lt;/a&gt; (September 7–9) — Shanghai, China. A massive collaborative mega-event uniting open infrastructure, cloud, and AI communities.&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.lfopensource.cn/kubecon-cloudnativecon-openinfra-summit-pytorch-conference-china/co-located-events/ospology-ospo-summit/"&gt;OSPOlogy + OSPO Summit&lt;/a&gt; (September 7) — Shanghai, China. Focused on Open Source Program Offices (OSPOs), governance, and corporate open source sustainability.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;Open Source Reads and Links&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;[Blog] &lt;a href="https://drensin.medium.com/elephants-goldfish-and-the-new-golden-age-of-software-engineering-c33641a48874"&gt;Elephants, Goldfish and the New Golden Age of Software Engineering&lt;/a&gt; - This isn't directly open source, but with the open source ecosystem trying to find good AI workflows I thought the Elephant-Goldfish model was an interesting take. It makes the distinction between using AI as a toy and using it as a tool.&lt;/li&gt;
&lt;li&gt;[Article] &lt;a href="https://unu.edu/article/open-source-ai-and-the-choice-before-us"&gt;Open-source AI and the Choice Before Us&lt;/a&gt; - The communities with minimal influence on AI development will likely be the most affected by it. This article looks at how strong rules and institutions are needed to guide AI's safe and fair use. The future of AI depends on whether we build systems that include everyone or just deepen existing divides.&lt;/li&gt;
&lt;li&gt;[Article] &lt;a href="https://www.endorlabs.com/learn/mythos-zero-day-patches-project-akrites"&gt;Open source carries the world. Patching it at Mythos-scale can't fall to maintainers alone.&lt;/a&gt; - The past year has shown that AI is speeding up the discovery of vulnerabilities in open source software. Endor Labs is offering a solution to utilize AI to create patching stop gaps for users of the libraries so that maintainers and contributors have the time to create good quality fixes to these vulnerabilities.&lt;/li&gt;
&lt;li&gt;[Blog] &lt;a href="https://bnewbold.leaflet.pub/3mph4hzvbdc2v"&gt;The AT-URI Syntax Mess&lt;/a&gt; - I am very excited about the open social web, especially things happening around the AT protocol. Early misunderstanding led to the current AT URI syntax being invalid. This article looks at the possible ways forward.&lt;/li&gt;
&lt;li&gt;[Article] &lt;a href="https://www.eff.org/deeplinks/2026/04/open-social-web-needs-section-230-survive"&gt;The Open Social Web Needs Section 230 to Survive&lt;/a&gt; - The open web has always been a promise of free speech. When walled garden social media got involved it created some questions around whether free speech applies to the content served by the corporations running those networks. However, the open social web is not run by corporations. It can be, and it can also be run by individuals federating instances or running their own PDS. So, how do we maintain the free speech promise of the internet with this in mind?&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Which of these stories will you be chatting about at your next meetup or conference? Let us know! Share with us on our &lt;a href="https://x.com/GoogleOSS"&gt;@GoogleOSS&lt;/a&gt; X account or our &lt;a href="https://bsky.app/profile/opensource.google"&gt;@opensource.google&lt;/a&gt; Bluesky account.&lt;/p&gt;
</content><link href="http://www.blogger.com/feeds/8698702854482141883/posts/default/3791165294719071427" rel="edit" type="application/atom+xml"/><link href="http://www.blogger.com/feeds/8698702854482141883/posts/default/3791165294719071427" rel="self" type="application/atom+xml"/><link href="http://opensource.googleblog.com/2026/07/this-week-in-open-source-for-july-16-2026.html" rel="alternate" title="This Week in Open Source for July 16, 2026" type="text/html"/><author><name>Google Open Source</name><uri>http://www.blogger.com/profile/03718388509216889937</uri><email>noreply@blogger.com</email><gd:image height="16" rel="http://schemas.google.com/g/2005#thumbnail" src="https://img1.blogblog.com/img/b16-rounded.gif" width="16"/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" height="72" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEizuKHbBriafpnCVl8A7gazsybuVNKqwyYE1n5-RfAYhu6i5bN55iTw0LE_S0KLGWBJU9ERHgsnd9lZ3J94PhlE5hpZ5YIeBHH8PjS2yuRciaN7VgqLUISB9Ofpqst0n6tawyH6etvfFro4lqZv2X8EomVGJUTL8CSaHp0XyK3LxbJIhwi6ENKX620R4ME/s72-c/header1.png" width="72"/></entry><entry><id>tag:blogger.com,1999:blog-8698702854482141883.post-3959596524895580937</id><published>2026-07-10T11:30:00.000-07:00</published><updated>2026-07-14T10:30:07.505-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="conference"/><category scheme="http://www.blogger.com/atom/ns#" term="open source"/><category scheme="http://www.blogger.com/atom/ns#" term="PostgreSQL"/><title type="text">Google Cloud: PostgreSQL community contribution updates</title><content type="html">&lt;p class="byline"&gt;by &lt;author&gt;Dilip Kumar&lt;/author&gt;, Cloud SQL for PostgreSQL &amp;amp; &lt;author&gt;Matt Cornillon&lt;/author&gt;, Sales EMEA&lt;/p&gt;

&lt;meta name="twitter:image" content="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhrLEJ4HilWGy3Ft6DKhdofjRdp_yjovQxjZV5rKTvUDllRGN-H2-DihxNDY3mpi-U6q6xZvJ3-Jb9rQzUF8bpr9122wq71Pe1aBwOT22768WKO1PVFa-hTn_7yn1rTi2hFjghZOF6wm5W2XSAHUWH2763l8uJdflGnQ3f_YHu1rGW-ekDUUlkhF4sXWYk/s1600/Image1.jpeg"&gt;
&lt;img class="metadata" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhrLEJ4HilWGy3Ft6DKhdofjRdp_yjovQxjZV5rKTvUDllRGN-H2-DihxNDY3mpi-U6q6xZvJ3-Jb9rQzUF8bpr9122wq71Pe1aBwOT22768WKO1PVFa-hTn_7yn1rTi2hFjghZOF6wm5W2XSAHUWH2763l8uJdflGnQ3f_YHu1rGW-ekDUUlkhF4sXWYk/s1600/Image1.jpeg"&gt;
&lt;a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhrLEJ4HilWGy3Ft6DKhdofjRdp_yjovQxjZV5rKTvUDllRGN-H2-DihxNDY3mpi-U6q6xZvJ3-Jb9rQzUF8bpr9122wq71Pe1aBwOT22768WKO1PVFa-hTn_7yn1rTi2hFjghZOF6wm5W2XSAHUWH2763l8uJdflGnQ3f_YHu1rGW-ekDUUlkhF4sXWYk/s1600/Image1.jpeg" class="header-image"&gt;&lt;img alt="Group photo of the Google Cloud team smiling and standing at the Google Cloud booth during the PGConf India event." border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhrLEJ4HilWGy3Ft6DKhdofjRdp_yjovQxjZV5rKTvUDllRGN-H2-DihxNDY3mpi-U6q6xZvJ3-Jb9rQzUF8bpr9122wq71Pe1aBwOT22768WKO1PVFa-hTn_7yn1rTi2hFjghZOF6wm5W2XSAHUWH2763l8uJdflGnQ3f_YHu1rGW-ekDUUlkhF4sXWYk/s1600/Image1.jpeg"/&gt;&lt;/a&gt;

&lt;p&gt;Google Cloud is deeply committed to the long-term success of the PostgreSQL ecosystem. Our involvement goes beyond providing PostgreSQL managed services; it's also about active participation in the open source communities through technical contributions, leadership in conference committees, and sharing architectural insights that benefit all users. Following is a recap of recent events Google Cloud participated in.&lt;/p&gt;

&lt;h3&gt;PGConf.dev 2026&lt;/h3&gt;
&lt;p&gt;Serving as a vital developer-centric hub, PGConf.dev provides a unique opportunity for collaboration with the full assembly of senior PostgreSQL committers. This gathering is essential for aligning technical efforts and shaping the future project roadmap.&lt;/p&gt;
&lt;p&gt;
&lt;strong&gt;Key Highlights&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Participation focused on strategic coordination with PostgreSQL committers regarding logical replication development, and a consultation on global index architecture.&lt;/li&gt;
&lt;li&gt;High community interest confirms the Global Index feature solves a vital architectural requirement for enterprises. &lt;/li&gt;
&lt;li&gt;Established community consensus to pursue a deparsing-based architectural approach for DDL replication.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Google Cloud Sessions&lt;/strong&gt;&lt;/p&gt;
&lt;figure class="wide-80 borderless"&gt;
  &lt;a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgW5k9aHfEQctogAHpFwLQIFdsKMz0Xgnm9UNQB5P433TROURCIjEgmo3F4TdZIcW39MffZbpwQOhTPYD1rKTZLYqNCV1If7KX9r8-OZovI5MtDZhQnjbtNRPAkBYveJtBgA8VOYjQD7K9arK0Mi_kcV7Sg15xeZVGv5U0T6XR9z9EnDO4R5EagxdWjG-8/s1600/image2.jpg"&gt;&lt;img alt="ilip Kumar, a PostgreSQL contributor from Google Cloud, presenting 'Experimenting with a Global Index in PostgreSQL' at pgconf.dev 2026 in Vancouver. He is speaking at a podium next to a presentation slide detailing the Global Index storage architecture and PartitionIdentifier management." src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgW5k9aHfEQctogAHpFwLQIFdsKMz0Xgnm9UNQB5P433TROURCIjEgmo3F4TdZIcW39MffZbpwQOhTPYD1rKTZLYqNCV1If7KX9r8-OZovI5MtDZhQnjbtNRPAkBYveJtBgA8VOYjQD7K9arK0Mi_kcV7Sg15xeZVGv5U0T6XR9z9EnDO4R5EagxdWjG-8/s1600/image2.jpg"&gt;&lt;/a&gt;
  &lt;figcaption&gt;Dilip Kumar, a PostgreSQL contributor from Google Cloud, presenting "Experimenting with a Global Index in PostgreSQL" at pgconf.dev 2026 in Vancouver. He is speaking at a podium next to a presentation slide detailing the Global Index storage architecture and PartitionIdentifier management.&lt;/figcaption&gt;
&lt;/figure&gt;

&lt;table class="style0"&gt;
  &lt;thead&gt;
    &lt;tr&gt;
      &lt;th&gt;&lt;strong&gt;Session Title&lt;/strong&gt;&lt;/th&gt;
      &lt;th&gt;&lt;strong&gt;Session Type&lt;/strong&gt;&lt;/th&gt;
      &lt;th&gt;&lt;strong&gt;Speakers/Led by&lt;/strong&gt;&lt;/th&gt;
    &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
    &lt;tr&gt;
      &lt;td&gt;&lt;a href="https://2026.pgconf.dev/session/449"&gt;Experimenting with a Global Index in PostgreSQL: Design, Implementation, and Challenges&lt;/a&gt;&lt;/td&gt;
      &lt;td&gt;Technical Talk&lt;/td&gt;
      &lt;td&gt;Dilip Kumar&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td&gt;&lt;a href="https://2026.pgconf.dev/session/730"&gt;Unconference: Global Indexes&lt;/a&gt;&lt;/td&gt;
      &lt;td&gt;Unconference Session&lt;/td&gt;
      &lt;td&gt;Dilip Kumar&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td&gt;&lt;a href="https://2026.pgconf.dev/session/739"&gt;Unconference: Logical Replication: Warts and Missing Pieces&lt;/a&gt;&lt;/td&gt;
      &lt;td&gt;Unconference Session&lt;/td&gt;
      &lt;td&gt;Hannu Krosing&lt;/td&gt;
    &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;

&lt;h3&gt;PGConf India 2026&lt;/h3&gt;
&lt;p&gt;&lt;strong&gt;Key Highlights&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;The three-day conference was divided into a training day followed by two days of sessions. More than 580 participants attended the conference over three days.&lt;/li&gt;
&lt;li&gt;The conference sessions included a mix of keynotes, breakout technical sessions, sponsor sessions, and booth interactions.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Google Cloud Sessions&lt;/strong&gt;&lt;/p&gt;

&lt;table class="style0"&gt;
  &lt;thead&gt;
    &lt;tr&gt;
      &lt;th&gt;&lt;strong&gt;Session Title&lt;/strong&gt;&lt;/th&gt;
      &lt;th&gt;&lt;strong&gt;Session Type&lt;/strong&gt;&lt;/th&gt;
      &lt;th&gt;&lt;strong&gt;Speakers&lt;/strong&gt;&lt;/th&gt;
    &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
    &lt;tr&gt;
      &lt;td&gt;&lt;a href="https://pgconf.in/pgconfin/pgconf-india-2026/schedule?day=3&amp;talk=214"&gt;Database And GenAI&lt;/a&gt;&lt;/td&gt;
      &lt;td&gt;Keynote&lt;/td&gt;
      &lt;td&gt;Paresh Rathod&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td&gt;&lt;a href="https://pgconf.in/pgconfin/pgconf-india-2026/schedule/144"&gt;Experimenting with a Global Index in PostgreSQL&lt;/a&gt;&lt;/td&gt;
      &lt;td&gt;Technical Talk&lt;/td&gt;
      &lt;td&gt;Dilip Kumar&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td&gt;&lt;a href="https://pgconf.in/pgconfin/pgconf-india-2026/schedule?track=Diamond+Sponsor+Session&amp;talk=213"&gt;GCP - Best home to run PostgreSQL&lt;/a&gt;&lt;/td&gt;
      &lt;td&gt;Sponsor Session&lt;/td&gt;
      &lt;td&gt;Trusar Borse, Abhijeet Rajkur&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td&gt;&lt;a href="https://pgconf.in/pgconfin/pgconf-india-2026/schedule?day=2&amp;talk=114"&gt;Beyond shared_buffers: On-Demand Memory PostgreSQL&lt;/a&gt;&lt;/td&gt;
      &lt;td&gt;Technical Talk&lt;/td&gt;
      &lt;td&gt;Rajeev Rastogi, Vaibhav Popat&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td&gt;&lt;a href="https://pgconf.in/pgconfin/pgconf-india-2026/schedule?day=2&amp;talk=115"&gt;Where is my Memory&lt;/a&gt;&lt;/td&gt;
      &lt;td&gt;Technical Talk&lt;/td&gt;
      &lt;td&gt;Pushkar Kalidkar&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td&gt;&lt;a href="https://pgconf.in/pgconfin/pgconf-india-2026/schedule?day=1&amp;talk=91"&gt;Agentic AI Applications with GCP Databases&lt;/a&gt;&lt;/td&gt;
      &lt;td&gt;Keynote&lt;/td&gt;
      &lt;td&gt;Abhijeet Rajkur, Rishi Kapoor, Saurabh Gupta&lt;/td&gt;
    &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;

&lt;h3&gt;PGDay Paris &amp; PGDay France 2026&lt;/h3&gt;
&lt;p&gt;France hosts two distinct flagship PostgreSQL events, and Google Cloud is deeply embedded in both as both organizers and technical contributors. While PGDay Paris serves as an international, English-language hub for the European community, PGDay France is a community-driven, traveling event that focuses on the francophone ecosystem, taking place in Toulouse for 2026.&lt;/p&gt;
&lt;/p&gt;&lt;p&gt;
&lt;strong&gt;Key Highlights&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Matt Cornillon served on the organization committee for PGDay France, while Yves Colin contributed as a member of the program committee.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Google Cloud Sessions&lt;/strong&gt;&lt;/p&gt;

&lt;table class="style0"&gt;
  &lt;thead&gt;
    &lt;tr&gt;
      &lt;th&gt;&lt;strong&gt;Session Title&lt;/strong&gt;&lt;/th&gt;
      &lt;th&gt;&lt;strong&gt;Session Type&lt;/strong&gt;&lt;/th&gt;
      &lt;th&gt;&lt;strong&gt;Speakers&lt;/strong&gt;&lt;/th&gt;
    &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
    &lt;tr&gt;
      &lt;td&gt;&lt;a href="https://www.postgresql.eu/events/pgdayparis2026/schedule/session/7422-creating-a-dungeon-master-with-postgres-and-mcp/"&gt;Creating a "Dungeon Master" with Postgres and MCP&lt;/a&gt;&lt;/td&gt;
      &lt;td&gt;Technical Talk&lt;/td&gt;
      &lt;td&gt;Matt Cornillon&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td&gt;&lt;a href="https://pgday.fr/programme"&gt;Create your first AI agent with PostgreSQL&lt;/a&gt;&lt;/td&gt;
      &lt;td&gt;Workshop&lt;/td&gt;
      &lt;td&gt;Matt Cornillon, Yves Colin&lt;/td&gt;
    &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;

&lt;h3&gt;PGDay FOSDEM 2026&lt;/h3&gt;
&lt;p&gt;FOSDEM PGDay is a prominent open source gathering that brings together developers from across the globe to discuss the latest PostgreSQL advancements. It serves as an essential platform for exploring emerging paradigms in database development.&lt;/p&gt;
&lt;/p&gt;&lt;p&gt;
&lt;strong&gt;Key Highlights&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Exploration of how AI-assisted workflows are redefining development beyond standard autocomplete for SQL queries.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Google Cloud Sessions&lt;/strong&gt;&lt;/p&gt;

&lt;table class="style0"&gt;
  &lt;thead&gt;
    &lt;tr&gt;
      &lt;th&gt;&lt;strong&gt;Session Title&lt;/strong&gt;&lt;/th&gt;
      &lt;th&gt;&lt;strong&gt;Session Type&lt;/strong&gt;&lt;/th&gt;
      &lt;th&gt;&lt;strong&gt;Speakers&lt;/strong&gt;&lt;/th&gt;
    &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
    &lt;tr&gt;
      &lt;td&gt;&lt;a href="https://www.postgresql.eu/events/fosdem2026/schedule/session/7429-vibe-coding-with-postgres-really/"&gt;Vibe-coding with Postgres: really?&lt;/a&gt;&lt;/td&gt;
      &lt;td&gt;Technical Talk&lt;/td&gt;
      &lt;td&gt;Matt Cornillon&lt;/td&gt;
    &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;

&lt;h3&gt;PGConf Belgium 2026&lt;/h3&gt;
&lt;p&gt;PGConf Belgium 2026 took place at the UCLL Campus Proximus in Haasrode, Belgium, serving as an outstanding learning and networking platform for the local PostgreSQL community and students.&lt;/p&gt;
&lt;/p&gt;&lt;p&gt;
&lt;strong&gt;Key Highlights&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;The session was selected by faculty as supportive material for a database exam following deep student engagement.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Google Cloud Sessions&lt;/strong&gt;&lt;/p&gt;

&lt;table class="style0"&gt;
  &lt;thead&gt;
    &lt;tr&gt;
      &lt;th&gt;&lt;strong&gt;Session Title&lt;/strong&gt;&lt;/th&gt;
      &lt;th&gt;&lt;strong&gt;Session Type&lt;/strong&gt;&lt;/th&gt;
      &lt;th&gt;&lt;strong&gt;Speakers&lt;/strong&gt;&lt;/th&gt;
    &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
    &lt;tr&gt;
      &lt;td&gt;&lt;a href="https://pgconf.be/lectures/mc.html"&gt;Creating a "Dungeon Master" with Postgres and MCP&lt;/a&gt;&lt;/td&gt;
      &lt;td&gt;Technical Talk&lt;/td&gt;
      &lt;td&gt;Matt Cornillon&lt;/td&gt;
    &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;

&lt;h3&gt;Nordic PG Day 2026&lt;/h3&gt;
&lt;p&gt;Nordic PG Day is the largest PostgreSQL event in the Scandinavian countries. The 2026 edition took place in Helsinki, gathering more than 130 PostgreSQL enthusiasts for a day of deep dives.&lt;/p&gt;
&lt;/p&gt;&lt;p&gt;
&lt;strong&gt;Key Highlights&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Google joined as an official Partner-level sponsor for the first time, including a dedicated table booth.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Google Cloud Sessions&lt;/strong&gt;&lt;/p&gt;

&lt;table class="style0"&gt;
  &lt;thead&gt;
    &lt;tr&gt;
      &lt;th&gt;&lt;strong&gt;Session Title&lt;/strong&gt;&lt;/th&gt;
      &lt;th&gt;&lt;strong&gt;Session Type&lt;/strong&gt;&lt;/th&gt;
      &lt;th&gt;&lt;strong&gt;Speakers&lt;/strong&gt;&lt;/th&gt;
    &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
    &lt;tr&gt;
      &lt;td&gt;&lt;a href="https://www.postgresql.eu/events/nordicpgday2026/schedule/"&gt;Unlock AI Agents with PostgreSQL&lt;/a&gt;&lt;/td&gt;
      &lt;td&gt;Technical Talk&lt;/td&gt;
      &lt;td&gt;Mats Berglin, Miguel Toscano&lt;/td&gt;
    &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;

&lt;h3&gt;Swiss PGDay 2026&lt;/h3&gt;
&lt;p&gt;Swiss PG Day is the annual event organized by the Swiss PostgreSQL User Group in Rapperswil, Switzerland. The ninth edition featured sessions in both English and German.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Key Highlights&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Demonstration of the physical impact of pushing millions of vectors to PostgreSQL based on a real-world use case.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Google Cloud Sessions&lt;/strong&gt;&lt;/p&gt;

&lt;table class="style0"&gt;
  &lt;thead&gt;
    &lt;tr&gt;
      &lt;th&gt;&lt;strong&gt;Session Title&lt;/strong&gt;&lt;/th&gt;
      &lt;th&gt;&lt;strong&gt;Session Type&lt;/strong&gt;&lt;/th&gt;
      &lt;th&gt;&lt;strong&gt;Speakers&lt;/strong&gt;&lt;/th&gt;
    &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
    &lt;tr&gt;
      &lt;td&gt;&lt;a href="https://2026.pgday.ch/schedule/"&gt;Surviving pgvector in production: a reality check&lt;/a&gt;&lt;/td&gt;
      &lt;td&gt;Technical Talk&lt;/td&gt;
      &lt;td&gt;Miguel Toscano&lt;/td&gt;
    &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;

&lt;h3&gt;Postgres Conference: 2026 San Jose &lt;/h3&gt;
&lt;p&gt;Since its inception in 2007, the Postgres Conference has served as a cornerstone for advancement, fostering a rich environment for learning and professional networking.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Key Highlights&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Google proudly served as a sponsor for the event.&lt;/li&gt;
&lt;li&gt;Adapting PostgreSQL for the artificial intelligence era demands a transformation in operational approaches. With the rise of natural language tools and vibe coding speeding up development, Agentic AI places advanced demands on production databases. In their presentation, Vikas and Vishal examine how Google Cloud managed services have evolved to handle these workloads, providing architectural strategies and best practices for contemporary AI deployment.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Google Cloud Sessions&lt;/strong&gt;&lt;/p&gt;

&lt;table class="style0"&gt;
  &lt;thead&gt;
    &lt;tr&gt;
      &lt;th&gt;&lt;strong&gt;Session Title&lt;/strong&gt;&lt;/th&gt;
      &lt;th&gt;&lt;strong&gt;Session Type&lt;/strong&gt;&lt;/th&gt;
      &lt;th&gt;&lt;strong&gt;Speakers&lt;/strong&gt;&lt;/th&gt;
    &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
    &lt;tr&gt;
      &lt;td&gt;&lt;a href="https://postgresconf.org/conferences/postgresconf_2026/program/proposals/google-keynote-ee6e02dd-2720-4605-8e2f-903b15f34d48"&gt;Postgres and AI - Stronger Together!&lt;/a&gt;&lt;/td&gt;
      &lt;td&gt;Technical Talk&lt;/td&gt;
      &lt;td&gt;Vikas Arora and Vishal Bagga&lt;/td&gt;
    &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;

&lt;h3&gt;Community Leadership and Committees&lt;/h3&gt;
&lt;p&gt;Googlers play a vital role in shaping the direction of the most prestigious PostgreSQL developer events. Our leadership in these committees helps ensure that enterprise-grade requirements—such as those needed for large-scale migrations—are part of the global conversation.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;PGConf.dev 2026: Dilip Kumar served on the Program Committee.&lt;/li&gt;
&lt;li&gt;PGConf India 2026: Dilip Kumar was a member of the Paper Selection Committee.&lt;/li&gt;
&lt;li&gt;PGDay France: Matt Cornillon was a member of the organization committee and Yves Colin served as a member of the Program Committee.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;Looking Forward&lt;/h3&gt;
&lt;p&gt;Our commitment remains firm: to turn feedback from these global events into code, reviews, and active community partnerships. We thank the wider PostgreSQL community and the project's committers for their continued collaboration in making PostgreSQL better for everyone.&lt;/p&gt;

&lt;h3&gt;Acknowledgement&lt;/h3&gt;
&lt;p&gt;We extend our heartfelt appreciation to our open source community contributors for their outstanding dedication and active participation in making PostgreSQL conferences a great success.&lt;/p&gt;
&lt;p&gt;Abhijeet Rajurkar, Darshan Nagarajappa, Dilip Kumar, Hannu Krosing, Mats Berglin, Matt Cornillon, Michael Bautin, Miguel Toscano, Niranjan Shivprasad, Paresh Rathod, Rajeev Rastogi, Vaibhav Popat, Vikas Arora, and Yves Colin&lt;/p&gt;
&lt;p&gt;Furthermore, we are deeply grateful to the broader PostgreSQL open-source communities, especially the dedicated conference organizers, committee members, and all supporting sponsors.&lt;/p&gt;</content><link href="http://www.blogger.com/feeds/8698702854482141883/posts/default/3959596524895580937" rel="edit" type="application/atom+xml"/><link href="http://www.blogger.com/feeds/8698702854482141883/posts/default/3959596524895580937" rel="self" type="application/atom+xml"/><link href="http://opensource.googleblog.com/2026/07/google-cloud-postgresql-community-contribution-updates.html" rel="alternate" title="Google Cloud: PostgreSQL community contribution updates" type="text/html"/><author><name>Google Open Source</name><uri>http://www.blogger.com/profile/03718388509216889937</uri><email>noreply@blogger.com</email><gd:image height="16" rel="http://schemas.google.com/g/2005#thumbnail" src="https://img1.blogblog.com/img/b16-rounded.gif" width="16"/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" height="72" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhrLEJ4HilWGy3Ft6DKhdofjRdp_yjovQxjZV5rKTvUDllRGN-H2-DihxNDY3mpi-U6q6xZvJ3-Jb9rQzUF8bpr9122wq71Pe1aBwOT22768WKO1PVFa-hTn_7yn1rTi2hFjghZOF6wm5W2XSAHUWH2763l8uJdflGnQ3f_YHu1rGW-ekDUUlkhF4sXWYk/s72-c/Image1.jpeg" width="72"/></entry><entry><id>tag:blogger.com,1999:blog-8698702854482141883.post-335623879418333561</id><published>2026-06-30T11:30:00.000-07:00</published><updated>2026-06-30T11:30:00.115-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="funding"/><category scheme="http://www.blogger.com/atom/ns#" term="maintainers"/><category scheme="http://www.blogger.com/atom/ns#" term="open source communities"/><category scheme="http://www.blogger.com/atom/ns#" term="Sustainability"/><category scheme="http://www.blogger.com/atom/ns#" term="transparency"/><title type="text">Community feedback: How can corporations improve support for open source maintainers?</title><content type="html">&lt;p class="byline"&gt;by &lt;author&gt;Sophia Vargas&lt;/author&gt;, Google Open Source&lt;/p&gt;

&lt;meta name="twitter:image" content="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgwzJszSMRbAj7eM_f4aXx0OqZW72VjPDjvgV7ew9WiCUvUgdFtqunL5ySeShN7KD_eCNFlYdJY6gDRMjLmC7CzSriHzAHwEdwyOYdbmN2T6GyLf8mgI3OHcY4e9vpsPe6AE_t5lbw3E5cdV91M78Z83vRFHL3Ny_wiGTDJsrPGkKPZ6cco0wwlWhaLt-8/s1600/OSS-Logo-Banner.png"&gt;
&lt;img class="metadata" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgwzJszSMRbAj7eM_f4aXx0OqZW72VjPDjvgV7ew9WiCUvUgdFtqunL5ySeShN7KD_eCNFlYdJY6gDRMjLmC7CzSriHzAHwEdwyOYdbmN2T6GyLf8mgI3OHcY4e9vpsPe6AE_t5lbw3E5cdV91M78Z83vRFHL3Ny_wiGTDJsrPGkKPZ6cco0wwlWhaLt-8/s1600/OSS-Logo-Banner.png"&gt;
&lt;a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgwzJszSMRbAj7eM_f4aXx0OqZW72VjPDjvgV7ew9WiCUvUgdFtqunL5ySeShN7KD_eCNFlYdJY6gDRMjLmC7CzSriHzAHwEdwyOYdbmN2T6GyLf8mgI3OHcY4e9vpsPe6AE_t5lbw3E5cdV91M78Z83vRFHL3Ny_wiGTDJsrPGkKPZ6cco0wwlWhaLt-8/s1600/OSS-Logo-Banner.png" class="header-image"&gt;&lt;img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgwzJszSMRbAj7eM_f4aXx0OqZW72VjPDjvgV7ew9WiCUvUgdFtqunL5ySeShN7KD_eCNFlYdJY6gDRMjLmC7CzSriHzAHwEdwyOYdbmN2T6GyLf8mgI3OHcY4e9vpsPe6AE_t5lbw3E5cdV91M78Z83vRFHL3Ny_wiGTDJsrPGkKPZ6cco0wwlWhaLt-8/s1600/OSS-Logo-Banner.png"/&gt;&lt;/a&gt;

&lt;style&gt;
table {
  border-collapse:collapse;
  border:1px solid #ccc;
}
tbody, tr, td {
  border:inherit;
  border-collapse:inherit;
}
td {
  padding:5px;
}
.style0 {
  border-collapse:collapse;
  border:1px solid #000000
}
.style1 {
  font-family:Arial;
  color:#000000;
  background-color:#d9ead3;
}
.style2 {
  font-family:Arial;
  color:#000000;
  background-color:#fce5cd;
}
&lt;/style&gt;

&lt;p&gt;We know that AI is actively &lt;a href="https://arxiv.org/pdf/2508.04921"&gt;transforming&lt;/a&gt; the sustainability and socio-technical dynamics of OSS communities. Google Open Source is committed to partnering with open source communities and ecosystems to learn together how we should update our own models for engagement and support.&lt;/p&gt;

&lt;p&gt;During an open meetup for &lt;a href="https://maintainermonth.github.com/"&gt;GitHub Maintainer Month&lt;/a&gt;, I led a session to gather community feedback on how corporations can more effectively support open source maintainers.&lt;/p&gt;

&lt;h2&gt;Paying maintainers takes creativity&lt;/h2&gt;
&lt;p&gt;Many maintainers would appreciate consistent financial support. However, facilitating payments to individuals without established contractual relationships remains a complex challenge, particularly across diverse international jurisdictions. Fiscal hosts and programs such as &lt;a href="https://opencollective.com/"&gt;Open Collective&lt;/a&gt;, &lt;a href="https://github.com/open-source/sponsors"&gt;GitHub Sponsors&lt;/a&gt;, and the &lt;a href="https://lfx.linuxfoundation.org/tools/mentorship/"&gt;LFX Mentorship Program&lt;/a&gt; can simplify components of this process, but they do not resolve the underlying issues of funding sustainability and predictability. While initiatives like the &lt;a href="https://endowment.dev/"&gt;Open Source Endowment&lt;/a&gt; are working toward long-term funding sustainability, individual maintainers also had a few ideas:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Pay per meaningful contribution vs gameable metrics: &lt;/strong&gt;Avoid payment models based on easily manipulated units like pull request counts or review volume. A proposed alternative is &lt;strong&gt;‘pay per report,'&lt;/strong&gt; encouraging maintainers to document their achievements and upcoming roadmaps.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Commitment-based purchasing: &lt;/strong&gt;Corporate policies might make procurement simpler (or more complex) than sponsorships, so maintainers could benefit from offering structured support services alongside traditional sponsorship opportunities.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Fund conference attendance: &lt;/strong&gt;In-person networking can be a boon for solo maintainers but it's often cost-prohibitive. For some corporations, travel sponsorship may be a simpler alternative to direct payments.&lt;/li&gt;
&lt;/ul&gt;

&lt;table class="style0"&gt;
    &lt;tr&gt;
      &lt;td class="style1"&gt;&lt;em&gt;&lt;strong&gt;Challenge for Corporations and Fiscal Hosts&lt;/strong&gt;:&lt;/em&gt; How can we assist maintainers in understanding any and all prerequisites and documentation necessary to participate in monetary programs?&lt;/td&gt;
      &lt;td class="style2"&gt;&lt;em&gt;&lt;strong&gt;Advice from Maintainers&lt;/strong&gt;&lt;/em&gt;: Consult a tax professional to understand the implications of various funding methods.&lt;/td&gt;
    &lt;/tr&gt;
&lt;/table&gt;

&lt;h2&gt;Manage and respect expectations&lt;/h2&gt;
&lt;p&gt;Beyond financial support, our discussion returned to the importance of respect and etiquette. Particularly, how can we manage expectations between heterogeneous creators, contributors and users -&lt;strong&gt; &lt;/strong&gt;are maintainers clearly communicating their preferences, and are corporations actively respecting them? Some suggestions include:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Adherence to community norms: &lt;/strong&gt;Maintainers should share their preferred communication channels, while contributors - both human and agentic - must ensure they review and follow them.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Consistency with documentation: &lt;/strong&gt;Discrepancies between documented procedures and actual practices create friction for all participants. This standard should be upheld by both individual maintainers and corporate-managed projects.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Clarity of intent: &lt;/strong&gt;Many maintainers would like to understand the motivation behind a contribution and reserve the right to ask questions.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;To improve specific program experiences, maintainers suggested:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Consistent communication: &lt;/strong&gt;Recipients of funding programs expect clearly communicated expectations regarding the timing and amount of disbursements.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Transparency and discoverability: &lt;/strong&gt;Maintainers would appreciate easily discoverable records that track program participation, active agreements, and verify the status of Contributor License Agreements (CLAs).&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;Let's keep learning as a community&lt;/h2&gt;
&lt;p&gt;While we cannot make any promises, we want to continue to learn and challenge ourselves to consider novel ways to support OSS communities and maintainers. As a member of our community, we value your opinion. We've created a &lt;a href="https://docs.google.com/forms/d/e/1FAIpQLScb2EC-DcmJ1OdK-Zw5cCirvnelCGWdrN-vQtfXnYIQA1wgTQ/viewform?usp=header"&gt;Google form&lt;/a&gt; to collect any thoughts you might have, as well as gauge interest in another open meeting. We plan to share any and all learnings back with the community.&lt;/p&gt;

&lt;/body&gt;
&lt;/html&gt;</content><link href="http://www.blogger.com/feeds/8698702854482141883/posts/default/335623879418333561" rel="edit" type="application/atom+xml"/><link href="http://www.blogger.com/feeds/8698702854482141883/posts/default/335623879418333561" rel="self" type="application/atom+xml"/><link href="http://opensource.googleblog.com/2026/06/community-feedback-how-can-corporations-improve-support-for-open-source-maintainers.html" rel="alternate" title="Community feedback: How can corporations improve support for open source maintainers?" type="text/html"/><author><name>Google Open Source</name><uri>http://www.blogger.com/profile/03718388509216889937</uri><email>noreply@blogger.com</email><gd:image height="16" rel="http://schemas.google.com/g/2005#thumbnail" src="https://img1.blogblog.com/img/b16-rounded.gif" width="16"/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" height="72" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgwzJszSMRbAj7eM_f4aXx0OqZW72VjPDjvgV7ew9WiCUvUgdFtqunL5ySeShN7KD_eCNFlYdJY6gDRMjLmC7CzSriHzAHwEdwyOYdbmN2T6GyLf8mgI3OHcY4e9vpsPe6AE_t5lbw3E5cdV91M78Z83vRFHL3Ny_wiGTDJsrPGkKPZ6cco0wwlWhaLt-8/s72-c/OSS-Logo-Banner.png" width="72"/></entry><entry><id>tag:blogger.com,1999:blog-8698702854482141883.post-266167146090881789</id><published>2026-06-22T11:30:00.000-07:00</published><updated>2026-06-22T11:30:00.116-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="communities"/><category scheme="http://www.blogger.com/atom/ns#" term="documentation"/><category scheme="http://www.blogger.com/atom/ns#" term="Linux man-pages"/><category scheme="http://www.blogger.com/atom/ns#" term="open source"/><category scheme="http://www.blogger.com/atom/ns#" term="sponsorship"/><title type="text">Documenting the manual: how curiosity and robotic arms led to a career in open source</title><content type="html">&lt;p class="byline"&gt;by &lt;author&gt;Daryl Ducharme&lt;/author&gt;, Google Open Source&lt;/p&gt;

&lt;meta name="twitter:image" content="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgwzJszSMRbAj7eM_f4aXx0OqZW72VjPDjvgV7ew9WiCUvUgdFtqunL5ySeShN7KD_eCNFlYdJY6gDRMjLmC7CzSriHzAHwEdwyOYdbmN2T6GyLf8mgI3OHcY4e9vpsPe6AE_t5lbw3E5cdV91M78Z83vRFHL3Ny_wiGTDJsrPGkKPZ6cco0wwlWhaLt-8/s1600/OSS-Logo-Banner.png"&gt;
&lt;img class="metadata" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgwzJszSMRbAj7eM_f4aXx0OqZW72VjPDjvgV7ew9WiCUvUgdFtqunL5ySeShN7KD_eCNFlYdJY6gDRMjLmC7CzSriHzAHwEdwyOYdbmN2T6GyLf8mgI3OHcY4e9vpsPe6AE_t5lbw3E5cdV91M78Z83vRFHL3Ny_wiGTDJsrPGkKPZ6cco0wwlWhaLt-8/s1600/OSS-Logo-Banner.png"&gt;
&lt;a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgwzJszSMRbAj7eM_f4aXx0OqZW72VjPDjvgV7ew9WiCUvUgdFtqunL5ySeShN7KD_eCNFlYdJY6gDRMjLmC7CzSriHzAHwEdwyOYdbmN2T6GyLf8mgI3OHcY4e9vpsPe6AE_t5lbw3E5cdV91M78Z83vRFHL3Ny_wiGTDJsrPGkKPZ6cco0wwlWhaLt-8/s1600/OSS-Logo-Banner.png" class="header-image"&gt;&lt;img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgwzJszSMRbAj7eM_f4aXx0OqZW72VjPDjvgV7ew9WiCUvUgdFtqunL5ySeShN7KD_eCNFlYdJY6gDRMjLmC7CzSriHzAHwEdwyOYdbmN2T6GyLf8mgI3OHcY4e9vpsPe6AE_t5lbw3E5cdV91M78Z83vRFHL3Ny_wiGTDJsrPGkKPZ6cco0wwlWhaLt-8/s1600/OSS-Logo-Banner.png"/&gt;&lt;/a&gt;

&lt;p&gt;When you think of "innovation" in open source, your mind probably jumps to the latest AI model or a revolutionary new framework. You might not immediately think of manual pages. Even Alejandro "Alex" Colomar, who spends his days &lt;a href="https://www.kernel.org/doc/man-pages/maintaining.html"&gt;maintaining Linux Kernel documentation&lt;/a&gt;, jokingly admits that some might find the work "boring" because it focuses on fixing existing issues and documenting new features rather than flashy inventions.&lt;/p&gt;&lt;p&gt;
But as any developer knows, the most powerful code is only as good as the documentation behind it. At Google, we believe that investing in the success of projects we don't own is a core part of being a good open source citizen. That is why we are proud to &lt;a href="https://www.linux.com/news/celebrating-the-second-year-of-linux-man-pages-maintenance-sponsorship/"&gt;sponsor Alejandro's work&lt;/a&gt; on the Linux Kernel man-pages project—supporting the critical infrastructure that many of our own systems rely on every day.&lt;/p&gt;
&lt;blockquote&gt;Documentation is the gift you give to your future self and your whole community.&lt;/blockquote&gt;

&lt;h2&gt;The precision of a robot&lt;/h2&gt;
&lt;p&gt;Alejandro's journey into the world of essential documentation started at university. He was working with robotic arms that used a proprietary scripting language. Wanting more control, he decided to write a C library to communicate with the robots over the network by sniffing packets with Wireshark. It worked, but it was slow—he had to wait seconds between commands to ensure the robot had finished moving.&lt;/p&gt;
&lt;p&gt;To make the movements smooth, he needed to understand the messages the robot was sending back in real-time. This required high-precision timing. He found &lt;code class="inline"&gt;SO_TIMESTAMP&lt;/code&gt;, which provided microsecond precision, but he noticed a macro called &lt;code class="inline"&gt;SO_TIMESTAMPNS&lt;/code&gt; in the header files that promised nanosecond resolution. The problem? It wasn't documented in the manual page.&lt;/p&gt;

&lt;h2&gt;The first patch&lt;/h2&gt;
&lt;p&gt;After figuring out how to use the undocumented feature by looking at the kernel source code, Alejandro decided to ensure the next person wouldn't have to struggle. He cloned the man-pages repository, wrote a new paragraph based on existing features, and figured out how to send a plain-text patch via email.&lt;/p&gt;&lt;p&gt;
"As it was my first patch, I was a bit intimidated by the procedure," Alejandro recalls. That intimidation led to a commit message he is still proud of today: roughly 120 lines of explanation for just 25 lines of new documentation. He wanted to prove that he had done his homework. The welcoming response from the maintainer encouraged him to keep going, leading to more patches and, eventually, a career-long dedication to clarity in open source communities.&lt;/p&gt;

&lt;h2&gt;Sustaining the commons&lt;/h2&gt;
&lt;p&gt;Google understands that open source is a "small community built on trust." By supporting maintainers like Alejandro, we help ensure that critical infrastructure—like the documentation that powers the Linux ecosystem—remains accurate and accessible for everyone. We believe that using open source comes with a responsibility to contribute and sustain it, which is why we partner with developers to maintain and grow critical projects.&lt;/p&gt;&lt;p&gt;
Alejandro's work doesn't just help himself; it helps thousands of other programmers who rely on correct documentation to build the next generation of technology. As he puts it: "I couldn't program without correct documentation, so whenever I find an issue in documentation, I try to fix it."&lt;/p&gt;

&lt;h2&gt;A garden that needs tending&lt;/h2&gt;
&lt;p&gt;We often say that a community is a garden, not a building—it requires constant tending, not just initial construction. By sponsoring Alejandro, we are helping to tend that garden, ensuring the "manual" remains a living, breathing resource for the global developer ecosystem. Whether it is fixing a typo or documenting a high-precision networking macro, every contribution makes the "eyes" on the code that much sharper.&lt;/p&gt;</content><link href="http://www.blogger.com/feeds/8698702854482141883/posts/default/266167146090881789" rel="edit" type="application/atom+xml"/><link href="http://www.blogger.com/feeds/8698702854482141883/posts/default/266167146090881789" rel="self" type="application/atom+xml"/><link href="http://opensource.googleblog.com/2026/06/documenting-the-manual-how-curiosity-and-robotic-arms-led-to-a-career-in-open-source.html" rel="alternate" title="Documenting the manual: how curiosity and robotic arms led to a career in open source" type="text/html"/><author><name>Google Open Source</name><uri>http://www.blogger.com/profile/03718388509216889937</uri><email>noreply@blogger.com</email><gd:image height="16" rel="http://schemas.google.com/g/2005#thumbnail" src="https://img1.blogblog.com/img/b16-rounded.gif" width="16"/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" height="72" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgwzJszSMRbAj7eM_f4aXx0OqZW72VjPDjvgV7ew9WiCUvUgdFtqunL5ySeShN7KD_eCNFlYdJY6gDRMjLmC7CzSriHzAHwEdwyOYdbmN2T6GyLf8mgI3OHcY4e9vpsPe6AE_t5lbw3E5cdV91M78Z83vRFHL3Ny_wiGTDJsrPGkKPZ6cco0wwlWhaLt-8/s72-c/OSS-Logo-Banner.png" width="72"/></entry><entry><id>tag:blogger.com,1999:blog-8698702854482141883.post-1393140882587930163</id><published>2026-06-18T11:30:00.000-07:00</published><updated>2026-06-18T11:30:00.113-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="AI"/><category scheme="http://www.blogger.com/atom/ns#" term="Kubernetes"/><category scheme="http://www.blogger.com/atom/ns#" term="ML"/><title type="text">In-place pod restarts: Boosting efficiency and workload reliability in Kubernetes v1.35</title><content type="html">&lt;p class="byline"&gt;by &lt;author&gt;Duncan Campbell&lt;/author&gt; &amp;amp; &lt;author&gt;Giuseppe Tinti Tomio&lt;/author&gt;, Kubernetes&lt;/p&gt;

&lt;meta name="twitter:image" content="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg5Ew4zwACrflispkhfyO2RPltMX4eBYd9sSXXT5hNZ6G2FugX5WAu3wE3fpuJya824APcC0qjVwLxzwxqg2hK957Z4bln1aCl6_Pwwht9BQW6HF-cqjgdQZzRRvhV2qlar_m_t37Pkl5O4BptwMY1D2CX-g_U_x5XhXvrCiaU93gX0GwRTtyCEanRAQTU/s1600/Header%20-%20OSS%20-%20Kubernetes%20Gateway%20API%20graduates%20to%20GA%20%281%29.png"&gt;
&lt;img class="metadata" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg5Ew4zwACrflispkhfyO2RPltMX4eBYd9sSXXT5hNZ6G2FugX5WAu3wE3fpuJya824APcC0qjVwLxzwxqg2hK957Z4bln1aCl6_Pwwht9BQW6HF-cqjgdQZzRRvhV2qlar_m_t37Pkl5O4BptwMY1D2CX-g_U_x5XhXvrCiaU93gX0GwRTtyCEanRAQTU/s1600/Header%20-%20OSS%20-%20Kubernetes%20Gateway%20API%20graduates%20to%20GA%20%281%29.png"&gt;
&lt;a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg5Ew4zwACrflispkhfyO2RPltMX4eBYd9sSXXT5hNZ6G2FugX5WAu3wE3fpuJya824APcC0qjVwLxzwxqg2hK957Z4bln1aCl6_Pwwht9BQW6HF-cqjgdQZzRRvhV2qlar_m_t37Pkl5O4BptwMY1D2CX-g_U_x5XhXvrCiaU93gX0GwRTtyCEanRAQTU/s1600/Header%20-%20OSS%20-%20Kubernetes%20Gateway%20API%20graduates%20to%20GA%20%281%29.png" class="header-image"&gt;&lt;img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg5Ew4zwACrflispkhfyO2RPltMX4eBYd9sSXXT5hNZ6G2FugX5WAu3wE3fpuJya824APcC0qjVwLxzwxqg2hK957Z4bln1aCl6_Pwwht9BQW6HF-cqjgdQZzRRvhV2qlar_m_t37Pkl5O4BptwMY1D2CX-g_U_x5XhXvrCiaU93gX0GwRTtyCEanRAQTU/s1600/Header%20-%20OSS%20-%20Kubernetes%20Gateway%20API%20graduates%20to%20GA%20%281%29.png"/&gt;&lt;/a&gt;

&lt;p&gt;Operational efficiency and system resilience are critical when running scaled platforms. Yet, in Kubernetes, recovering from software crashes remains a headache because you couldn't trigger a clean restart of a Pod's containers without recreating the entire Pod object, leading to some amount of resource waste.&lt;br&gt;
To address this, &lt;strong&gt;Restart All Containers on Container Exits&lt;/strong&gt; graduated to beta and is enabled by default in Kubernetes v1.36. Developed in close collaboration with the CNCF community, this capability represents Google's commitment to investing in the success of foundation-led open source projects. By sharing best practices from running large distributed systems internally, we are helping build a more resilient and efficient ecosystem. Letting containers restart while keeping the Pod's runtime identity provides a built-in way to perform in-place Pod recovery, boosting application reliability and saving resource costs.&lt;/p&gt;

&lt;h2&gt;The Problem: The High Cost of Pod Re-creation&lt;/h2&gt;
&lt;p&gt;Historically, Kubernetes managed failures using pod level restart policies. While sufficient for simple services, modern multi-container Pods often have complex dependencies. When a failure requires a full environment reset, your only option was deleting and recreating the entire Pod.&lt;br&gt;
This introduces massive control plane churn, causing latency and pressure on the etcd backend during large failures:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Initialization Dependencies:&lt;/strong&gt; If a main container corrupts a local environment, for example, single-use secrets that must be re-requested, restarting just that container is insufficient; the setup must run again.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Watcher Interoperability:&lt;/strong&gt; If a watcher sidecar detects a fatal error, it must trigger a full recreate of the entire pod and its infrastructure, including the sandbox.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Stale States:&lt;/strong&gt; If a database sidecar proxy restarts, the main application can get stuck attempting to use stale, broken connections.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Resource Race Conditions:&lt;/strong&gt; When a large job finds a proper set of nodes, recreating Pods can lead to other pending Pods taking over those resources. In-place restarts eliminate this race condition risk.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Previously, resolving these failures required destroying the entire Pod. For large batch or AI/ML workloads, where thousands of Pods might fail simultaneously, this can lead to "Thundering Herd" scheduling requests, delaying recovery and wasting expensive GPU/TPU compute time.&lt;/p&gt;

&lt;h2&gt;Introducing In-Place Restarts: The RestartAllContainers Action&lt;/h2&gt;
&lt;p&gt;Kubernetes v1.35 introduces the &lt;code&gt;RestartAllContainers&lt;/code&gt; action, enabled by the &lt;code&gt;RestartAllContainersOnContainerExits&lt;/code&gt; feature gate, which graduated to beta in 1.36 alongside its dependencies &lt;code&gt;ContainerRestartRules&lt;/code&gt; and &lt;code&gt;NodeDeclaredFeatures&lt;/code&gt;. This lets a container's exit behavior trigger a fast, in-place restart of the entire Pod on its existing node.&lt;br&gt;
The Kubelet halts all containers while keeping the Pod sandbox intact, preserving critical infrastructure:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Network Identity:&lt;/strong&gt; Keeps the same IP, network namespace, and UID, completely bypassing IP reassignment.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Hardware and Devices:&lt;/strong&gt; Keeps GPUs/TPUs bound, eliminating scheduling and re-allocation delays.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Storage Mounts:&lt;/strong&gt; Volumes, including &lt;code&gt;emptyDir&lt;/code&gt; and PVCs, remain fully mounted; their content is not cleared during restarts.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Once terminated, the Kubelet re-runs init containers (including sidecars, which are part of the init sequence) in order, guaranteeing a clean setup in a known-good environment.&lt;/p&gt;

&lt;h3&gt;A Native Pod Specification Example&lt;/h3&gt;
&lt;p&gt;You can implement this under the container's &lt;code&gt;restartPolicyRules&lt;/code&gt; field. Here is a quick example of how a watcher sidecar can trigger an in-place restart of the entire Pod by exiting with code 88:&lt;br&gt;
YAML&lt;br&gt;
&lt;em&gt;Note: Image names and paths in the YAML below are for illustrative purposes.&lt;/em&gt;&lt;/p&gt;

&lt;pre&gt;&lt;code class="codebox yaml"&gt;apiVersion: v1
kind: Pod
metadata:
  name: ml-worker-pod
spec:
  restartPolicy: Never
  initContainers:
    - name: setup-environment
      image: registry.k8s.io/ml-tools/setup-worker:v1.0
    - name: watcher-sidecar
      image: registry.k8s.io/ml-tools/watcher:v1.0
      restartPolicy: Always
      restartPolicyRules:
        - action: RestartAllContainers
          exitCodes:
            operator: In
            values: [88]
  containers:
    - name: main-application
      image: registry.k8s.io/ml-tools/training-app:v1.0&lt;/code&gt;&lt;/pre&gt;

&lt;h2&gt;The Operational Impact of In-Place Restarts&lt;/h2&gt;
&lt;p&gt;For organizations running distributed workloads, &lt;code&gt;RestartAllContainers&lt;/code&gt; provides serious operational advantages:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;No Control Plane Overhead:&lt;/strong&gt; By preserving identity, clusters avoid scheduling latency and DNS propagation. This was a key factor for JobSet using this feature to reduce recovery from minutes to seconds.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Node Locality Preservation:&lt;/strong&gt; Since the Pod stays anchored to the same node, restarted containers can instantly access local, warm storage caches.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Maximized Hardware Efficiency:&lt;/strong&gt; In distributed AI training, losing a single node halts the entire job. Keeping accelerators like GPUs/TPUs bound lets workloads resume training significantly faster, directly reducing compute costs.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;Observability and SRE Best Practices&lt;/h2&gt;
&lt;p&gt;To support monitoring, Kubernetes v1.35 introduces the &lt;code&gt;AllContainersRestarting&lt;/code&gt; Pod condition. Set to &lt;code&gt;True&lt;/code&gt; during restarts, it alerts SREs and autoscalers, preventing false-positive alerts, while container restart counts increment to let Prometheus easily track recovery events.&lt;br&gt;
To use in-place restarts successfully, shift your mental model to "persistent sandboxes" and follow three best practices:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Ensure Reentrancy:&lt;/strong&gt; Kubelet only guarantees "at least once" execution for init containers. Reentrancy is now a standard requirement, so your code must be fully idempotent.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Plan for Termination Handling:&lt;/strong&gt; Graceful termination (&lt;code&gt;preStop&lt;/code&gt; hooks) is not supported for in-place restarts. SIGKILL is almost immediate, so applications must handle sudden exits gracefully.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Prepare External Tooling:&lt;/strong&gt; CD and observability tools should expect re-running init containers without interpreting them as new deployments.&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;What's Next?&lt;/h2&gt;
&lt;p&gt;This beta capability is a major step toward fluid workload management and serves as a building block for advanced community features like JobSet in-place restarts &lt;a href="https://github.com/kubernetes-sigs/jobset/issues/467"&gt;(KEP-467)&lt;/a&gt;.&lt;br&gt;
Our work on KEP-5532 reflects our commitment to transparent open source governance. Developed collaboratively within SIG Node, this feature shows how we hold ourselves to high citizenship standards; making our design, goals, and intentions transparent while building shared best practices that benefit everyone. We encourage you to experiment with Kubernetes v1.35 and share your feedback with the community!&lt;/p&gt;

&lt;h3&gt;Learn More&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Read the&lt;a href="https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle/"&gt; Kubernetes Pod Lifecycle Documentation&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;Explore&lt;a href="https://github.com/kubernetes/enhancements/tree/master/keps/sig-node/5532-restart-all-containers-on-container-exits"&gt; KEP-5532: Restart All Containers on Container Exits&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;Review the&lt;a href="https://kubernetes.io/blog/2026/01/02/kubernetes-v1-35-restart-all-containers/"&gt;Kubernetes v1.35: Restart All Containers Blog Post&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;Join the&lt;a href="https://github.com/kubernetes/community/tree/master/sig-node"&gt; SIG Node Community&lt;/a&gt; on Slack (#sig-node).&lt;/li&gt;
&lt;/ul&gt;

&lt;/body&gt;
&lt;/html&gt;</content><link href="http://www.blogger.com/feeds/8698702854482141883/posts/default/1393140882587930163" rel="edit" type="application/atom+xml"/><link href="http://www.blogger.com/feeds/8698702854482141883/posts/default/1393140882587930163" rel="self" type="application/atom+xml"/><link href="http://opensource.googleblog.com/2026/06/in-place-pod-restarts-boosting-efficiency-and-workload-reliability-in-kubernetes-v135.html" rel="alternate" title="In-place pod restarts: Boosting efficiency and workload reliability in Kubernetes v1.35" type="text/html"/><author><name>Google Open Source</name><uri>http://www.blogger.com/profile/03718388509216889937</uri><email>noreply@blogger.com</email><gd:image height="16" rel="http://schemas.google.com/g/2005#thumbnail" src="https://img1.blogblog.com/img/b16-rounded.gif" width="16"/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" height="72" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg5Ew4zwACrflispkhfyO2RPltMX4eBYd9sSXXT5hNZ6G2FugX5WAu3wE3fpuJya824APcC0qjVwLxzwxqg2hK957Z4bln1aCl6_Pwwht9BQW6HF-cqjgdQZzRRvhV2qlar_m_t37Pkl5O4BptwMY1D2CX-g_U_x5XhXvrCiaU93gX0GwRTtyCEanRAQTU/s72-c/Header%20-%20OSS%20-%20Kubernetes%20Gateway%20API%20graduates%20to%20GA%20%281%29.png" width="72"/></entry><entry><id>tag:blogger.com,1999:blog-8698702854482141883.post-4460796859081887477</id><published>2026-06-16T16:16:03.340-07:00</published><updated>2026-06-16T16:16:03.340-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Agentic commerce"/><category scheme="http://www.blogger.com/atom/ns#" term="ai agents"/><category scheme="http://www.blogger.com/atom/ns#" term="interoperability"/><category scheme="http://www.blogger.com/atom/ns#" term="Open standards"/><category scheme="http://www.blogger.com/atom/ns#" term="UCP"/><category scheme="http://www.blogger.com/atom/ns#" term="Universal Commerce Protocol"/><title type="text">Open rails for agentic commerce at Open Source Summit North America 2026</title><content type="html">&lt;p class="byline"&gt;by &lt;author&gt;Anurag Sinha&lt;/author&gt;, Universal Commerce Protocol (UCP)&lt;/p&gt;

&lt;meta name="twitter:image" content="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgc2fYra8LJTC8sZ_rK-KscSyz9UHx7azyMuizvxLtak201XtUwiUsGugZ9r41eAfOQQaRrcaacGHSVC29JmYRl9jag3mx3I0FE31vi8pQdS42z5sM_JsYLzdiTE5WcYqOvJObjo8wVwpMlAq_OGwogI2rhkEG7y3LiKKMLKuTDuR20bcXAp8W8jReV5ww/s1600/googleossblogp--pjbv222c6ic.jpg"&gt;
&lt;img class="metadata" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgc2fYra8LJTC8sZ_rK-KscSyz9UHx7azyMuizvxLtak201XtUwiUsGugZ9r41eAfOQQaRrcaacGHSVC29JmYRl9jag3mx3I0FE31vi8pQdS42z5sM_JsYLzdiTE5WcYqOvJObjo8wVwpMlAq_OGwogI2rhkEG7y3LiKKMLKuTDuR20bcXAp8W8jReV5ww/s1600/googleossblogp--pjbv222c6ic.jpg"&gt;

&lt;p&gt;At Open Source Summit North America 2026, I shared why agentic commerce needs open rails.&lt;/p&gt;

&lt;p&gt;As AI agents become more capable, the shopping journey is shifting from "show me" to "help me." Instead of browsing, comparing, clicking, and checking out step by step, people can increasingly ask an agent to help them decide what to buy and, in some cases, complete the purchase. Industry forecasts suggest agentic shopping could account for roughly 10% to 25% of U.S. e-commerce by 2030 (&lt;a href="https://www.bain.com/insights/2030-forecast-how-agentic-ai-will-reshape-us-retail-snap-chart/?utm_source=chatgpt.com"&gt;Bain&lt;/a&gt;), which points to a meaningful shift in how digital commerce will work. Watch the full keynote &lt;a href="https://youtu.be/FmrJNTqRTVM?si=Kh2M0TKBv8uRZc6a"&gt;here&lt;/a&gt;.&lt;/p&gt;

&lt;h2&gt;Why shared rules matter&lt;/h2&gt;

&lt;p&gt;That shift also exposes a challenge. Commerce is still highly fragmented. Different businesses, payment providers, and platforms operate with their own rules, workflows, and business logic. Every new surface adds more integration work. Every bespoke connection creates more complexity. And that fragmentation makes it harder for AI systems to understand and perform commerce actions consistently across businesses. A shared language lowers that barrier for everyone.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;A common language for agentic commerce&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;That is the problem &lt;a href="https://ucp.dev/"&gt;Universal Commerce Protocol (UCP)&lt;/a&gt;  is designed to solve.&lt;/p&gt;

&lt;p&gt;We launched the Universal Commerce Protocol, or UCP, with industry leaders to establish an open standard for agentic commerce, built to work across the shopping journey. UCP creates a common language for agents and systems to operate together across consumer surfaces, businesses, and payment providers, so the ecosystem does not need a different bespoke integration for every new agent or platform.&lt;/p&gt;

&lt;p&gt;Just as importantly, UCP is designed for the real world. Every business has its own way of selling. Checkout, fulfillment, loyalty, policy logic, shipping, and post-purchase flows can vary widely between a local shop, a marketplace, and a large retailer. UCP is built to support that reality.&lt;/p&gt;
&lt;figure class="wide borderless"&gt;
  &lt;a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgc2fYra8LJTC8sZ_rK-KscSyz9UHx7azyMuizvxLtak201XtUwiUsGugZ9r41eAfOQQaRrcaacGHSVC29JmYRl9jag3mx3I0FE31vi8pQdS42z5sM_JsYLzdiTE5WcYqOvJObjo8wVwpMlAq_OGwogI2rhkEG7y3LiKKMLKuTDuR20bcXAp8W8jReV5ww/s1600/googleossblogp--pjbv222c6ic.jpg"&gt;&lt;img alt="A diagram of the Universal Commerce Protocol (UCP), subtitled 'The common language for platforms, agents and businesses.' It illustrates a central UCP framework containing modules for 'Shopping' and 'Common' services, flanked by 'Consumer platforms' on the left and 'Business platforms' on the right, with bidirectional arrows showing how they connect and communicate through the central protocol." src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgc2fYra8LJTC8sZ_rK-KscSyz9UHx7azyMuizvxLtak201XtUwiUsGugZ9r41eAfOQQaRrcaacGHSVC29JmYRl9jag3mx3I0FE31vi8pQdS42z5sM_JsYLzdiTE5WcYqOvJObjo8wVwpMlAq_OGwogI2rhkEG7y3LiKKMLKuTDuR20bcXAp8W8jReV5ww/s1600/googleossblogp--pjbv222c6ic.jpg"&gt;&lt;/a&gt;
&lt;/figure&gt;

&lt;h2&gt;A layered architecture for a shared commerce language&lt;/h2&gt;

&lt;p&gt;UCP uses a layered model to create a reusable shared language for commerce. &lt;strong&gt;Services&lt;/strong&gt; organize domains like shopping and common. &lt;strong&gt;Capabilities&lt;/strong&gt; define core actions such as checkout, catalog, cart, orders, and shared functions like identity linking. &lt;strong&gt;Extensions&lt;/strong&gt; keep those capabilities configurable, so features like fulfillment can be modeled once and reused across multiple flows instead of being hardwired each time. At the &lt;strong&gt;transport&lt;/strong&gt; layer, UCP stays agnostic, supporting bindings like REST, Model Context Protocol, and Agent2Agent.&lt;/p&gt;

&lt;p&gt;Together with capability discovery and payment handling, these layers help consumer platforms, agents, and businesses interoperate more consistently over time. They also let different participants advertise what they support, compose new behaviors, and communicate over the transport that works best for them.&lt;/p&gt;

&lt;h2&gt;Built in the open&lt;/h2&gt;

&lt;p&gt;A standard for everyone should be shaped by everyone. Because UCP is open, merchants, developers, and community contributors can pressure-test real-world gaps, propose new capabilities and extensions, and help make sure the protocol reflects more than the needs of the largest players. That kind of participation is what keeps an ecosystem moving.&lt;/p&gt;

&lt;p&gt;Since launch, UCP has continued to evolve through &lt;a href="https://blog.google/products-and-platforms/products/shopping/ucp-updates/"&gt;new capabilities&lt;/a&gt;, an &lt;a href="https://github.com/Universal-Commerce-Protocol/ucp/discussions/379"&gt;expanded Tech Council&lt;/a&gt;, and &lt;a href="https://blog.google/products-and-platforms/products/shopping/google-shopping-cart/"&gt;new consumer experiences&lt;/a&gt; built on top of the protocol. That momentum matters because standards only work when the ecosystem uses them.&lt;/p&gt;

&lt;h2&gt;Watch the full keynote&lt;/h2&gt;

&lt;p&gt;Agentic commerce is still evolving, and UCP is a foundational building block to support what's next in this new era.&lt;/p&gt;

&lt;p&gt;If you want the full architecture walkthrough and the complete story from Open Source Summit North America, watch the session &lt;a href="https://youtu.be/FmrJNTqRTVM?si=Kh2M0TKBv8uRZc6a"&gt;here&lt;/a&gt;. And if you want to go deeper, you can explore the &lt;a href="https://github.com/Universal-Commerce-Protocol/ucp/blob/main/docs/documentation/core-concepts.md"&gt;UCP documentation&lt;/a&gt;, join the &lt;a href="https://github.com/Universal-Commerce-Protocol/ucp/discussions"&gt;community conversation&lt;/a&gt;, and &lt;a href="https://github.com/Universal-Commerce-Protocol/.github/blob/c2d3fc8d9c5a16dc21a9f24ad0e80e525158e1ad/CONTRIBUTING.md?plain=1#L4"&gt;contribute&lt;/a&gt; to the public repository.&lt;/p&gt;</content><link href="http://www.blogger.com/feeds/8698702854482141883/posts/default/4460796859081887477" rel="edit" type="application/atom+xml"/><link href="http://www.blogger.com/feeds/8698702854482141883/posts/default/4460796859081887477" rel="self" type="application/atom+xml"/><link href="http://opensource.googleblog.com/2026/06/open-rails-for-agentic-commerce-at-open-source-summit-north-america-2026.html" rel="alternate" title="Open rails for agentic commerce at Open Source Summit North America 2026" type="text/html"/><author><name>Google Open Source</name><uri>http://www.blogger.com/profile/03718388509216889937</uri><email>noreply@blogger.com</email><gd:image height="16" rel="http://schemas.google.com/g/2005#thumbnail" src="https://img1.blogblog.com/img/b16-rounded.gif" width="16"/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" height="72" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgc2fYra8LJTC8sZ_rK-KscSyz9UHx7azyMuizvxLtak201XtUwiUsGugZ9r41eAfOQQaRrcaacGHSVC29JmYRl9jag3mx3I0FE31vi8pQdS42z5sM_JsYLzdiTE5WcYqOvJObjo8wVwpMlAq_OGwogI2rhkEG7y3LiKKMLKuTDuR20bcXAp8W8jReV5ww/s72-c/googleossblogp--pjbv222c6ic.jpg" width="72"/></entry><entry><id>tag:blogger.com,1999:blog-8698702854482141883.post-3620387533815124427</id><published>2026-06-16T11:30:00.000-07:00</published><updated>2026-06-16T11:35:23.428-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="C++"/><category scheme="http://www.blogger.com/atom/ns#" term="CEL"/><category scheme="http://www.blogger.com/atom/ns#" term="Common Expression Language"/><category scheme="http://www.blogger.com/atom/ns#" term="Go"/><category scheme="http://www.blogger.com/atom/ns#" term="Java"/><category scheme="http://www.blogger.com/atom/ns#" term="Python"/><title type="text">CEL finds a new home at github.com/cel-expr!</title><content type="html">&lt;p class="byline"&gt;by &lt;author&gt;Olena Huang&lt;/author&gt;, CEL (Common Expression Language) team&lt;/p&gt;
&lt;meta name="twitter:image" content="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhuKigzFt1kkyx3eqlthONlcc6yKytKeoDmT2ADbA8GpreYwX_3zW2faeNB1D7F-NImDReaJs0TKdTB-gJjzKxhKpUaEXJef-PU2gIAJEfSrmvoUrLiBcyfqcxBrfYkP2TKUSIsY9SnuFVIAWVr_zFoJhyphenhyphen-pg_7XTlpt1dvs_yCce1obzhNJJkIC2umV8A/s1600/Cel_FullColor_RGB_notype.png"&gt;
&lt;img class="metadata" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhuKigzFt1kkyx3eqlthONlcc6yKytKeoDmT2ADbA8GpreYwX_3zW2faeNB1D7F-NImDReaJs0TKdTB-gJjzKxhKpUaEXJef-PU2gIAJEfSrmvoUrLiBcyfqcxBrfYkP2TKUSIsY9SnuFVIAWVr_zFoJhyphenhyphen-pg_7XTlpt1dvs_yCce1obzhNJJkIC2umV8A/s1600/Cel_FullColor_RGB_notype.png"&gt;
&lt;a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhuKigzFt1kkyx3eqlthONlcc6yKytKeoDmT2ADbA8GpreYwX_3zW2faeNB1D7F-NImDReaJs0TKdTB-gJjzKxhKpUaEXJef-PU2gIAJEfSrmvoUrLiBcyfqcxBrfYkP2TKUSIsY9SnuFVIAWVr_zFoJhyphenhyphen-pg_7XTlpt1dvs_yCce1obzhNJJkIC2umV8A/s1600/Cel_FullColor_RGB_notype.png" class="header-image"&gt;&lt;img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhuKigzFt1kkyx3eqlthONlcc6yKytKeoDmT2ADbA8GpreYwX_3zW2faeNB1D7F-NImDReaJs0TKdTB-gJjzKxhKpUaEXJef-PU2gIAJEfSrmvoUrLiBcyfqcxBrfYkP2TKUSIsY9SnuFVIAWVr_zFoJhyphenhyphen-pg_7XTlpt1dvs_yCce1obzhNJJkIC2umV8A/s1600/Cel_FullColor_RGB_notype.png"/&gt;&lt;/a&gt;

&lt;p&gt;We're excited to announce that the official Common Expression Language (CEL) repositories have moved to a dedicated GitHub organization. Visit the new&lt;a href="https://github.com/cel-expr"&gt; cel-expr repository&lt;/a&gt; now!&lt;/p&gt;&lt;p&gt;
&lt;h2&gt;Why the move?&lt;/h2&gt;
&lt;p&gt;This move is a key step in strengthening the CEL ecosystem. By centralizing our projects, including the language specification, Go, C++, C, Java, and Python implementations, under the &lt;code&gt;cel-expr&lt;/code&gt; organization, we aim to:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Enhance Branding:&lt;/strong&gt; Create a clear and unified brand identity for CEL.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Improve Discoverability:&lt;/strong&gt; Make it easier for users and contributors to find all official CEL resources in one place.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Ensure Consistency:&lt;/strong&gt; Foster consistency across all CEL projects.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Streamline Development:&lt;/strong&gt; Simplify our development and release processes.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;What's Changing?&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;
The following repositories now reside in the &lt;code&gt;cel-expr&lt;/code&gt; organization:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;google/cel-spec&lt;/code&gt; is now &lt;code&gt;cel-expr/cel-spec&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;google/cel-cpp&lt;/code&gt; is now &lt;code&gt;cel-expr/cel-cpp&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;google/cel-go&lt;/code&gt; is now &lt;code&gt;cel-expr/cel-go&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;google/cel-java&lt;/code&gt; is now &lt;code&gt;cel-expr/cel-java&lt;/code&gt;&lt;/li&gt;
  &lt;li&gt;&lt;code&gt;cel-expr/cel-python&lt;/code&gt; and &lt;code&gt;cel-expr/cel-c&lt;/code&gt; have already been in the &lt;code&gt;cel-expr&lt;/code&gt; namespace&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;All future development, issues, and pull requests for these projects will take place in their new homes within the &lt;code&gt;cel-expr&lt;/code&gt; organization. This is a non-breaking change, due to automatic redirects, but you should update your URLs where possible.&lt;/p&gt;&lt;p&gt;
&lt;strong&gt;What Stays the Same?&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;
We've worked to make this transition as seamless as possible:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Automatic Redirects:&lt;/strong&gt; GitHub will automatically redirect all web traffic and &lt;code&gt;git&lt;/code&gt; operations from the old &lt;code&gt;google/cel-*&lt;/code&gt; URLs to the new &lt;code&gt;cel-expr/cel-*&lt;/code&gt; locations. Your existing links and &lt;code&gt;git remote&lt;/code&gt; configurations pointing to the old URLs should continue to work for cloning and fetching.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Preserved History:&lt;/strong&gt; The full commit history, issues, and pull requests for each repository have been migrated and are available in the new locations.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Action Required: Update Your Dependencies&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;
While existing links and &lt;code&gt;git remote&lt;/code&gt; configurations pointing to the old URLs should continue to work thanks to GitHub's redirects, we recommend updating your dependency management configurations (e.g., &lt;code&gt;go.mod&lt;/code&gt;, &lt;code&gt;pom.xml&lt;/code&gt;, &lt;code&gt;requirements.txt&lt;/code&gt;, etc.) to point directly to the new repository URLs under &lt;code&gt;https://github.com/cel-expr&lt;/code&gt;. This ensures you are fetching the latest code and releases from the canonical source.&lt;/p&gt;&lt;p&gt;
We're thrilled about this new chapter for CEL, bringing all our core components under one roof. We believe this will foster a stronger CEL community and accelerate the development and adoption of CEL.&lt;/p&gt;&lt;p&gt;
Explore the new organization at&lt;a href="https://github.com/cel-expr"&gt; https://github.com/cel-expr&lt;/a&gt;!&lt;/p&gt;</content><link href="http://www.blogger.com/feeds/8698702854482141883/posts/default/3620387533815124427" rel="edit" type="application/atom+xml"/><link href="http://www.blogger.com/feeds/8698702854482141883/posts/default/3620387533815124427" rel="self" type="application/atom+xml"/><link href="http://opensource.googleblog.com/2026/06/cel-finds-a-new-home-at-githubcomcel-expr.html" rel="alternate" title="CEL finds a new home at github.com/cel-expr!" type="text/html"/><author><name>Google Open Source</name><uri>http://www.blogger.com/profile/03718388509216889937</uri><email>noreply@blogger.com</email><gd:image height="16" rel="http://schemas.google.com/g/2005#thumbnail" src="https://img1.blogblog.com/img/b16-rounded.gif" width="16"/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" height="72" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhuKigzFt1kkyx3eqlthONlcc6yKytKeoDmT2ADbA8GpreYwX_3zW2faeNB1D7F-NImDReaJs0TKdTB-gJjzKxhKpUaEXJef-PU2gIAJEfSrmvoUrLiBcyfqcxBrfYkP2TKUSIsY9SnuFVIAWVr_zFoJhyphenhyphen-pg_7XTlpt1dvs_yCce1obzhNJJkIC2umV8A/s72-c/Cel_FullColor_RGB_notype.png" width="72"/></entry><entry><id>tag:blogger.com,1999:blog-8698702854482141883.post-3751922856933307705</id><published>2026-06-12T11:30:00.000-07:00</published><updated>2026-06-12T11:30:00.174-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="API"/><category scheme="http://www.blogger.com/atom/ns#" term="developer tools"/><category scheme="http://www.blogger.com/atom/ns#" term="Go"/><category scheme="http://www.blogger.com/atom/ns#" term="open source"/><category scheme="http://www.blogger.com/atom/ns#" term="pkg.go.dev"/><title type="text">A new pkg.go.dev API for Go</title><content type="html">&lt;p class="byline"&gt;by &lt;author&gt;Ethan Lee&lt;/author&gt;, &lt;author&gt;Jonathan Amsterdam&lt;/author&gt; &amp;amp; &lt;author&gt;Hana Kim&lt;/author&gt;, Go Team&lt;/p&gt;

&lt;meta name="twitter:image" content="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiFNoOmR1PsXqbzB2TBKQUpkLkSok2fXOowPDw3JbaqN-t3iwGA3Z0mZ-RbNJge2Hqa8ULy9Ir71B9tzRpHazi79G7-Mt_gqf6gBq0p6wF9BSt6I4eVuJfa-syBXIHBzhn0l2FXpCmBNBf7isZOb97amHTg96BTro2J643PHvLP89sogMfAzU1YA_o09dU/s1600/golang-construction-blocks.jpeg"&gt;
&lt;img class="metadata" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiFNoOmR1PsXqbzB2TBKQUpkLkSok2fXOowPDw3JbaqN-t3iwGA3Z0mZ-RbNJge2Hqa8ULy9Ir71B9tzRpHazi79G7-Mt_gqf6gBq0p6wF9BSt6I4eVuJfa-syBXIHBzhn0l2FXpCmBNBf7isZOb97amHTg96BTro2J643PHvLP89sogMfAzU1YA_o09dU/s1600/golang-construction-blocks.jpeg"&gt;
&lt;a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiFNoOmR1PsXqbzB2TBKQUpkLkSok2fXOowPDw3JbaqN-t3iwGA3Z0mZ-RbNJge2Hqa8ULy9Ir71B9tzRpHazi79G7-Mt_gqf6gBq0p6wF9BSt6I4eVuJfa-syBXIHBzhn0l2FXpCmBNBf7isZOb97amHTg96BTro2J643PHvLP89sogMfAzU1YA_o09dU/s1600/golang-construction-blocks.jpeg" class="header-image"&gt;&lt;img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiFNoOmR1PsXqbzB2TBKQUpkLkSok2fXOowPDw3JbaqN-t3iwGA3Z0mZ-RbNJge2Hqa8ULy9Ir71B9tzRpHazi79G7-Mt_gqf6gBq0p6wF9BSt6I4eVuJfa-syBXIHBzhn0l2FXpCmBNBf7isZOb97amHTg96BTro2J643PHvLP89sogMfAzU1YA_o09dU/s1600/golang-construction-blocks.jpeg"/&gt;&lt;/a&gt;

&lt;p&gt;
Access to Go metadata has been an everpresent need for the Go community. Since its launch, &lt;a href="http://pkg.go.dev"&gt;pkg.go.dev&lt;/a&gt; has served as a central hub for Go package documentation and discovery. While we initially prioritized providing this comprehensive access via a web interface, the need for streamlined programmatic access has become increasingly clear.
&lt;/p&gt;
&lt;p&gt;
Structured API access has been one of the most highly requested features for &lt;a href="http://pkg.go.dev"&gt;pkg.go.dev&lt;/a&gt; for a while now. Developers building tools, IDE integrations, automated workflows, and other systems have had to rely on inconsistent and fragile scraping methods. By providing a formal API, we can provide fast and efficient access to required data. This foundation also sets Go up for the future of AI-assisted coding. Large language models and agents can access the context necessary to reason about the Go ecosystem with greater precision and accuracy. 
&lt;/p&gt;
&lt;h2&gt;Empowering Tool Builders&lt;/h2&gt;


&lt;p&gt;
Our goal with this API is to reduce the technical churn for builders and innovators. By offering structured JSON metadata, we address the following use cases:
&lt;/p&gt;
&lt;ul&gt;

&lt;li&gt;&lt;strong&gt;Search and Discovery: &lt;/strong&gt;The API enables fast and efficient search across the entire Go module ecosystem.&lt;/li&gt;

&lt;li&gt;&lt;strong&gt;Driving AI Innovation:&lt;/strong&gt; As AI-assisted coding evolves, LLMs and agents need precise context. This API provides the data required for agents and models to reason deterministically about Go packages.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;The Service Interface&lt;/h2&gt;


&lt;p&gt;
Built for stability and efficient caching, the API uses a stateless, GET-only architecture. Primary endpoints are currently hosted under the &lt;code&gt;v1beta&lt;/code&gt; path. Following a period of feedback from the Go community and confirmed stability, we intend to transition toward a formal &lt;code&gt;v1&lt;/code&gt; release.
&lt;/p&gt;
&lt;p&gt;
For a complete interactive reference of all endpoints, query parameters, and
response shapes, see &lt;a href="http://pkg.go.dev/api"&gt;pkg.go.dev/api&lt;/a&gt;. The machine-readable API contract is also published directly at &lt;a href="http://pkg.go.dev/v1beta/openapi.yaml"&gt;pkg.go.dev/v1beta/openapi.yaml&lt;/a&gt;.
&lt;/p&gt;

&lt;table&gt;
  &lt;tr&gt;
   &lt;td&gt;&lt;strong&gt;Endpoint&lt;/strong&gt;
   &lt;/td&gt;
   &lt;td&gt;&lt;strong&gt;Description&lt;/strong&gt;
   &lt;/td&gt;
  &lt;/tr&gt;
  &lt;tr&gt;
   &lt;td&gt;&lt;code&gt;/v1beta/imported-by/{path}&lt;/code&gt;
   &lt;/td&gt;
   &lt;td&gt;Paths of packages importing the package at &lt;code&gt;{path}&lt;/code&gt;.
   &lt;/td&gt;
  &lt;/tr&gt;
  &lt;tr&gt;
   &lt;td&gt;&lt;code&gt;/v1beta/module/{path}&lt;/code&gt;
   &lt;/td&gt;
   &lt;td&gt;Information about the module at &lt;code&gt;{path}&lt;/code&gt;.
   &lt;/td&gt;
  &lt;/tr&gt;
  &lt;tr&gt;
   &lt;td&gt;&lt;code&gt;/v1beta/package/{path}&lt;/code&gt;
   &lt;/td&gt;
   &lt;td&gt;Information about the package at &lt;code&gt;{path}&lt;/code&gt;.
   &lt;/td&gt;
  &lt;/tr&gt;
  &lt;tr&gt;
   &lt;td&gt;&lt;code&gt;/v1beta/packages/{path}&lt;/code&gt;
   &lt;/td&gt;
   &lt;td&gt;Information about packages of the module at &lt;code&gt;{path}&lt;/code&gt;.
   &lt;/td&gt;
  &lt;/tr&gt;
  &lt;tr&gt;
   &lt;td&gt;&lt;code&gt;/v1beta/search/search?q={query}&lt;/code&gt;
   &lt;/td&gt;
   &lt;td&gt;Search results for a given query.
   &lt;/td&gt;
  &lt;/tr&gt;
  &lt;tr&gt;
   &lt;td&gt;&lt;code&gt;/v1beta/symbols/{path}&lt;/code&gt;
   &lt;/td&gt;
   &lt;td&gt;List of symbols declared by the package at &lt;code&gt;{path}&lt;/code&gt;.
   &lt;/td&gt;
  &lt;/tr&gt;
  &lt;tr&gt;
   &lt;td&gt;&lt;code&gt;/v1beta/versions/{path}&lt;/code&gt;
   &lt;/td&gt;
   &lt;td&gt;Versions of the module at &lt;code&gt;{path}&lt;/code&gt;.
   &lt;/td&gt;
  &lt;/tr&gt;
  &lt;tr&gt;
   &lt;td&gt;&lt;code&gt;/v1beta/vulns/{path}&lt;/code&gt;
   &lt;/td&gt;
   &lt;td&gt;Vulnerabilities of the module or package at &lt;code&gt;{path}&lt;/code&gt;.
   &lt;/td&gt;
  &lt;/tr&gt;
&lt;/table&gt;


&lt;p&gt;
An example of retrieving package information is shown below:
&lt;/p&gt;

&lt;pre&gt;&lt;code class="codebox bash"&gt;curl https://pkg.go.dev/v1beta/package/github.com/google/go-cmp/cmp | jq
{
  "modulePath": "github.com/google/go-cmp",
  "version": "v0.7.0",
  "isLatest": true,
  "isStandardLibrary": false,
  "goos": "all",
  "goarch": "all",
  "path": "github.com/google/go-cmp/cmp",
  "name": "cmp",
  "synopsis": "Package cmp determines equality of values.",
  "isRedistributable": true
}&lt;/code&gt;&lt;/pre&gt;

&lt;h2&gt;A Reference Implementation&lt;/h2&gt;


&lt;p&gt;
To demonstrate how to interact with our API, we are providing a reference CLI implementation: &lt;code&gt;pkgsite-cli&lt;/code&gt;. This implementation serves as a practical example for developers looking to build their own integrations, showing how to handle the data directly from the terminal. Note, as the API continues to evolve, the interface and behavior of this CLI may change.
&lt;/p&gt;
&lt;p&gt;
You can use it to search for packages or inspect symbols without leaving your shell:
&lt;/p&gt;

&lt;pre&gt;&lt;code class="codebox bash"&gt;go install golang.org/x/pkgsite/cmd/internal/pkgsite-cli@latest

pkgsite-cli search "uuid"
github.com/google/uuid
  Module:   github.com/google/uuid@v1.6.0
  Synopsis: Package uuid generates and inspects UUIDs.
... more


pkgsite-cli package github.com/google/go-cmp/cmp
github.com/google/go-cmp/cmp
  Name:      cmp
  Module:    github.com/google/go-cmp
  Version:   v0.7.0 (latest)
  Synopsis:  Package cmp determines equality of values.

pkgsite-cli package --symbols github.com/google/go-cmp/cmp
github.com/google/go-cmp/cmp
  Name:     cmp
  Module:   github.com/google/go-cmp
  Version:  v0.7.0 (latest)
  Synopsis: Package cmp determines equality of values.

Symbols:
  type Indirect struct{}
  type MapIndex struct{}
  type Option interface{}
  ... more&lt;/code&gt;&lt;/pre&gt;

&lt;h2&gt;Looking Ahead&lt;/h2&gt;


&lt;p&gt;
While we prioritize stability for our new &lt;code&gt;/v1beta&lt;/code&gt; endpoints, we are eager to hear how open source communities use these resources to solve real-world problems. 
&lt;/p&gt;
&lt;p&gt;
We look forward to your feedback via our &lt;a href="https://github.com/golang/go/issues"&gt;issue tracker&lt;/a&gt; and to seeing the tools you’ll build next.
&lt;/p&gt;</content><link href="http://www.blogger.com/feeds/8698702854482141883/posts/default/3751922856933307705" rel="edit" type="application/atom+xml"/><link href="http://www.blogger.com/feeds/8698702854482141883/posts/default/3751922856933307705" rel="self" type="application/atom+xml"/><link href="http://opensource.googleblog.com/2026/06/a-new-pkggodev-api-for-go.html" rel="alternate" title="A new pkg.go.dev API for Go" type="text/html"/><author><name>Google Open Source</name><uri>http://www.blogger.com/profile/03718388509216889937</uri><email>noreply@blogger.com</email><gd:image height="16" rel="http://schemas.google.com/g/2005#thumbnail" src="https://img1.blogblog.com/img/b16-rounded.gif" width="16"/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" height="72" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiFNoOmR1PsXqbzB2TBKQUpkLkSok2fXOowPDw3JbaqN-t3iwGA3Z0mZ-RbNJge2Hqa8ULy9Ir71B9tzRpHazi79G7-Mt_gqf6gBq0p6wF9BSt6I4eVuJfa-syBXIHBzhn0l2FXpCmBNBf7isZOb97amHTg96BTro2J643PHvLP89sogMfAzU1YA_o09dU/s72-c/golang-construction-blocks.jpeg" width="72"/></entry><entry><id>tag:blogger.com,1999:blog-8698702854482141883.post-4582839326820896806</id><published>2026-06-11T11:30:00.000-07:00</published><updated>2026-06-11T11:30:00.236-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="fine-tuning"/><category scheme="http://www.blogger.com/atom/ns#" term="GKE"/><category scheme="http://www.blogger.com/atom/ns#" term="Kubernetes"/><category scheme="http://www.blogger.com/atom/ns#" term="LLMs"/><category scheme="http://www.blogger.com/atom/ns#" term="post-training"/><category scheme="http://www.blogger.com/atom/ns#" term="reinforcement learning"/><category scheme="http://www.blogger.com/atom/ns#" term="RL"/><category scheme="http://www.blogger.com/atom/ns#" term="SFT"/><title type="text">Introducing OpenRL: A self-hosted post-training API for fine-tuning LLMs</title><content type="html">&lt;p class="byline"&gt;by &lt;author&gt;Sunil Arora&lt;/author&gt;, &lt;author&gt;Shuby Mishra&lt;/author&gt; &amp;amp; &lt;author&gt;Chuang Wang&lt;/author&gt;, GKE&lt;/p&gt;

&lt;meta name="twitter:image" content="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiOEKPnVOVnRIjpF8TRd-VHzplpwpToUR-Jlue4HygDnEMkk4wSH-pNe_bQ65djsOsjtTuC6YS56dcqcOZPBer90Rp7JtcZqOtvqK617hMVGirOlP-UuQ_6eJ_1NPHYZkGXrkZE2FIJwPELakSFiTjcgxZebJbsGOffFn8dXyWWHtAmE_CH8LpBGyxTJWM/s1600/image1.png"&gt;
&lt;img class="metadata" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiOEKPnVOVnRIjpF8TRd-VHzplpwpToUR-Jlue4HygDnEMkk4wSH-pNe_bQ65djsOsjtTuC6YS56dcqcOZPBer90Rp7JtcZqOtvqK617hMVGirOlP-UuQ_6eJ_1NPHYZkGXrkZE2FIJwPELakSFiTjcgxZebJbsGOffFn8dXyWWHtAmE_CH8LpBGyxTJWM/s1600/image1.png"&gt;

&lt;p&gt;We are pleased to share a research preview of &lt;a href="https://github.com/gke-labs/open-rl"&gt;OpenRL&lt;/a&gt;, a new open-source project coming out of GKE Labs. OpenRL is a self-hosted training API for fine-tuning LLMs on your own Kubernetes cluster.&lt;/p&gt;

&lt;h2&gt;Why we built it&lt;/h2&gt;
&lt;p&gt;If you look at agentic RL on LLMs, it is incredibly easy to get bogged down in system complexity. To run a single RL loop, you have to coordinate a dozen different things: selecting and cleaning datasets, choosing RL environments, debugging training loops, managing reward signals, handling inference mismatches, allocating hardware, and managing infrastructure. Picture looks something like this:&lt;/p&gt;

&lt;figure class="wide"&gt;
  &lt;a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiOEKPnVOVnRIjpF8TRd-VHzplpwpToUR-Jlue4HygDnEMkk4wSH-pNe_bQ65djsOsjtTuC6YS56dcqcOZPBer90Rp7JtcZqOtvqK617hMVGirOlP-UuQ_6eJ_1NPHYZkGXrkZE2FIJwPELakSFiTjcgxZebJbsGOffFn8dXyWWHtAmE_CH8LpBGyxTJWM/s1600/image1.png"&gt;&lt;img alt="an AI researcher and an infrastructure engineer staring at the hurdles in post training along the way to the summit" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiOEKPnVOVnRIjpF8TRd-VHzplpwpToUR-Jlue4HygDnEMkk4wSH-pNe_bQ65djsOsjtTuC6YS56dcqcOZPBer90Rp7JtcZqOtvqK617hMVGirOlP-UuQ_6eJ_1NPHYZkGXrkZE2FIJwPELakSFiTjcgxZebJbsGOffFn8dXyWWHtAmE_CH8LpBGyxTJWM/s1600/image1.png"&gt;&lt;/a&gt;
  &lt;figcaption&gt;Figure shows an AI researcher and an infrastructure engineer staring at the hurdles in post training along the way to the summit.&lt;/figcaption&gt;
&lt;/figure&gt;

&lt;p&gt;Each of these is a hard problem. But what makes it more complex is how tightly AI research and infrastructure concerns are mixed together in today's tooling and frameworks. &lt;/p&gt;

&lt;p&gt;We believe decoupling the infrastructure from AI research can make these problems more tractable so that infrastructure engineers and AI researchers can independently tackle them. We have seen this pattern with Kubernetes where Kubernetes abstracted out the infrastructure and made application developers and SREs life easier.&lt;/p&gt;

&lt;p&gt;So, can you abstract out post training infrastructure? We believe so and drew huge inspiration/validation from &lt;a href="https://thinkingmachines.ai/tinker/"&gt;Tinker&lt;/a&gt; (from &lt;a href="https://thinkingmachines.ai/"&gt;Thinking Machines&lt;/a&gt;). The Tinker APIs for post training hit that Goldilocks zone where it hides all the post training infrastructure behind four key APIs:&lt;/p&gt;


&lt;figure class="wide"&gt;
  &lt;a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEirNirBzlWBzVJCouW68wb9A5QlvADoivHFsdlCBg3jXQ7GXi4GJanx115Z6SMau7lDv2yloGe46aslIkvav8rntZglTDX1UcLYZnmJjG9nyPEAjDOF3xuOpo-XQal28iKhrhMjfsDc4XSF2IwlT5Y8MPgGA8ZNtlkLRTvtv3Lb8wMpZeOBHs79hVk3lRY/s1600/image2.png"&gt;&lt;img alt="high level components and their interaction in a OpenRL based RL workflow" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEirNirBzlWBzVJCouW68wb9A5QlvADoivHFsdlCBg3jXQ7GXi4GJanx115Z6SMau7lDv2yloGe46aslIkvav8rntZglTDX1UcLYZnmJjG9nyPEAjDOF3xuOpo-XQal28iKhrhMjfsDc4XSF2IwlT5Y8MPgGA8ZNtlkLRTvtv3Lb8wMpZeOBHs79hVk3lRY/s1600/image2.png"&gt;&lt;/a&gt;
  &lt;figcaption&gt;Figure shows high level components and their interaction in a OpenRL based RL workflow&lt;/figcaption&gt;
&lt;/figure&gt;

&lt;p&gt;So the end result of this abstraction is that AI Researchers get full flexibility on their RL loop and infrastructure engineers can focus on scaling, orchestration, and reliability. OpenRL allows you to run the same training APIs but on your own infrastructure. And this decoupling has other interesting benefits.&lt;/p&gt;

&lt;h2&gt;Sharing GPUs&lt;/h2&gt;
&lt;p&gt;Traditional RL loops are strictly sequential. The trainer waits for the sampler to finish rollouts, the sampler waits for the environment to score rewards (which is often bound by slow CPU/network tasks), and the whole loop sits blocked. Your expensive GPUs spend a lot of time doing nothing. The abstraction allows running multiple RL jobs and allows infrastructure engineers to pack the training/sampling steps to utilize more of their GPUs. The graph below shows the GPU consumption in OpenRL for running one, two, and three RL jobs concurrently. &lt;/p&gt;


&lt;figure class="wide"&gt;
  &lt;a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhBp6nxP36bv10a7H877HT4vcmPgT7wxjJesV-z7DF729XAvELagtpkkIT8zNTcfOIHe6rrPTiqEKnXJDwsG1aWJMfVZyc7rVjHf2HLUQp85b4-qVT6ZlqNL1O3kXCDFUXF6dlW6VEN-0lksqEDxfApNNqNi_XnRmZm2-8pVIhaqeX2BZbxmYvSDNqmsqc/s1600/image3.png"&gt;&lt;img alt="The figure shows the trainer/sampler duty cycle in OpenRL for scenarios with 1 RL job, 2RL jobs and 3 RL jobs respectively" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhBp6nxP36bv10a7H877HT4vcmPgT7wxjJesV-z7DF729XAvELagtpkkIT8zNTcfOIHe6rrPTiqEKnXJDwsG1aWJMfVZyc7rVjHf2HLUQp85b4-qVT6ZlqNL1O3kXCDFUXF6dlW6VEN-0lksqEDxfApNNqNi_XnRmZm2-8pVIhaqeX2BZbxmYvSDNqmsqc/s1600/image3.png"&gt;&lt;/a&gt;
  &lt;figcaption&gt;The figure shows the trainer/sampler duty cycle in OpenRL for scenarios with 1 RL job, 2RL jobs and 3 RL jobs respectively.&lt;/figcaption&gt;
&lt;/figure&gt;

&lt;h2&gt;Better UX&lt;/h2&gt;
&lt;p&gt;Once you separate out the infrastructure behind the APIs, you start to see the gains in user experience of developing the RL loop because AI researchers no longer have to wrangle the complex python dependencies like cuda. When you are doing R&amp;D, you do not have to run the RL loop directly on the machines with GPUs, you can simply run your RL loop on your Mac pointing to the training APIs running on a Kubernetes cluster/VMs.&lt;/p&gt;

&lt;h2&gt;Autoresearch&lt;/h2&gt;
&lt;p&gt;We believe that frontier AI research will get more and more automated in the future and abstracting out infrastructure as a building block is key to that. To demonstrate that, we added an &lt;a href="https://github.com/gke-labs/open-rl/tree/main/examples/autoresearch"&gt;autoresearch &lt;/a&gt;recipe inspired heavily by &lt;a href="https://github.com/karpathy"&gt;karpathy&lt;/a&gt;'s work. The recipe demonstrates how to conduct parallel experiments to conduct parameter sweep, and improve the reward signal for our text-to-sql recipe for Gemma models.&lt;/p&gt;

&lt;figure class="wide"&gt;
  &lt;a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjJlJofdL0cBILoY9_-M-mLkxqVzs_JdXouPFYjilgFGvMj7TryVP_IJKHvHDRBwW6xcDfpheljqmRmMtRncrv5gzemQQ609__wrv5MYmnt6eD-Z4ftoZDQAqaAgvmiwH7B6vQSradMpfpBZnCl-X762aaL6s8CEwAK8YKKP-J1ZiUYh5l3a-HQjlmbbM0/s1600/image4.png"&gt;&lt;img alt="Figure showing autoresearch UI with multiple AI researchers conducting experiments in parallel in OpenRL" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjJlJofdL0cBILoY9_-M-mLkxqVzs_JdXouPFYjilgFGvMj7TryVP_IJKHvHDRBwW6xcDfpheljqmRmMtRncrv5gzemQQ609__wrv5MYmnt6eD-Z4ftoZDQAqaAgvmiwH7B6vQSradMpfpBZnCl-X762aaL6s8CEwAK8YKKP-J1ZiUYh5l3a-HQjlmbbM0/s1600/image4.png"&gt;&lt;/a&gt;
  &lt;figcaption&gt;Figure showing autoresearch UI with multiple AI researchers conducting experiments in parallel in OpenRL&lt;/figcaption&gt;
&lt;/figure&gt;

&lt;h2&gt;What OpenRL is not&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;A managed service. OpenRL is self-hosted and not a managed service. We aim to make it easy for users to deploy and operate it on their Kubernetes clusters.&lt;/li&gt;
&lt;li&gt;An RL framework. OpenRL gives AI researchers full control over their RL loop.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;Get started&lt;/h2&gt;
&lt;p&gt;We have made it easy to run OpenRL on your Mac, Nvidia GPUs, or on GKE. This allows you to test your RL loop on Mac and when you are ready to scale, you can point the RL loop to the OpenRL endpoint running in the GKE cluster.&lt;/p&gt;

&lt;p&gt;Try out our text-to-SQL example for teaching the latest Gemma model SQL here: &lt;a href="https://github.com/gke-labs/open-rl#documentation--guides"&gt;guides&lt;/a&gt;. &lt;/p&gt;

&lt;p&gt;One of the benefits of a Tinker compatible endpoint is that you can use &lt;a href="https://github.com/thinking-machines-lab/tinker-cookbook"&gt;Tinker-Cookbook&lt;/a&gt; with OpenRL. Tinker-cookbook is one of the best resources for post training infrastructure for RL.&lt;/p&gt;

&lt;h2&gt;Future steps&lt;/h2&gt;
&lt;p&gt;We have started with a simple architecture focussing on LoRA fine-tuning and plan to evolve the project in the coming months, so please &lt;a href="https://github.com/gke-labs/open-rl#documentation--guides"&gt;give it a try&lt;/a&gt; and &lt;a href="https://github.com/gke-labs/open-rl/issues"&gt;share your feedback&lt;/a&gt;. A few things we are very excited to work on:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Full parameter fine-tuning&lt;/li&gt;
&lt;li&gt;Multitenancy (simultaneous RL on different types of base models)&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;Acknowledgement&lt;/h2&gt;
&lt;p&gt;We have been inspired by the work done by various open source projects in AI communities, so huge thank you to &lt;a href="https://thinkingmachines.ai/"&gt;Thinking Machines&lt;/a&gt;, &lt;a href="https://github.com/vllm-project/vllm"&gt;vLLM&lt;/a&gt;, &lt;a href="https://pytorch.org/"&gt;PyTorch&lt;/a&gt;, &lt;a href="https://github.com/PrimeIntellect-ai/prime-rl"&gt;prime-rl&lt;/a&gt;, &lt;a href="https://github.com/volcengine/verl"&gt;verl&lt;/a&gt;, &lt;a href="https://github.com/novasky-ai/skyrl"&gt;SkyRL&lt;/a&gt;, and &lt;a href="https://github.com/llm-d/llm-d"&gt;llm-d&lt;/a&gt;.&lt;/p&gt;</content><link href="http://www.blogger.com/feeds/8698702854482141883/posts/default/4582839326820896806" rel="edit" type="application/atom+xml"/><link href="http://www.blogger.com/feeds/8698702854482141883/posts/default/4582839326820896806" rel="self" type="application/atom+xml"/><link href="http://opensource.googleblog.com/2026/06/introducing-openrl-a-self-hosted-post-training-api-for-fine-tuning-llms.html" rel="alternate" title="Introducing OpenRL: A self-hosted post-training API for fine-tuning LLMs" type="text/html"/><author><name>Google Open Source</name><uri>http://www.blogger.com/profile/03718388509216889937</uri><email>noreply@blogger.com</email><gd:image height="16" rel="http://schemas.google.com/g/2005#thumbnail" src="https://img1.blogblog.com/img/b16-rounded.gif" width="16"/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" height="72" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiOEKPnVOVnRIjpF8TRd-VHzplpwpToUR-Jlue4HygDnEMkk4wSH-pNe_bQ65djsOsjtTuC6YS56dcqcOZPBer90Rp7JtcZqOtvqK617hMVGirOlP-UuQ_6eJ_1NPHYZkGXrkZE2FIJwPELakSFiTjcgxZebJbsGOffFn8dXyWWHtAmE_CH8LpBGyxTJWM/s72-c/image1.png" width="72"/></entry><entry><id>tag:blogger.com,1999:blog-8698702854482141883.post-734247288504799357</id><published>2026-06-10T11:30:00.000-07:00</published><updated>2026-06-10T11:30:00.115-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="AI-integrated"/><category scheme="http://www.blogger.com/atom/ns#" term="developer tools"/><category scheme="http://www.blogger.com/atom/ns#" term="Eclipse Foundation"/><category scheme="http://www.blogger.com/atom/ns#" term="Google OSPO"/><title type="text">Google joins the Eclipse Foundation as a strategic member to accelerate AI-integrated developer tools</title><content type="html">&lt;p class="byline"&gt;by &lt;author&gt;amanda casari&lt;/author&gt; &amp;amp; &lt;author&gt;Mike Bufano&lt;/author&gt;, Google Open Source&lt;/p&gt;

&lt;meta name="twitter:image" content="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhNijTzxvJb9zyENB372ENrP4IzBXlRHWoGuPN9WTIvNfcm_YhMR6PvXBVEaWyKyl8V5WtMJKUCrASISk6GNKXBmtBuGrHfXXwuvKSOA0YmktWcB2BaaXdIbEVRWXaZLM4Bt-6qA5LFE_YZ18pKMboCYq_gpv75iktjWzDZwBY6OMur5gM1NCJOlfgLolc/s1600/google_eclipseFoundation.jpeg"&gt;
&lt;img class="metadata" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhNijTzxvJb9zyENB372ENrP4IzBXlRHWoGuPN9WTIvNfcm_YhMR6PvXBVEaWyKyl8V5WtMJKUCrASISk6GNKXBmtBuGrHfXXwuvKSOA0YmktWcB2BaaXdIbEVRWXaZLM4Bt-6qA5LFE_YZ18pKMboCYq_gpv75iktjWzDZwBY6OMur5gM1NCJOlfgLolc/s1600/google_eclipseFoundation.jpeg"&gt;

&lt;a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhNijTzxvJb9zyENB372ENrP4IzBXlRHWoGuPN9WTIvNfcm_YhMR6PvXBVEaWyKyl8V5WtMJKUCrASISk6GNKXBmtBuGrHfXXwuvKSOA0YmktWcB2BaaXdIbEVRWXaZLM4Bt-6qA5LFE_YZ18pKMboCYq_gpv75iktjWzDZwBY6OMur5gM1NCJOlfgLolc/s1600/google_eclipseFoundation.jpeg" class="header-image"&gt;&lt;img border="0" alt="A simple image with the Google logo a plus sign and the Eclipse Foundation logo" class="ratio-5-1" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhNijTzxvJb9zyENB372ENrP4IzBXlRHWoGuPN9WTIvNfcm_YhMR6PvXBVEaWyKyl8V5WtMJKUCrASISk6GNKXBmtBuGrHfXXwuvKSOA0YmktWcB2BaaXdIbEVRWXaZLM4Bt-6qA5LFE_YZ18pKMboCYq_gpv75iktjWzDZwBY6OMur5gM1NCJOlfgLolc/s1600/google_eclipseFoundation.jpeg"/&gt;&lt;/a&gt;

&lt;p&gt;&lt;em&gt;Collaboration with the Eclipse Foundation will support open infrastructure for AI-integrated developer platforms like Google Antigravity, while advancing broader open source security and regulatory compliance initiatives&lt;/em&gt;&lt;/p&gt;&lt;p&gt;
As of April 2026, Google has joined the &lt;a href="http://eclipse.org"&gt;Eclipse Foundation&lt;/a&gt; as a Strategic Member, reflecting the company's continued investment in open source technologies and modern developer infrastructure.&lt;/p&gt;&lt;p&gt;
As part of this collaboration, Google will additionally sponsor &lt;a href="https://open-vsx.org/"&gt;Open VSX&lt;/a&gt; and is among the first adopters of the recently announced &lt;a href="https://managed.open-vsx.org/"&gt;Open VSX Managed Registry&lt;/a&gt; service. Open VSX is the open source, vendor-neutral extension registry for tools built on the VS Code™ extension API. It powers a rapidly growing ecosystem of AI-integrated IDEs, cloud development environments, and developer platforms, including Google Antigravity, AWS's Kiro, Cursor, and, Windsurf among many others.&lt;/p&gt;&lt;p&gt;
As a Strategic Member, Google will participate in the Eclipse Foundation's Board of Directors and Technical Advisory Council, helping guide the technical and strategic direction of one of the world's leading open source software foundations.&lt;/p&gt;&lt;p&gt;
"The industry is feeling the massive turning point as AI continues to change how developers write, deploy, and maintain software," said amanda casari of Google's Open Source Programs Office and new Eclipse Board member. "Joining The Eclipse Foundation as a Strategic Member ensures that the next generation of AI-integrated developer experiences—including platforms like Google Antigravity—are built in partnership with transparent, vendor-neutral foundations. Open registries, like Open VSX, are critical infrastructure which keep the global developer ecosystem open to everyone."&lt;/p&gt;&lt;p&gt;
Google and the Eclipse Foundation share a deep history, having collaborated across numerous initiatives since 2006. This Strategic Membership elevates the relationship and support critical to modern initiatives like &lt;a href="https://open-vsx.org/members"&gt;Open VSX&lt;/a&gt;, &lt;a href="https://orcwg.org/"&gt;Open Regulatory Compliance (ORC)&lt;/a&gt;, and &lt;a href="https://adoptium.net/"&gt;Adoptium&lt;/a&gt;.&lt;/p&gt;&lt;p&gt;
"Google has played a pivotal role in open source innovation for two decades," said Mike Milinkovich, Executive Director of the Eclipse Foundation. "Their decision to join as a Strategic Member reflects the growing importance of open collaboration in supporting global regulatory compliance efforts, strengthening open source infrastructure, securing supply chains, and advancing the next generation of AI-integrated developer platforms."&lt;/p&gt;&lt;p&gt;
The Eclipse Foundation continues to see explosive growth as adoption accelerates across AI-integrated developer tooling and cloud development environments.  The Open VSX registry now scales to meet massive global demand:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;300 million+ downloads per month&lt;/li&gt;
&lt;li&gt;200 million requests during peak daily traffic&lt;/li&gt;
&lt;li&gt;12,000+ hosted extensions from over 8,000 publishers.&lt;/li&gt;
&lt;/ul&gt;</content><link href="http://www.blogger.com/feeds/8698702854482141883/posts/default/734247288504799357" rel="edit" type="application/atom+xml"/><link href="http://www.blogger.com/feeds/8698702854482141883/posts/default/734247288504799357" rel="self" type="application/atom+xml"/><link href="http://opensource.googleblog.com/2026/06/google-joins-the-eclipse-foundation-as-a-strategic-member-to-accelerate-ai-integrated-developer-tools.html" rel="alternate" title="Google joins the Eclipse Foundation as a strategic member to accelerate AI-integrated developer tools" type="text/html"/><author><name>Google Open Source</name><uri>http://www.blogger.com/profile/03718388509216889937</uri><email>noreply@blogger.com</email><gd:image height="16" rel="http://schemas.google.com/g/2005#thumbnail" src="https://img1.blogblog.com/img/b16-rounded.gif" width="16"/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" height="72" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhNijTzxvJb9zyENB372ENrP4IzBXlRHWoGuPN9WTIvNfcm_YhMR6PvXBVEaWyKyl8V5WtMJKUCrASISk6GNKXBmtBuGrHfXXwuvKSOA0YmktWcB2BaaXdIbEVRWXaZLM4Bt-6qA5LFE_YZ18pKMboCYq_gpv75iktjWzDZwBY6OMur5gM1NCJOlfgLolc/s72-c/google_eclipseFoundation.jpeg" width="72"/></entry><entry><id>tag:blogger.com,1999:blog-8698702854482141883.post-1079462220247759540</id><published>2026-06-08T11:30:00.000-07:00</published><updated>2026-06-09T12:52:35.207-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="ML Dev Tools"/><category scheme="http://www.blogger.com/atom/ns#" term="TPU Optimization"/><category scheme="http://www.blogger.com/atom/ns#" term="TPU Performance"/><title type="text">Unlocking TPU performance: Deep kernel profiling with XProf</title><content type="html">&lt;p class="byline"&gt;by &lt;author&gt;Yogesh SY&lt;/author&gt;, AI Infra Google&lt;/p&gt;

&lt;meta name="twitter:image" content="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgyawZoe_5bOmqP15Dj73GBllZbc9wBhV_AX0h-ci7VW8VAz7lzZbeWNq0o7peEUEQJrv-stBUZCgWGhqSbQssweMDLYYUOTh9DphjF_E4URQLSRnTxUcKGA5CYw95c8D9x96kAxlzcidXHDEg7N0bDB-hdAAYU_-QvNhiF8KAlGD6aqoGXjhIdE5obXeo/s1600/Gemini_Generated_Image_ftel8wftel8wftel.jpeg"&gt;
&lt;img class="metadata" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgyawZoe_5bOmqP15Dj73GBllZbc9wBhV_AX0h-ci7VW8VAz7lzZbeWNq0o7peEUEQJrv-stBUZCgWGhqSbQssweMDLYYUOTh9DphjF_E4URQLSRnTxUcKGA5CYw95c8D9x96kAxlzcidXHDEg7N0bDB-hdAAYU_-QvNhiF8KAlGD6aqoGXjhIdE5obXeo/s1600/Gemini_Generated_Image_ftel8wftel8wftel.jpeg"&gt;
&lt;a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgyawZoe_5bOmqP15Dj73GBllZbc9wBhV_AX0h-ci7VW8VAz7lzZbeWNq0o7peEUEQJrv-stBUZCgWGhqSbQssweMDLYYUOTh9DphjF_E4URQLSRnTxUcKGA5CYw95c8D9x96kAxlzcidXHDEg7N0bDB-hdAAYU_-QvNhiF8KAlGD6aqoGXjhIdE5obXeo/s1600/Gemini_Generated_Image_ftel8wftel8wftel.jpeg" class="header-image"&gt;&lt;img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgyawZoe_5bOmqP15Dj73GBllZbc9wBhV_AX0h-ci7VW8VAz7lzZbeWNq0o7peEUEQJrv-stBUZCgWGhqSbQssweMDLYYUOTh9DphjF_E4URQLSRnTxUcKGA5CYw95c8D9x96kAxlzcidXHDEg7N0bDB-hdAAYU_-QvNhiF8KAlGD6aqoGXjhIdE5obXeo/s1600/Gemini_Generated_Image_ftel8wftel8wftel.jpeg"/&gt;&lt;/a&gt;

&lt;!doctype html&gt;
&lt;html&gt;
&lt;head&gt;
&lt;title&gt;Unlocking TPU performance: Deep kernel profiling with XProf&lt;/title&gt;
&lt;meta charset="UTF-8"&gt;
&lt;style&gt;
table {
  border-collapse:collapse;
  border:1px solid #ccc;
}
tbody, tr, td {
  border:inherit;
  border-collapse:inherit;
}
td {
  padding:5px;
}
&lt;/style&gt;
&lt;/head&gt;
&lt;body&gt;
&lt;p&gt;As machine learning workloads scale to unprecedented heights, developers are increasingly writing highly specialized Tensor Processing Unit (TPU) kernels using frameworks like Pallas, Mosaic, and Triton to maximize hardware performance.&lt;/p&gt;

&lt;p&gt;However, customizing high-performance kernels has historically introduced a major engineering challenge: &lt;strong&gt;&lt;em&gt;optimization blind spots&lt;/em&gt;&lt;/strong&gt;. To legacy performance profilers, custom compilation paths appear as opaque execution paths. Developers are left with single, massive execution blocks in their trace captures, lacking granular visibility into what is actually occurring inside the chip's internal components. Did a vector processing instruction stall? Was matrix math idle due to data loading bottlenecks?&lt;/p&gt;

&lt;p&gt;Traditional profiling relies heavily on compile-time static cost models to estimate kernel efficiency. While helpful for standard operations, these models cannot capture dynamic runtime realities like instruction execution stalls, memory subsystem congestion, or hardware scheduling conflicts.&lt;/p&gt;

&lt;p&gt;To open this opaque execution path, we are excited to introduce the Kernel Profiling suite in &lt;strong&gt;XProf&lt;/strong&gt;—a low-level hardware debugging suite engineered specifically for Pallas kernel authoring and optimization on Google TPUs. By combining static compilation tracking with dynamic, sub-microsecond hardware telemetry, XProf Kernel provides the deep transparency required to optimize high-scale ML workloads.&lt;/p&gt;

&lt;h2&gt;Deep visibility: HLO Graphs &amp;amp; MLIR Inspection&lt;/h2&gt;
&lt;p&gt;The first step in debugging any custom kernel is understanding how your high-level code is translated by the compiler. When compiling a JAX or PyTorch model, the compiler generates a High-Level Optimizer (HLO) graph. Previously, custom calls inside these graphs remained completely obscured.&lt;/p&gt;

&lt;p&gt;XProf's updated Graph Viewer resolves this by exposing the internal compilation logic of these custom regions directly. To unlock this deep visibility, developers must pass the appropriate debug flags to the XLA compilation environment.&lt;br&gt;
&lt;em&gt;--xla_enable_custom_call_region_trace=true &lt;/em&gt;&lt;br&gt;
&lt;em&gt;--xla_xprof_register_llo_debug_info=true&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;Once these flags are active, any trace captured via XProf includes comprehensive compiler metadata. In the XProf Graph Viewer, clicking on a custom-call block reveals an interactive panel titled "Custom Call Text." This displays the raw, lowered MLIR (Multi-Level Intermediate Representation) code generated by the compiler.&lt;/p&gt;
  
&lt;figure class="wide"&gt;
  &lt;a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg8k4MmittrMrnYlKelmhFpm5_HzIqCxAy9AqyBA37NMWvo-Twe1h1pv-ELv_yc8SVeVn68W80aowXRBbB8qiBv_AUefWnvg8tm2Ckw5767IbRCLQT3WFc5iVXFZ1l0Cke77NIA-EmO3zp5RKmGQYErlcUexJy46X80dd3pQHD6mHguy3ffbXtnJlL6gJA/s1600/Custom%20Call.png"&gt;&lt;img alt="A screenshot of the TensorBoard XProf interface displaying an HLO graph, with a Custom Call Text panel open to reveal raw MLIR code" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg8k4MmittrMrnYlKelmhFpm5_HzIqCxAy9AqyBA37NMWvo-Twe1h1pv-ELv_yc8SVeVn68W80aowXRBbB8qiBv_AUefWnvg8tm2Ckw5767IbRCLQT3WFc5iVXFZ1l0Cke77NIA-EmO3zp5RKmGQYErlcUexJy46X80dd3pQHD6mHguy3ffbXtnJlL6gJA/s1600/Custom%20Call.png"&gt;&lt;/a&gt;
  &lt;figcaption&gt;Figure 1: XProf interface displaying an HLO graph, with a "Custom Call Text" panel to reveal raw MLIR code&lt;/figcaption&gt;
&lt;/figure&gt;

&lt;p&gt;By displaying the MLIR text side-by-side with high-level source-code representations, developers can immediately verify whether the compiler is correctly fusing operations and structuring memory tiles as intended.&lt;/p&gt;

&lt;h2&gt;Tracing Instrumented Low-Level Operations (LLO) Analysis&lt;/h2&gt;
&lt;p&gt;To provide cycle-level execution visibility, XProf exposes Low-Level Operations (LLO) bundle data directly inside the Trace Viewer. An LLO bundle represents the actual machine instructions issued to the TPU core's functional units during every clock cycle.&lt;/p&gt;

&lt;p&gt;Through dynamic instrumentation, XProf inserts hardware markers exactly when a LLO bundle region executes. Within the Trace Viewer, this manifests as dedicated, time-aligned execution tracks representing the TPU bundle's slot utilization metrics from static analysis:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;MXU (Matrix Multiply Unit):&lt;/strong&gt; Tracks active, busy cycles of high-throughput matrix-multiplication pipelines.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Scalar and Vector ALUs:&lt;/strong&gt; Displays the execution profile of mathematical operations, letting  you spot pipeline imbalances.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Vector Fills, Loads, Spills, and Stores:&lt;/strong&gt; Exposes HBM-to-register data movement, critical for identifying bandwidth-throttling bottlenecks.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;XLU (Cross-Lane Unit):&lt;/strong&gt; Monitors collective communications and data shuffling across physical TPU cores.&lt;/li&gt;
&lt;/ul&gt;

&lt;figure class="wide"&gt;
  &lt;a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjSKjXXrs0Z2dix7T5MmmaUeoApbO6LAUJ_UlWdDLp163gspYtn3XZm_iatrIB_-h4-hl2xHeBI1n_cUI-5p9vSXzOrpbE8_eWN2KHyk_zoorFv7qJSnqKyVNPldZXKTG9kf6mtcq-XoZspy3tnYVc7PnQRcyikj5IK2VCOoOe2HtZDTf87TNAKQdLiOhY/s1600/llo_utilization.png"&gt;&lt;img alt="XProf Capture Profile trace viewer interface showing dynamic hardware execution tracks" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjSKjXXrs0Z2dix7T5MmmaUeoApbO6LAUJ_UlWdDLp163gspYtn3XZm_iatrIB_-h4-hl2xHeBI1n_cUI-5p9vSXzOrpbE8_eWN2KHyk_zoorFv7qJSnqKyVNPldZXKTG9kf6mtcq-XoZspy3tnYVc7PnQRcyikj5IK2VCOoOe2HtZDTf87TNAKQdLiOhY/s1600/llo_utilization.png"&gt;&lt;/a&gt;
  &lt;figcaption&gt;Figure 2: XProf Capture Profile trace viewer interface showing dynamic hardware execution tracks&lt;/figcaption&gt;
&lt;/figure&gt;

&lt;h2&gt;Runtime Performance Counter Sampling&lt;/h2&gt;
&lt;p&gt;While static analysis effectively verifies instruction counts or vector store logic, it remains detached from the dynamic realities of runtime execution. To bridge this gap, XProf introduces &lt;strong&gt;&lt;em&gt;fine-grained, periodic performance counter sampling&lt;/em&gt;&lt;/strong&gt;—available starting with TPU v7 (Ironwood). This capability empowers developers to move beyond static estimation and measure precisely how hardware blocks are utilized in real-time, providing the empirical ground truth needed to identify whether compute units are truly active or stalled by memory subsystems.&lt;/p&gt;

&lt;p&gt;Consider the optimization of a tiled matrix multiplication (Matmul) kernel. While a static trace might indicate a logically perfect sequence of operations, real-world performance often falters if the Matrix Multiply Unit (MXU) sits idle while awaiting data from High-Bandwidth Memory (HBM). To diagnose and resolve such bottlenecks, developers can utilize a structured three-step profiling workflow:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Set up the Profiling Environment:&lt;/strong&gt; Configure the TPU v7 (Ironwood) runtime by defining specific hardware counters—such as scalar issues or synchronization waits.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Capture a Kernel Profile:&lt;/strong&gt; Use the XProf request interface to capture fine-grained performance counters, which can then be visualized as a time-series within the Trace Viewer.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Interpret the Data:&lt;/strong&gt; Analyze the resulting counters to distinguish between a &lt;strong&gt;Memory-Bound Scenario&lt;/strong&gt; (characterized by massive spikes in &lt;code&gt;sync_wait&lt;/code&gt;) and an &lt;strong&gt;Optimized Scenario&lt;/strong&gt;. For instance, implementing triple buffering to overlap memory loads with MXU compute can reduce runtime from 125.5µs to 88µs—a ~30% performance gain validated by a drastic reduction in synchronization events.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;By shifting from static code inspection to empirical runtime telemetry, hardware behavior explicitly validates optimization strategies, ensuring every cycle on the silicon is spent productively. For a hands-on example to check out these techniques, please explore our &lt;a href="https://github.com/openxla/xprof/blob/master/docs/xprof_kernel_demo.ipynb"&gt;Pallas Matmul w/ Perf Counters&lt;/a&gt; demo.&lt;/p&gt;

&lt;figure class="wide"&gt;
  &lt;a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg0n7CCoMvtz5mDoX0l2SsjUuWDD93YYDVB1wrI9gz0r8zdpDUgIb0Dh330E_m-XC2b69QAaqv1yYw3HJ4ghbw86w8DNMnKZ9FVodEEdvcPj-YWJYLNulWSj9xOKsIi029-rENfGnJEavzB7sVcQRr2BmjWMk9hx4U_vjgf6cFNSHd_Ij8Y_Kme3Q9Bg5M/s1600/unlockingtpupe--u18h53ct5od.png"&gt;&lt;img alt="XProf timeline highlighting a comparison between a detailed Runtime Perf Counter section sampling at a 1-microsecond frequency and a Static LLO Region track below it" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg0n7CCoMvtz5mDoX0l2SsjUuWDD93YYDVB1wrI9gz0r8zdpDUgIb0Dh330E_m-XC2b69QAaqv1yYw3HJ4ghbw86w8DNMnKZ9FVodEEdvcPj-YWJYLNulWSj9xOKsIi029-rENfGnJEavzB7sVcQRr2BmjWMk9hx4U_vjgf6cFNSHd_Ij8Y_Kme3Q9Bg5M/s1600/unlockingtpupe--u18h53ct5od.png"&gt;&lt;/a&gt;
  &lt;figcaption&gt;Figure 3: XProf timeline highlighting a comparison between a detailed "Runtime Perf Counter" section sampling at a 1-microsecond frequency and a "Static LLO Region" track below it&lt;/figcaption&gt;
&lt;/figure&gt;
  
&lt;h3&gt;Visualizing the "Utilization Gap"&lt;/h3&gt;
&lt;p&gt;This dynamic tracking exposes the significant gap left by traditional static analysis tools. A static tool analyzes instructions linearly, completely ignoring time. It might flag an MXU instruction block as "100% Utilized."&lt;/p&gt;

&lt;p&gt;In contrast, XProf plots &lt;em&gt;actual&lt;/em&gt; hardware execution over time. You might discover that a long-running Scalar ALU operation is stalling the entire execution pipeline, leaving the powerful MXU completely idle. By visualizing these temporal idle gaps, developers can adjust data shapes, memory alignments, and instruction sequencing to maximize compute density.&lt;/p&gt;

&lt;figure class="wide"&gt;
&lt;pre&gt;&lt;code class="codebox"&gt;STATIC ESTIMATION:
[========== Block Execution: MXU Flagged 100% Utilized ==========]

XPROF REAL-WORLD TIMELINE:
├─ [Scalar ALU (Active)] ─┼─ [MXU (Active)] ─┼── [MXU (Idle / Memory Stall)] ──┤
│ Stalling pipeline...     │ Compute phase     │ Starved; waiting for HBM Load    │
&lt;/code&gt;&lt;/pre&gt;
&lt;figcaption&gt;Figure 4 : The UI shows the active TPU Core functional unit tracks (MXU, Scalar ALU, Vector ALU, and memory data pipelines) aligned side-by-side with the active framework Ops, exposing exact execution times and real-time idle cycles.&lt;/figcaption&gt;
&lt;/figure&gt;

&lt;h2&gt;Overall Utilization from Performance Counters&lt;/h2&gt;
&lt;p&gt;Navigating profiling metrics can be daunting. Relying on metrics calculated via compile-time cost models often misrepresents performance when applied to custom compilation paths. To solve this, XProf establishes a clear &lt;strong&gt;Hierarchy of Trust&lt;/strong&gt;:&lt;/p&gt;

&lt;figure class="wide"&gt;
&lt;pre&gt;&lt;code class="codebox"&gt;                  ┌───────────────────────────────┐
                  │     Absolute Ground Truth     │
                  │  (HBM, Hardware Registers,    │ (100% Trustworthy)
                  │       TPO Metrics, CSRs)      │
                  └───────────────┬───────────────┘
                                  ▼
                  ┌───────────────────────────────┐
                  │       Estimated Metrics       │
                  │   (Program Optimal FLOPs,     │ (Requires caution with
                  │      Goodput Efficiency)      │  custom compiling paths)
                  └───────────────────────────────┘&lt;/code&gt;&lt;/pre&gt;
  &lt;figcaption&gt;Figure 5: Hierarchy of Metrics&lt;/figcaption&gt;&lt;/figure&gt;
&lt;ol&gt;
    &lt;li&gt;&lt;strong&gt;The Absolute Ground Truth (100% Trustworthy):&lt;/strong&gt; Metrics derived directly from physical hardware registers (HBM utilization, TPO metrics, unprivileged hardware stats). When profiling custom kernels, these represent physical reality and should be your primary optimization anchors.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Estimated Metrics (Use with Caution):&lt;/strong&gt; Metrics like "Compared to program optimal FLOPS" or "Goodput efficiency" rely on XLA cost models. Because custom compilation paths bypass standard passes, these metrics can be highly skewed or outright non-functional.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;For the unvarnished truth, XProf exposes the &lt;strong&gt;Perf Counters View&lt;/strong&gt;, providing direct, tabular access to over 16,000 raw hardware counters read straight from the TPU silicon.&lt;/p&gt;

&lt;figure class="wide"&gt;
  &lt;a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEijF3-9NjhilI2bsXtZzLFwxoU6BUp939OgEsKs4jZaVAK36ahMclqlWmLGGPReFrrdfbn5Nkq9O-0be0ByTFUSttq3E5a2RE26SlxvvEVTWqrww2REQvDXFWFJnkILTnvFKSzDZGP9VtKA9v6uA1so0SKiqDJaTD74hMkQ_jW9MWmADsffVZQGSc4SylA/s1600/Raw%20Counters.png"&gt;&lt;img alt="A screenshot of the XProf Perf Counters tabular view, displaying a list of unprivileged hardware counters alongside their corresponding raw decimal and hexadecimal values" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEijF3-9NjhilI2bsXtZzLFwxoU6BUp939OgEsKs4jZaVAK36ahMclqlWmLGGPReFrrdfbn5Nkq9O-0be0ByTFUSttq3E5a2RE26SlxvvEVTWqrww2REQvDXFWFJnkILTnvFKSzDZGP9VtKA9v6uA1so0SKiqDJaTD74hMkQ_jW9MWmADsffVZQGSc4SylA/s1600/Raw%20Counters.png"&gt;&lt;/a&gt;
  &lt;figcaption&gt;Figure 6: XProf Perf Counters Tabular View&lt;/figcaption&gt;
&lt;/figure&gt;

&lt;p&gt;&lt;strong&gt;Understanding Trace Tracks:&lt;/strong&gt; The height of a trace track does not represent a normalized 0-100% percentage. It represents the maximum raw counter value observed in that interval. For example, if a counter increments by 100 cycles over a 500-nanosecond trace window (roughly 1,000 clock cycles on a 2.0 GHz core), it indicates exactly 10% physical utilization of that unit.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;To configure and profile the runtime performance counters sampling method, please follow the instructions from &lt;a href="https://openxla.org/xprof/kernel-profiling.html"&gt;OpenXLA Kernel Profiling Instructions&lt;/a&gt;.&lt;/strong&gt;&lt;/p&gt;

&lt;h2&gt;Advanced Sampling: Event-Triggered Profiling&lt;/h2&gt;
&lt;p&gt;Previously, dynamic capturing was limited to Periodic Sampling Mode—polling counters based on a host-level timer, which hit a physical resolution floor of 1 microsecond.&lt;/p&gt;

&lt;figure class="wide"&gt;
&lt;pre&gt;&lt;code class="codebox none"&gt;           CORE 0           CORE 1           CORE 2           CORE 3
      ┌──────────────┐ ┌──────────────┐ ┌──────────────┐ ┌──────────────┐
      │  28 Counters │ │  28 Counters │ │  28 Counters │ │  28 Counters │
      └──────────────┘ └──────────────┘ └──────────────┘ └──────────────┘
      └─────────────────────────────────────────────────────────────────┘
                            4 x 28 Sparse Matrix&lt;/code&gt;&lt;/pre&gt;
  &lt;figcaption&gt;Figure 7: Sparse Matrix Configuration&lt;/figcaption&gt;
  &lt;/figure&gt;

  &lt;p&gt;To capture lightning-fast hardware cycles, XProf now supports &lt;strong&gt;External Event-Triggered Mode&lt;/strong&gt;. The dynamic sampler intercepts physical TPU trace instructions and boundary triggers (such as entering/exiting custom call scopes), allowing for sub-microsecond capture latency and precise attribution.&lt;/p&gt;

&lt;p&gt;Developers can configure up to 28 hardware counters per core, distributed across up to four active SparseCores, creating a 4 x 28 profiling matrix that maximizes data variety while protecting workload performance.&lt;/p&gt;

&lt;p&gt;Activating this is straightforward via standard JAX JIT profilers:&lt;/p&gt;


&lt;pre&gt;&lt;code class="codebox python"&gt;options = jax.profiler.ProfileOptions()

# Example request for externally triggered collection
options.advanced_configuration = {
"tpu_enable_periodic_counter_sampling" : True,
"tpu_tc_perf_counter_sampling_options" : (
          'is_external_trigger:true scaling:0 counter_size_bits:1 indices:10 indices:11 indices:56 indices:57 indices:58'
),
}

# For periodic sampling, please use interval_us instead of is_external_trigger.&lt;/code&gt;&lt;/pre&gt;

&lt;h2&gt;Getting Started&lt;/h2&gt;
&lt;p&gt;Ready to transition from guessing performance to measuring and optimizing the physical limits of your ML silicon? Explore these open-source resources to get started with XProf Kernel today:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;XProf GitHub Repository:&lt;/strong&gt; &lt;a href="https://github.com/openxla/xprof"&gt;github.com/openxla/xprof&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Official XProf Documentation:&lt;/strong&gt; &lt;a href="https://openxla.org/xprof"&gt;openxla.org/xprof&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;JAX Profiling Guide:&lt;/strong&gt; &lt;a href="https://jax.readthedocs.io/en/latest/profiling.html"&gt;jax.readthedocs.io/en/latest/profiling.html&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
</content><link href="http://www.blogger.com/feeds/8698702854482141883/posts/default/1079462220247759540" rel="edit" type="application/atom+xml"/><link href="http://www.blogger.com/feeds/8698702854482141883/posts/default/1079462220247759540" rel="self" type="application/atom+xml"/><link href="http://opensource.googleblog.com/2026/06/unlocking-tpu-performance-deep-kernel-profiling-with-xprof.html" rel="alternate" title="Unlocking TPU performance: Deep kernel profiling with XProf" type="text/html"/><author><name>Google Open Source</name><uri>http://www.blogger.com/profile/03718388509216889937</uri><email>noreply@blogger.com</email><gd:image height="16" rel="http://schemas.google.com/g/2005#thumbnail" src="https://img1.blogblog.com/img/b16-rounded.gif" width="16"/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" height="72" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgyawZoe_5bOmqP15Dj73GBllZbc9wBhV_AX0h-ci7VW8VAz7lzZbeWNq0o7peEUEQJrv-stBUZCgWGhqSbQssweMDLYYUOTh9DphjF_E4URQLSRnTxUcKGA5CYw95c8D9x96kAxlzcidXHDEg7N0bDB-hdAAYU_-QvNhiF8KAlGD6aqoGXjhIdE5obXeo/s72-c/Gemini_Generated_Image_ftel8wftel8wftel.jpeg" width="72"/></entry><entry><id>tag:blogger.com,1999:blog-8698702854482141883.post-5317294764969835431</id><published>2026-06-03T11:30:00.000-07:00</published><updated>2026-06-03T11:30:00.120-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="compression"/><category scheme="http://www.blogger.com/atom/ns#" term="image compression"/><category scheme="http://www.blogger.com/atom/ns#" term="JPEG XL"/><title type="text">Journey to JPEG XL: How open source experiments shaped the future of image coding</title><content type="html">&lt;p class="byline"&gt;by &lt;author&gt;Jyrki Alakuijala&lt;/author&gt;, &lt;author&gt;Zoltán Szabadka&lt;/author&gt; &amp;amp; &lt;author&gt;Luca Versari&lt;/author&gt;, Paradigms of Intelligence, Google Technology &amp;amp; Society&lt;/p&gt;

&lt;meta name="twitter:image" content="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEic_WoSwZ84GajY2-xiBPt4P5ho2eN8-lyfLAx_8A_VfQpy-UKyJSxOjFDn118y4LCXy5EShCZ2L5NH2a5EC_cEh2WyY1oV6ZhipsJ2ZtYl7G2VRkGtP1YWU7m0Gq98NqEUCkcve9f4iDALjZ4diU1SFKXq60P_ba2FA1TP07Ovy8NLXrvVbWNCp1sueSE/s1600/jxl-graph.jpg"&gt;
&lt;img class="metadata" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEic_WoSwZ84GajY2-xiBPt4P5ho2eN8-lyfLAx_8A_VfQpy-UKyJSxOjFDn118y4LCXy5EShCZ2L5NH2a5EC_cEh2WyY1oV6ZhipsJ2ZtYl7G2VRkGtP1YWU7m0Gq98NqEUCkcve9f4iDALjZ4diU1SFKXq60P_ba2FA1TP07Ovy8NLXrvVbWNCp1sueSE/s1600/jxl-graph.jpg"&gt;

&lt;h2&gt;Building the Next Generation Image Standard&lt;/h2&gt;
&lt;p&gt;The internet runs on images. Since the early days of the web, there has been a relentless tension between visual fidelity and bandwidth. For decades, the industry relied on the venerable JPEG standard for images loading fast. It served us remarkably well, but as displays moved to High Dynamic Range (HDR) and Wide Color Gamut (WCG), the format began to show its limits.&lt;/p&gt;

&lt;p&gt;The road to &lt;a href="https://www.iso.org/standard/85066.html"&gt;JPEG XL&lt;/a&gt; (&lt;a href="https://github.com/libjxl/libjxl"&gt;JXL&lt;/a&gt;) wasn't a straight line. It was a decade-long exploration, creating a series of milestone projects testing radical ideas in psychovisual modeling, entropy coding, and optimization. Today, as JPEG XL sees rapid adoption across operating systems and professional standards, we’re looking back at the experiments that made it possible.&lt;/p&gt;
&lt;hr style="height:1px;color:#ccc;" /&gt;

&lt;h2&gt;The Early Foundation: 2011–2017&lt;/h2&gt;
&lt;p&gt;Our study began with a focus on understanding the limits of existing technology. We didn't start by trying to write a new standard; we started by trying to make the current ones better, and learning their limitations. This allowed us to make the new formalism more flexible and efficient in the right places.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;WebP Lossless and Brotli:&lt;/strong&gt; Lossy WebP drew its lineage from video technology, the &lt;strong&gt;WebP Lossless&lt;/strong&gt; (2011) represented an architectural and scoping departure. We debuted the &lt;strong&gt;&lt;a href="https://www.rfc-editor.org/rfc/rfc9649.html#section-3.6.1"&gt;entropy image concept&lt;/a&gt;&lt;/strong&gt;, an innovative method utilizing a secondary image to orchestrate the selection of static entropy codes for the primary visual data. We reapplied this approach later with data-driven context modeling in the &lt;strong&gt;&lt;a href="https://dl.acm.org/doi/abs/10.1145/3231935"&gt;Brotli compression format&lt;/a&gt;&lt;/strong&gt;, enabling rich context modeling without slowing decoding.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Butteraugli:&lt;/strong&gt; Around 2014, we realized that raw mathematical compression (PSNR) wasn't enough, and simple psychovisual approximations (SSIM and similar) failed in color-rich environments. We built &lt;strong&gt;&lt;a href="https://github.com/libjxl/libjxl/tree/main/lib/jxl/butteraugli"&gt;Butteraugli&lt;/a&gt;&lt;/strong&gt; and the &lt;strong&gt;&lt;a href="https://github.com/libjxl/libjxl/blob/6aa76f3134684f86e239263384230751b56938a7/lib/jxl/butteraugli/butteraugli.cc#L1445"&gt;XYB color space&lt;/a&gt;&lt;/strong&gt; to mimic the human visual system's edge detection and opponent-color processes in varying scale, allowing us to compress images more effectively.&lt;/li&gt;
&lt;li&gt;We pushed the legacy &lt;a href="https://jpeg.org/jpeg/"&gt;JPEG 1 standard&lt;/a&gt; (ISO/IEC 10918, introduced in 1992) to its absolute limits through two key projects: &lt;strong&gt;Guetzli and Brunsli&lt;/strong&gt;. These initiatives provided invaluable insights into the strengths and limitations of traditional JPEG compression methods. &lt;strong&gt;&lt;a href="https://en.wikipedia.org/wiki/Guetzli"&gt;Guetzli&lt;/a&gt;&lt;/strong&gt; (2016) is a slow high-density perceptual encoder that used Butteraugli to find the optimal quantization tables, pushing legacy JPEGs to be 20-30% smaller. &lt;strong&gt;&lt;a href="https://github.com/google/brunsli"&gt;Brunsli&lt;/a&gt;&lt;/strong&gt; (2015) meanwhile, focuses on &lt;strong&gt;lossless recompression&lt;/strong&gt;, allowing users to repack existing JPEGs into a smaller footprint without losing a single bit of original data. After finishing with JPEG XL standardization, we returned to Guetzli's scope in 2024 and made the encoding much faster and HDR-compatible in &lt;a href="https://opensource.googleblog.com/2024/04/introducing-jpegli-new-jpeg-coding-library.html"&gt;Jpegli&lt;/a&gt;. &lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;The feedback from these launches, ranging from the technical details of &lt;strong&gt;WebP Lossless&lt;/strong&gt; to the psychovisual audits of &lt;strong&gt;Guetzli&lt;/strong&gt;, proved indispensable. While we already targeted the highest visual fidelity, feedback from detail-critical e-commerce helped us to refine the requirements.&lt;/p&gt;
&lt;hr style="height:1px;color:#ccc;" /&gt;

&lt;h2&gt;The Convergence: 2017–2019 PIK Era and the 2019 FUIF Integration &lt;/h2&gt;
&lt;p&gt;By 2017 we had powerful separate tools and it was time to fuse them. In open sourcing &lt;strong&gt;&lt;a href="http://github.com/google/pik"&gt;PIK&lt;/a&gt;&lt;/strong&gt; we combined the efficiency of Brunsli with the psychovisual optimizations of Guetzli. Further, PIK introduced a &lt;strong&gt;real adaptive quantization field &lt;/strong&gt;and other optimizations. &lt;strong&gt;PIK&lt;/strong&gt; formed our proposal to the &lt;strong&gt;ISO&lt;/strong&gt; standardization body. The committee's &lt;a href="https://jpeg.org/downloads/jpegxl/jpegxl-cfp.pdf"&gt;final call for proposals&lt;/a&gt; pushed toward extreme density, requiring bit rates as low as &lt;strong&gt;0.06 BPP&lt;/strong&gt;, equivalent to 35 times the compression of internet-quality images and 80 times that of camera output. This expansion of scope necessitated a significant complexification of the format and the encoder, leading to the Variable-block-size Discrete Cosine Transform (&lt;strong&gt;VarDCT&lt;/strong&gt;) architecture that remains central to &lt;strong&gt;JPEG XL&lt;/strong&gt; today.&lt;/p&gt;&lt;p&gt;
We proposed to merge our PIK proposal with the FUIF (Free Universal Image Format) proposal from Cloudinary. PIK used Brotli-style distribution selection at encoding time, while FUIF refined codes incrementally during decoding. The final JPEG XL standard became a best-of-both-worlds compromise: we used PIK's faster-to-decode distribution selection with FUIF's sophisticated context trees. The merger represented a departure from conventional one platform driven standardization, and prioritized technical synergy and collaboration.&lt;/p&gt;

&lt;figure class="wide borderless"&gt;
  &lt;a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEic_WoSwZ84GajY2-xiBPt4P5ho2eN8-lyfLAx_8A_VfQpy-UKyJSxOjFDn118y4LCXy5EShCZ2L5NH2a5EC_cEh2WyY1oV6ZhipsJ2ZtYl7G2VRkGtP1YWU7m0Gq98NqEUCkcve9f4iDALjZ4diU1SFKXq60P_ba2FA1TP07Ovy8NLXrvVbWNCp1sueSE/s1600/jxl-graph.jpg"&gt;&lt;img alt="A flowchart titled 'Building Blocks of the JPEG XL Standard' showing a left-to-right progression across three periods. The first period, 'Early Building Blocks (2011-2017)', contains four boxes: WebP Lossless &amp; Brotli, Butteraugli &amp; XYB, Guetzli, and Brunsli. Arrows point from these early technologies into the second period, 'The Convergence (2017-2019)', which consists of two main boxes: PIK and FUIF. Finally, multiple lines flow from both PIK and FUIF, converging into the third period, 'Final Standard'. This final section features a large orange box labeled 'JXL: JPEG XL Standard', which is described as merging PIK's distribution selection with FUIF's context trees." src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEic_WoSwZ84GajY2-xiBPt4P5ho2eN8-lyfLAx_8A_VfQpy-UKyJSxOjFDn118y4LCXy5EShCZ2L5NH2a5EC_cEh2WyY1oV6ZhipsJ2ZtYl7G2VRkGtP1YWU7m0Gq98NqEUCkcve9f4iDALjZ4diU1SFKXq60P_ba2FA1TP07Ovy8NLXrvVbWNCp1sueSE/s1600/jxl-graph.jpg"&gt;&lt;/a&gt;
&lt;/figure&gt;

&lt;h2&gt;JPEG XL Today: An Ecosystem Takes Root&lt;/h2&gt;
&lt;p&gt;JPEG XL's efficiency, psychovisually-optimized quality, file size, and coding speed, are being noticed. We are seeing bottom-up adoption in various industries, the most demanding fields are leading the way. Because of its ability to handle high bit-depth, high quality and even lossless data efficiently and robustly, JPEG XL has become foundational in several fields:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Photography:&lt;/strong&gt; Used in Digital Negative (DNG 1.7), Apple's ProRAW, and others.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Medical:&lt;/strong&gt; Adopted by &lt;a href="https://www.dicomstandard.org/about"&gt;DICOM&lt;/a&gt;, the international standard for medical images.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Publishing:&lt;/strong&gt; Integration into future versions of the PDF and EPUB  standards.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;The ecosystem has been maturing rapidly. Adobe's photography software, Apple's iOS, macOS, and visionOS have native support, as do Linux distributions like Ubuntu and Microsoft's JPEG XL Image Extension for Windows. Our &lt;a href="https://github.com/libjxl/libjxl-tiny"&gt;libjxl-tiny&lt;/a&gt; inspired &lt;a href="https://www.shikino.co.jp/eng/"&gt;Shikino High-Tech, Inc&lt;/a&gt;. and &lt;a href="https://www.cast-inc.com/compression/jpeg-image-compression/jpeg-xl-e"&gt;CAST&lt;/a&gt; to release the first commercial JPEG XL encoder IP core for ASIC and FPGA designs, aimed at real-time, low-power image capture. Safari (2023) led among major browsers, while Firefox and Chrome currently maintain experimental support.&lt;/p&gt;

&lt;figure class="wide-80 borderless"&gt;
  &lt;a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhc06dUH5IJAcb7TkoKrPhI74B-ypK-20K34QMj8hVlys42KahbbBTdoPy-EyLUAw-bdDA9pyuw6bfErHGNN_XO8-awfM4dJgeFyA8KtATzMCY21gIdbFHwWBACllCfaBVVYHHPVyz8opEbWgEkTUNY6JY7aLmrryQRkRqKzCTqBcvpkqb57lP4aNeNLNc/s1600/luca-jyrki-ai-board.jpg"&gt;&lt;img alt="Two men in a bright office collaborating at a whiteboard. The board contains a hand-drawn flowchart titled 'VARDCT BLOCK JOINING STRATEGY'. The diagram illustrates small square blocks combining into larger patterned rectangles, connected by arrows. Text labels in the flowchart include 'Decision Logic: Rate-Distortion Cost', 'Merging Criteria', 'Entropy Coding Efficiency', 'Neighboring Blocks', and 'Variable Block Sizes'. The man on the left is pointing to the bottom left of the diagram, while the man on the right, who has long hair and a beard, is writing a mathematical equation on the board with a marker." src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhc06dUH5IJAcb7TkoKrPhI74B-ypK-20K34QMj8hVlys42KahbbBTdoPy-EyLUAw-bdDA9pyuw6bfErHGNN_XO8-awfM4dJgeFyA8KtATzMCY21gIdbFHwWBACllCfaBVVYHHPVyz8opEbWgEkTUNY6JY7aLmrryQRkRqKzCTqBcvpkqb57lP4aNeNLNc/s1600/luca-jyrki-ai-board.jpg"&gt;&lt;/a&gt;
  &lt;figcaption&gt;JPEG XL design was not only countless hours of optimization, experimentation and eye-balling the results, but also creative discussions at a whiteboard. In this Gemini-reconstructed scene, Luca Versari and Jyrki Alakuijala (left-to-right) debate VarDCT block selection heuristics.&lt;/figcaption&gt;
&lt;/figure&gt;

&lt;h2&gt;Looking Forward&lt;/h2&gt;
&lt;p&gt;The story of &lt;strong&gt;JPEG XL&lt;/strong&gt; stands as a testament to the efficacy of long-horizon planning validated by intermediate functional milestones—with minimum-viable prototypes like Guetzli and practical tools like Brunsli and Brotli—that invite feedback from the open-source community. A small research team can innovate by crystallizing solutions through quick iterations, with thousands, if not tens of thousands, of experiments in &lt;strong&gt;psychovisual modeling&lt;/strong&gt;, &lt;strong&gt;entropy&lt;/strong&gt;, &lt;strong&gt;coding speed and complexity&lt;/strong&gt;, and the entire industry can eventually navigate toward a more efficient, beautiful future.&lt;/p&gt;&lt;p&gt;
We started by trying to squeeze a few more bytes out of a 1992 JPEG 1 standard; with JPEG XL we hope to have established a foundation for digital imaging that can last for the next three decades.&lt;/p&gt;</content><link href="http://www.blogger.com/feeds/8698702854482141883/posts/default/5317294764969835431" rel="edit" type="application/atom+xml"/><link href="http://www.blogger.com/feeds/8698702854482141883/posts/default/5317294764969835431" rel="self" type="application/atom+xml"/><link href="http://opensource.googleblog.com/2026/06/journey-to-jpeg-xl-how-open-source-experiments-shaped-the-future-of-image-coding.html" rel="alternate" title="Journey to JPEG XL: How open source experiments shaped the future of image coding" type="text/html"/><author><name>Google Open Source</name><uri>http://www.blogger.com/profile/03718388509216889937</uri><email>noreply@blogger.com</email><gd:image height="16" rel="http://schemas.google.com/g/2005#thumbnail" src="https://img1.blogblog.com/img/b16-rounded.gif" width="16"/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" height="72" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEic_WoSwZ84GajY2-xiBPt4P5ho2eN8-lyfLAx_8A_VfQpy-UKyJSxOjFDn118y4LCXy5EShCZ2L5NH2a5EC_cEh2WyY1oV6ZhipsJ2ZtYl7G2VRkGtP1YWU7m0Gq98NqEUCkcve9f4iDALjZ4diU1SFKXq60P_ba2FA1TP07Ovy8NLXrvVbWNCp1sueSE/s72-c/jxl-graph.jpg" width="72"/></entry><entry><id>tag:blogger.com,1999:blog-8698702854482141883.post-1783557718116387119</id><published>2026-05-27T11:30:00.000-07:00</published><updated>2026-05-27T11:30:00.114-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Apache iceberg"/><category scheme="http://www.blogger.com/atom/ns#" term="Lakehouse"/><title type="text">Announcing Apache Iceberg 1.11.0</title><content type="html">&lt;p class="byline"&gt;by &lt;author&gt;Alex Stephen&lt;/author&gt; &amp;amp; &lt;author&gt;Talat Uyarer&lt;/author&gt;, Lakehouse&lt;/p&gt;

&lt;meta name="twitter:image" content="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi01bOUzuTB1a9UMPGJaWSDHLB77dysDmAzA8g4gi_JpEUJYwLr2A6dHocfP-xqhu2BbfhAaCdocZBhiT-aTLdSSpN3wHfP3lXEQKRnGSOBR4YG-F2INW-jpN8_6D5zs97FhyxF5BjuVlkUWDsDupQypGS_av6iX3imbSv76gb-ZgNFb6bx5hoU3WOC4vc/s1600/announcingapac--7f7ju9z8h.png"&gt;
&lt;img class="metadata" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi01bOUzuTB1a9UMPGJaWSDHLB77dysDmAzA8g4gi_JpEUJYwLr2A6dHocfP-xqhu2BbfhAaCdocZBhiT-aTLdSSpN3wHfP3lXEQKRnGSOBR4YG-F2INW-jpN8_6D5zs97FhyxF5BjuVlkUWDsDupQypGS_av6iX3imbSv76gb-ZgNFb6bx5hoU3WOC4vc/s1600/announcingapac--7f7ju9z8h.png"&gt;

&lt;p&gt;Apache Iceberg project has just launched version &lt;strong&gt;1.11.0&lt;/strong&gt;! A lot has happened since the last version.&lt;/p&gt;&lt;p&gt;
Iceberg 1.11.0 adds support for &lt;strong&gt;Apache Spark 4.1&lt;/strong&gt; and &lt;strong&gt;Apache Flink 2.1&lt;/strong&gt;, the latest releases of the two engines and makes both the default build targets&lt;/p&gt;&lt;p&gt;
The rest are more structural. The REST catalog learns to &lt;strong&gt;plan scans server-side&lt;/strong&gt;, shifting metadata work off the query engine. A new &lt;strong&gt;partition statistics scan API&lt;/strong&gt; gives optimizers a clean, supported way to read a table's shape. &lt;strong&gt;Built-in table encryption&lt;/strong&gt; arrives with envelope encryption and Google KMS support. And &lt;strong&gt;Google Storage Analytics library&lt;/strong&gt; integration makes your Iceberg workloads faster than before.&lt;/p&gt;&lt;p&gt;
 Let's take a look at some of the biggest changes.&lt;/p&gt;

&lt;h3&gt;Spark &amp;amp; Flink Updates&lt;/h3&gt;
&lt;p&gt;As Spark and Flink are moving forward, the &lt;code&gt;1.11.0&lt;/code&gt; release is pushing forward for new version support in both.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Spark 4.1 &amp;amp; DSv2 Migration&lt;/strong&gt;: Spark 4.1 unlocks is &lt;code&gt;MERGE INTO&lt;/code&gt; with automatic schema evolution: Spark's newer &lt;code&gt;MERGE&lt;/code&gt; syntax accepts a &lt;code&gt;WITH SCHEMA EVOLUTION&lt;/code&gt; clause, so a &lt;code&gt;MERGE&lt;/code&gt; whose source carries columns the target table lacks can add those columns to the table within the same statement, with no separate &lt;code&gt;ALTER TABLE&lt;/code&gt; round trip. Beyond the version bump, the 1.11 Spark connector also modernizes against Spark's newer DataSource V2 APIs and adds an asynchronous micro-batch planner that speeds up Structured Streaming. &lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Flink Ecosystem Updates&lt;/strong&gt;: Initial work for Flink 2.1 support has landed in the core repository, continuing Iceberg's promise of providing first-class, low-latency streaming sink capabilities. The centerpiece of the Flink work is the &lt;code&gt;DynamicIcebergSink&lt;/code&gt;, an experimental sink that breaks the old one-sink-per-table model: a single sink routes each record to a table chosen at runtime, creating tables on demand and evolving their schemas and partition specs on the fly as the input changes  including dropping columns once you opt in with &lt;code&gt;dropUnusedColumns&lt;/code&gt;. In addition to DynamicIcebergSInk work Flink started supporting &lt;code&gt;nanosecond&lt;/code&gt;, &lt;code&gt;variant&lt;/code&gt; and &lt;code&gt;unknown&lt;/code&gt; types from V3 Spec. &lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;Server-side scan planning&lt;/h2&gt;
&lt;p&gt;In previous versions of Iceberg, the client handled the heavy lifting of scan orchestration. The driver of engine would traverse the table's metadata tree, retrieving manifest lists and files from object storage to filter data against specific partition requirements. Iceberg 1.11.0 shifts this computational burden into the catalog through &lt;strong&gt;server-side scan planning&lt;/strong&gt;. &lt;/p&gt;

&lt;p&gt;Instead of manually traversing manifests, the engine submits a single &lt;code&gt;POST …/plan&lt;/code&gt; request detailing the scan allowing the REST catalog to return optimized &lt;code&gt;FileScanTask&lt;/code&gt;s. &lt;/p&gt;

&lt;p&gt;The API is designed to handle data at any scale: smaller scans return immediate results, extensive operations return a plan-id for polling, and massive datasets are retrieved via parallel &lt;code&gt;plan-tasks&lt;/code&gt; through &lt;code&gt;POST …/tasks&lt;/code&gt;. &lt;/p&gt;

&lt;figure class="wide"&gt;
  &lt;a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi01bOUzuTB1a9UMPGJaWSDHLB77dysDmAzA8g4gi_JpEUJYwLr2A6dHocfP-xqhu2BbfhAaCdocZBhiT-aTLdSSpN3wHfP3lXEQKRnGSOBR4YG-F2INW-jpN8_6D5zs97FhyxF5BjuVlkUWDsDupQypGS_av6iX3imbSv76gb-ZgNFb6bx5hoU3WOC4vc/s1600/announcingapac--7f7ju9z8h.png"&gt;&lt;img alt="ALT TEXT" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi01bOUzuTB1a9UMPGJaWSDHLB77dysDmAzA8g4gi_JpEUJYwLr2A6dHocfP-xqhu2BbfhAaCdocZBhiT-aTLdSSpN3wHfP3lXEQKRnGSOBR4YG-F2INW-jpN8_6D5zs97FhyxF5BjuVlkUWDsDupQypGS_av6iX3imbSv76gb-ZgNFb6bx5hoU3WOC4vc/s1600/announcingapac--7f7ju9z8h.png"&gt;&lt;/a&gt;
  &lt;figcaption&gt;Planning moves off the query engine and into the catalog — the driver no longer touches metadata in object storage.&lt;/figcaption&gt;
&lt;/figure&gt;

&lt;h3&gt;Built-in table encryption&lt;/h3&gt;

&lt;p&gt;As data lakes increasingly serve as the central hub for sensitive PII and financial data, relying solely on bucket-level storage encryption is no longer enough. Iceberg 1.11.0 introduces built-in table encryption, bringing fine-grained, KMS-backed security directly to the table level.&lt;/p&gt;

&lt;p&gt;This provides data platform teams with robust capabilities for security and compliance:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Zero-Trust Storage Security&lt;/strong&gt;: Even if a malicious actor gains direct access to your underlying object storage bucket, the data remains completely unreadable.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Total Index Protection&lt;/strong&gt;: It isn't just the raw data that is protected; Iceberg encrypts the manifest lists as well, preventing attackers from inferring sensitive information from table statistics.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Tamper-Proof Data&lt;/strong&gt;: Built-in authentication tags guard against unauthorized modifications, ensuring data integrity.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Effortless Key Rotation&lt;/strong&gt;: Keys are rotated automatically as they age, satisfying strict compliance mandates without requiring you to rewrite massive datasets.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Iceberg achieves this using envelope encryption with a three-tier key hierarchy. A table master key lives securely in your KMS and never touches Iceberg storage. This master key wraps key-encryption keys (KEKs), which are stored safely inside the table metadata. Finally, each KEK wraps a unique, per-file data-encryption key (DEK).&lt;/p&gt;&lt;p&gt;
Every data file and manifest list is then encrypted with AES-GCM under its own unique DEK. This decoupled architecture ensures maximum security while maintaining the high performance expected of Iceberg workloads.&lt;/p&gt;

&lt;h3&gt;File Format API&lt;/h3&gt;
&lt;p&gt;Historically, Iceberg's format-handling code was tightly coupled, growing organically around Parquet, Avro, and ORC. Adding a new format or enforcing consistent feature support (like V3 default values or new column types) across all formats meant duplicating complex engine-specific switch/case code paths. &lt;/p&gt;&lt;p&gt;
Iceberg 1.11.0 introduces the finalized &lt;strong&gt;File Format API&lt;/strong&gt;, bringing a consistent API to reading and writing all of these file formats.&lt;/p&gt;&lt;p&gt;
Instead of hardcoded engines handling binary extraction, the architecture introduces:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;FormatModel&lt;/strong&gt;: A standardized implementation defining how a file format handles reader/writer construction and its specific capabilities.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;FormatModelRegistry&lt;/strong&gt;: A central directory where query engines fetch appropriate read and write builders.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;This API (which is already seeing adoption around other Apache Iceberg implementations) provides a significant code cleanup for the future of the project. It also opens the door for more file formats as time goes on. &lt;/p&gt;&lt;p&gt;
Moreover, this new interface facilitates the implementation of &lt;strong&gt;Column Families&lt;/strong&gt;, enabling vertical partitioning of storage. This advancement lets teams perform targeted updates or rewrites on isolated columns—such as recalculating vector embeddings—while leaving the remaining table data undisturbed.&lt;/p&gt;

&lt;h3&gt;SQL UDF Specification&lt;/h3&gt;
&lt;p&gt;1.11.0 includes the SQL UDF specification, which adds a brand new metadata format for both Scalar and Table Functions:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Immutable Versioning and Rollback&lt;/strong&gt;: UDF metadata is written as self-contained, versioned JSON files stored right in the object store. If a data engineer deploys a buggy UDF update, administrators can execute an atomic rollback to a previous version log state&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Standardized Schema Typings&lt;/strong&gt;: Parameters and return types map cleanly to Iceberg Type JSON representations, directly accommodating complex nested maps, structs, and the upcoming Iceberg V3 variant type.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Engine Specific Execution: &lt;/strong&gt;Each SQL UDF has a function implementation for each engine, allowing users to leverage engine-specific functionality in their UDFs.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;Google Analytics Library Integration&lt;/h3&gt;
&lt;p&gt;For Google Cloud customers, version 1.11.0 delivers substantial throughput gains by embedding the &lt;strong&gt;GCS Analytics Core library into GCSFileIO&lt;/strong&gt; (&lt;a href="https://github.com/apache/iceberg/issues/14326"&gt;Issue #14326&lt;/a&gt;,&lt;a href="https://github.com/apache/iceberg/pull/14333"&gt; PR #14333&lt;/a&gt;). &lt;/p&gt;&lt;p&gt;
This integration introduces &lt;strong&gt;Footer Prefetching&lt;/strong&gt;, which optimizes Parquet length checks by caching object suffixes to remove network overhead. Combined with &lt;strong&gt;threaded VectoredIO&lt;/strong&gt; for concurrent multi-range operations and specialized &lt;strong&gt;small object caching&lt;/strong&gt; for sub-1MB files, these enhancements eliminate persistent I/O bottlenecks. Initial benchmarks indicate that these architectural improvements can reduce Parquet metadata parsing latency and boost total record processing speeds, empowering high-scale Spark, Flink, and Trino workloads to run with improved efficiency on &lt;a href="https://www.youtube.com/watch?v=chp9Bj2uMsY"&gt;Google Cloud Storage&lt;/a&gt;. &lt;/p&gt;

&lt;h3&gt;Getting Started with 1.11.0&lt;/h3&gt;
&lt;p&gt;We are excited to be part of the Apache Iceberg community and innovating together. As a compliant Iceberg REST Catalog, &lt;a href="https://docs.cloud.google.com/lakehouse/docs/introduction"&gt;Lakehouse for Apache Iceberg (formerly BigLake)&lt;/a&gt; already has support for version &lt;code&gt;1.11.0&lt;/code&gt;.&lt;/p&gt;&lt;p&gt;
To upgrade your environment, update your build dependencies to version 1.11.0. Remember to review your deployment runtimes to ensure compatibility with the new JDK 17 baseline, and test your workloads if you are transitioning from Spark 3.4.&lt;/p&gt;&lt;p&gt;
&lt;em&gt;For a full breakdown of every bug fix, contributor attribution, and dependency bump, check out the official&lt;a href="https://iceberg.apache.org/releases/"&gt; Apache Iceberg Releases Page&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;
</content><link href="http://www.blogger.com/feeds/8698702854482141883/posts/default/1783557718116387119" rel="edit" type="application/atom+xml"/><link href="http://www.blogger.com/feeds/8698702854482141883/posts/default/1783557718116387119" rel="self" type="application/atom+xml"/><link href="http://opensource.googleblog.com/2026/05/announcing-apache-iceberg-1110.html" rel="alternate" title="Announcing Apache Iceberg 1.11.0" type="text/html"/><author><name>Google Open Source</name><uri>http://www.blogger.com/profile/03718388509216889937</uri><email>noreply@blogger.com</email><gd:image height="16" rel="http://schemas.google.com/g/2005#thumbnail" src="https://img1.blogblog.com/img/b16-rounded.gif" width="16"/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" height="72" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi01bOUzuTB1a9UMPGJaWSDHLB77dysDmAzA8g4gi_JpEUJYwLr2A6dHocfP-xqhu2BbfhAaCdocZBhiT-aTLdSSpN3wHfP3lXEQKRnGSOBR4YG-F2INW-jpN8_6D5zs97FhyxF5BjuVlkUWDsDupQypGS_av6iX3imbSv76gb-ZgNFb6bx5hoU3WOC4vc/s72-c/announcingapac--7f7ju9z8h.png" width="72"/></entry><entry><id>tag:blogger.com,1999:blog-8698702854482141883.post-3554394794784901820</id><published>2026-05-25T11:30:00.000-07:00</published><updated>2026-05-25T11:30:00.112-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="junit4"/><category scheme="http://www.blogger.com/atom/ns#" term="junit5"/><category scheme="http://www.blogger.com/atom/ns#" term="Kotlin"/><category scheme="http://www.blogger.com/atom/ns#" term="parameterized-tests"/><category scheme="http://www.blogger.com/atom/ns#" term="testing"/><category scheme="http://www.blogger.com/atom/ns#" term="TestParameterInjector"/><title type="text">TestParameterInjector introduces an idiomatic Kotlin API</title><content type="html">&lt;p class="byline"&gt;by &lt;author&gt;Jens Nyman&lt;/author&gt;, TestParameterInjector Team&lt;/p&gt;

&lt;meta name="twitter:image" content="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg-sCA6wDW6jrUBskzSKb0B9IHK0BWEWFRXl_kc8V2JFOwntyqHvxcZh1jEyGswmqKBwjGrS9V8Ueb0NdztDl8Fjuv4NMBUKqe_jdy0ADxr5zWKpPCL0cx8m4440Ylc1tFYg051mJJ3OXGDMqnEFG4Wyjv0qjWuVT19oi2GUVlci-YvnhUqhOT6ei2Xi-Q/s1600/graph_wide.png"&gt;
&lt;img class="metadata" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg-sCA6wDW6jrUBskzSKb0B9IHK0BWEWFRXl_kc8V2JFOwntyqHvxcZh1jEyGswmqKBwjGrS9V8Ueb0NdztDl8Fjuv4NMBUKqe_jdy0ADxr5zWKpPCL0cx8m4440Ylc1tFYg051mJJ3OXGDMqnEFG4Wyjv0qjWuVT19oi2GUVlci-YvnhUqhOT6ei2Xi-Q/s1600/graph_wide.png"&gt;

&lt;p&gt;In March 2021, we &lt;a href="https://opensource.googleblog.com/2021/03/introducing-testparameterinjector.html"&gt;announced the open source release&lt;/a&gt; of TestParameterInjector: a simple but powerful parameterized test runner for JUnit4. In September 2022, we &lt;a href="https://opensource.googleblog.com/2022/09/testparameterinjector-gets-junit5-support.html"&gt;followed up with JUnit5 support&lt;/a&gt;, bringing our framework to developers who had moved on to the Jupiter API.&lt;/p&gt;&lt;p&gt;
We're excited to announce our biggest update yet for our Kotlin users: &lt;code&gt;KotlinTestParameters&lt;/code&gt;.&lt;/p&gt;

&lt;h2&gt;The de facto standard for parameterized testing&lt;/h2&gt;
&lt;p&gt;When we first introduced TestParameterInjector, we shared a graph showing its rapid adoption within Google. Over the past few years, that trajectory has continued to a point where TestParameterInjector is the de facto parameterized test framework.&lt;/p&gt;

&lt;figure class="wide"&gt;
  &lt;a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg-sCA6wDW6jrUBskzSKb0B9IHK0BWEWFRXl_kc8V2JFOwntyqHvxcZh1jEyGswmqKBwjGrS9V8Ueb0NdztDl8Fjuv4NMBUKqe_jdy0ADxr5zWKpPCL0cx8m4440Ylc1tFYg051mJJ3OXGDMqnEFG4Wyjv0qjWuVT19oi2GUVlci-YvnhUqhOT6ei2Xi-Q/s1600/graph_wide.png"&gt;&lt;img alt="Graph of the different parameterized test frameworks in Google" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg-sCA6wDW6jrUBskzSKb0B9IHK0BWEWFRXl_kc8V2JFOwntyqHvxcZh1jEyGswmqKBwjGrS9V8Ueb0NdztDl8Fjuv4NMBUKqe_jdy0ADxr5zWKpPCL0cx8m4440Ylc1tFYg051mJJ3OXGDMqnEFG4Wyjv0qjWuVT19oi2GUVlci-YvnhUqhOT6ei2Xi-Q/s1600/graph_wide.png"&gt;&lt;/a&gt;
&lt;/figure&gt;

&lt;p&gt;Usage of all other alternative frameworks continues to steadily decline, while TestParameterInjector's adoption keeps growing rapidly. It has fundamentally lowered the barrier to writing data-driven unit tests, empowering Googlers and open source developers alike to maximize test coverage with minimal boilerplate. We believe its ubiquity internally is a strong testament to its reliability and utility for the broader developer communities.&lt;/p&gt;

&lt;h2&gt;The Kotlin challenge&lt;/h2&gt;
&lt;p&gt;As Kotlin's popularity has surged, developers have naturally been writing more of their TestParameterInjector tests in Kotlin. However, specifying explicit test values in Kotlin historically meant falling back to Java-centric paradigms.&lt;/p&gt;&lt;p&gt;
If you wanted to provide specific values to a test, you typically had three options, none of which felt truly idiomatic in Kotlin:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;code&gt;@TestParameter({"123", "456"})&lt;/code&gt;: This relies on string arrays, limiting you to a subset of types that the string parsing supports.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;@TestParameters&lt;/code&gt;: This allows for more complex sets of data, but relies on YAML strings (e.g.,&lt;code&gt;"{age: 17, expectIsAdult: false}&lt;/code&gt;"). These strings however are not type-safe, and are completely ignored by IDE refactoring tools.&lt;/li&gt;
&lt;li&gt;Provider classes: For complex types that couldn't be easily represented in strings, you have to write &lt;code&gt;Provider&lt;/code&gt; classes, adding a bit of boilerplate code and indirection.&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;Enter KotlinTestParameters&lt;/h2&gt;
&lt;p&gt;To bring a seamless experience to Kotlin, we are introducing a significant new Kotlin-only feature: &lt;code&gt;KotlinTestParameters&lt;/code&gt;.&lt;/p&gt;&lt;p&gt;
By leveraging Kotlin's default function arguments, you can now define parameterized tests in a fully type-safe, concise, and refactor-friendly way using the &lt;code&gt;testValues()&lt;/code&gt; function (and friends).&lt;/p&gt;&lt;p&gt;
Here is what it looks like in practice:&lt;/p&gt;
&lt;pre&gt;&lt;code class="codebox kotlin"&gt;import com.google.testing.junit.testparameterinjector.TestParameterInjector
import com.google.testing.junit.testparameterinjector.TestParameter
import com.google.testing.junit.testparameterinjector.KotlinTestParameters.testValues
import com.google.testing.junit.testparameterinjector.KotlinTestParameters.namedTestValues
import org.junit.Test
import org.junit.runner.RunWith

@RunWith(TestParameterInjector::class)
class MyTest {

  // Testing simple types directly
  @Test
  fun simpleTest(@TestParameter limit: Int = testValues(20, 100)) {
    // This test method is run twice: once for limit=20 and once for limit=100
  }

  // Testing complex types without YAML strings or Provider classes!
  data class TestCase(val age: Int, val expectIsAdult: Boolean)

  @Test
  fun complexTest(
    @TestParameter testCase: TestCase = namedTestValues(
      "teenager" to TestCase(age = 17, expectIsAdult = false),
      "young adult" to TestCase(age = 22, expectIsAdult = true)
    )
  ) {
    // This test method is run twice with fully typed data class instances
  }
}
&lt;/code&gt;&lt;/pre&gt;
&lt;h2&gt;Why we recommend making the switch&lt;/h2&gt;
&lt;p&gt;Because &lt;code&gt;testValues()&lt;/code&gt; seamlessly integrates with Kotlin's language features, any type is supported. This completely eliminates the need for stringly-typed YAML maps or verbose Provider classes.&lt;/p&gt;&lt;p&gt;
We firmly believe that &lt;code&gt;KotlinTestParameters&lt;/code&gt; is a massive leap forward in readability and maintainability. Moving forward, this should be the default way of specifying test values for all new Kotlin tests, replacing the older &lt;code&gt;@TestParameters&lt;/code&gt;, &lt;code&gt;@TestParameter({"..."})&lt;/code&gt;, and &lt;code&gt;Provider&lt;/code&gt; class patterns.&lt;/p&gt;

&lt;h2&gt;Try it out!&lt;/h2&gt;
&lt;p&gt;You can read more and start using KotlinTestParameters today over on &lt;a href="https://github.com/google/TestParameterInjector"&gt;our GitHub repository&lt;/a&gt;.&lt;/p&gt;&lt;p&gt;
Let us know what you think on GitHub if you have any questions, comments, or feature requests!&lt;/p&gt;</content><link href="http://www.blogger.com/feeds/8698702854482141883/posts/default/3554394794784901820" rel="edit" type="application/atom+xml"/><link href="http://www.blogger.com/feeds/8698702854482141883/posts/default/3554394794784901820" rel="self" type="application/atom+xml"/><link href="http://opensource.googleblog.com/2026/05/testparameterinjector-introduces-an-idiomatic-kotlin-api.html" rel="alternate" title="TestParameterInjector introduces an idiomatic Kotlin API" type="text/html"/><author><name>Google Open Source</name><uri>http://www.blogger.com/profile/03718388509216889937</uri><email>noreply@blogger.com</email><gd:image height="16" rel="http://schemas.google.com/g/2005#thumbnail" src="https://img1.blogblog.com/img/b16-rounded.gif" width="16"/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" height="72" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg-sCA6wDW6jrUBskzSKb0B9IHK0BWEWFRXl_kc8V2JFOwntyqHvxcZh1jEyGswmqKBwjGrS9V8Ueb0NdztDl8Fjuv4NMBUKqe_jdy0ADxr5zWKpPCL0cx8m4440Ylc1tFYg051mJJ3OXGDMqnEFG4Wyjv0qjWuVT19oi2GUVlci-YvnhUqhOT6ei2Xi-Q/s72-c/graph_wide.png" width="72"/></entry><entry><id>tag:blogger.com,1999:blog-8698702854482141883.post-6947154996946514734</id><published>2026-05-21T11:30:00.000-07:00</published><updated>2026-05-21T11:30:00.115-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Agents"/><category scheme="http://www.blogger.com/atom/ns#" term="Kube-Agents"/><category scheme="http://www.blogger.com/atom/ns#" term="Kubernetes"/><title type="text">Disrupting the presentation layer using autonomous workflows</title><content type="html">&lt;p class="byline"&gt;by &lt;author&gt;Adrian Chung&lt;/author&gt;, &lt;author&gt;Abdelfettah Sghiouar&lt;/author&gt; &amp;amp; &lt;author&gt;Matt Larkin&lt;/author&gt;, Google Kubernetes Engine&lt;/p&gt;

&lt;meta name="twitter:image" content="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg5Ew4zwACrflispkhfyO2RPltMX4eBYd9sSXXT5hNZ6G2FugX5WAu3wE3fpuJya824APcC0qjVwLxzwxqg2hK957Z4bln1aCl6_Pwwht9BQW6HF-cqjgdQZzRRvhV2qlar_m_t37Pkl5O4BptwMY1D2CX-g_U_x5XhXvrCiaU93gX0GwRTtyCEanRAQTU/s1600/Header%20-%20OSS%20-%20Kubernetes%20Gateway%20API%20graduates%20to%20GA%20%281%29.png"&gt;
&lt;img class="metadata" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg5Ew4zwACrflispkhfyO2RPltMX4eBYd9sSXXT5hNZ6G2FugX5WAu3wE3fpuJya824APcC0qjVwLxzwxqg2hK957Z4bln1aCl6_Pwwht9BQW6HF-cqjgdQZzRRvhV2qlar_m_t37Pkl5O4BptwMY1D2CX-g_U_x5XhXvrCiaU93gX0GwRTtyCEanRAQTU/s1600/Header%20-%20OSS%20-%20Kubernetes%20Gateway%20API%20graduates%20to%20GA%20%281%29.png"&gt;
&lt;a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg5Ew4zwACrflispkhfyO2RPltMX4eBYd9sSXXT5hNZ6G2FugX5WAu3wE3fpuJya824APcC0qjVwLxzwxqg2hK957Z4bln1aCl6_Pwwht9BQW6HF-cqjgdQZzRRvhV2qlar_m_t37Pkl5O4BptwMY1D2CX-g_U_x5XhXvrCiaU93gX0GwRTtyCEanRAQTU/s1600/Header%20-%20OSS%20-%20Kubernetes%20Gateway%20API%20graduates%20to%20GA%20%281%29.png" class="header-image"&gt;&lt;img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg5Ew4zwACrflispkhfyO2RPltMX4eBYd9sSXXT5hNZ6G2FugX5WAu3wE3fpuJya824APcC0qjVwLxzwxqg2hK957Z4bln1aCl6_Pwwht9BQW6HF-cqjgdQZzRRvhV2qlar_m_t37Pkl5O4BptwMY1D2CX-g_U_x5XhXvrCiaU93gX0GwRTtyCEanRAQTU/s1600/Header%20-%20OSS%20-%20Kubernetes%20Gateway%20API%20graduates%20to%20GA%20%281%29.png"/&gt;&lt;/a&gt;
&lt;h2&gt;Empowering every engineer to do more with Kubernetes&lt;/h2&gt;
&lt;p&gt;Kubernetes is the gold standard for container orchestration. Its power, flexibility, and rich API surface are exactly why it has become the foundation of modern cloud-first infrastructure. Today, engineers express that power through the K8s API, declarative YAML manifests, and cloud consoles, a remarkably expressive toolbox.&lt;br&gt;
We believe the next step is to expand &lt;em&gt;how&lt;/em&gt; engineers interact with that toolbox. A Kubernetes expert should be able to converse with a deep-domain peer that speaks fluent control-plane and can reason about cluster state in real time. An engineer who isn't a Kubernetes specialist should be able to express higher-order intent, such as "deploy my application," "rebalance this workload" and have it carried out safely against the same powerful APIs. Both audiences get more leverage out of the platform they already trust.&lt;br&gt;
This is the vision behind &lt;a href="https://github.com/gke-labs/kube-agents"&gt;&lt;strong&gt;Kube-Agents&lt;/strong&gt;&lt;/a&gt;: a system of intelligent, autonomous, and human-in-the-loop agents that act as a new, intent-driven presentation layer for Kubernetes. We are moving from &lt;strong&gt;declarative intent via API&lt;/strong&gt; to &lt;strong&gt;higher-order, human intent-driven operations&lt;/strong&gt; while preserving everything that makes Kubernetes great underneath.&lt;/p&gt;

&lt;h2&gt;The Vision: Expanding the Presentation Layer&lt;/h2&gt;
&lt;p&gt;Today, engineers do impressive work stitching together metrics, alerts, and multi-step commands to keep clusters healthy. Agents extend that work, not replace it. By complementing existing interfaces with autonomous agents, engineers can choose the level of abstraction that fits the task: drop down to &lt;code&gt;kubectl&lt;/code&gt; and YAML when precision matters, or describe intent in plain language when speed and clarity matter more. The agents continuously observe system state and can execute complex operations in real time on the engineer's behalf. This isn't about hiding Kubernetes. It's about giving every engineer a more capable collaborator on top of it.&lt;/p&gt;

&lt;h3&gt;Meet the Agents: A Specialized Team&lt;/h3&gt;
&lt;p&gt;Our architecture is currently built upon three core specialized agents, each acting as a new kind of intent-driven collaborator for different stakeholders:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;The Platform Agent&lt;/strong&gt;&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Role&lt;/strong&gt;: A partner for the central governance layer, your management plane.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Focus&lt;/strong&gt;: Codifying best practices and keeping platform blueprints evergreen and synchronized across the entire fleet.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Example&lt;/strong&gt;: When a new egress policy is defined at the org level, the Platform Agent propagates it to the Dev Team agents and confirms enforcement, giving platform teams confidence in compliance while letting developers stay focused on their applications.&lt;/li&gt;
&lt;/ul&gt;
&lt;li&gt;&lt;strong&gt;The Cluster Operator Agent&lt;/strong&gt;&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Role&lt;/strong&gt;: A trusted teammate for your infrastructure operators.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Focus&lt;/strong&gt;: Global concerns like multi-cluster balancing, automated provisioning, security patching, and zero-downtime version upgrades.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Example&lt;/strong&gt;: It can detect a degrading node and proactively migrate workloads before application latency spikes, expanding what a single operator can safely manage at scale.&lt;/li&gt;
&lt;/ul&gt;
&lt;li&gt;&lt;strong&gt;The Development Team Agent&lt;/strong&gt;&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Role&lt;/strong&gt;: A production-savvy peer for developers.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Focus&lt;/strong&gt;: The primary collaborator for developers. It supports the full workload lifecycle — reconciling manifest drift, right-sizing resources, and assisting with real-time debugging.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Example&lt;/strong&gt;: When a developer asks "Why is my service failing?" in chat, the agent responds with relevant logs, correlated metrics, and a diagnosis of recent config changes — meeting a Kubernetes expert at depth and meeting a less specialized developer at intent.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;Leveraging Industry Benchmarks&lt;/h2&gt;
&lt;p&gt;&lt;a href="https://gke-labs.github.io/devops-bench/"&gt;DevOps Bench&lt;/a&gt; is a comprehensive suite of benchmarks. These specialized agents learn from those results so they are equipped with the context to make well-reasoned decisions when autonomously supporting infrastructure work.&lt;/p&gt;

&lt;h2&gt;The First Demo&lt;/h2&gt;
&lt;p&gt;To be truly useful at the presentation layer, these agents can't be short-lived request/response scripts. They need to be persistent, long-running "team members" capable of continuous learning and collaboration.&lt;br&gt;
As a first step, we've launched a set of workspaces compatible with &lt;a href="https://github.com/openclaw/openclaw"&gt;OpenClaw&lt;/a&gt; for a demo, installable into your OpenClaw environment, leveraging existing out-of-the-box capabilities around identity, storage persistence, and memory. The agents included are: the Platform Agent, the Cluster Operator Agent, and the Development Team Agent.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Autonomous GitOps &amp; JIT Probing (Dev Team Agent): Demonstrates prompt-driven staging deployments and dynamically generated, context-aware probers. The agent adheres strictly to GitOps workflows by opening PRs for infrastructure updates (such as node failure tolerance) and actively prevents configuration drift by reconciling manual manifest edits upon merge.&lt;/li&gt;
&lt;li&gt;Self-Healing Infrastructure (Dev Team Agent): Showcases automated troubleshooting when a manifest is deployed with an image name typo. The agent executes a complete, autonomous 5-step remediation loop—Notification, Learning, Recommendation, Mutation, and Validation—to detect, fix, and verify the deployment without human intervention.&lt;/li&gt;
&lt;li&gt;Multi-Agent Governance &amp; Policy Coordination (Cluster Operator &amp; Dev Team Agents): Highlights cross-agent negotiation when the Cluster Operator attempts to downscale underutilized resources for cost savings. The Dev Team Agent steps in to enforce minimum capacity policies, successfully prioritizing application reliability and governance over financial savings.&lt;/li&gt;
&lt;/ul&gt;
&lt;figure class="wide borderless"&gt;
  &lt;a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiq6Ye4mgOHknolYle2q6QG5J9r4EUtgMxwu9mNj9wvLDh5-fK6sOjeGk-dzSbI1sUrF1-aKcxv5RqDMq9fxGeWUdyq6GdmU7-zOXaOBbK1TyURwEa7PTijVse0DONRyZ6rjVTxf5GhYwTKQRSfONqje31FPvTPOQN9CZ_4xAvcb2u7eVPeKWEXxQ-sBQw/s1600/ossblogdisrupt--5wdafubqc7r.gif"&gt;&lt;img alt="Animated walkthrough showcasing three OpenClaw agent demos in sequence: first, the Platform Agent configuring core infrastructure and identity; second, the Cluster Operator Agent managing cluster health and scaling; and finally, the Development Team Agent deploying applications and managing developer workflows." src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiq6Ye4mgOHknolYle2q6QG5J9r4EUtgMxwu9mNj9wvLDh5-fK6sOjeGk-dzSbI1sUrF1-aKcxv5RqDMq9fxGeWUdyq6GdmU7-zOXaOBbK1TyURwEa7PTijVse0DONRyZ6rjVTxf5GhYwTKQRSfONqje31FPvTPOQN9CZ_4xAvcb2u7eVPeKWEXxQ-sBQw/s1600/ossblogdisrupt--5wdafubqc7r.gif"&gt;&lt;/a&gt;
&lt;/figure&gt;

&lt;p&gt;Going forward, we will further productize this pattern, building on open standards to define agents and their capabilities (AGENTS.md, skills, MCP), and provide an out-of-the-box harness to orchestrate these agents.&lt;/p&gt;

&lt;h2&gt;Redefining the Stack&lt;/h2&gt;
&lt;p&gt;An intent-driven presentation layer is just the beginning. With an agentic interface in place, we can keep evolving the underlying infrastructure — adopting new components or integrating directly with additional infrastructure APIs — while engineers continue to interact with the system the way they already do. The interface stays intent-driven and stable; the agents adapt to the evolving stack underneath, so investment in how teams work today carries forward.&lt;/p&gt;

&lt;h2&gt;Call to Action&lt;/h2&gt;
&lt;p&gt;We're building Kube-Agents in the open because we believe the best infrastructure solutions are built collaboratively. Our goal is to use our expertise to give back to the open source community, while also actively learning from the ecosystem's real-world challenges. By working together, we can define best practices that benefit everyone.&lt;br&gt;
If you're interested in helping shape the future of Kubernetes management, check out the &lt;a href="http://github.com/gke-labs/kube-agents"&gt;Kube Agents repo&lt;/a&gt;.&lt;/p&gt;&lt;p&gt;
We are seeking engagement on two fronts:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Share your use cases:&lt;/strong&gt; What would you most like an autonomous teammate to help with? We want to learn from your unique operational needs—whether it's multi-cluster balancing, specific debugging scenarios, or policy enforcement—to ensure we're building tools that provide real leverage.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Define future roles:&lt;/strong&gt; What new specialized agents should exist? We value your input on the roles these agents should fulfill to best serve diverse team structures and operational requirements.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Join the conversation, contribute your ideas, and help us build a self-driving cloud that works for everyone. Check out the &lt;a href="https://github.com/gke-labs/kube-agents"&gt;Kube Agents project&lt;/a&gt; to open an issue or start a discussion.&lt;/p&gt;</content><link href="http://www.blogger.com/feeds/8698702854482141883/posts/default/6947154996946514734" rel="edit" type="application/atom+xml"/><link href="http://www.blogger.com/feeds/8698702854482141883/posts/default/6947154996946514734" rel="self" type="application/atom+xml"/><link href="http://opensource.googleblog.com/2026/05/disrupting-the-presentation-layer-using-autonomous-workflows.html" rel="alternate" title="Disrupting the presentation layer using autonomous workflows" type="text/html"/><author><name>Google Open Source</name><uri>http://www.blogger.com/profile/03718388509216889937</uri><email>noreply@blogger.com</email><gd:image height="16" rel="http://schemas.google.com/g/2005#thumbnail" src="https://img1.blogblog.com/img/b16-rounded.gif" width="16"/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" height="72" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg5Ew4zwACrflispkhfyO2RPltMX4eBYd9sSXXT5hNZ6G2FugX5WAu3wE3fpuJya824APcC0qjVwLxzwxqg2hK957Z4bln1aCl6_Pwwht9BQW6HF-cqjgdQZzRRvhV2qlar_m_t37Pkl5O4BptwMY1D2CX-g_U_x5XhXvrCiaU93gX0GwRTtyCEanRAQTU/s72-c/Header%20-%20OSS%20-%20Kubernetes%20Gateway%20API%20graduates%20to%20GA%20%281%29.png" width="72"/></entry></feed>