16 ms·
What if we had Local-First Software?
- junon 6y agoWe've come full circle. The web developers are starting to realize there's a whole operating system underneath the browser that might actually be of some use.
- qsort 6y agoWeb applications can be run locally. As much as it's easy to shit on the web stack, it solved a real problem, namely the 'operating systems underneath' being absolute clusterfucks at least as much as the web. It's really sad that the only way to reliably access something from multiple devices and locations are websites. Ironically, if we're ever going to see something like the OP wants, it's 100% going to be locally-run webapps. Whether we like it or not, think it's right or not, it's clear by now that the average joe is not going to learn tools like git.
- wrnr 6y agoThat's why I am so exited about gioui.org because it'll allow native applications for OSX, Windows, Linux (both X11 and Wayland), iOS, android and (sortof) webASM. It is a simple wrapper around the input devices like mouse, keyboard and touch screen and outputs the graphics using GPU shaders (DirectX, OpenGL, Metal). It feels like a mix between a 2D game engine and a UI library. The immediate mode architecture is a mindfuck how easy it is compared to (functional) reactive programming. You basically get all the benefits of having observers of values with just values.
- nine_k 6y agoThe usual problems are caused by the non-native controls: no built-in affordances like spell checking and all the OS-specific behaviors, no easy way to plug in accessibility, and the non-native look and feel. All this is totally fine for a game UI, and is a much harder sell for productivity software.
- wrnr 6y agoThats a little bit unfair, even the W3C's web-agency has a hard time building an accessible website and needed spend two weeks (of billable time) reviewing different web frameworks because of it: https://w3c.studio24.net/updates/on-not-choosing-wordpress/ https://w3c.studio24.net/updates/on-not-choosing-wordpress/
- nine_k 6y agoNot that many people need accessibility. About 100% of people need spell-checking, though.
- OnlyOneCannolo 6y agoCertain types of automation and testing are often built on top of accessibility features. Accessibility doesn't just mean accessible to the disabled. It also means accessible to your code.
- p_l 6y agoExactly. And people forget that depending on the UI libraries you use, you might get a mostly accessible app by default. All of core Windows widget classes, and WinForms and WFP, support accessibility features. Worst case you have a somewhat broken object tree without good labels, but that's already a start. Dealing with something that believed it only needs a canvas to draw on is PITA.
- outworlder 6y ago> Not that many people need accessibility. 100% will require accessibility in some form if your timeframe is long enough. We aren't young forever, you know.
- wtetzner 6y ago> All this is totally fine for a game UI, and is a much harder sell for productivity software. Is it? Web and electron applications have the same issue, and they seem to be doing fine.
- jniedrauer 6y agoI started playing around with gioui the other day. It looks like it has a lot of potential. I was curious if it could redraw efficiently enough to be used as a go equivalent to pygame. Have you experimented with anything that requires a high refresh rate? I guess I need to finish my experimenting and find out for myself.
- rektide 6y agoFlutter is similarly building a canvas based rendering system for the web, called CanvasKit. I think it's neat that folks can skip the conventional web technologies & hypertext & use the web to create arbitrary systems. But I also think this is quite a malignant & user-de-empowering & tragic development for the web. The DOM has been extremely powerful as a common language, that users can make use of directly & via extensions & scrapers. Stealing this fire back from the users, renegging on the web's promise that it's the user's agent, for them to use to navigate the web as they like: that's a great & sad regression. In my opinion the web is worthwhile & useful. Bypassing it, treating the web like thin-client, a way to push pixels in people's face, via some auxiliary rendering process, be it local (webassembly) or remote, is a terrible usurpation of user's agency. Projects like Flutter's CanvasKit & others are a great danger to one of the few piece of technology that has enabled users some level of control & freedom, the web.
- oakpond 6y agoOSes may be technical clusterfucks. However, the most important thing imho is that all this shit is running on a stack that's robust against vendor lock-in. That's easier with a smaller stack since you have less vendors to worry about. LFSFS (local-first software from scratch), if you will.
- jka 6y agoI'd be very curious to know what percentage of total aggregate CPU and memory resources are in the hands of everyday people (in smartphones) compared to in datacentres.
- saalweachter 6y ago1 gigabyte over a billion cellphones turns into a exabyte, so I would guess, similar orders of magnitude?
- randtrain34 6y agoseems data centers have 2k exabytes https://www.statista.com/statistics/638593/worldwide-data-center-storage-capacity-cloud-vs-traditional/ https://www.statista.com/statistics/638593/worldwide-data-ce...
- saalweachter 6y agoBack-of-the-enveloping it I have a hard time seeing how you'd arrive at more than low-100's of exabytes total storage across the world's supply of cellphones -- there's 1.4 billion active iPhones and 3.75 billion other phones, so even if you assume that the average iPhone has 32GiB and the average non-iPhone has 16GiB (which is pretty generous considering a large chunk of those are probably feature phones), you only get up to ~100 EiB. To break 2000 EiB you'd need each cellphone to have more than 400 GiB of storage, which I'm pretty sure is very much not true, unless my phone is older than I thought it was.
- shalmanese 6y agoThat's storage, not memory.
- eli_gottlieb 6y agoYeah this article mostly makes me feel very old.
- onion2k 6y agoThe web developers are starting to realize there's a whole operating system underneath the browser that might actually be of some use. The article doesn't mention anything at the OS level. Every technology suggested runs in the browser.
- tomc1985 6y agoFINALLY!
- snow_mac 6y ago> How would an offline-first Internet look like? 1Password comes to mind. If you sign up for the subscription, you can easily access it offline, sync to the cloud now or later. Enable 2factor, and you can still access the vault offline, want to sync with the cloud? Enter the 2factor ID and you're in business. > Your Work Is Not Trapped on One Device Microsoft Office does a great job with this and office 365. You have the powerful Word running locally, saving both on disk and virtually in the cloud. But then if you switch machines, want to use in the browser? Easy no problem > Seamless collaboration Doesn't Git solve this problem?
- suprfnk 6y ago>> Seamless collaboration > Doesn't Git solve this problem? The author mentions that: "The collaboration approach that I personally like the most (and the one I feel could be embedded in “local-first applications”) is the one used by git."
- geff82 6y agoConcerning O365, is it only me who thinks they have invested exactly zero to make Word Online actually display a document that has even the slightest complicated formatting correctly? Documents that are displayed horribly in Word Online actually work quite well in Nextcloud/Collabora online.
- knubie 6y agoI’ve tried to follow this approach with my own app[0]. An account is optional, and a subscription plan is available to sync your data across devices. There have definitely been some challenges with this approach, from available tech stacks to customer support, And user expectations. There were also some unexpected upsides, like requiring less server resources. All in all I think it was worth it and I hope this trend continues. [0] https://mochi.cards/ https://mochi.cards/
- SolarNet 6y agoThis is a big one for me. But I think there is a missing level here. Local as in area, not just local to the machine. Municipal and Neighborhood level networks would solve a lot of problems inherent in the broader internet, as well as making solving problems as discussed by the OP easier. For example, it's a lot easier to trust your neighbor than someone on the internet (and better too). For one you can look them in the eyes and shake their hand, for another you are both governed by the same court (though this does make privacy more locally relevant). On the flip-side this means local people don't necessarily have to be great at the internet themselves to use these complex hosted programs. It's just another website rather than setting up a google docs server or using a git repo. Continuing, another problem it solves is local discoverability. There are a thousand products out there that do local services, from craigslist, on down to "local wikis". But these services don't often care about your community, and it can be hard to know what other people are using (separating local efforts across a global network). Putting them all on a local network, with a local index (and search engines) allows better discoverability nearby (especially if portals into neighboring communities can be connected, eventually perhaps into a federation of sorts), but also services that are oriented to local needs (and issues and regulation). I'm not saying this would replace the internet. Obviously not. But it would provide a better, safer, and more useful "local layer" of the internet to go to first (to say nothing of the social media security and child safety aspects). That also happened to be faster and more resilient (doesn't go down when the internet does). The problem of course is shit ISPs, though this is why the MeshNet people do what they do. And having applications and a community ready for it. The technology (and culture) would also be useful for communities that can't participate in the global network, from isolated communities (either due to poverty, authoritarinism, or remoteness) to future ones (spaceships, remote colonies). Just a thought.
- Mediterraneo10 6y agoReminds me of when broadband was rolled out in Romania in the early millennium, and the local ISP would give you details for a server where you could share films and music with people from the same city.
- Nasrudith 6y agoLocal seems like an early internet drawing board idea that didn't take off and got forgotten, it practically sounds like something you could gaslight quite a few people into developing fake memories with a few consistent looking artifacts from the BBS era. In fact much if it is a reinvention of BBS essentially as it had soft localness due to long distance charges for phone calls for modem connections. Mail readers were an option to minimize BBS connection time. Neighbor trust wouldn't last long if it even existed in the first place as soon as easy targets getting hacked became a thing. Most people leave their routers secured by default and even ISPs who use them to distribute wifi "publically" are supposed to leave them secure indicating the preferred level of local network interaction is generally "none". The locality is a worst of both worlds, arbitrarily limiting discovery if they want to see and be seen and not providing any security as anyone could bridge access within or likely spoof an identity. It seems like something which would rapidly wind up redudant for all terrestrial applications even if it existed earlier. Distant ones I suspect would either tolerate the higher latency or maintain mirrors or caches - which would likely wind up a subset of the content which doesn't depend upon being current and would probaby become a format which doesn't mind the "necroposting" and delayed reactions as you get hours or days later space responses.
- space_ghost 6y agoThis is absolute must for any kind of computing activity that's not on Earth or in Earth orbit.
- mceachen 6y agoI've been soaking in this space for the past couple years as I've developed PhotoStructure, a local-first photo and video manager [1]. I have opinions. While I'm certainly sold, personally, on local-first software (obviously), I think it's going to become an increasingly harder sell for Normal People. 15 years ago, a large percentage of households had at least one desktop or laptop, as it was the only way to get on to the internet. As smartphones have taken that place for most people, nowadays if you've got a desktop, it's likely only for gaming, and most commonly-purchased laptops (esp that don't come with Windows) have stagnated in performance and capability, as their companies push people to use their cloud service offerings. NAS devices seem to remain niche products. This drove me to have to support everything: Windows, macOS, Linux desktops, and everything that can run Docker. I've been very surprised to find an almost perfect split of users for each edition (desktop vs docker). Given the popularity of personal-information-selling social platforms (however it may be waning), I don't think most people are concerned about privacy to give up (almost any) convenience. I'd love to be wrong. I'm hoping to make something easy enough to install and live with that it isn't an inconvenience, but it's hard to compete against enjoying someone else's infrastructure and application management teams, for "free" (where "free" === all of your personal information and telemetry). (For what it's worth, PhotoStructure only runs on hardware you own, and none of your data leaves your computer, except for error reporting, and even that can be disabled). [1] https://photostructure.com/ https://photostructure.com/
- A4ET8a8uTh0 6y agoYour product looks interesting to me. My minor beef is with recurring annual subscription ( assuming no updates, I just want to pay once ). I do like the idea though.
- mceachen 6y ago> assuming no updates Know that the free tier will still open and browse existing libraries: I'm not going to hold anyone's library hostage in exchange for a subscription.
- toast0 6y agoLocal first software makes even more sense on a smartphone than a desktop. My desktop is always network connected, and my internet connection at home is fairly reliable. My smartphone is often in areas with no coverage. There are tons of apps I can't use because they don't keep local data. It would be a perfect time to read and write email, but the platforms that would let you do that are dead.
- wrs 6y agoThis is kind of funny because of course everything before about 2001 was “local first”. There have been multiple generations of patterns for connecting a local app to a network for collaboration, so there is a lot of history to check out. Ray Ozzie’s Groove was the closest thing I can remember to this: a local object store with P2P and central-store connectivity, based on a common synchronization algorithm. CRDTs have come a long way so that may be an important new angle.
- danschumann 6y agoWhat does this look like for email? Do we have to trust a particular email account for everything?
- 205guy 6y agoUmmm, IMAP? Reading the article, this was my first thought: email applications like IMAP clients that work offline are the perfect example of this philosophy. If you can't access your mail provider, you still have all the data from the last time you did, you can search old emails because they're stored locally (you can set how much you want to keep for these situations), and you can write an email and it will be stored in the outbox to be sent when connectivity is restored. In other words, your email experience is exactly the same as with connectivity, except for a banner that reminds you that it hasn't been able to download new mail since HH:mm.
- sylvain_kerkour 6y agoI tried to create a collaborative (the most important point), local-first, end-to-end encrypted app. I really tried. But it's hard, really hard. Like all distributed systems. CRDTs are far from a panacea: * No implementation is compatible with another * There is very few implementation in languages that are not JS. * The biggest problem is when 2 documents are diverging for too much time (think a blockchain fork) like if you go offline for 4 days while your coworker work on the same document as you do. You have to come back to differential sync, like Git. And it's just for sync, then to move to P2P you have to handle NAT traversals, distributed identities, rendez-vous places and much more.
- LukeEF 6y agoYou speak my pain... took so much pain to overcome these problems when delivering TerminusDB... taking best ideas from blockchain, git and rolling them all together... this white paper we wrote might remind you of past suffering... https://github.com/terminusdb/terminusdb-server/blob/dev/docs/whitepaper/terminusdb.pdf https://github.com/terminusdb/terminusdb-server/blob/dev/doc...
- dspillett 6y agoFor a lot of people for a lot of applications and tools, this level of sync isn't all that necessary though. If you are working on something yourself and not as part of a team then the age-old save-document-and-reopen-elsewhere method could work as well as it ever did. You don't have to have it open on your phone, laptop, desktop, and fire stick all at the same time with immediate sync. Have your offline documents on each machine, automatically back them up to "the cloud". If you edit one in two places because of disconnection issues then do a manual merge like we did in the old days (hopefully it won't happen often enough to be that much of a pain). In version 2+ of your product, once the base features are proven viable (and for commercial use, profitable), start to worry about automatic sync/merge/other with a granularity smaller than a whole document. A lot of offline-first efforts are trying to solve every possible use case from day one, from single person with a laptop to huge international teams all working on the same asset at the same time and everything in between & beside, and in that direction madness lies. Implementing a useful, viable, relatively minimal product, and expanding its capabilities later would make more sense, though of course that suggestion is immediately countered by fears that the next clone of the idea will implement something first and be crowned king leading the thought process back to "must do it all, must do it all now".
- egypturnash 6y agoUhhh Have any of y'all ever heard of something called "Adobe Creative Cloud", it's... It is literally trying to answer most of these questions for a set of titanic applications that predate the entire world wide web, it solves, offhand, at least five of these seven principles - it's (1) built around apps that have been working with local files since the eighties, (2) can sync your work between multiple devices, I just carry my laptop everywhere so I dunno how well it works, haven't played with the iPad apps yet so I dunno about those, (3) works just fine with no net access (though it'll cut you off if you don't hit the authorization servers every few weeks), (4) I am not sure how it solves the conflicting changes problem as I work solo, (5) your data's on your local device and in Adobe's cloud for as long as you subscribe, (6) okay well stuff's probably stored unencrypted, unless "I turned on whole disc encryption" counts (7) it's your own files and your own backup strategy. That's five checkboxes out of seven, better than the 4/7 that "email shit around" and "github" get. And it is relentlessly uncool. But it has been here for a good while and none of y'all have noticed it because it's built for artists.
- reificator 6y agoI want to own my data and my tools. I don't want to pay a subscription service to Adobe any more than I want to pay a subscription service for my desk and chair.
- CharlesW 6y ago> I want to own my data and* my tools.* More power to you! But this article is specifically about local-first/offline SaaS, which is what Creative Cloud is.
- Xavdidtheshadow 6y agoThe tough thing is that most software products you use are actively maintained and updated. That costs them money each month, so they pass those costs to you. It would be great if we could see more software sold as-is, without updates. But, especially in the world of online-capable tools (which not everything is, but most apps can access the internet), ongoing security maintenance is important. I'm not sure we can have it both ways.
- jlongster 6y agoI have a lot of experience with this having developed a personal finance app that is local-first: https://actualbudget.com/ https://actualbudget.com/ Having all of the data local is a superpower. It changes how you build the app, and you just never have to worry about the network. Everything is fast _by default_. It's great. The app uses CRDTs to sync and it's unlocked a lot of powerful stuff like a robust undo system. We also offer end-to-end encryption. On the negative side, over time I've stepped back a little from being truly local-first. The mobile app used to connect to the desktop by pointing the phone's camera at a QR code on desktop, and it would literally sync peer-to-peer. Maintaining that was nightmare and users had endless networking problems. Our network infrastructure unfortunately is not built for truly peer-to-peer apps. Maybe ipv6 will help, I don't know. My app now has a "centralized" server but it's really just a backup that gives some convenience - the app is still totally local but syncs through a single server. You can work on it for weeks offline and then sync up. In the future when p2p is ready, I'll be ready for it.
- cw 6y agoI cannot imagine my life without Actual. Bookkeeping is such a joy with this tool. I've used Acutal for more than a year to manage the budget for two companies and my personal finances. Highly highly recommend.
- jlongster 6y agoWow, that's really great to hear! There's so much more I'm excited to build into it, so it will only get better. Something I'm most excited about is custom reports. Having all your data local is going to make those super powerful.
- phkahler 6y agoWho mentioned Actual? Is this a pair of advertising comments?
- MrZander 6y agoThis looks great, do you have a newsletter? I'd love to know when you implement bank syncing. That's the only thing keeping me from signing up right now.
- lukeplato 6y agoA lot of the philosophy is similar to the Solid (Social Linked Data) project that Tim Berners-Lee started. https://en.wikipedia.org/wiki/Solid_(web_decentralization_project) https://en.wikipedia.org/wiki/Solid_(web_decentralization_pr...
- deleted 6y ago[deleted]
- deleted 6y ago[deleted]
- daleharvey 6y agoPeople couldn't sell adverts? Working on PouchDB I spent a good amount of time thinking about how to "sell" local / offline first apps. It seemed a lot to me like the problem was plain old capitalism, offline / local first software is faster / and more robust, for most circumstances its a better decision for the user. However the economic incentives arent there to build the best software, the economic incentives are to slow webpages to a crawl with adverts and planned obsolescence.
- Nasrudith 6y agoSlowing to a crawl is counterproductive greed essentially as it repels the user base and doesn't aid sales. Google won out with text adds as opposed to "punch the monkey" autoplay banner crap. Aside from that there is the issue of portability which comes with the power - namely supporting everything and barrier to entry. But the bigger difference is probably convenience. Web typically needs no install and less commitment and gives a single set of servers to work on for everybody. Take a general referral/word of mouth. Web has more or less "go to the URL and try it with no commmitments or extra steps" and web shopping found not needing to register was crucial for people actually trying. Now compare local first "Hey you should try and download Notepad++/git/etc." And that is before IT policies or licenses get involved which can mean a certain segment get a hard block they wouldn't for a web service unless they specifically decided that say "pastebin is a hard no" and then missed that the new hotness is say clipboard.com anyway. We had an approach which tried for its own best of both worlds with its own sandbox and that was in browser Java applets.
- daleharvey 6y agoI dont consider the web and offline first / local software to be mutually exlusive. PouchDB is a database built on web technology in order to enable offline capabilities to web sites / apps, Service workers handle caching static assets reasonably easily.
- lytefm 6y agoThanks for maintaining PouchDB, it's an amazing library! But true, if our customers wouldn't pay for our app and we'd have had to resort to ads instead, offline first wouldn't have been been a priority, perhaps not an option at all.
- meagher 6y agoGood read with similar ideas and same name https://www.inkandswitch.com/local-first.html https://www.inkandswitch.com/local-first.html
- musingsole 6y agoThis paper was referenced in the article.
- LukeEF 6y agoTerminusDB and Hub (co-founder here) is offline first open source data collaboration software. We built the service so you can work offline for as long as you want and then resync when you're online again. We always felt this was the most important aspect of collaboration - you don't want to just update a common live view like google sheets, you want to go away make mistakes, fix them and merge when ready. We are also in-memory, so we put a lot of effort into compression, which worked out great as we can use your regular machine for the compute. Download the analytic engine, link to the hub and you can share data free and easy. Obviously talking my book, but a great backend for lots of this sort of collaborative local-first software (we're a DBMS at the end of the day). Will be rolling out p2p soon I hope - so going from GitHub for data to napster for data! #LivingTheDream https://terminusdb.com/hub/ https://terminusdb.com/hub/
- infogulch 6y agop2p sounds interesting! Do you have more information about how the data synchronization model works? Is it practical to ship TerminusDB along with your local software? Do you think it would be possible to run using just web technologies? (webasm, IndexedDB, ..)
- LukeEF 6y agoWe currently have merge using rebase, with optional "query fixup" to reconcile changes. We are currently experimenting with various automatic fixup strategies for different use cases. We also intend to have a full git-like merge in the near future. Yes, very practical to ship with local software - it is designed for that and I think it would be possible to run with just web tech.
- webmaven 6y agoTeminusDB looks quite interesting. The comparison that comes to mind though is Day/Hypercore, rather than any of the solutions you have listed.
- LukeEF 6y agoAgree that the solution on the site need to be changed! Don't know Day/Hypercore - do you have a link? I couldn't find (or at least I couldn't understand what I found!)
- pjfin123 6y agoPlug for my open source "local-first" alternative to Google Translate (https://github.com/argosopentech/argos-translate https://github.com/argosopentech/argos-translate). It has a Google Translate like GUI and lets you install packages to support translating between different languages. It currently doesn't have the ability to go to web services for translations you don't have installed locally but that's a feature I'm considering adding at some point. It would seem like the best way to do this we be to track (locally) which translations you use frequently and then save them locally (a one way translation package between two languages is ~100MB). This would give you the privacy/offline access of translating locally for language pairs you frequently use, while also seamlessly supporting the large number of languages supported by cloud services. You could also give power users much more fine-grained control over which translations they keep saved locally.
- roughly 6y agoThe basic problem here is not a tech problem, it's a business problem. Your data is siloed inside a cloud-only app because it means you'll keep paying for it. You can't export it or share it to other apps because that'd be competition for the service you're paying for. It's online-only because it makes the entire service useless once you stop paying. There's technical solutions for this, and they'll get no traction whatsoever so long as it's more profitable to keep people locked into a cloud-based service.
- jolmg 6y agoIt's not just about the recurring-payment part either which makes for a simpler business model to fund updates. Software as a cloud service also makes it easier to provide support to users, it's impossible to pirate, and it's easier to support most platforms.
- eska 6y agoWorking at a hosting provider in the past I realized I'd be out of a job if web browsers implemented native support for torrents real fast.
- dragontamer 6y ago> How would an offline-first Internet look like? Did people not grow up on Juno Email services? Oh wow. An entire generation of modern computer users never had the opportunity, did they? You'd connect to the internet to download your email, then you disconnected (otherwise, you'd use up too much of your phone line and get a big phone bill). The POP3 protocol still works. You can still get Mozilla Thunderbird and grab POP3-style emails from GMail or whatever. But people want IMAP instead, an always-connected model provides better idea of which emails were "read" or "not read", for example. Ex: You may download all emails on your Phone, but maybe Email#0 is never opened on your phone. If you used POP3, you don't know if Email#0 was read or not, the protocol just assumed you read it. POP3 was more useful back then, when you only had one computer of any sort and didn't have to worry about keeping multiple devices in sync. ------- How did forums work back then? Through USENET. A similar concept, where you'd download the messages, then disconnect from the internet as you read all the updates. BBS machines however were online-only, and the start of real-time collaboration IIRC (not that I ever used BBS, but that's my understanding of that old telnet technology). I don't know the history: whether BBS or IRC came first (or which was popular first...) The "Killer App" for the internet, AOL Email / Juno Email / etc. etc. was offline-first, by and large. At least, to me (a good ol' "Eternal September" user who joined the internet community well after 1993). -------- Anyway, you'd read and write emails while offline. Then you'd hit "send", which would boot up the modem, take over your phone line (woops, Mom's talking on the phone. Sorry mom!!). Wait for Mom to get off the phone, THEN you connect to the internet...
- outworlder 6y ago> Anyway, you'd read and write emails while offline. Then you'd hit "send", which would boot up the modem, take over your phone line (woops, Mom's talking on the phone. Sorry mom!!). Wait for Mom to get off the phone, THEN you connect to the internet... And then send the whole batch all at once. You can still do it if you want to. fetchmail to handle the mail retrieval. Add notmuch if you want fancy indexing. Any local client to compose. Delivering is a bit annoying to setup initially in my experience. https://notmuchmail.org/software/ https://notmuchmail.org/software/
- 101008 6y ago
- Sodaware 6y agoI remember Microsoft pushing hybrid apps called "Smart Clients" back in 2003.
- Animats 6y agoWe should at least have local software for home automation. It should not be necessary to go out to "the cloud" to set the thermostat or turn on the lights.
- anarchogeek 6y agoWe've built a local first social media app, planetary.social, it's in testflight, but go to bit.ly/planetarytesting to join.
- bhauer 6y agoI have a vision of computing that I call "personal application omnipresence" (PAO) [1] where applications are singular instances that you interact with concurrently from any device. Notionally, it's similar to having multiple "views" in a MVC architecture, and allowing each of those views to adapt to the capabilities of the device displaying the view. The article linked here talks at length about concurrent edits and the data structures necessary to handle work by multiple application instances. I feel this is (potentially) unnecessary effort. Rather than build applications to support concurrent edits by fat clients, use thin clients that all speak to the same instance of the application with its singular state. Concurrent work would therefore be resolved in real-time by a single application instance in a first-come-first-served basis, without any complex data structures or clever coding. The root of so much complexity in modern computing is that all of us have multiple application instances when virtually nobody actually wants this. I don't want a separate email client on every device. I want a single email client that I can attach views to and interact with from anywhere. [1] https://tiamat.tsotech.com/pao https://tiamat.tsotech.com/pao
- S-E-P 6y agoI’m currently working on a project for a local-first SaaS company They have perpetual licensing (optionally you can subscribe monthly if you don’t want to pay everything upfront) and it really does put power in the user’s hands It’s fast
- jay_kyburz 6y agoI think there could be an opportunity here for a company like Dropbox to provide an API that will allow local-first apps more easily do collaboration. You can easily just drop a file in Dropbox to move it from place to place, but its hard to allow multiple apps to modify that file in real time.
- hobo_mark 6y agoDropbox itself used to offer APIs to support such use cases. "Local-first" software wasn't called that yet, but that's definitely the kind of applications they intended to enable. Alas it was too early and these features got sunset back in 2015... https://dropbox.tech/developers/deprecating-the-sync-and-datastore-apis https://dropbox.tech/developers/deprecating-the-sync-and-dat...
- WClayFerguson 6y agoI run a local instance of the web platform I developed (for wikis, publishing, etc) which is called https://quanta.wiki https://quanta.wiki. You have to configure a docker file, and install docker to run it, so it's not a 'product' others would easily run this way, but I'm sharing this platform here with you guys because it has a lot of the same goals and designs.
- mxuribe 6y agoWhat if local-first software/apps leveraged products like syncthing (on some layer in the back-end) to manage the offline data synch between the same software/app on other devices?
- novok 6y agoLocal first software is more annoying and requires more sophisticated thick clients to develop for, especially as more of the world become connected, with even airplanes being connected and soon, the middle of nowhere with starlink. So it's more expensive to write local only software as a result, you will probably deliver features more slowly than your cloud-first counterparts and thus you'll eventually be out competed unless your leveraging local first to deliver something that your cloud first counterparts can't do well, like speed & performance.
- kevmo314 6y agoI think this is one reason service workers haven't caught on. Offline-first is nice, but it has an obvious shelf life given the progression of technology.
- GiorgioG 6y agoWe had local-first software, long ago with Lotus Notes / Domino.
- jayFu 6y agoThe photo storage/management would be a typical use case for Local-First Software. Cloud storage for photo aims at consumer market is costly, and we've seen Shoebox, Canon Irista shutdown the services in the past few years. And from engineering's perspective, the data should store as close to the user and centric management of those photos is very low efficient too. However people like the cloud experience, the local first alternative should provide the same convenient. The SBC and smart phones are getting more and more powerful and cheap, it would be possible to have a local first software suites running on SBC and provide the same experience as cloud, and we can build the private cloud based on p2p technologies like ipfs, imaging your can have your private cloud service shared with family members/friends across different places running on a 24x7 SBC. DWeb need a killer application to compete with cloud, photo storage/management has the potential. We've been working on https://lomorage.com/faq/ https://lomorage.com/faq/ as side projects, it's still far away from the vision but it provides a workable solution and we keep improving it over the years.
- dandanua 6y agoI highly suggest looking into hypercore [1] stack and Beaker Browser [2] in particular. The decentralization is absolutely possible nowadays, but there are few incentives to push it forward, unfortunately. [1]: https://hypercore-protocol.org/ https://hypercore-protocol.org/ [2]: https://beakerbrowser.com/ https://beakerbrowser.com/
- imtringued 6y agoIn theory I agree this is a good idea. In practice the type of application I'd want to build local first would involve users downloading 1GB of data before they get to do anything. This will never work on smartphones. I also remember using an application that did this very poorly. It loaded all data into RAM causing it to consume 1.5GB for very basic functionality.
- wtetzner 6y ago> In practice the type of application I'd want to build local first would involve users downloading 1GB of data before they get to do anything. Do you have an example?
- madmax108 6y agoEchoing jlongster's thoughts, I have experiences this first hand working at Tact.ai (https://tact.ai https://tact.ai) in the sales domain, which forces us (well, at least pre-covid) to think local-first if you want to succeed. Most salespeople are always on the go, travelling through areas of bad network, or in flights (which many salespeople consider wasted time because their tools all need a constant internet connection, and that's one of the domains where "time is money" is a core tenet). So when we started building, "local-first" was a strong differentiator for us and became a core philosophy for the company. For the app we have, 95% of functionality works perfectly well offine (except some features that need third party API interaction that we've not found a clean way to set up so far). Sure, it's so much easier to write a webapp and then add a webview on top of it and call it a "mobile app", but the effort (syncing data which can be edited in multiple places in an local-first world is a crazy engineering challenge) that goes into building a local-first app really pays dividends in the longer run.
- jefurii 6y agoThis overlaps with ideas like store-and-forward, delay-tolerant networking, and the Interplanetary Internet. I've been writing local-first digital archives software. Our system uses git to store collection metadata and git-annex to manage binaries. It was originally designed to be used to allow partner sites with very low connectivity to contribute archival-quality video to a distributed archive. Data can be synced over the network or via physical storage sent in the mail. Using Git/git-annex for this system has advantages for archival preservation. Copies can be located in geographically diverse locations and synced as necessary. The Git log's use of cryptographic hashes also makes data tamper-evident.
- lytefm 6y agoI feel like CouchDB doesn't come off as good in that article as it actually is: - It's fast, especially if you run it on a single node with proper hardware. - It's well suited for multi-device apps. You even get a changes feed for live replication. - I'd rather bet my money on CouchDB (Apache Project with significant support from IBM) being around in 20 years still than on Dropbox. Privacy and user control is OFC up to the app developer. Also, it's no worse of a CRDT than the proposed structure, you just need to design the document structure well: In the given example, each todo should be a different document and voilá - you'll only get conflicts if the exact same entry is modified.
- aloukissas 6y agoI can't like this post enough. It's surprising how much we've let the ball drop in UX. Is it easy to address those points? Nope. Is it feasible? Absolutely! Back in 2013, we had build a network file system that included a ton of client-side optimizations [1] that gave almost local filesystem performance, both in metadata-heavy (e.g. building the linux kernel) and data-heavy workloads (e.g. video streaming). I'm sure with the lego pieces we have today (e.g. service workers, wasm, graphql), we can do just as good. [1] https://www.businesswire.com/news/home/20130823005118/en/Maginatics-Announces-MagFS-Version-2.3-%E2%80%9CFile-System-for-the-Cloud%E2%80%9D https://www.businesswire.com/news/home/20130823005118/en/Mag...
- janjones 6y agoThis is very interesting introduction into CRDTs. I have recently been learning about this topic and found some other useful blog posts and articles about it. Here is a list of them: https://knowledgepicker.com/t/226/conflict-free-replicated-data-type https://knowledgepicker.com/t/226/conflict-free-replicated-d... - if you know some more good ones, feel free to add them there, it's open for contributions!