15 ms·
Local-First Web Development
- mf2hd 4y agoCrashing Brave browser on iOS.
- mjtechguy 4y ago+1
- yonz 4y agoJust wild! checkout the source code the page isn't doing much: https://github.com/localfirstweb/localfirstweb.dev https://github.com/localfirstweb/localfirstweb.dev
- rqtwteye 4y agoI didn’t even think it’s possible for a site to take down a browser completely. Nice work!
- Alifatisk 4y agoWorks fine on Firefox iOS
- jamesgpearce 4y agoAuthor here. This has got to be one of the simplest web pages on the planet :/ Logged with Brave support and as issue on the site’s repo.
- RcouF1uZ4gsC 4y agoWhat is interesting is that local first applications were the Microsoft vision in the 1990s with a Windows computer acting as your home hub and syncing over the internet. The Sun and later Google vision is the network is the computer. For better or worse, the Sun/Google vision is ascendent now.
- wellpast 4y agoBut will there be a local-first Renaissance with desktop apps returning to focus? (Not sure - unlikely? - but, man, as a creative, I really hope so.)
- tmpz22 4y agoBuilding desktop apps remains a chore. A lot of crossplatform frameworks are promising (Electron, Flutter, etc) but ask any developer building series enterprise applications in those tools how fun it is and they will tell you it is not encouraging.
- iamwil 4y agoWhat are the main challenges when building cross platform desktop apps today?
- tmpz22 4y agoConstant ecosystem changes make it difficult to maintain strict low-level and high-level API boundaries and drivers across platforms. To get non-trivial projects done with high quality you need very experienced engineers who are comfortable dropping into low-level code as well as fork or build in-house versions of common libraries and tools that don't quite get the job done for your use-case. Also there's a lot of hobby projects that are great and push boundaries but they're also often the only option for a given toolchain/language/framework. So its a very frustrating exercise to invest in a tool only to realize its half-baked (which is fair for a hobby project!) and you need to reverse course and rebuild or extend it yourself - even for simple things.
- sergioisidoro 4y agoI am learning MobX State tree, and using the references to objects in a tree, with normalisation (ensuring you don't have duplicates in the tree, etc). It's impossible not to think that state management is getting closer and closer to client databases for more complex apps. I'm really hoping WebAssembly will finally bridge the backend and the frontend data structures seamlessly, because right now we are getting to the point of keeping 2 separate data schemas, which is a huge waste of effort.
- realPubkey 4y agoUsing RxDB as state management there is much you get for free like sharing the state between multiple browser tabs and reusing a singe replication socket even when the user has opened 1000ths of tabs.
- yonz 4y agoBeing able to have storage and network transparent business logic is something that I get really excited about. In my mind I want a GraphQL interface (ORMis) for a database that acts like a wire protocol. These two links have the same zip code: https://www.sqlite.org/np1queryprob.html https://www.sqlite.org/np1queryprob.html https://engineering.fb.com/2020/03/02/data-infrastructure/messenger/ https://engineering.fb.com/2020/03/02/data-infrastructure/me...
- jacooper 4y agoIronic using discord for such a project. Maybe try matrix?
- toastal 4y agoNah, IRC and XMPP MUC
- jacooper 4y agoBoth are beaten by matrix now.
- toastal 4y agoIn what way? Not in mature stable clients or in system resources for hosting a server. There’s issues around the centralization of Matrix.org and I've seen many cases where folks spun up then spun down a Matrix server 'cause it costs too much to run. In the case of Disroot, the closed their server to open an XMPP server instead. https://disroot.org/de/blog/matrix-closure https://disroot.org/de/blog/matrix-closure
- Arathorn 4y agoyou’re running on 2018 vintage data. plus there is no centralisation on matrix.org (beyond it being the biggest server), as has been pretty obvious in the situations where matrix.org has gone offline.
- remram 4y agoNeither of those thing are local-first, e.g. you can't search or compose messages while offline. Then again chat apps hold little interest when offline.
- mlajtos 4y agoChat apps like Discord hold valuable content and having it offline searchable would be really nice. Also, replying offline.
- vouwfietsman 4y agoIsn't the direction we're taking with networking and connectivity kind of making this irrelevant? I always feel like local-first is a good idea but I am actually never without internet connection, and building a truly local-first anything is significantly more complicated than the alternative of "always online" for most domains, even if you use various helper libs. A lot of the pages talk about privacy reasons as well, but I don't get that either, if you want privacy then you want encryption, not local-first development. Finally, in the end what you want to do with your work is to share it, meaning that "doing" your work is for a large part "sharing" your work, which is fundamentally not local-first. Maybe I am the odd one out here.
- realPubkey 4y agoIt is not about being offline. It is more about running queries locally which makes them fast enough that you do not even need a loading spinner [1]. Imagine your whatsapp client would have to do a http request on each UI interaction. [1] https://rxdb.info/offline-first.html https://rxdb.info/offline-first.html
- dmak 4y agoThat sounds exactly like offline capabilities?
- vouwfietsman 4y agoThe thing I'm missing in this discussion is that there's very few people out there making whatsapp or figma. The vast majority of software development is perfectly served by submitting forms, as mind-numbingly boring as that sounds I think its true. I feel like the primary challenge of the field of software development is actually to guard simplicity. Local-first becoming a standard is not unlike SPA becoming the standard: it hurts simplicity and digs the hole we are in deeper still. To help with this, I think any new technology proposed should advertise when it should NOT be used. In this case, I think, this disclaimer should probably say: "most of the time, for most applications, this should not be used".
- wellpast 4y ago
- wellpast 4y agoWhere does "Web" come in here? All of the links are for local-first principles, CRDTs. One of the reasons I love the local-first movement is that it puts desktop back into the center of things. I want fast, rich creative tools integrated with my OS but I want synchronization and collaboration. This is what local-first aims for, was my understanding. Ideally "Web" (ie browser tech) steps aside for first-class desktop producer/creative-focused apps.
- lupire 4y agoFor the new generation, the Internet is the Web. HTTP is part of the standard stack like IP, even if you don't need or use hypertext.
- iamwil 4y agoWhat are rich creative tools? Do you mean something like Figma or Photoshop? Or are there other tools in that category, like tools for creative writing?
- rs999gti 4y agoSo what is this? Shipping SQL lite or something similar with all web projects, with an async process for eventual sync with HQ data and systems?
- remram 4y ago> SQL lite You mean SQLite? To answer your question, this is not a technical product, it is a call for action and a collection of resources.
- NickBusey 4y agoLoading this site causes Brave browser on iOS to hard crash. Impressive.
- kept3k 4y agoCan confirm. Was looking forward to reading this and then BAM. Exit
- christophilus 4y agoYep. Guess I’ll just read the comments.
- Etheryte 4y agoGiven that every iOS browser uses the same engine under the hood, this sounds like a Brave problem. Safari and Chrome are fine.
- yonz 4y agoWoww, is this still happening? its literally a barebones jekyll page https://github.com/localfirstweb/localfirstweb.dev https://github.com/localfirstweb/localfirstweb.dev Not sure what we can fix, does https://lfw.dev https://lfw.dev also crash (redir to localfirstweb)
- makingstuffs 4y agoYeah it does also crash
- yonz 4y agoApparently, it might be caused by CSS blur
- jamesgpearce 4y agoAuthor here. I’ll try and fix this. I have a suspicion it’s the CSS glow behind the logo since everything else is the most stupid basic HTML you could imagine.
- deleted 4y ago[deleted]
- ghiculescu 4y agoThere’s way too many options on this site. It’s intimidating! How should I know which DB to use? I just wanna build stuff. For local-first to succeed as a concept, it would gain a lot from having a Rails equivalent that people can get started on. If that exists, promote just that and hide all the other options.
- clairity 4y agowhy doesn't rails have a local-first equivalent? it's something i'd love to see, as many apps can benefit. back in the day, we built a real-time sports stats app on top of rails and firebase (before it was gobbled up by google) that provided some affordances in that regard, but truly offline first--saving locally, then syncing when online--would be a great rails use case.
- yonz 4y agoI get your argument, cargo really gave Rust a leg up. Unfortunately we are far from having a go to platform. The community page's primary objective is to get the word out and connect local first builders.
- yunohn 4y agoThey said Rails, not Rust. Like Django for Python. I guess the answer is that JS/TS has never had a stack comparable to those py/rb behemoths.
- LAC-Tech 4y agoThere’s way too many options on this site. It’s intimidating! How should I know which DB to use? I just wanna build stuff. Multi-master systems - which you have if the same data is being written to by multiple devices - are complicated, and there's no one size fits all solution. The different approaches all have different trade offs. A good place to start might be "what do I think should happen when two bits of data that were updated independently are merged?".
- canadiantim 4y agoGreat list! Has anyone tried ElectricSQL? Looks amazing. The ability to effectively use multi-tenant SQLite but aggregate shared data into a postgres database is amazing. And they help you with migrations etc. This is exactly the ideal setup I've been looking for!
- javaunsafe2019 4y agoWow, and I’m here and thinking who needs this, what problems are solved here by adding that complexity and don’t see any real benefit from the producer side perspective and that’s where the costs are.
- canadiantim 4y agoUsing a multi-tenant SQLite setup helps ensure user data is separated into their own databases and won't be inadvertently queried by other users. Users can then choose to share the data they want to either via peer-to-peer or by aggregating to a postgres database. But the main benefit to me would be that user data will be more private and protected and configurable. This gives someone much more fine-grained control over their data and how their data is stored. I think it ultimately makes the attack vector space smaller for any client data.
- dgf49 4y agoMe as a service provider I would just want to keep the data seperated at my backend. I guess Ill need it anyways for some usecases. And after that why should I bother adding complexity to ship that data to the client side?
- ncallaway 4y agoRight, but then you’re not building a local-first app. of course the tools that are useful for building a local-first app won’t be that relevant to you if that’s not what you’re doing!
- throwawaaarrgh 4y ago[flagged]
- revskill 4y agoNative app requires re-download to upgrade. There's no such need for web apps. Native apps to me is just another kind of vendor-lockin.
- paulgb 4y agoThe first in local-first is relevant. These aren’t local-only apps that are unaware of the network (as is typical with native apps), they are applications that can sync data among instances and combine concurrent offline changes by different users. That’s where the complexity comes in. Desktop apps have the same inherent complexity, they just resolve it by leaving it up to the user to email report_marks_changes_fina_final.docx instead of having the software resolve it.
- 4y ago
- hobobaggins 4y agoThe key bullets are listed at the top: 1. data co-located with its UI 2. works offline 3. synchronizes between clients 4. lets its users own their data So, except for #3, exactly like classic desktop apps that store data in local files. (#3 used to be called "peer-to-peer networking"). The modern equivalent of classic desktop apps (not that they've gone away) are mobile app stores. Mobile apps are installed and run locally on a phone, even though a key part in their business model is that most frequently sync back data to their server-side. What's technically different between these and "local-first"? Nothing. In #4, there's only an implied contract (not even explicit) that the local-first will be not doing "bad" things (like connecting server-side and then sending data there without user permission.) There's no technical limitation that keeps the app from doing that, though. In other words, "local-first" seems to be a somewhat meaningless buzzword or critique about a business model, not a technical design.
- iamwil 4y agoWhen comparing desktop apps to web apps, we often forget that web apps came to dominate because they have a massive advantage when it comes to distribution. It's much easier to go to a URL than to download and install software, not to mention the process of maintaining the upgrade versions. With web apps, there are no dialog boxes that interrupt you when you're firing up the app to get stuff done. So while it's not mentioned in the local-first software manifesto, I'd add that we'd want to retain the property of easy distribution of web apps, and it's not just sync between clients.
- l8again 4y agoThis isn't about desktop vs web apps. Plenty of desktop apps (or mobile apps) use a centrally located database server side. So, #3 (synchronize between clients) is about merging data using CRDTs in a distributed manner without requiring a centrally located database. A better way to think about it is Google Docs (as a desktop app or web app really doesn't matter), and it offers real-time collaboration on a single doc between users without using a centrally located database.
- oblib 4y agoI'm surprised they list PouchDB but not CouchDB for local first software. PouchDB is fine for trivial local first apps, but not for anything that's critical. CouchDB, on the other hand, is a very robust app that can be used by multiple local-first apps and those apps can access and share that data, and back it up on a separate local and/or remote CouchDB. PouchDB and CouchDB used together are a pretty sweet and solid platform to build a Cloud and/or local first on app on.
- iamwil 4y agoprobably because you can't run CouchDB on the browser. You do need it as something for PouchDB to talk to, however.
- deleted 4y ago[deleted]
- hardcopy 4y agoI've been really happy with CouchDB + PouchDB at https://financier.io https://financier.io You can do unique things like offer a trial period without syncing (database wholly in browser), which allows for ridiculously quick onboarding. And then when the user signs up for a paid plan, you just hook up CouchDB and the data syncs right on over. The sync mechanism works so damn well. It's really cool how easy it is to implement a Google Docs-like sync mechanism with conflict resolution baked in.
- locustous 4y agoI use this model as well. It is a hidden gem for quickly building an awesome local first web app. I'm really surprised more companies don't pick this stack.
- inportb 4y agoIt works so damn well until it finds itself in a Firefox private window :) PouchDB does have rather expensive adapters that use memory or LocalStorage. Almost twice the size as the base package (minified).
- jbjorge 4y agoI used the stack on a side project. Wrote an adapter for websocket sync and a wrapper for Vue that allowed streaming queries. I really liked it, but the typical pattern of one-db-per-user with internal replication on the server was a bit difficult plan/orchestrate for shared data. I'm patiently waiting for the couchdb PR for document level access control. These days I use supabase with row level security and a Vue-wrapper that can cache queries locally and update the result as the network request finishes. Works as good as pouch + couch (but naturally comes up short for queries that rely on Date.now())
- xyzzy4747 4y agoI also love CouchDB/PouchDB, but it’s quite clunky to configure the security settings on a per user basis, and many times I want to additionally transform the data before bringing it to the client. I also don’t like to be locked into directly blasting a database with requests (sometimes it’s better to use caching). So for those reasons I keep it behind an API layer.
- dasil003 4y agoOne of the things that's exciting to me about local-first web development is how it bridges the gap between a full-blown native app and full-blown web service. Native apps have high install friction and a lot of nasty cross-platform tradeoffs. Even though there's always a cohort here (rightly) commenting on how much of a step backwards the web is for GUI app development, one has to admit that we are past the time where a truly cross-platform, install-less native app SDK can be created and cross the chasm to universal adoption. Web tech is what we have, worse is better, yada yada. Accepting that reality, one of the implications of the web and cloud-storage is that the server component tends to be heavy. While it's convenient for users to have their data centralized in the cloud for consistency and access on multiple devices, this does incur some significant overhead in terms of account managment, authentication, and database hosting. The thing that I find really cool about local-first web development is that it reopens the door for hobbyist and micro-ISV apps that can served cheaply as static files, where the customer pays for the compute and stores the data. There are lots of potential micro-apps, which don't require network effects or large data storage, that could be built this way and avoid incurring significant ops overhead for the developer. Obviously it runs counter to user expectations today, but I think a lot people might also appreciate useful apps that don't have $5/month subscription as table stakes just to keep the lights on. Also, it doesn't have to be a binary proposition, there could be accounts/sync functionality optional. Most of all, as a developer, it's exciting to have the ability to try out an idea, with optionality to ramp it up into a full SaaS, or scale it down without an abrupt rug-pull on the early adopters.
- krab 4y agoWhy should the SDK be install-less? IMHO it's enough if the app makes it into the Windows store, Apple store and any Linux format.
- chii 4y ago> ramp .. into full SaaS I think the local first ideology can enable an alternative way to sell B2B, from the bottom up. Sell to the users directly, at a cheap price and prevent the issues that stems from enterprise sales. This usually only works for small to medium sized businesses, and very rarely large businesses. However, due to the cheap price, the budget for this software that runs locally could be kept on the discretionary account of even large-ish businesses. Then, if the quality and value of the software is demonstrated, it should grow organically as users recommend it to other people around them. Over time, the need for enterprise features would arise - such as Single Sign On, and directory integration, sharing of data, etc. Up the charge for these to make up for the loss of revenue early on from early cheap sales.
- yonz 4y agoYonz here, one of the people helping connect local-first builders on https://lfw.dev/ https://lfw.dev/ Lots of comments here, and r/programming are missing the point of local-first. Without local-first, there is no reasonable way to fix the fragmented and siloed nature of data in today's products. Local-first systems rely on data living in user space (vs. product silo), creating an avenue for reusable, portable, and composable data. Let's take movie streaming to break this down. 1. Composability: Our viewing history is siloed in Netflix, Disney, Apple TV, and Prime Video. You could access better recommendations if these platforms merged your viewing history. 2. Re-usability: Say you signup for Hulu. Since the collaborative filtering model doesn't have any information on you, it takes a while for you to get good recommendations. Even worse still, this prevents new startups from being able to compete. 3. Portability: Web2 companies have almost perfected lock-in models, and this is primarily because you can't move your data. Most people learned the hard way trying to mastodon. /> Local-first at a high level tackles these by moving data storage to user space (not offline but local-first). Yielding newfound capabilities for: - ML trained on all your movie-watching history - Single source of truth for your relationships as opposed to your connections on Twitter, LinkedIn, Instagram, etc., and their specific handles. If you want to partition by platform, you can still do it. - User-owned private keys and historical data create exciting opportunities to skip signups and re-use historical data with new applications. - Death to spinners! Quick responses to some of the common themes, - Conflict-free sync is hard, but it is not complexity for the sake of complexity; with in-device/p2p conflict resolution, you can finally have a world free of spinners. - This is not native app development where your app state is a warm cache for BE source of truth. - Yes, it creates a world where you can use apps offline, which is always a good thing. - No, its not a service or a stack. It is more of an ideology and can't guarantee people won't abuse it.
- anonym29 4y agoIs this So-Mo-Lo or no, is it Lo-So-Mo? (S.V. reference)
- deleted 4y ago[deleted]
- jFriedensreich 4y agothere are many options if you do not care how conflicts are resolved and last win or some unknown but deterministic change wins is ok, but if you care to write bullet proof app specific conflict resolution without any data loss there is no real alternative to pouchdb + couchdb (except reimplementing something similar manually) also worth noting is that offline first is about way more than just working offline, yes full offline scenarios are more and more rare, but offline first apps provide reliable and instant interactivity where any user action is has a latancy of 1 to 10 ms max and no data is lost. and works as well on crappy mobile as on a high speed landline.
- vore 4y agoI'm sure a lot of the technologies on the list (like Yjs!) are well-designed and reliable, but I would not touch GUN with a ten foot pole. The code is absolutely inscrutable (what does any of this do? https://github.com/amark/gun/blob/master/lib/axe.js https://github.com/amark/gun/blob/master/lib/axe.js), the creator has failed to sufficiently explain any of the underlying mechanisms without complete hand-waving (what on earth is a "hypothetical amnesia machine" that supposedly underpins all of GUN? The creator has literally never given any kind of coherent explanation of it) -- it's just pure snake oil.
- deleted 4y ago[deleted]
- _m_n_ 4y ago[dead]
- gfodor 4y agoI built a thing called webspaces for 3D html worlds based on these principles. https://gfodor.medium.com/rebooting-the-web-in-3d-with-webspaces-9e58847e042c https://gfodor.medium.com/rebooting-the-web-in-3d-with-websp...
- bravura 4y agoMany things where it would take me 10 minutes to look up a library or API thing I don't know from memory. From today: * Write me a Python Fabric script to control an SSH session in the following ways: ... * "What does torchaudio.load do if num_frames exceeds the end of the file"? * "What's a typical conn_max_age in django for conn_max_age and why?" * "One-liner to create django secret key and use flyctl secrets set" * "Fix this toml:" * etc. It's also amazing rubber duck debugging. https://en.wikipedia.org/wiki/Rubber_duck_debugging https://en.wikipedia.org/wiki/Rubber_duck_debugging
- deleted 4y ago[deleted]
- iainmerrick 4y agoThe “examples” section just has a framework, a tutorial and a demo app. What are some actual examples of this in the wild?
- EGreg 4y agoOkay two things. 1) I gave a talk about doing local-first web development that web developers should watch or read at least: https://qbix.com/blog/2020/01/02/the-case-for-building-client-first-web-apps/ https://qbix.com/blog/2020/01/02/the-case-for-building-clien... 2) I recently learned about AbsurdSQL! It's absurdly amazing for this! https://hackaday.com/2021/08/24/sqlite-on-the-web-absurd-sql/ https://hackaday.com/2021/08/24/sqlite-on-the-web-absurd-sql...
- yonz 4y agoWould love to have you share your learnings with the community. This is the first time I'm hearing about QBIX. Feel free to send a PR with a short description to be considered for the page.
- rkagerer 4y agoIt amuses me how this is positioned like it's something new and radical :-).
- deleted 4y ago[deleted]
- jamesgpearce 4y agoYes I know! I gave a talk about this, and it made me nostalgic in a way. https://tripleodeon.com/2022/11/closing-the-gap-between-your-users-and-their-data https://tripleodeon.com/2022/11/closing-the-gap-between-your...
- college_physics 4y agoIt feels like the web becomes exciting again. A bit confusing with all the orthogonal directions but very much alive and promising
- benatkin 4y agoThis looks to be curation, but one of the things on there in a prominent position isn't the best choice IMO. RxDB is what I might call an Empty-Core project, where you can't do simple stuff without the paid plugins.
- code-is-code 4y agoNot true. Most RxDB users use the dexie.js storage which is for free: https://rxdb.info/rx-storage-dexie.html https://rxdb.info/rx-storage-dexie.html Also you should compare it to the alternatives like firestore or AWS datastore which are not even open source partially and cannot even be used with a self-hosted server.
- z3t4 4y agoThe web has moved to client rendering. But we still host the data on the server! Why?
- r3trohack3r 4y agoFor most users, delegating data management and application updates to a 3rd party is worth paying for.
- waboremo 4y agoFunny you mention that! The web has shifted towards server rendering (again). Anyways, it depends on use case. It's not entirely an either or situation. Like Obsidian, the note app as an example (even though it doesn't have a web app version officially). It runs great locally, you manage all of that yourself the way you want. However, they also have a subscription to manage syncing for you, in which your data is hosted on their servers for multi device use.
- wwweston 4y agoThe web has always been client-rendered UI. Markup is data. What's changed is the practice of pushing JSON instead to client-render to markup which the client then renders as UI. Whether this is an improvement is highly situational and probably somewhat subjective. What hasn't changed is that data management is often easier to let someone else think about, and that routing data between different client apps is often most easily and efficiently done with a single centralized intermediary.
- forestrat 4y agoThis is something which I need, ALMOST!! It will be great if someone here guides me on how I can solve this below problem. I am part of a Enterprise company which installs a bunch of managed security softwares in employees' laptops. A couple of these security softwares can/must be used in BYODs as well, to connect to the company network. I would like to build a application such that, whenever a employee finds that something is not working right on their laptop, they should be able to fire it up on their browser and it will access logs from these security software and does troubleshooting/debugging locally on the machine and provides the results and remediation steps to the person. This will tremendously save time instead of contacting IT team and waiting for their help. For this usecase, I have some limitations. 1) I want to be able to solve for both managed laptops and BYODs (both Mac and Windows). So I cannot push this as a desktop application using MDM solution. I want this to be a web-app as I can control the version of the application that they are running. So a local-first web app seems perfect in that sense. 2) I want to be able to access local file system where the logs of these security software are located. I am not a developer, but rather a infra guy, but based on what I know, a web-app cannot access the file system without user actually doing a file picker. But in this case, it is too much friction for non-technical users, especially since I want to build this solution for multiple security software which is dependent on multiple file location. 3) Moreover, I don't want to unnnecessarily reveal too much information of location of the log files for the security softwares. But if it is a local-first "web-app" and the user has to be pick the file using a dialog box, I cannot do it without revealing the location. 4) For "some" use cases, I want to be able to "securely" send meta data to a centralized server for more complex troubleshooting scenarios or to log a ticket, for example. Sorry for the long question. May I know if anyone have any solutions for this scenario?
- blacksmith_tb 4y agoHmm, I would think browser sandboxing is going to make that hard. If you have local admin rights, you might be able to make a shell script to grep through the logfiles and generate an html page as its output, which you could open in the browser? I would imagine your IT / SecOps folks would not be excited about that data being sent off the device.
- swyx 4y agothat’s a surprisingly short list of Apps to Try. i am a fan of the promise of local first, but one doubt in my mind is always that the Notions of the world dont embrace it. if the UX was so desirable then why havent they been replaced by something local first?
- canadiantim 4y agoHow would you use Notion in a local-first context?
- tin7in 4y agoA lot of the alternatives (including the one I am working on) embrace different parts of this in their UX. Just Notion is the dominant at the moment.
- maphew 4y agoFossil Source Code Management (fossil-scm.org/) ticks all these boxes. It's amazing in every way except the ones most relevant to this thread: it's not for web development! (Except as a means of version control for your web-dev project. And managing tickets, and discussion and other project management things.) The reason I bring it up is that in spite of this apparent misfit-to-topic is that it's a superb exemplar of what a local-first application can operate like. It does not sacrifice network presence and utility. I wish for more projects to work like Fossil does, only tackling different problem domains. (My personal vote is for blog or CMS.)
- jamesgpearce 4y agoOne of the authors here. Just catching up on the awesome feedback in this thread - thanks! I just thought this was a fun list of links to put together (like it's 1994!) and TBH I was not expecting quite this degree of positive reception. Happy to answer any questions!
- Falkon1313 4y agoQuestion 1: Could you summarize or maybe add a page about it? There's just two lines of text and then a bunch of links. I really can't tell what you're getting at. The obvious answer to all the questions would be to just create normal software and people can upload/share their files if they want to. That's pretty much how all software works except for SAAS web stuff. I assume you're getting at something different, but it isn't at all clear what it is. Local/native software has been around for many decades. Long before web software; long before the web itself even existed. What is different about this idea? Is it some way to make web UIs actually as functional as native applications? Some format to make data from web apps as usable as data from normal applications?
- jamesgpearce 4y agoThanks! Yep, I think we need an about page, and maybe a few pull quotes from the articles. The first article from Ink & Switch is the canonical source of the name and the idea. I think a lot of web consumer products (and dare I say SaaS too) are these days _not_ on your own computer like they were in the 90's or early 2000s. This isn't a call to return to those days, but it is a reminder that there have been trade offs in moving our productive lives entirely to other people's computers - both in terms of technical performance, but also conceptual ownership and the like. Can we rebalance a little? So yes, the idea is exactly _not_ new. But a lot of products are built today without considering this tried-and-tested architecture as an option. This site & list of tools is just a friendly reminder that yes, there is another way.
- deleted 4y ago[deleted]
- vnjp 4y agohow do you make your website load almost instantly? please tell me.
- yonz 4y agohttps://rxdb.info/offline-first.html https://rxdb.info/offline-first.html has a good write up on this. I'm also trying to dig up this local-first GitHub client that a hacker built and demoed on YouTube
- elvin_d 4y agoimo the ecosystem is weak for a local-first apps. I'm dreaming about e2e encrypted local-first database that would be easy ti plug in and store encrypted on the server. From the tooling perspective, WASM seems a good choice for most likely embracing through Rust.
- yonz 4y agoAbsolutely need something here This keeps coming up everywhere. Down below in this HN thread, r/programming LFW comments and the discord chat. Database as a storage and sync layer makes a lot of sense but it's hard to pull of the encryption and device provisioning at that abstraction layer.
- mbo 4y ago@martinkl (Martin Kleppmann, primary author of the Automerge CRDT _and_ Designing Data-Intensive Applications) suspiciously absent from the Folks to Follow section.
- yonz 4y agoThat is a good point, we will have it updated tomorrow. It wasn't deliberate omission but more that he is essentially the person who kicked it off and the first link is the ink and switch local-first article
- Existenceblinks 4y agoIs there any popular commercial apps based on these? Most of projects I have seen using these tech are developers' side projects.
- yonz 4y agoNot that many, we need more builders. https://www.inkandswitch.com/ https://www.inkandswitch.com/ has a few and ofc checkout the apps to try section on the site.
- shireboy 4y agoFYI This crashes Brave iOS. Odd it doesn’t crash Safari iOS given they’re the same engine.
- garfieldnate 4y agoI'm curious why Solid/Pods are not mentioned; there was a lot of press and excitement around its launch, backed by Tim Berners-Lee, and it seemed to be exactly the pro-user technology we needed to take computing in service of humanity to the next step. No news on that project since 2021 :(
- yonz 4y agoAmazing to see this community coming together. We are having the first #LFW meetup @ 4PM ET Feb 28,2023 on our discord stage. Come join us https://lfw.dev/ https://lfw.dev/ (https://localfirstweb.dev https://localfirstweb.dev) We have an amazing lineup prepared for you, including @pvh you can find the details here: https://twitter.com/founderYonz/status/1628846898898501632?t=w7E_hN9HCseDYg4pDYhcKg&s=19 https://twitter.com/founderYonz/status/1628846898898501632?t...