top | item 46995138

(no title)

joshribakoff | 17 days ago

> a framework for applying code changes across hundreds or thousands of repositories at once

Statements like this raise fair questions. Is there code duplication across 1,000s of repos, and why respond by increasing surface area further with bespoke tooling?

discuss

order

narnarpapadaddy|17 days ago

Imagine you initialized 10,000 NPM repos identically simultaneously. Then had 100 different teams each take of 100 those repos for 10 different projects, and let each repo run for 1,000 commits. How distinct would each of those repos be? How might have they evolved independently? What types of interesting patterns might be adopted to improve development experience, or detect bugs by each team? What packages at what version might be most popular?

Now imagine you had the tools to do a diff across all those repos simultaneously, and classify, group, and review those patterns. What could you learn NPM teams and practices?

Now imagine you could pick best of breed, and propagate those back to all the other projects automatically to improve their productivity, security, etc. How fast would your productivity improve and your engineering culture change if everyone could automatically learn the best of what everyone else had to offer?

Companies like Spotify have sophisticated tooling for detecting repo changes and enforcing policy like that, and they run that experiment 1,000 times a day. Small evolutions in what was an identical build script, like a version bump, are detected, and if it passes a threshold it can be rolled out everywhere else immediately.

Having all the copies that you can sync up centrally periodically puts natural selection to work on internal best practices.

Basically, things work differently at scale. When the number developers you employ approaches a meaningful percentage of the total number of developers globally, your internal diversity starts to mirror the global diversity. So you have to manage that diversity. If you freeze policy entirely, you fall behind the global average. If you let things run wild, your company fractures technologically.

So, make a 1,000 copies, see what pops up, adopt and enforce things that look good, then do it again. Evolve to the next best place you can be from where you are.

franktankbank|16 days ago

This sounds totally retarded.

Why would spotify have 10000 npm repos?