24 ms·
An old (but fantastic) comment from the previous discussion about Uber's app size that addresses why the Uber app is so big: https://news.ycombinator.com/item?i
by bhupy 6y ago
An old (but fantastic) comment from the previous discussion about Uber's app size that addresses why the Uber app is so big: https://news.ycombinator.com/item?id=25376346 https://news.ycombinator.com/item?id=25376346
- jedberg 6y agoThe summary of that comment is "we have to include a ton of stuff that will never be relevant to most users like payments APIs that only work in India." This is why some global apps have different apps for different countries. It's a trade off. Would you rather have a single fat Uber app, or have to download Uber India when you arrive there?
- bhupy 6y ago> This is why some global apps have different apps for different countries Do you have some examples? Genuinely curious. To my knowledge, most of the major FAANG apps are single-binary.
- mkipper 6y agoDedicated apps for fast food chains are one example. A quick search gave me "Burger King India", "PizzaHut Egypt" and "KFC UAE". Why? I have no idea.
- jedberg 6y agoProbably payment APIs, just like Uber. Or they are developed by different local app shops.
- jdminhbg 6y agoI think fast food chains are generally not actually owned by the same parent company. A company in India is licensing the Burger King branding and presumably some of the recipes from Burger King USA, rather than being a subsidiary thereof.
- fakedang 6y agoThis is the real reason. For instance, McDonald's in India is itself run by two companies, one for North and West India, and another for South and East India.
- owenversteeg 6y agoTotally different requirements. Some countries' fast food apps are for mobile ordering and delivery, some are a giant collection of coupons, and some are only for nutritional information. And some are just for promotional activities (only used for various promotional calendars.) After seeing all the different APKs I tried out a few for different countries out of curiosity and at least for Burger King they were entirely different applications with completely different use cases. To cram them all into one global app would be an enormous mess.
- jedberg 6y agoeBay is one that comes to mind right away (unless they changed it recently). Google Pay is another one. They have a dedicate app in Singapore. It seems like a lot of them went to single apps when they realized they could download data packs within the app. Stuff like Rick Steves guided tour apps used to be separate per city, but now it's a single app where you download the data for a certain city. But I think you're right that all the major FAANG apps are single-binary.
- sond813 6y agoStarbucks has a separate China app. I suspect a part of this is due to app size because there are regions specific SDKs. Another is likely security. Regulations in some countries require data to be shared with the government and they don't want SDKs that collect this data to be included in more privacy focused regions.
- paulvorobyev 6y ago>Do you have some examples? Genuinely curious. To my knowledge, most of the major FAANG apps are single-binary. Worked on iOS app size at a FAANG for a couple of years -- this is untrue. At the very least there are different binaries for watch vs iPhone architectures.
- Scoundreller 6y agoPersonally? A single fat app. Less fumbling around when I land somewhere to get their localized app, which will presumably only be available from that country’s App Store that’s inaccessible before I land there. If I have to deal with the airport’s wifi... I don’t want to depend on downloading a 100mb binary over it. Maybe they could have a local and global version available, but that’s already making it more complicated.
- dangwu 6y agoThe downside is trying to download Uber for the first time when arriving at an airport. However, I think Uber is so ubiquitous now that it's the likely to already be installed.
- 908B64B197 6y ago> If I have to deal with the airport’s wifi... I don’t want to depend on downloading a 100mb binary over it. That pretty much doomed all these "local Uber competitors". Nobody would start looking for a local competitor, set up an account, get 2FA, register their payment method and then have the privilege of getting a "starting up" screen telling them how and where they can get a ride. Instead they just open Uber and get where they want.
- smeyer 6y ago>That pretty much doomed all these "local Uber competitors" Did it? How much of Uber's usage in a random big city is from travelers based elsewhere vs locals? And it seems like others have succeeded in some narrower regions (Grab, Didi, etc.).
- bostonfincs 6y agoA whole lot of Ubers big spenders. On a individual basis, but I know many consultants/sales people traveling all over the world that spend hundreds or thousands on ubers a month and want the ease of use. Those are Ubers profitable customers buying lux/black cars etc. in addition to many wealth families that use Uber all over the world in vacation. They should be solving for those customers over a customer worried about an extra 50 or 100mb even on their phone
- Farbklex 6y agoThe Google Play Store solved this problem with dynamic feature modules. Either at install time or later on, you can let users download only certain parts of the app. All with a single app store entry and app bundle. We use this for devices which don't have NFC. If the device doesn't support it, then there is no reason to download the module for identification via passport NFC scans.
- piannucci 6y agoInteresting. I have had bad cell connectivity in unfamiliar airports, though, where I could barely keep a connection to e.g. the Lyft servers. What if I can’t download the module when I need it? I don’t think requiring the user to download it in advance of their flight is viable, either. If we lived in a world of universal, homogeneous, inexpensive connectivity, I’d be satisfied with the solution you mention. I guess if they had location/policy micro-modules small enough to fit in a single MTU, then anybody who could connect to Uber at all could be served. It still boggles my mind that there could be ~100M meaningful instructions in a program.
- megablast 6y agoWhich sucks. I arrive in a new country, and need to find internet access???
- PudgePacket 6y agoMate.. how are you going to get your uber anyway without internet?
- viraptor 6y agoIf you want to use Uber afterwards... yes, you already established you'll rely on internet access.
- deadbunny 6y agoHow are you ordering an Uber without internet access?
- spoonjim 6y agoI love that it’s one app. I remember landing in Delhi from San Francisco and the Uber app worked perfectly and I was so astonished. Effectively nothing else translates seamlessly like that. Combined with the incredible quality control on the vehicles side (every car I got in India had a seatbelt, where close to 0 taxis you’d get on the street would), I knew it was a very high functioning company to execute like this.
- ForHackernews 6y agoThis is such a non-feature for 99% of users. The fact that Uber devotes engineering resources to serving the tiny 1% slice of users who care about having an app that works seamlessly across dozens of countries, at the expense of the much larger number of users with limited space on their outdated devices, is really emblematic of the Valley's out-of-whack priorities.
- spoonjim 6y agoThat 1% of users represents a lot more than 1% of profit, and engineering an application that is that robust across scenarios has benefits to the stationary users transiting through multiple scenarios as well (surge pricing to normal, credit card to Apple Pay, car ride to scooter ride, etc).
- MattGaiser 6y ago> This is such a non-feature for 99% of users. I would imagine that travellers are an outsized percentage of high spenders, even if they are a small portion of users.
- ChrisKingWebDev 6y agoI would agree with this. At home I walk, ride my bike, get on transit, rent a carshare etc. When I'm travelling, I'm walking or calling an Uber/Lyft. I'll take a train or bus only if it's super easy to navigate.
- 6y ago
- fractionalhare 6y agoNo, it's also substantially different between certain cities and regions in the CONUS. Otherwise that might be viable.
- headsupftw 6y agoIt's not exactly a case of downloading an India version when you arrive there. In order to do so first you have to register an India App Store account. And in order to do that, you might need an India cell phone number and credit card.
- jedberg 6y agoNot necessarily. They could have all the Uber apps in all the app stores. It would be a huge pain for their engineers and their users which is probably why they don’t do it.
- arcturus17 6y agoAs a user? The first option. As an engineer? The first option too.
- nbardy 6y agoThat's a false trade off. You can load partial content. That's the big advance of html. UI as markup and you can stream the small required portions of a large app.
- wdr1 6y agoEasy. One app. When I traveled to India (pre-COVID), it was great that I could just open the app & get where I needed -- even if I wanted to travel via tuk tuk. It was more annoying when I got to Ireland, had to figure out the app to use was MyTaxi and get it all working (including payments), particularly as a foreigner.
- pentae 6y agoConsider that many travelers are using global roaming data rates on their sim card when arriving at their destination. They should be able to just open the app and it 'just works'. Your proposal isn't something a good product manager would even consider as an option for more than a few seconds
- jandrese 6y agoIt strikes me that this would be the perfect use case for loadable modules. The Uber app could download the payment module you need on the first use and leave the dozens of other APIs off your device. This could also significantly cut down on the number of updates (300MB downloads each time!) that the app needs, since NA or European users won't have to re-download the app because some Indian payment API changed. Unfortunately the way Apple and Google set up their walled gardens makes this impossible. I guess Apple would prefer if the Uber app dropped all of that and just made everybody use ApplePay instead.
- user5994461 6y ago>>> The Uber app could download the payment module you need on the first use When I'm opening Uber at 1am in the cold to get a ride home, this is not the time to download a payment SDK update.
- gregoriol 6y agoOr when you just landed on the other side of the planet and don't have a good internet access (or it costs $$/Mb): the app is still expected to work, because you need your ride right now
- colinmhayes 6y agoUber doesn't work without decent internet access though. Maybe you can make he argument for $$/Mb, but there's no point in uber creating the app so that you can get to the pay screen without internet when you need the internet to use uber.
- LocalH 6y agoThe whole point is the seamless transition. Would you want to sit there twiddling your thumbs in a potentially unfamiliar area, while the region's version of the app loads? Or would you rather just have it work?
- 6y ago
- jtsiskin 6y agoAnd it applies to not only Uber, but tons of other apps. Unfortunately incentives are not aligned to make rarely used features load on-demand. I wonder what the average user percent of application binary actually executed is.
- bostonfincs 6y agoWhy should a user care about an extra MB’s on their phone for a frequently? If we were talking about 10 year ago storage prices/capacity or much larger apps sure this would be a discussion but it shouldn’t be nowadays. I get it programmers like to focus on efficiency, but I promise you 99% of users don’t care about the extra MBs with the price of storage and value of Uber nowadays.
- tobmlt 6y agoAlso, this was an entertaining retrospective recently posted: https://mobile.twitter.com/stantwinb/status/1336890442768547845?lang=en https://mobile.twitter.com/stantwinb/status/1336890442768547... I can’t seem to find the old link, but I’m pretty sure it was on hacker news and somebody posted a nice collation of the posts.
- ljm 6y agoAfter reading that I feel like coining a law: Any discussion about software distribution will inevitably result in an argument about dynamic linking vs. static linking.
- nhoughto 6y agoYeah that’s a great read, super interesting detail. You wonder what would have happened if Apple didn’t up the limit. This post is next level though, deeep optimization. All of it is just increasing the ceiling though, there is some limit on number of features Uber can offer in one app.. and eventually that limit will be reached, doesn’t sound like they are willing to accept being over the limit either. Wonder what space saving techniques are left in the box?
- ChrisMarshallNY 6y ago> And then you have the binary size bloat with Swift that OP takes about. Hopefully, swift ABI stability will reduce that. The new bytecode stuff will help to reduce bloat, as well, but he notes that a lot of SDKs are used. In my experience, SDKs and dependencies often won’t work, compiled with bytecode. Hopefully, that’s changing. That code repetition thing also happens when a lot of dependencies are used; which often reinvent the wheel. That just comes with the territory. It can be addressed by using highly granular dependencies, but that sort of flies in the face of why we use dependencies. One advantage that Uber has, is they are an 800-lb gorilla. They could contract for specific configurations of dependencies. I’m not a big Uber user (but I’ve used it a few times). I think it’s a fairly well-done app, as a user.