How Google got to rolling Linux releases for Desktops
cloud.google.com
cloud.google.com
Daily chron:
- Branch the repo, auto-update one dependency (ideally a smarter way to batch up groups)
- Run CI
- Auto-merge commit if CI passes, else discard commit.
- Loop to create a new branch for the next dependency waiting to be auto-updated.
Otherwise, not having the right testing or CI is technical debt like the grand parent commenter suggests.
On most of my projects I update dependencies whenever I can. On my older projects, I don't even touch any source code until after I update dependencies whenever I do maintenance on them. Typically either nothing breaks, I need to do some minor fixes, or I need to temporarily roll back some dependency to plan some bigger change. The thing is, if a new version is going to require any kind of non trivial work, I want to know about this as early as possible; especially if it is a lot of work. If you wait a year, you are looking at a lot of unknown work, which is basically technical debt you did not even know you had. I don't like that kind of uncertainty.
Mostly staying on top of things minimizes the work you actually have to do. And you get to benefit from all the fixes early. A lot of projects I join are hopelessly outdated. It's usually the first thing I fix. It's rare to find documented reasons why a particular thing can't or shouldn't be updated. If it's not documented, I'm just going to go ahead and fix it. In case it doesn't work, I'll document it.
How much of the team is awake, sober, and on the grid at that moment? Some times are worse than others for an outage.
That's also why agile processes work. Simply shortening feedback loops reduces the amount of work related to integrating and testing. Nothing magical about it. CI/CD works great too. Deploy when tested automatically instead of when the calendar says it is time to release. Get your feedback in early instead of weeks after a change.
A good way to fix a poorly performing team is simply to shorten their sprints. People hate this (because of all the meetings) but it makes sprints easier. Of course getting rid of sprints entirely is optimal. I actually prefer Kanban style processes usually and tend to separate planning iterations from day to day development work or releasing stuff. Leads to much more relaxed teams and it's also a lot easier on remote teams.
If course the above assumes you actually do the 5 times the testing before release. Most companies skipped that, and it showed.
Many companies have the wrong reflex of releasing less often when things don't go smoothly so they can test more not realizing that if they release more often, they can get away with less testing because there is less new stuff that can break.
Merging a full week of Chromium changes in all at once was just too many merge conflicts to deal with.
So I'd simulate as if I'd been merging daily by just doing 5-7 separate merges, which worked out well enough.
I dream of the day my employer provides an in-house distro for me.
This is why so many devs I know moved to Mac's. Not because Mac's are necessary that great, who cares about battery life when it just sits on a desk, but because it's the closest you can get to Linux in a corporate environment.
I would take native Linux on an ThinkPad as first option, but denied that I would go for Mac over Windows. I don't find WSL fixed all the other Windows problems such as lack of support for multiple desktops. They exist but the implementation is terrible.
Gnome and KDE are so much smoother when it comes to these workflows.
Running 32gb laptops to run a few development environments that really should be fine in 16gb is sad.
A lot of random programs that seem to be needed for corporate work, like outlook and teams, I imagine don't work or are somehow even worse on linux. Or is that what people are referring to with the junk software?
Does the general dev stack really run significantly more performant on linux distros? Significant as in uses 50% of the resources, compared to a 5% performance increase.
Windows drivers are relatively so optimized, I've seen battery life double when switching from Ubuntu to Windows on laptops although I haven't tested it in a while. The constant random headaches with webcams / mics / mice not working as expected has basically been my deal breaker in the past. Mac has been a decent medium.
I thought Teams was shitty on Linux, then I got switched to a Mac. Teams was just as shitty there too. I don't think it's any better on Windows either.
> Does the general dev stack really run significantly more performant on linux distros? Significant as in uses 50% of the resources, compared to a 5% performance increase.
Depends on the stack. One example: Being able to use Docker Engine natively rather than Docker Desktop saves a lot of resources.
In fact you can bring your own laptop and without reimaging use that for development. All interval tools (of which there aren’t too many are written in Go so are cross platform). I ordered a framework laptop and will expense it once it is here.
It seems like they went for Debian because of the proximity to Ubuntu but I wonder if they ever considered Suse, the ecosystem is pretty good.
Repository. Singular. Packman.
>each third-party package is often either compatible with the latest or older snapshot, or tumbleweed, but often not both
The conversation was about TW. There is a packman repo for TW.
But to me the killer app of tw is btrfs snapshots and rollbacks via snapper. (It can be configured on other systems too but the tw installer takes care of the subvolumes nicely)
Nearly every large company I've worked at worked hard to standardize the dev environment. Ensuring the right set of dev tools (and more) is available on every machine. It's not as simple as 'apt-get install build-essential' and you're done. For example many large companies use perforce, which also has a licensing requirement. Google in particular has a large set of custom binaries, remote file systems, unified login (think krb but maybe not exactly that), unified management, etc, etc.
That is what gLinux is. This isn't something you're going to want or need. In fact it doesn't even run outside of the Google hard wired VLANs really (for setup).
There are a LOT of net benefits for much of google to being on gLinux. It means, for example, that nearly every product works on Linux - google docs, spreadsheet, meet, etc. That's a huge win. Not only that, they are on par with Windows or Mac support (thanks browser as a platform).
I think Google had the opportunity to accidentally displace some of the Windows monopoly, not by doing a land grab a la ChromeOS or Android, but instead by just releasing a version of something they use themselves which would be appealing to like minded developers and companies that would follow Google's 'stamp of approval'.
(And if we really want to get there: chrome, android, angular, etc.)
If you have any hard data you're willing to share, I'd be grateful for it.
https://www.linuxfoundation.org/wp-content/uploads/2020FOSSC...
The Linux kernel is mostly funded by a few large corporations:
https://www.extremetech.com/computing/175919-who-actually-de...
Clearly, corporate funding is concentrated in a few large projects, which inevitably means that there will be volunteers out there who carry a huge burden keeping critical smaller projects going.
> Figure 4 shows the employment status of the survey respondents. The overwhelming majority are employed full-time. The next two most popular answers were self-employed/freelancer or full-time student. This makes sense as most of the skills necessary to contribute to FOSS are highly valued in today’s job market (programming, technical documentation, etc.).
The way I understand this is that most contributors are employed full-time, not that most contributors are employed to work on free software full-time..
> In aggregate, of 577 survey respondents, 48.7% said they are paid for time spent on open source contributions by their current employer, 2.95% said another party pays them, 4.33% said they are not paid because their employment contract prevents them from accepting payment for open source development, and 44.02% said they are not paid for any other reason.
So almost half of all contributors are actually paid to work on free software projects full-time. That is a fairly high number, but I feel it's still not that overwhelming.
> Clearly, corporate funding is concentrated in a few large projects, which inevitably means that there will be volunteers out there who carry a huge burden keeping critical smaller projects going.
I suppose it's just basic economy - a piece of software that solves a general problem (e.g. a kernel) will be used by more people then software that serves some specific purpose (e.g. text editor). But it seems to me that in no way is free software dependent on any company funding - that are more then enough hackers out there to keep the thing going, even if every company in the world decided to pull the plug at once.
I'm not sure the report allows this conclusion. I think what it says is that there are full-time employees who work on FOSS projects as part of their employment. But I don't see where it says how much of their paid time they can spend on FOSS work.
>But it seems to me that in no way is free software dependent on any company funding
I don't know. Linux does look very dependent on corporate contributions. But maybe this is a special case as most kernel code is device drivers.
However, I very much understand the sentiment - the same companies that keep all their code closed and mistreat their users with proprietary software use free software so they can make more proprietary software. It is antithetical to the spirit of free software. It is understandable why most hackers are bitter about it.
GPL (and AGPL) license was created to prevent such scenarios, but some people disagree with the rules of GPL - calling them "restrictions of freedom" - and use more permissive licenses instead, which allows big companies to do whatever they want with the software, including making it proprietary.
I would say the most successful open source projects are all in the GPL family precisely because of the strings attached.
Only if you're redistributing the resulting work. If not, you do whatever you like.
So if you take AGPL code and make a Service-as-a-Software-Substitute with it, you're still legally obliged to provide source code to the users of your SaaSS.
In fact, AGPL is so badass that not even Google [0] wants to touch it with a 10 yard stick :)
[0] https://opensource.google/documentation/reference/using/agpl...
IIUC, only insofar as the software already does that (i.e. by a download link in the UI). If the software currently lacks such a link, you have no obligation to add that feature, AGPL or not.
> [...] if you modify the Program, your modified version must prominently offer all users interacting with it remotely through a computer network (if your version supports such interaction) an opportunity to receive the Corresponding Source of your version by providing access to the Corresponding Source from a network server at no charge, through some standard or customary means of facilitating copying of software.
So the way I understand it is as long as you don't modify the software, you can run the original version as a network service without providing source code.
But if you do modify the program and serve it to users through a network interface, you have to include some means of copying the source code.
So the users of the software can do whatever they want with it with no strings attached then. I don't see how this concept is so hard.
Open source = libertarianism. You can do whatever you want, even if it implies making the life of everyone else worse by making them subjects of surveillance capitalism, akin to what Facebook and Google do.
GPL = "collective" freedom. You can do whatever you want, but it cannot trample on other peoples' lives. You as an individual cannot benefit more than you harm the rest of society
It would be nice, if Google and Debian could team up together to bring a Debian Version with rolling releases.
Imagine the stability of Debian packages together with the easiness of upgrading an Arch Linux system - would be a dream for every server.
But the beauty of libre software is its diversity. Keep on using what you like ;)
If one follows the best practices for them[1] (installing apt-listbugs and apt-listpackages), one gets information of bugs and API-breaking changes before performing the upgrade, and can decide to pin the specific package as needed, and it will automatically get released when the bug is solved.
This is thanks to how the Debian packages treat bug reports, and the debian/NEWS file. I can't believe other distributions get it so wrong for so many decades.
Plus, these 2 distributions (Testing and Unstable) get all the automated QA usual from Debian: autopkgtest integration tests, piuparts, lintian, reproducible builds, policy conformancy..
It seems it's no coincidence that gLinux from Google, rolling release, and in TFA, is based in Debian.
[1]: https://wiki.debian.org/DebianUnstable#What_are_some_best_pr...
Edit: also testing lacks timely security updates, they don't bother to cherry pick security patches for testing and instead just wait until the new secure version make is way thru unstable.
On the point of Testing lacking timely security updates, it's fair. But I invite you to compare the timelines with other distributions (including from corporate backers), and you will realize that their manual testing takes even more time.
Plus, you always have Debian Unstable. And apt-listchanges and apt-listbugs work fine in Unstable. It's the same experience: you get notified of serious bugs before upgrading, you get to pin packages and the pins are automatically lifted with the fixed version.
That’s not the point they argued, though. According to the comment you replied to, given version X of package A built against version Y of package B, Debian testing might contain package A version X but not package B version Y.
As far as I know, this situation does not occur in Arch.
I use it on my desktop, but use stable for my servers.
* it is rolling until a new stable is released and at that point testing is frozen and you have to upgrade to the new testing version
> Rolling releases with Linux distributions today are getting more common (Arch Linux, NixOS).
Where is Google's?
Notably, our security, provisioning, and tooling is installed, and that's about it. Nothing that's particularly useful outside of the corp bubble.
Disc: Googler, not in CorpEng.
Regarding "security", remember plenty of security is things like auditing, remote logs, ability of remote admins to control machines, etc, etc. It's ultimately all boring, but essential, large fleet management stuff.
AMA!
Also, are there any parts of Debian testing that is not rolling (i.e. OS version number or some package versions like kernel or Node.js)?
How do you deal with packages being broken until the next reboot if you do updates during the day?
I don't even update my Arch boxes that regularly and always do a reboot afterwards.
Packages almost always aren't broken in Debian testing but if they were, a reboot would not fix them anyway.
I restart processes instead of rebooting (using the needrestart/needrestart-session tools). I only reboot after Linux kernel image/module updates or microcode updates, because Debian cannot yet live-update those components.
debian-stable is extremely conservative in packages and stuff is often several years behind.
> … was to get off of Ubuntu's more classic LTS release cycle, and move to the freely-rolling waters of Debian Unstable. An underpublicized but very real reason was that the Google Linux team had a number of Debian Developers on it, who reasonably wanted to be closer to their primary love and affiliation
:blink :blink
1: https://www.reddit.com/r/debian/comments/j4liv4/whats_going_...
But expect a steep learning curve.
Feel free to ask me anything but instead of repeating past points I'll just link some past writings:
- https://kevincox.ca/2015/12/13/nixos-managed-system/
- https://kevincox.ca/2020/09/06/switching-to-desktop-nixos/
- https://kevincox.ca/2021/05/06/workstation-install-with-nixo...
ChromiumOS/ChromeOS is built using portage, and is certainly rolling release. It's not really a traditional linux distro, but it's something.
I have configured unattended-upgrades (the package from apt) on a Raspberry Pi on Raspbian 10, but no security updates seem to ever be released. Is there a gotcha I’m missing resp. is there a better way of configuring an always-on computer and keep it secure?
> We build packages in package groups, to take into account separate packages that need to be upgraded together. Once the whole group has been built, we run a virtualized test suite to make sure none of our core components and developer workflows are broken. Each group is tested separately with a full system installation, boot and local test suite run on that version of the operating system.
> We then proceed to carefully guide this release to the fleet utilizing SRE principles like incremental canarying and monitoring the fleet health.
But if your using it for server tasks, your probably better off actually running Debian. Although if your looking for something that is closer to a rolling release, you could just pick one of the distro's that have a release policy that strikes your fancy WRT how they roll out new packages/etc. Most distro's have rpi specific images, or you just install their generic arm64 images on top of something like the PFTF firmware.
Put another way, raspberry pi os, has a fairly dated kernel/etc but works well with all the hardware on the machine for desktop purposes. If your using it as a server, its not a good choice because they frequently don't have useful things turned on (various filesystems, networking options, RAID levels, etc). The core storage/networking/cpu/etc type of things have been working quite well in mainline/etc for a couple years now, so that has trickled down into all these distros.
dpkg-reconfigure unattended-upgrades
will create a minimal config file, '/etc/apt/apt.conf.d/20auto-upgrades' that may be all you need. But, you might consider adding something like below to cleanup downloaded package files: // Auto cleanup archives
APT::Periodic::MaxAge "10";
// Setting minage too is a good idea to prevent race conditions
APT::Periodic::MinAge "8";
Or, if you prefer (but, this will delete all archives present when it triggers and not just old ones like above): APT::Periodic::AutocleanInterval "10";
(Note: I'm assuming Raspbian is the same as the upstream Debian; I've never used Raspbian)This has changed/is changing. It heavily depends on your team (especially if you're not in engineering, I don't think most non-engineers would have a gLinux machine or a workstation out of the box). We've developed tools for crostini that would let people access a gLinux environment, I don't know how much I can talk about it so I won't go into details (although it's nothing super secret either), but the bottom line is that more and more engineers these days are able to do 100% of their job on a ChromeOS machine, including dealing with google3 stuff.
I believe gLinux can be installed on trusted machines that you connect over SSH as well as client laptops (where you can't checkout code etc).
That said many engineers/non-engineers at Google use ChromeOS on their client laptops (same with macOS).
1) Crostini didn't integrate with the ChromeOS accessibility infrastructure, so it wasn't practical for users who required assistive technologies which meant gLinux would have to be supported anyway
2) While there is some degree of support for graphics acceleration for Crostini instances, there's no real way to provide direct access to the hardware. A bunch of people needed to do work that required more direct GPU access (either very resource intensive rendering, or GPU-offloaded ML models and the like), which meant gLinux would have to be supported anyway
3) We were in the process of moving to using hardware-backed machine identity for Beyondcorp, and Crostini had no way of providing that and tying that identity to the host identity (you don't want a situation where a guest VM appears to be trustworthy when it's running on an unpatched host)
4) This was also before the acquisition of Neverware, which meant at the time that a team would need to be built to maintain a build of ChromeOS for generic workstation hardware
This was a few years back, and I left getting on for 18 months ago, so it wouldn't surprise me if this is reappraised at some point.
(I suspect the problem is with NVidia drivers..)
Though I had to stick to a slightly older version of grub to get it to load up properly with the given guide.
Generally, a Googler does actually get to pick their OS, it's part of the onboarding process that every Noogler goes through, and you're given 30 days from your start to swap around and test the other platforms (gLinux, macOS, gWindows, or Chrome OS).
I'll fully admit that my onboarding experience is quite out of date since I've been there for a decade. When I joined I didn't really have a choice for workstation since I only worked on server side stuff. Sounds like things have changed.
I've used different setups over the years, but my workstation has always been Linux. Currently running gLinux on the workstation and cloudtop. My current laptop is running ChromeOS (I'm a ChromeOS swe).
I have all those things open in my work setup, but I also have 3 or 4 different chat apps that don't run on linux, a few music apps that don't run on linux, a ton of Adobe software that doesn't run on linux, a stock trading app that doesn't run on linux, Kindle, a huge number of random productivity apps and games that don't run on Linux, the list goes on.
Having to deal with half-baked Linux alternatives or mess with a Windows compatibility layer sounds like a total nightmare. I also think it doesn't support modern DRM so you're SOL if you want to put on Netflix or something in the background.
Well, from the viewpoint of Google the corporation, the inability of devs running these software that only detracts them from real work can be considered a feature rather than a bug.
Additionally, cost is a huge factor as well. Think about the cost of purchasing 100,000 macOS machines. Compare that to purchasing 100,000 generic x86_64 machines from several manufacturers, which are generally more friendly to customization for Google's needs.
Feel free to ask questions!
Disclaimer: Googler that has a gLinux Desktop, a gLinux Cloud VM, and a macOS laptop. Not in CorpEng.
Yeah, it surprises me that more people who use Linux on their infrastructure don't also dogfood it on their personal machines. We run a Linux-based cloud, and my colleagues use a variety of OSes for their daily drivers; I definitely see a difference in capability between those who dogfood and those who think they can get by just fine on Windows or Mac.
It turns out I'm not the only person with the complaint "macOS in Engineering considered Harmful". Pretty much all backend work is done in either a Linux VM using Parallels, or in docker containers, and the developer experience sucks because of that. While theoretically someone could try building some components on mac, that would be a small portion useless to general work.
We might not be at the scale of Google, but we have even less mac-specific work and similar Linux focus (hell, I'm working on custom distro even)
PC hardware is absolutely terrible i.e. cheaply built, poor battery life, poor quality displays, numerous bugs and Linux compatibility issues and so on. My 16" MBP will reliably allow me to work between 15 and 20 hours without needing to recharge. The mini-LED screen is far more advanced than anything on a PC laptop, daylight visible, and can go head-to-head with professional reference displays. The CPU is substantially faster and cooler than Intel's top of the line. The audio is the best on any modern laptop. It's not like there are one or two features that Macs excel at, they are better in too many ways to count.
So first this comment is clearly influenced by your own preferences for MacOS. Stackoverflow Developer Survey shows irl about 40% of development is done on Windows, 30% Mac and 30% Linux. So the platforms are at least equally appealing in real world circumstances.
Secondly Goobuntu was insanely well integrated with Google’s custom source control and internal ecosystem. No one actually did real engineering work on Macs because it was disallowed for security reasons by policy, but I also never met anyone who wanted to. The tooling and customization on Goobuntu was very good and although I’m sure people asked for a better experience on Mac, the ability to customize and control the Linux dev experience just beat Googles ability to modify MacOS hands down.
Also I think there’s very little MacOS offers from a developer perspective that isn’t matched or easily trumped by Linux, but now that’s my personal bias showing ;)
I've always found very strange the love for MacOS professed by so many here on HN!
> Stackoverflow Developer Survey shows irl about 40% of development is done on Windows, 30% Mac and 30% Linux. So the platforms are at least equally appealing in real world circumstances.
Indeed. I use Windows and there's no amount of money you could pay me to use a Mac: at the bare minimum, I want an OLED screen, and there's no such option on MacOS.
OTOH, I try Linux every know and then, the terminal experience is still sub-par but the foot terminal emulator, despite how hard it is to configure it, is quite promising!
Mini LED on M1 MBPs is not OLED quality, but it's quite close in many cases.
Additionally, in my experience (and from reading various reviews), M1 laptops are really quiet (fans are not loud even under load), have great battery life, and don't get nearly as hot as most (if not all) PC counterparts (under the same load conditions.)
No, it's not even close.
When I say OLED, I mean OLED, not qled or something that's "almost like" it.
To be clear: no OLED= I won't buy it.
> Additionally, in my experience (and from reading various reviews), M1 laptops are really quiet (fans are not loud even under load), have great battery life, and don't get nearly as hot as most (if not all) PC counterparts (under the same load conditions.)
Thanks, it might be nice if I cared about such things, but I absolutely don't - especially if the only non negotiable requirement (OLED) can't even be met.
FYI, if you want to know other things I care about once the bare minimum of an OLED screen is there: ECC RAM, removable NVMe drives, ideally 2 of them (or better: 3x)
Unfortunately, there're no such things on macs.
I'm sure "quiet, long battery life, cold to the touch" are important factors for those who purchase macs- but not for me.
It seems that those who have found the M1 macs suitable to their needs think that it must be ideal for everyone else - it's not!
Different people have different needs.
I use Linux on the desktop myself. I can't justify the price, so I don't use Mac. But if my employer gave me a choice in the matter, I'd pick a macOS machine given - why not go for the fancier option? One where the UI, OS and hardware are tightly integrated. I can always download Debian for free any run it on anything. That's what I was wondering and what you've answered.
Provided the convenience is the same. If one is used to certain way of working with linux (may be scripts, desktop environment, or workflow - Keyboard shortcuts etc. ) then just picking a machine for "fancier option" is worthless or even annoying. Also wait to migrate scripts from bash to zsh. Again not all macs allow for baremetal install of Debian.
[citation needed]
I don't work at google, but, recently I had to discover macos at work, and boy the "desktop experience" you talk about sucks.
I miss my linux env (I have a slackware at home) and even my windows one (the old machines at work)