6 ms·
Local-First Software Is Easier to Scale
- _1tem 1y agoClosest thing to true “serverless”: entire MVC app (Django/Rails/Laravel) in the browser with WASM and data persistence by SQLite over CDN. All the server has to do then is serve binaries, all the business logic is in the client.
- gjsman-1000 1y agoBrilliant… but now you need to validate that the client did all their business logic correctly without tampering. That alone can be so complex it defeats the point.
- justinrubek 1y agoNo... you don't need that. Not for the overwhelmingly vast majority of cases. Let people use their own software. Tampering? Not my problem. Let people do it if they want.
- gjsman-1000 1y agoAnything that runs as a SaaS, or B2B, has that issue… which is the overwhelming majority of software. Anything that requires sharing information with other users is also a pain in the neck, as you basically need to treat your internal logic like a proprietary, potentially hostile, file format.
- Fire-Dragon-DoL 1y agoThere is a lot of SaaS that is essentially "for the buyer to the buyer", what I mean is that the software doesn't provide content to somebody else, or there is no incentive to serve malicious content (e. g. B2B). Why would tampering be relevant in those cases? There are situations where it's relevant, but I don't think it's as many as you say
- kevmo314 1y agoAnything that involves sharing data with other people will run into issues around updating. If your API surface is a shipped sqlite db instead of an API call it's liable to be abused in so many ways.
- a_wild_dandan 1y agoLocal-first doesn't mean local-only though, yeah? Isolate cloud usage to those collaborative features. If that's a huge ask, then your thingy probably isn't the kind of tool we're talking about localizing here!
- Terr_ 1y agoThe "overwhelmingly cast majority of cases" will be an employee of a larger company, a person/computer that cannot be trusted with arbitrary access to data and exceptions to business rules in code.
- drdaeman 1y agoIf it's a single-user app, you can only load data the user actually needs and is cleared to access. And/or lock down the device. Multi-user app (and if we're talking about companies, it's multiple users by the very definition) where users are not trusted almost always needs either a central service with all the access controls, or a distributed equivalent of it (which is, indeed, very hard to implement). “Local-first” in those cases becomes less relevant, it’s more of a “on-premises/self-host” in this case. But I think while end-user non-business software can be small compared to enterprise stuff, it is still a fairly big market with lots of opportunities.
- bcoates 1y agoWhat's WASM adding here? Without that you're just describing an ordinary SPA+CDN
- _1tem 1y agoThe ability to port existing apps to serverless. See for example Wordpress in WASM.
- williamstein 1y agoWASM adds the ability to run a local copy of SQLite (or even PostgreSQL) entirely in the browser.
- samwillis 1y agoLocal-first is the true server-less and your device is the real "edge". So much truth to this post.
- iwontberude 1y agoCan we go back to native apps yet?
- charcircuit 1y agoAn alternate article for this traffic spike is "PaaS is Easier to Scale". When the author relies on others to do the hosting and handle the scale the author doesn't have to worry about it. That's why he didn't need to be alerted. He's relying on others for that responsibility.
- danjl 1y agoThe authors rely on themselves, not other people. The developers of local first software take on the responsibility of making sure the app runs entirely on local resources. That's not the job of anybody else, and you don't need to pay for it like you do with cloud resources. This means it's cheaper for a startup to distribute local first software. The trick is that it's much harder to get paid for the app.
- charcircuit 1y ago>not other people The website is hosted by Automattic. The Firefox extention is hosted by Mozilla. The Chrome extention is hosted by Google. The Obsidian plugin is hosted by Obsidian. The VSCode extention is hosted by Microsoft. The source code is hosted by Github. The discord is hosted by Discord. If you delegate your entire backend to other companies you won't be the one who has to worry about scaling.
- danjl 1y agoWith true local first software, there is no backend. Sometimes there's a static host that just delivers the code, but has no endpoints. Providing the code, or the extension, is not a service that the customer cares about. It's not for the customer. That's for the developer.
- charcircuit 1y agoI'm talking about the developer having to worry about scaling and not the software. This article is about how the author got a sudden influx of traffic and did not have to worry about scaling anything to support it. That influx of traffic was to his website and then to the various distribution channels of his app. There is a reality that his website would fall over from the traffic and he would have to worry about scaling it, but in this reality he is paying someone else to handle scaling it for him. If it wasn't local first software and he paid someone else for the backend, he also wouldn't have to worry about scaling the backend. My comment is pointing out that the dichotomy isn't between local first and non local first software, but between self hosting and not self hosting.
- danjl 1y agoThe reason it's easier to scale local software is that it does not rely on cloud resources. As a result it's cheaper for a startup to distribute local first software since they don't need the infrastructure of a traditional cloud app. The problem is there is no business model for local first software like there is for subscriptions with SaaS. Traditional desktop apps were sold as single purchase items on CDs. That just doesn't work for local first software, since you probably just navigate to a website to get the software.
- airstrike 1y ago> The problem is there is no business model for local first software like there is for subscriptions with SaaS. I think this is too broad a stroke to paint with. There's local-first software that still connects to the cloud for additional features. Local-first can enable you to continue to work when offline, but the software can still be more useful when online.
- danjl 1y agoSo your primary technical goal is to do local first, and you keep the cloud because it provides a business model that works? That feels very brittle. The way you're describing it, local first is an optional additional element for a cloud-based tool. I don't think that's the primary intent of the local first movement.
- vimy 1y agoYou can just charge subscriptions for local first software. No cloud is irrelevant. Only the value to the user matters.
- danjl 1y agoWhere do you check their subscription in order to cut off the service when they stop paying? One of the nice bits about local first is that there's no need for logins. Do you install security software in your local first app, which, typically, includes the code in a format that's fairly easy to bypass? Pirating desktop software was a big issue for companies. Are we going back to that horrible world?
- mkagenius 1y agoThree clear advantages of a local first software: 1. No network latency, you do not have to send anything across the atlantic. 2. Your get privacy. 3. Its free, you do not need to pay any SaaS business. An additional would be, the scale being built-in. Every person has their own setup. One central agency doesn't have to take care of all.
- nicce 1y agoAll of those advantages are also reason why businesses don’t adapt it…
- esafak 1y agoIt's open source, you "just" have to help write it!
- echelon 1y agoThis entire paradigm gets turned on its head with AI. I tried to do this with purely local compute, and it's a bad play. We don't have good edge compute yet. 1. A lot of good models require an amount of VRAM that is only present in data center GPUs. 2. For models which can run locally (Flux, etc.), you get dramatically different performance between top of line cards and older GPUs. Then you have to serve different models with different sampling techniques to different hardware classes. 3. GPU hardware is expensive and most consumers don't have GPUs. You'll severely limit your TAM if you require a GPU. 4. Mac support is horrible, which alienates half of your potential customers. It's best to follow the Cursor model where the data center is a necessary evil and the local software is an adapter and visualizer of the local file system.
- datameta 1y agoDefine "good edge compute" in a way that doesn't have expectations set by server-based inference. I don't mean this to sound like a loaded request - we simply can't expect to perform the same operations at the same latency as cloud-based models. These are two entirely separate paradigms. In many instances it is quite literally impossible to depend on models reachable by RF like in an ultra-low power forest mesh scenario for example.
- NoTranslationL 1y agoI purposely did not set up any infrastructure for my iOS app Reflect and made it local-first [0]. I did it so that I could make the app completely private but it’s come with the wonderful side effect that the product is easily horizontally scalable. The only overhead I have for more users is a busier discord channel and so far that community growth has felt very rewarding. [0] https://apps.apple.com/us/app/reflect-track-anything/id6463800032 https://apps.apple.com/us/app/reflect-track-anything/id64638...
- kylecordes 1y agoLocal first is easier to scale technically. Paid hosted software is easier to scale financially. Without the latter, it's very hard to come up with the money to pay people to build, to support the market, etc.
- ccorcos 1y agoI’m not sure it’s that clear… Take an application like Slack and consider how to scale it local-first for a team with 1000 people. And then consider how to coordinate deployment of new features and schema migrations… Compare that with running a centralized server, which is going to be much easier.
- gritzko 1y agoLocal first apps have some peculiar technical features, yes. I worked on CRDTs from maybe 2008 and in 2012 we made a collaborative editor. Local first, all data on the client, syncing by WebSocket. I remember when we debugged it we once had a problem resetting a document. It kept reappearing. The guilty was an iPad laying on the table face down. It synced all the data back. That was seriously different from e.g. Evernote that was losing data all the time. In our system, intentionally purging was really difficult. Once we ran two weeks with a "poisoned" document that was crushing any server it was uploaded to. The user kept the tab open just working like nothing was happening. Then, we found the bug, but in theory we may have made the entire cluster restart all the time. Apart from electricity consumption, that would hardly change anything. The load and syncing time would be worse, but not by much. With local-first, everything keeps working even without the server. Here is the 2012 engine, by the way: https://github.com/gritzko/citrea-model https://github.com/gritzko/citrea-model
- lazyhideousarom 1y ago"Lots of cloud providers like to brag about being able to scale with their users. I like to brag about not having to scale at all" Bars.
- lazyhideousarom 1y ago"Lots of cloud providers like to brag about being able to scale with their users. I like to brag about not having to scale at all." Bars.
- 361994752 1y agoIt's amazing to me how we called "box-product" now has a fancy new name "local-first". "Box product" is quite well understood. It has a lot of benefits, but also the business model is harder to get right comparing to cloud services. For opensource projects, that will not be a problem tho.
- 9283409232 1y agoLot of young people don't know what a box product is. You're showing your age.
- namuol 1y agoHow dare people walk around showing their age. Disgusting!
- 9283409232 1y agoWay to miss the point. They said box product is well understood but it isn't these days.
- k__ 1y agoI'm 40 and I never heard that term.
- 361994752 1y agoIt reminds me of that joke where young people see a floppy disk for the first time and say, "Oh, you 3D printed the save icon!" Might be reality very soon.
- 9283409232 1y agoDamn this hit me hard. If I ever hear this I know it's time to retire.
- plorkyeran 1y ago
- colesantiago 1y agoWhile local first software might be easier to scale, the financial aspect remains unsolved. I can see that Harper (The author's software) was acquired by Automattic so I assume that Automattic is paying the author to maintain Harper, effectively subsiding the maintenance costs to keep Harper free. Not every local first (and open source) software has the opportunity to be supported by a big company.
- kaycey2022 1y agoWhy local first and not a native application?
- comma_at 1y agoIf the problem fits into the limited local resources, if there's no syncing required, no login, no multiplayer, ... Sure, do it. But don't pretend this solves all business cases.
- fmjrey 1y agoSo many comments are based on different understanding of local-first. For some it means no data on the server, allowing some claim it's better for data privacy (but what about tracking?). For others it means it works offline but data is also on the server and there is some smart syncing (e.g. with CRDT). Others speak of apps requiring no remote data and no network needed, though I find box-product to not be very explicit in describing such category. Also there does not seem to be any commonly agreed definition for local-first or even offline-first. I would assume the -first suffix means there are other ways but one is favored. So offline-first would mean it works online and offline, while local-first means it stores data locally and also remotely, meaning some syncing happens for any overlapping area. However syncing requires network connection, so is there really a difference between local-first and offline-first? Personally I would use local-only or offline-only for apps that do not require respectively access to remote data or network, the latter being a subset of the former. With these -only terms in mind, I then see no difference between local-first and offline-first.