LocalFirst: You Keep Using That Word

(deobald.ca)

50 points | by deobald 3 days ago ago

11 comments

  • theamk 3 days ago ago

    Sadly the many "local-first" apps have significant usability problems which mean you got to be _really_ dedicated to ideals to run them.

    The P2P is the worst offender.. Who is going to "keep my laptop awake every night just to ensure a p2panda node was available for new users"? Pretty much every P2P needs some sort of centralized support to work.. IPFS needs pinning services, large torrent trackers use out-of-protocol "reputation score" to ensure rarely used files are seeded.

    "No spinners" gets super annoying when devices go to sleep or internet is spotty. Am I looking at the latest data? Is it safe to turn off my phone / exit the app, or is still uploading? I dunno, let's give it a minute just in case...

    This is could be all tolerable if there were real advantages.. but the main argument for local-first is "if the company dies, your data is gone". Thats not a good reason! To sane your data, there is no need to suffer "local-first" apps. Use cloud services with good UX and nice mobile device support, but run automated backups... Use Google Drive, but run "rclone" via crontab to ensure you can still access data even if you get banned. Own your email domain, and sync to local maildir. Download your notes hourly. Yes, your workflow would be disrupted if one of the companies die, but at least the data is safe.

    IMHO if we want to stop depending on megacorps, the right approach is open data format and export protocols first, and easily hostable cloud second. Kinda like email - BYO domain + IMAP means I can migrate from one hosted provider to another with minimal disruptions.

    • undeveloper 2 days ago ago

      > "No spinners" gets super annoying when devices go to sleep or internet is spotty. Am I looking at the latest data? Is it safe to turn off my phone / exit the app, or is still uploading? I dunno, let's give it a minute just in case...

      This is easily solvable with any sort of sync button. Granted, you may in fact have to at least in name break "no spinners" (but to my understanding not in practice), and shove one in the top right corner of your app when syncing / uploading / downloading is occuring, but obviously it's better than just sitting there and waiting.

  • immibis 3 days ago ago

    > This person’s example scenario was migrating an entire GNOME environment from one computer to another. In many cases, I’d like an iCloud-style service for that.

    In the distant past we'd copy our whole home folder to a floppy disk and then to another computer. In the slightly less distant past, a USB stick.

  • born-jre 3 days ago ago

    Instead of local first what if we wrote cloud first but cloud part is so easy to run that if you want to run just locally just run small “cloud” locally. My attempt

    https://github.com/blue-monads/potatoverse

    • llmslave2 3 days ago ago

      I was gonna comment that Go is a fantastic language for this since it's trivial to package everything up into a single binary that contains everything necessary and has everything you need in its stdlib as well. And low and behold...

    • cr125rider 3 days ago ago

      Excellent name! I love it

  • tracker1 2 days ago ago

    With many people running "home lab" servers and docker accessibility, IMO "local first" can definitely include your own server.

  • teleforce 2 days ago ago

    We just into new year and already we have one of the contenders of HN article of the year. I know HN does not has this ranking but this article is impressive.

    I agree most of the points in the article except the point according to the article that local-first app must be free and open source.

    Arguably one of the best app I've been using is the original Napster. At that time TIME magazine did not has the breakthrough of the year award, otherwise the Napster surely the breaktrough of the year when it was released back in 1999.

    Napster single-handedly introduced and popularized p2p concept, and listening to song need not to be cumbersome and expensive. The latter facts were vindicated with the iTunes and iPod success. It also fit the very definition of local-first app defined in the original Kleppmann's article.

    • esseph a day ago ago

      I was probably 16 or 17 at the time when napster (himself) was hanging out on efnet/irc and working on the program that became Napster. It was wild to see that period play out like it did with a front row seat. That 98ish-2000 and early 2001 era felt like we were on the cusp of so many things with just cool computer technologies that were coming of age. And then 9/11 happened, and everybody's mood soured for quite awhile.

  • B3RTICUS 3 days ago ago

    Minimum viable localization

  • cadamsdotcom 3 days ago ago

    Most users seem not to care if their app has amnesia and forgets data it loaded 1 minute ago just because they backgrounded it and came back. Most users don’t care if their data fails to save the in the train tunnel. People don’t complain verbally even if it pisses them off. They just wait for the data to load and shrug and retry after a moment.

    Things won’t improve without a grassroots campaign. And it’s trending worse: more and more apps & tools are doing amnesia on purpose because it’s simpler and doesn’t anger the fussy few users for not going far enough..

    So what do local-first demanders want?

    Is local first when the software does a sync after storing locally? Is it when the local store is the source of truth? Is it offline support? Is it owning your data? Is it automatic resync when the connection/backend come back? Yes; all of the above and more.. and it’s complex and expensive to maintain and doesn’t get a lot of attention.

    There needs to be 5 or 6 terms to cover each of the local-first sub-concepts so the discussion can progress..