Live data from Hacker News

How Google got to rolling Linux releases for Desktops

cloud.google.com

121–130 of 167 posts

Re: How Google got to rolling Linux releases for Desktops

#121

Earlier quoted context omitted.

> GPL absolutely has strings attached. Only if you're redistributing the resulting work. If not, you do whatever you like.

Note that AGPL (Affero GPL) expands the attached strings to any kind of user-facing network interface. 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.…

> you're still legally obliged to provide source code to the users of your SaaSS.

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.

Re: How Google got to rolling Linux releases for Desktops

#122

Earlier quoted context omitted.

> GPL absolutely has strings attached. Only if you're redistributing the resulting work. If not, you do whatever you like.

Note that AGPL (Affero GPL) expands the attached strings to any kind of user-facing network interface. 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.…

Only if outsiders can use the service. Internal corporate use of GPL code has zero strings. You're all one entity and no distribution has happened.

Re: How Google got to rolling Linux releases for Desktops

#123
post #76

I'm using Debian testing for years with unattended-upgrades upgrading everything 4 times daily (once for each Debian repository update). Not at Google. AMA!

Have you ever used/considered using another rolling release? If yes, how would you compare them to Debian testing?

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)?

Re: How Google got to rolling Linux releases for Desktops

#124
post #102

Earlier quoted context omitted.

Last time I checked most of popular OSS projects were predominantly developed by developers at big users on company time. So I don't get this shaming?

It can certainly seem that way with all the companies pretending to be free-software-friendly, but I don't think the percentage is that significant. If you have any hard data you're willing to share, I'd be grateful for it.

This survey certainly doesn't answer all questions, but I think it does show that corporate funding of FOSS development is significant:

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.

Re: How Google got to rolling Linux releases for Desktops

#125
post #85
post #21

Cool article. My two takeaways: 1) If your deployment process hurts do it it more often (small releases frequently are easier than few big bang releases. 2) Don't commit to being x days behind upstream, if there is a big workload on your team (upgrading, vacations, etc.) you have the flexibility to delay upgrades and reduce the stream of incoming issues.

This is true for your codebase and your dependencies as well.

Yes, one of those lessons they don't really teach you in school that is really obvious once you take note of the simple reality that integration and testing effort does not scale linearly with the amount of change. Twice the change is not twice the testing effort but more like five times.The more change you allow to pile up the more of a hurdle testing and integrating become. At some point the integration and testing work becomes the dominant activity. Usually, a good way out of that is simply increasing the release frequency.

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.

Re: How Google got to rolling Linux releases for Desktops

#126
post #85

Earlier quoted context omitted.

This is true for your codebase and your dependencies as well.

This, remaining on a known-good release is a form of technical debt to use judiciously and pay down when more convenient. Beta testing everything immediately can be a favor to the community, but it’s probably not your main job.

Shouldn’t need to be anyones job. Automate:

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.

Re: How Google got to rolling Linux releases for Desktops

#127
post #85

Earlier quoted context omitted.

This is true for your codebase and your dependencies as well.

Yes, one of those lessons they don't really teach you in school that is really obvious once you take note of the simple reality that integration and testing effort does not scale linearly with the amount of change. Twice the change is not twice the testing effort but more like five times.The more change you allow to pile up the more of a hurdle testing and integrating become. At some point the integration and testing…

Fast deploy is good for many things, but that 5 times the testing effort means the few releases you do are higher quality. When it has to be perfect, like many embedded systems you don't do many releases.

If course the above assumes you actually do the 5 times the testing before release. Most companies skipped that, and it showed.

Re: How Google got to rolling Linux releases for Desktops

#128
post #85

Earlier quoted context omitted.

This is true for your codebase and your dependencies as well.

This, remaining on a known-good release is a form of technical debt to use judiciously and pay down when more convenient. Beta testing everything immediately can be a favor to the community, but it’s probably not your main job.

Actually, it's the opposite in my experience. Beta testing is typically done when most software is released. Basically, at that point your technical debt is all the known & fixed issues that you still have, the features you don't have access to and can't benefit from, the performance issues you still have, the newly deprecated APIs that you are still using, etc. Opting into all that without good reason is a bad idea. If you are afraid things will break, the best way to find out is to just try it. Worst case you have to roll back a change. But at least then you know and you can plan a fix. IMHO anything that isn't on a current version should have a documented reason why that is or be fixed ASAP. I rarely see this on projects. Usually that means nobody cared enough to try which is just a form of negligence.

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.

Re: How Google got to rolling Linux releases for Desktops

#129
post #84

Glad to see that they're planning on contributing more to the upstream. But considering the size and budget of Google, and the amount of free work they're getting from the Debian community, it would be utterly irresponsible not to . Not blaming the team that's doing this good work though - I'm sure they're working hard enough as it is.

Open source = no strings attached. I don’t get the shaming of big users of open source. (And if we really want to get there: chrome, android, angular, etc.)

It all boils down to what kind of freedom you want.

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

Re: How Google got to rolling Linux releases for Desktops

#130

Rolling Releases are basically my main reason why I choose Arch Linux over Debian. 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.

it exists: either Debian Testing (a week or so of proven stability) or Debian Unstable (latest and greatest). 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…

No, it didn't exist (outside Google). Debian testing is not a rolling release because it is not a "release", it lacks internal coherence. As the article mentioned, testing packages are built in unstable and then simply moved to testing individually, with no regard to moving all the build dependency chain together. So you end up with packages in testing that were built using packages that are not in testing yet.

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.

Post reply on HN