Uber was the opposite. In ~2017 after years of hyper growth they had over 10,000 repos supporting nearly as many micro-services. The move to monorepos (technically two, one for jvm stuff, one for go) came as a solution to the maintenance issues of this sprawl. I was there when a mandate came down to move your service into the monorepo.
I don’t understand how it’s possible to have close to 10,000 services. I worked on a project with 17 and found that to be very awkward at times (local development with k8s didn’t seem to be a solved problem, and we depended heavily on complex tests and blue/green deploys to be sure changes actually worked in production). But nearly 10,000 is insane.
How do you orchestrate that? I guess this is the kind of situation where you really do need container orchestration.
Repos aren't one-to-one with running services. Lots of these could easily be bundled as modules to be included at build-time. A lot of them could also just be API services that provide a contract via REST or whatever. If you have enough internal users, you just have to maintain an SLA comparable to a public API.
Exactly. And probably what Apple, Google and Facebook do is just the exact opposite to what the other 99% of companies out there need.
Who on earth can think that what they do, companies with the engineering power as these companies have, has to be also good for it's 30 employee startup just boggles my mind. Not talking about Uber, I have no idea about them and what they do. But I worked for smaller startups just blindly following what they read google or Facebook do and immediately thinking that's the best thing to do too.
It supports 5 platforms, but uses 4 completely different build systems, including 2 custom ones (3 if you count depot_tools). There is very little overlap between the platform versions, meaning it's effectively 5 different projects smashed together into a single folder, and pretty much no way to use them in a cross platform project without some serious work. There isn't even a basic abstraction over the similar callback APIs between the platforms, although that's not a huge deal because the effort to write a basic abstraction layer is nothing compared to the effort of getting to a point where you can actually use it in a cross-platform project.
It's also funny that one of the build systems is GYP, which is basically a reinvention of CMake, except it's only used for the Windows build even though it can generate projects for the other platforms. Also, the VS project generator for GYP has been broken for a while (simple typo, trying to import OrderedDict from the wrong module. There's a PR to fix it, hasn't been merged for some reason), so it doesn't even work. Beyond that, it's also broken because GYP forces treating all warnings as errors, with a whitelist of warnings, yet the latest version (since yesterday at least) fails to build (tested on VS2019) because there's a warning that isn't in the whitelist.
You could try to fork it and fix these issues, but depot_tools doesn't provide a way to change the clone URL for repos, meaning you need to dig through the source code and wrap it in your own script that interacts with the internal APIs to do a simple clone (hint: fetch.py has a 'run' method that you can call with a custom constructed 'spec' object, which is a dictionary where you can inject your own url; just look at the hard-coded spec object for breakpad as a starting point). If you don't use depot_tools, then you need to manually clone all of the dependencies in the project since they're not even set up as git submodules.
There's also no versioning scheme whatsoever. Depot_tools seems to automatically checkout the latest version of everything (including itself).
I spent the past week wrestling with this monstrosity. Ended up successfully writing a Conan package for it that builds for Windows and Linux (there's one on Conan center, but it only supports Linux). I have 3 more platforms to go, but I think it'll be a better idea to just scrap everything and refactor into something more reasonable using CMake.
Instead of Breakpad, they also have a newer one called Crashpad, which is meant to improve reliability on Mac OS. Unfortunately, it depends on Chromium, so it won't work for my purposes.
...so all I'm saying is, maybe don't use Google as a role model for your project infrastructure.
To be honest, I haven't looked into Crashpad that much because (from a quick glance) it seems like it requires a secondary process for crash handling, whereas with Breakpad you can do it in the same process. That, and the chromium thing is what turned me away from it. I guess I should probably look into it a bit more, especially the size of mini_chromium to see if it's reasonable for my needs before I go forking Breakpad.
I've come to really disagree with this approach. It's extremely hard to undo an entrenched system. My org has a gnarly monolith that works well enough that we can't justify spending any money refactoring it as it enters it's 12th year of service.
"There is nothing more permanent than a temporary solution"
Skechers is a good example. They conducted multiple inspections and found no forced labor, so they maintained business dealings with Chinese suppliers.
As a Chinese, I think the logic of certain Western countries is ridiculous. Because Xinjiang’s human rights situation is considered to be problematic, so Xinjiang’s companies are banned. As an analogy, can I think that the human rights situation of African Americans is terrible, so I need to ban companies that employ African Americans?
These bans will only make the living conditions of minorities worse, because they may lose their jobs because of the ban.
By the way, Uyghurs live and work in every province in China, especially in the catering industry. I have never heard complaints about forced labor. American propaganda makes me feel ridiculous, but it seems to be working.
> I have never heard complaints about forced labor.
So does this mean they don't exist?
> These bans will only make the living conditions of minorities worse, because they may lose their jobs because of the ban.
but they are slave labour, so whether they have a job or not doesn't really matter? or would you say thats not the case? If so they could move and get a job somewhere else?
Given GP never hears about forced labor, GP may want to express that the percentage of people who are being forced to labor is low, or nearly impossible. "sth doesn't exists" is somewhat extreme.
There's a huge gap on the opinions of Xinjiang between the Chinese side and the Western side. Don't put your words for Chinese side on HN because no one would vote for you and your comment will be eventually grayed out.
I can't recall seeing downvoted comments on HN that were defending China while making good points, with sound logic, avoiding whataboutism and crazy comparisons, and being respectful. The problem is that almost every pro-Chinese-policy comment that I've seen here violates one or more of those things.
In the specific case of the GP post, they're making a bad analogy in their first paragraph.
The situation of African Americans nowadays is nowhere near comparable.
The issue are the “jail looking” camps which are officially “education centers”. Forced labour happens there, which is basically slavery. Western companies don’t want to be associated with slavery. It’s hard enough when people are paid almost nothing, but here they are literally not paid and obliged to work. The living conditions of people in the camps won’t change regardless of what western companies do. Also mass sterilization occurs in these camps which is considered a genocide by many.
I know western media bias is a thing and that most Chinese people have no idea this is happening and are good people. But this is one of these things where there’s just way too much smoke for there to be no fire. There are too many testimonies and photos. As uncomfortable as it is, it is unfortunately true. This is not a western conspiracy.
When these allegations first appeared, I waited cautiously for evidence. Maybe something happened around me that I didn't know?
When the BBC interviewed Xinjiang but failed to find evidence, and then only used video filters to render fear, I questioned the authenticity of these allegations.
Later, the "evidence" displayed by the Western media had a lot of traces of forgery. After that, I didn't believe these allegations even more.
It's a pity that people who have been immersed in Western media propaganda for a long time have been implanted with a concept: China is bad. This makes any news that is bad for China seem to be true. Whoever says China is good is the CCP propagandist.
But people living in China know that Western media reports are very biased.
It's also an irony that people who have a slightest hint of saying China is not all good are easily regarded as traitors on the Chinese internet.
Also some people living in China know that Chinese media outlets (all state-run) might be far more biased.
But hey, I'm not playing whataboutism. It just seems so ironic to my Chinese eyes.
It's easy to let people criticize when their criticism has no real impact, and they're gonna have to vote between the same two parties anyways...
The main difference is that the Chinese only have one party -- which means they don't have to pretend their votes matter which might even be seen as an improvement (at least honesty wise).