9 ms·
Figma Is a File Editor
- NotYourLawyer 3y agoIf your user has to care about the file/database distinction, your abstractions have leaked all over the floor.
- BSEdlMMldESB 3y agoso if your user needs to know anything more than what it's in front of them; you have made bad software??? this can't be right; but I can sense my own ideological worries seeping in. this is about a distinction between entries in a database (files) and the database itself (the filesystem is a DB). but what's wrong with expecting people to know a little? would you argue that if the user sees the whole URL in the browser that the abstractions are leaking?
- jayd16 3y agoThis way off topic but it's an interesting question. I guess I do think the url bar is leaky. Hyperlinks are the desired abstraction, no?
- fooker 3y ago>but what's wrong with expecting people to know a little? The issue here is that you're training users to rely on internal details. Once users have to rely on internal details, you are stuck with maintaining these forever or face a constant stream of backlash.
- paulddraper 3y ago? Did you read the article?
- nameistaken 3y agoReddit is leaking into other communities.
- NotYourLawyer 3y agoEh I skimmed it.
- withinboredom 3y agoDid you read the rules? > Please don't comment on whether someone read an article. "Did you even read the article? It mentions that" can be shortened to "The article mentions that".
- paulddraper 3y agoFair point. Though I would feel a lot worse if I started commenting on the rules without having read them.
- helsontaveras18 3y agoThis isn’t at all what the article is implying… this a technical analysis of the storage / usage pattern of an application.
- user261 3y agoThe file/database in the title is more like a clickbait really. At the crux of it the author is really just talking about the granularity of the writer and reads. The article isn't advocating or commenting on the end user having to care about if it is a file or a database application.
- rocqua 3y agoIs your user working on a document, that is a file editor. Is your user working on a tracking system, that is a database editor.
- habitue 3y agoAlternately: file formats and saving to disk are just a very primitive database where the cache is the size of the entire database (you load the entire thing into memory). Also you don't have good disaster recovery (see "I forgot to save and lost the last half hour of work!"). Also, auto-save is a very primitive form of a write ahead log
- paulddraper 3y agoAnd databases are files :) --- The essential distinction is the granularity of reads/writes
- paulryanrogers 3y agoUsually but not necessarily. Some can access raw disk blocks without a traditional file system.
- doubled112 3y agoWon't Oracle do that for a performance increase?
- paulddraper 3y agoOracle claims a 5-10% perf increase (on Windows) [1] [1] https://docs.oracle.com/en/database/oracle/oracle-database/12.2/ntqrf/raw-partition-overview.html https://docs.oracle.com/en/database/oracle/oracle-database/1...
- spullara 3y agoas long as auto-save doesn't overwrite the file directly and can corrupt it by failing in the middle!
- unmole 3y agoQ: What's the difference between filesystems and databases? A: Marketing.
- seumars 3y agoAlthough the tech behind Figma is nothing but impressive I find that the biggest downside to current collaborative tools is that they're expected to be used collaboratively at all times. I would say that no more than 10% of the time I spend on Figma is for collaborating with other people in short brainstorming sessions, team workshops, etc. The other 90% is spent by myself working and polishing said prototypes, but still having to deal with the loading times, server hiccups, and so on. An "offline mode" of sorts would also be a silly feature to expect since their entire stack is built around collaboration. Seems like a difficult balance.
- karaterobot 3y agoWeird, I've used Figma pretty much every work day for four years, and only had a couple of server hiccups I can recall. No lost data, just an error message that went away pretty quickly. I've had my Mac crash more often than Figma. With the Adobe purchase, I'm confident that'll change though!
- DANmode 3y agohttps://www.pcmag.com/news/doj-expected-to-block-adobes-20-billion-figma-acquisition https://www.pcmag.com/news/doj-expected-to-block-adobes-20-b... https://www.reuters.com/markets/deals/adobes-deal-acquire-figma-under-threat-eu-regulators-ft-2023-06-20/ https://www.reuters.com/markets/deals/adobes-deal-acquire-fi... All smoke?
- ax0ar 3y agoIt's still a trade-off many designers happily accept given the fact that it took so much longer to open Adobe's products and dealing with their sluggish programs. You may argue and say why compare with Adobe? You would be right in that case, but it has been the gold standard in design for many years and set expectations on how design applications behave.
- thesuitonym 3y agoAt the end of the day, any software really has to choose what to prioritize. You can't have good online collaboration unless you design the tool around that--or I suppose if the documents folks are working on are incredibly simple. Think of it like Excel and Google Sheets. Excel was designed for offline first, but Google Sheets always had online editing as a first-class citizen. Excel today has actually surprisingly great collaboration features, but it's sometimes buggy, and things don't always work the way you might expect. By contrast, Google Sheets is designed from the ground up to be online, and while you can save a file for offline editing, it doesn't actually put anything useful on your disk. Even if you have Google Drive, you just get a .gsheets file that is essentially a link the the document. I guess where I'm going is, you just have to choose your battles. Be good at one thing, rather than mediocre at both.
- antidnan 3y agoSome great links in there. Figma's engineering blog about how multiplayer works has been a very helpful starting point for this type of software.
- retrofeel 3y ago[dead]
- crabmusket 3y ago> The tricky part is that when multiple users open the same Fig file concurrently, Figma’s infrastructure needs to ensure that they are all connected to the same server. That server can then be the sole authority on the state of that document, and write to it without race conditions. This is the killer app for CloudFlare's new Durable Objects. They solve the routing and data distribution layer, allowing you to write single-threaded business logic to coordinate changes. They even have a transactional storage capability which is priced more or less equivalent to DynamoDB (which Figma uses for their write-ahead log). This pattern also helps scale write transactions without melting your database. http://ithare.com/scaling-stateful-objects/ http://ithare.com/scaling-stateful-objects/ I try to boost Durable Objects every chance I get, in order to "push the battleship" in the direction of another cloud provider implementing something equivalent. While this article is written by the plane.dev team, which has an adjacent product, their approach seems more geared towards more demanding backends. Lots of use cases don't need to run e.g. a game or simulation on the backend, they just need a synchronization layer in front of a document store. --- > They could stuff the whole document into a binary blob or json(b) column next to the metadata. In my experience doing this in MySQL... do not do this. Once you have a dozens-if-not-hundreds-of-gigabytes large table full of JSON, it becomes a real nuisance. As a halfway measure, I think it would help to have a "blobs only" table separate to the metadata table. But as the OP points out, it is not economical anyway.
- deleted 3y ago[deleted]
- calebj0seph 3y agoI'm an engineer on Atlassian's new whiteboard feature for Confluence, which has real-time collaboration like Figma. We've been highly successful using Cloudflare Durable Objects to act as a simple relay for WebSocket messages. One of the best things is that the Durable Object will automatically run in the closest Cloudflare data center to the first user who connects, which helps keep latency very low. The alarms feature they added last year has also been great at allowing us to asynchronously snapshot the state of a board certain intervals, rather than us needing to schedule the job from an external system.
- lamp987 3y ago[flagged]
- simultsop 3y agoThanks for taking time to reverse engineer how Figma works on background. Wondering if info like saving buffer changes to DynamoDB are published by Figma on a blog or you just inspected this behavior in browser, the same for S3 and postgress? After all, Figma is an excellent product except the loading time on existing documents 5mb or more, design files, take time to open up reminding me Photoshop 7.0 days.
- paulgb 3y agoThanks! > Wondering if info like saving buffer changes to DynamoDB are published by Figma on a blog or you just inspected this behavior in browser, the same for S3 and postgress? Most of it came from their blog posts (I link to some of their classic technical posts, but I also skimmed all of their eng posts looking for tidbits to fill in the gaps). I have talked with some Figma engineers over the time building Plane.dev to check my understanding, and I did a bit of network sniffing to verify that e.g. the Fig file data is sent over websocket.
- esjeon 3y agoI'm more impressed by the architecture, which resembles that of room-based online games. After all, online game is the ultimate real-time collaboration system. The only difference is that, in figma, room states are saved (backed by S3 and the lousy "disk" cache). The file <-> database contrast feels rather moot, because it's natural to have metadata in usual DBMS and blobs in object/file storage (or in blob column).
- anitil 3y agoOne note that the article makes is that reading from S3 requires a full read of the file. As an alternate approach is to use HTTP range headers to read only part of a file and minimise how much data goes over the wire. I'm not sure if the 'kiwi' file format would support that (and this is only for reads I believe). A nice demo of this for sqlite is here - https://phiresky.github.io/blog/2021/hosting-sqlite-databases-on-github-pages/ https://phiresky.github.io/blog/2021/hosting-sqlite-database...
- benreesman 3y agoI think I stumble into the trap of being like “ok single-master OT with a warm failover and probably an append only log to EBS or something, consistency as logical monotonicity yada yada” because I’m old and jaded. But this creates at least two problems right off the top of my head: 1. When I first got OT working at a coffee shop in SOMA I said “hell yeah” so loud everyone looked at me. It’s magical stuff and it’s way more fun to be an active part of others finding all this amazing shit we’ve inherited. 2. There are probably a zillion refinements since I last did any of that stuff and by glossing over it with a mental yawn, I’m probably actually falling behind the cutting edge in ways I definitionally don’t see. Im going to try to pay more attention to the details of stuff I think I already know.
- api 3y agoFigma is an app that would be faster and better as a native app, but is a web app because that lets you more easily charge recurring revenue.
- sam0x17 3y agoFrom what I've seen Figma is just a really good way to freeze your browser.
- wryanzimmerman 3y agoMost people who really use figma don’t use it in their browser.
- sam0x17 3y agoSo somehow the electron app is faster than the browser experience? Seems dubious