---
title: "Google's new distributed Go app framework"
publication: "Go Weekly"
issue: 450
published_at: "2023-03-03"
canonical_url: "https://golangweekly.com/issues/450"
---

Plus a Go telemetry update, Uber's Go style guide, an introduction to Ent, and a new IMAP library. |        

#​450 — March 3, 2023 

[Unsub](https://golangweekly.com/leave/*|UID|*)|[Web Version](https://golangweekly.com/issues/450)  

Together with [![Tailscale logo\](https://res.cloudinary.com/cpress/image/upload/c_fill,g_auto,e_trim,w_280,h_100/e_make_transparent/co_white,e_outline:7/zyrdpx3vpbxxzkmbrkf7.png)](http://tailscale.com/?utm_source=golang&utm_medium=email&utm_campaign=2023-3-3&utm_content=brand)  

The _Go Weekly_ Newsletter 

[![\](https://res.cloudinary.com/cpress/image/upload/w_1280,e_sharpen:60,q_auto/f9magaazzokmum6ulrop.jpg)](https://research.swtch.com/telemetry-opt-in)  

[_Opting In_ to Transparent Telemetry in Go](https://research.swtch.com/telemetry-opt-in) — A debate around [adding telemetry to the Go toolchain](https://www.theregister.com/2023/02/10/googles_go_programming_language_telemetry_debate/) has been rolling for the past few weeks. Now there’s a new development: _“By far the most common suggestion was to make the system opt-in (default off) instead of opt-out (default on). I have revised the design to do that.”_ There are some downsides to that, of course. 

Russ Cox   

[Service Weaver: Google's Framework for Writing Distributed Go Apps](https://opensource.googleblog.com/2023/03/introducing-service-weaver-framework-for-writing-distributed-applications.html) — A new open-source framework from Google that lets you _“write your (Go) application as a modular monolith and deploy it as a set of microservices”_ to get the best of both worlds, namely: _“the development velocity of a monolith, with the scalability, security, and fault-tolerance of microservices.”_ If you fancy something more technical and less salesy, Robert Grandl has [a quick introduction here](https://serviceweaver.dev/blog/quick_intro.html). 

Google Open Source   [![\](https://copm.s3.amazonaws.com/e0920bf2.png)](http://tailscale.com/?utm_source=golang&utm_medium=email&utm_campaign=2023-3-3&utm_content=brand) 

[Review Changes Made to Your Tailscale Network](http://tailscale.com/?utm_source=golang&utm_medium=email&utm_campaign=2023-3-3&utm_content=brand) — Staying on top of what’s happening in your network is easier than ever with Tailscale’s configuration audit logs, which let admins review changes made to your Tailscale network, such as added devices, updated ACLs, or new DNS settings. 

Tailscale sponsor   

[A Beginner's Guide to Creating a Webapp with Ent](https://entgo.io/blog/2023/02/23/simple-cms-with-ent/) — A practical introduction to using [Ent,](https://entgo.io/) an open-source entity framework for Go for modelling and querying data, by way of building a simple content management system. 

Rotem Tamir   

[Uber's Go Style Guide](https://github.com/uber-go/guide/blob/master/style.md) — Want to know how a large Go organization writes Go? Take a ride with this guide that covers guidelines, some performance issues, and stylistic concerns. 

Uber   

**IN BRIEF:** 

- If you want to use [TinyGo](https://tinygo.org/), the small Go compiler for embedded systems and WebAssembly, you might find [this list of supported packages](https://tinygo.org/docs/reference/lang-support/stdlib/) useful.
- Efron Licht is back with [more Go quirks and tricks](https://eblog.fly.dev/quirks2.html).   

[From Go on EC2 to Fly.io: More Fun, Less Cost?](https://benhoyt.com/writings/flyio/) — Ben talks about switching a couple of side projects from an EC2 instance to up and coming no-ops platform [Fly](https://fly.io/), and how he resolved some sticking points like running background jobs in Go without cron. 

Ben Hoyt   

[Unlocking the Power of Zero Knowledge Proofs with Gnark](https://arriqaaq.substack.com/p/unlocking-the-power-of-zero-knowledge) — [gnark](https://github.com/ConsenSys/gnark) is a library for creating zkSNARK (Zero-Knowledge Succinct Non-Interactive Argument of Knowledge) [zero knowledge proof](https://arriqaaq.substack.com/p/the-magic-of-proving-without-revealing) applications. 

Farhan   

[Try Temporal 101 in Go](https://t.mp/3WVgVVK) — In this beginner’s course, you’ll learn the basic building blocks of Temporal to develop an app that communicates with an external service. 

Temporal Technologies sponsor   

[Build Your Own Database From Scratch](https://build-your-own.org/database/) — A book that’s still under development that uses Go but is language agnostic. A few chapters are ready to read, including on [implementing B-trees in Go](https://build-your-own.org/database/04_btree_code_1). 

James Smith   

[Why to Defer Your Mutex Unlocks](https://www.ribice.ba/defer-mutex-unlocks/) — One for the best practice list? 
Emir Ribic   

[Import Leads From Google Forms Into Your CRM with OpenFaaS](https://www.openfaas.com/blog/import-leads-from-google-forms-to-crm/) 
Alex Ellis  

🛠 Code & Tools 

[![\](https://res.cloudinary.com/cpress/image/upload/w_1280,e_sharpen:60,q_auto/ckbrv20xuzbchzexa4a6.jpg)](https://proton.me/blog/gluon-imap-library)  

[Gluon: A High-Performance IMAP (Server-Side) Library](https://proton.me/blog/gluon-imap-library) — This is aimed at mail system implementers and server-side IMAP management, but this post digs into the details about why that’s a tricky thing to build and how Proton, the folks behind the privacy-first email platform Proton Mail, pulled it off. [GitHub repo](https://github.com/ProtonMail/gluon). 

Proton   

✉️ **You've Got Mail:** If you'd prefer a complete 'out of the box' mail server experience with a Go-powered system, check out [Mox](https://github.com/mjl-/mox) which implements SMTP, IMAP4, and numerous email specs in a single open source mail server.  

[algnhsa 1.0: AWS Lambda `net/http` Server Adapter](https://github.com/akrylysov/algnhsa) — Enables running Go webapps on AWS Lambda and API Gateway/ALB without changing existing HTTP handlers. 

Artem Krylysov   

[Tuple, a Lightning-Fast Pairing Tool Built for Remote Developers](https://tuple.app?utm_source=cooperpress&utm_medium=newsletter&utm_campaign=sponsorship-blitz&utm_content=Go+Newsletter_Sponsored+Link) — High-resolution, crystal-clear screen sharing, low-latency remote control, and less CPU usage than you'd think possible. 

Tuple sponsor   

[Graph 0.16: Generic Library for Creating Graph Data Structures](https://github.com/dominikbraun/graph) — Supports different kinds of graphs such as directed graphs, acyclic graphs, or trees. This week’s [0.16.0](https://github.com/dominikbraun/graph/releases/tag/v0.16.0) release adds support for [integrating storage backends of your choice](https://github.com/dominikbraun/graph#store-the-graph-in-a-custom-storage) by implementing a Store interface. 

Dominik Braun   

[PNGR: Dockerized (Postgres + Nginx + Go + React)](https://github.com/karlkeefer/pngr) — Starter kit for a webapp that includes user and session management, JWT authentication, and a basic CRUD example. 

Karl Keefer   

[Find Your Total Build Minutes with GitHub Actions and Go](https://blog.alexellis.io/github-actions-usage-build-minutes/) 

Alex Ellis    

Jobs  

[Site Reliability Engineer](https://jobs.ashbyhq.com/stickermule/2482befb-4aa7-4372-98d7-042aaf774315?utm_source=Cooperpress) — Join our "kick ass" team. Our software team operates from 17 countries and we're always looking for more exceptional engineers. 
Sticker Mule   

[Find a Job Through Hired](https://hired.com/join/?utm_source=newsletter&utm_medium=sponsor&utm_campaign=%28b2c%29%28l-all%29%28r-all%29%28cooper-golangweekly%29&utm_content=easy-job-hunting) — Hired makes job hunting easy-instead of chasing recruiters, companies approach you with salary details up front. Create a free profile now. 
Hired   

🧑‍💻 Got a job listing to share? _[Here's how](https://booking.cooperpress.com/jobs)_.     

- [pdfcpu 0.4](https://github.com/pdfcpu/pdfcpu)
 ↳ PDF processing library. _(Great logo!)_
- [conc 0.3](https://github.com/sourcegraph/conc/releases/tag/v0.3.0)
 ↳ Better structured concurrency for Go.
- [Render 1.6](https://github.com/unrolled/render)
 ↳ Easily render JSON, XML, HTML & more.
- [Macaron 1.5](https://github.com/go-macaron/macaron)
 ↳ Modular Web framework.
- [Miller 6.7](https://github.com/johnkerl/miller)
 ↳ Swiss army knife for name-indexed data.
- [Buf CLI 1.15](https://github.com/bufbuild/buf)
 ↳ Tool for working with Protocol Buffers.
- [go-git 5.6](https://github.com/go-git/go-git)
 ↳ Extensible pure Go Git implementation.         

Curated by Peter Cooper and [Glenn Goodrich](https://twitter.com/ruprict). 

[Change your email](https://golangweekly.com/edit_subscription/*|UID|*)
[Stop getting this newsletter](https://golangweekly.com/leave/*|UID|*) 

© Cooper Press Ltd · Fairfield Enterprise Centre, Louth, LN11 0LS, United Kingdom
