9 ms·
Show HN: A note-taking web app that won't ever betray you
- blader_johny 8y agoHave you heard of Scuttlebutt? https://www.scuttlebutt.nz/ https://www.scuttlebutt.nz/ How does EDSU compare?
- heathjohns 8y agoSimilar in that you get to keep your own data. Different in that it's lower level - it's not a social networking protocol - it's something you can build a social networking protocol on.
- gpm 8y agoThis assumes that edsu will never betray you. Given the broad meaning of betray used, that seems unlikely. If edsu gets big it will have to pay for all that storage somehow. Like all things edsu will one day come to an end, and like most websites/companies/endeavors it will probably come to an end before I do.
- ex3xu 8y agoWhile I'm just hearing about this Edsu project and am not in any position to vouch for it re: future betrayal, I think the specific concern you raised is solved by Edsu by using local storage rather than a centralized repository. A few clicks in, the first line of https://edclave.com/ https://edclave.com/ is: "Edsu makes life better for both developers and users of Online Open Source Software (OOSS). Instead of the developer having to hold on to your data, you do. It gives you more control, and gives them less to worry about."
- Waterluvian 8y agoLocal storage feels really quite volatile. It lives on a local disk inside your browser. May as well just use notepad and a file.
- beatgammit 8y agoIt seems the data stays in sync with other places you're signed in, so supposedly you could get redundancy by signing in on more devices/browsers. In that sense, it's better than a crappy text editor on your computer.
- heathjohns 8y agoYou're right about the sync part, but it's an old skool client-server sync, not a peer-to-peer one.
- larkeith 8y agoHmmm, a p2p version that uses local storage on each device you have could have some interesting applications. As a client-server architecture it's a tad complex for a lot of users to set up, but with a good UI it could become a viable alternative storage method, as well as allowing for potential app cross-compatibility. You would have to make sure at devices had a chance to sync - perhaps have a web service there? - and I'm unsure how you would deal with conflict resolution, but the idea definitely seems to have a lot of potential. I'll need to think about this.
- larkeith 8y ago...I just described a subsection of git... although with better UX.
- nikkwong 8y agoBut let’s say for example your phone and your computer are clients, and your computer has latest version of your data. When you open your phone, if your computer is not on the internet, you won’t be able to get latest. So, would this be practically useful for a terribly trivial use case like this?
- gpm 8y ago
- deleted 8y ago[deleted]
- heathjohns 8y agoGood point, and you're right: the buck has to stop somewhere. However, Edsu is a federated protocol with an open source implementation. So it only disappears when the last person to care about it stops keeping it up to date with the compiler. That's about as good a guarantee as you can get, I think (e.g. telnet is still around after 49 years).
- marknadal 8y agoEdsu seems to rely on federated services. Email, similarly, unfortunately fell to convenience - GMail, with Google selling your data. The parent brings up a good point, how do we know Edsu won't betray its users? Or that it won't become dominated by a centralized provider? I'd love to hear an answer. For me, our team decided to take a route that cannot be compromised - your identity belongs to you, fully decentralized (https://gun.eco/docs/Todo-Dapp https://gun.eco/docs/Todo-Dapp), yet can do 0-server password resets and other conveniences.
- StavrosK 8y agoFrom a five-second glance at their website, the main selling point is that you can self-host it.
- larkeith 8y agoI know I'm a bit of a broken record, but a <noscript> notice that JS is required is always appreciated rather than a blank page.
- marknadal 8y agoApologies, yeah, the site has an interactive coding tutorial that teaches you to write and run your JS. <noscript> would be good - make a PR? https://github.com/gundb/gun-site/blob/master/docs/src/index.html https://github.com/gundb/gun-site/blob/master/docs/src/index...
- heathjohns 8y agoI absolutely sympathize with the concern - but I don't believe it's an a priori solvable problem. Bitcoin is theoretically fully decentralized, but when I sold mine off it took 2 days to sync the chain - I get why people use Coinbase. I'd still be running my own email server right now if it weren't for spam. My point is that I think there's inflection points - when weaknesses in design or implementation become apparent - where centralization can get a foothold, and I don't think it's inevitable which course things take at those points. HTTP hosting, for example, has some big players, but it's still very much a commodity. I realize that this is a crowded field, with lots of contenders, like yours. I think it's an important enough problem that it warrants parallel attempts, so that at least one of them sticks. Edsu picks a very specific strategy, which is that it's a compromise - it's not like, say, IPFS in its level of decentralization. For an app platform, I think there's challenges enough at any level of decentralization, and Edsu tries to b-line it straight there by being very orthodox and old-skool in nearly every other way. I thought it was a good bet, but only time will tell. Props for the password resets, BTW. The importance of that feature is underappreciated :)
- nihil75 8y agoyey another note taking app... The digital equivalent of making ashtrays in pottery class.
- Waterluvian 8y agoI thought that was Todo lists? The hello world equivalent of web apps.
- lostmsu 8y agoThe technology improved a bit.
- h1d 8y agoYet it's not too easy to make one that matters.
- bengrunfeld 8y agoAsana forever
- daliwali 8y agoThis is my first time reading about Edsu, it seems very similar to the Solid Platform in one important aspect: it keeps data in the control of the user, separate from applications. I like how low-level and simplified the protocol is, being limited to only 9 types of messages. Compared to Solid which carries baggage from RDF, this seems far easier for third parties to implement. The note-taking app is really under-selling the protocol beneath it. What could help sell it better is by doing something better than a centralized platform can.
- itgoon 8y agoI agree, the protocol looks pretty neat. I wonder what the hold up is on Linux support. I love me some FreeBSD, but Linux is better supported. The note-taking app seems more like a proof of concept than any kind of category-killer, though. I'll be keeping an eye on that protocol, though.
- heathjohns 8y agoIt's only because FreeBSD is my desktop OS, and so I used kqueue during dev. I understand that there's a compatibility shim for Linux, so theoretically a port should be quite easy. The bulk of the code is in Rust, and that shouldn't need porting at all. And thanks for the kind words :)
- heathjohns 8y agoThanks! One of the goals of Edsu is that it's simple enough that you can "telnet" in and just talk directly to the server like you can with HTTP or SMTP. It can seem like a trivial feature, but I've found that being able to speak a subset of a protocol from any language after just an hour or two of duct-tape hacking ends up being a big unsung feature. And itgoon has it right - this was the most useful thing I could think to write that only took a single day (I had an self-imposed deadline to hit earlier this week). Here's a discussion of more interested projects and how Edsu could be used in each (and its advantages and disadvantages): https://edsu.org/use-cases/ https://edsu.org/use-cases/
- 8y ago
- fouc 8y agoIt's interesting, a few months ago I asked HN about how websites can let users maintain control of their own data, and I never heard of Edsu. This looks pretty good!
- syrrim 8y agoIt launched a few days ago AFAICT.
- gtt 8y agoI actually found that using special directory for notes and git and grep is actually convenient. The only thing I'm missing is fuzzy search features of grep, like build on word2vec models.
- h1d 8y agoCan we call this the Dropbox syndrome where people boasts they have a better solution with combination of cli tools instead of a service?
- quickthrower2 8y agoIf you are privacy focused it is a better solution.
- detaro 8y agoThat seems a very uncharitable reading of your parent post.
- tomc1985 8y agoOnly if we can say that SaaS obsessives have Cloud Syndrome
- gitgud 8y agoThat is an interesting Hacker News type of phenomenon, but I personally enjoy reading the alternative solutions to a presented problem. And sometimes it turns out that the SASS product is simply a wrapper around a cli tool... for example the product [1] Mole, which is a wrapper around ssh to make it easier... but not really necessary... [1] https://news.ycombinator.com/item?id=18236125 https://news.ycombinator.com/item?id=18236125
- craftyguy 8y agoI prefer the 'combo of CLI tools' to a service where ever possible because those solutions are almost always simpler, easier to understand, portable, and easier to maintain.
- heathjohns 8y ago
- z3t4 8y agoI think edsu could be nice for "serverless" apps, eg static web apps. Should make it work offline. And edsu should keep a copy of the data on the client. Then sync once the client is online.
- heathjohns 8y agoEdsu's data store is content-addressed - i.e. everything is hashed and immutable from a storage perspective. A great thing about this is it makes a lot of caching problems simply go away. So while there's no explicit support for local caches disconnecting and then re-connecting later, the underlying protocol gives any library wanting to implement this feature a lot of support for it.
- svnpenn 8y agodoesnt work with private browsing...
- nihil2501 8y agolike chrome incognito? i tried and it does
- slantaclaus 8y agoEvernote
- deleted 8y ago[deleted]
- podviaznikov 8y agoHi, edsu seems very interesting. I've looked through examples and read docs. Question: is it possible to make an app and allow user to set permissions. E.g. lets say I have writing app. I want initially to create writings as `private` and then promote them to `public`. I don't see if it's possible. I see that scope is fixed for now in the name like that `prv.app.edsu-org.hello-world.storage`. So I assume `token` only works for `prv.app.edsu-org.hello-world.storage` but wouldn't work for `pub.app.edsu-org.hello-world.storage` or would it?
- heathjohns 8y agoThanks for reading! If an app wanted to be able to switch something from public to private or back, it'd get a token with write permissions for two names, one with the prv.* prefix, and one with the pub.* prefix. And that's a good thing: it makes it clear to the user that the app is requesting the ability to make the things that they write public. It's still just one grant request, it's just that there'd be two line items instead of one. Also, names are simple pointers to blocks of data, so, for instance, if both names happen to be pointing to the same written piece, there's no duplication of data.
- podviaznikov 8y agoPerfect! Makes sense
- podviaznikov 8y agoAnd another question. It's not possible to list all the keys under some namespace, right? `prv.app.edsu-org.prefernces-app.preferences` - I can't see what are the subkeys? And I see that there is no multi-get request. So how would you implement your notes app if you have multiple notes, not one. Would you have a document which would store hashes of all notes and then fetch in parallel all of them (making n calls, 1 call per note)?
- heathjohns 8y agoNames are big chunky things - you want to use them as sparingly as possible, and in general they should be "well known" - meaning a list function (which does exist as pub.srv.edsu.listings.names, though it's currently not something you can request permissions to) goes pretty hard against the grain of the protocol. Essentially, you'd only want more than one name if there's different visibility requirements for different parts of your data, or you specifically want to disconnect the state of some of data from others. All of your structure (e.g. lists, trees, lookup tables, etc.) you want to keep in the blocks. So in your case of having multiple notes, you'd likely want the name block to keep track of the block hash of each one (so, yes, exactly as you say). And correct, if you wanted all of them you'd need to do N block-get calls. However, due to pipelining and chaining, that's not as costly as it might sound: in terms of latency it should be costless, and in terms of bandwidth the overhead is a fraction of a percent if you're using full blocks (i.e. what you'd be doing if you're concerned about bandwidth). A lot of this stuff is quite low level (think almost SCSI kind of low level) - it's meant to be abstracted away by libraries like basic-storage.js. In that case, having multiple notes is trivial - you put each note under a different storage key, and the library sorts out how to retrieve them efficiently and update them independently, even though they're all be under the same name. In case you haven't run into it yet, I talk a little bit more about why names are meant to be used sparingly at https://edsu.org/use-cases/storage/ https://edsu.org/use-cases/storage/
- Quanttek 8y agoIt's not really clear to me how the data is stored. Is it confined to the Edsu server I use akin to Diaspora and applications connect to it? How do I migrate my data or switch providers? Is it lost if the server or my localStorage goes down?
- heathjohns 8y agoThanks for your interest! It is indeed stored on an Edsu server. The data format is trivial and completely specified, so switching providers should be straightforward (an Edsu app to do the data transfer would be easy to write, and I plan on writing one). If you're using your own domain (which is encouraged), from there you'd just update an A record to complete the transition, if not, you'd set up a transparent redirect on your old host to keep all your old links/permissions alive. It's pretty old school in that if your provider loses a server and they're not doing replication/backups then there can be data loss. If they are, then a failover should work fine, with minimal loss and no corruption (the important stuff is atomic). With localStorage, how it's used is up to the app (generally it'd only be used for keeping a token and maybe a block cache), so I wouldn't expect a loss of that to matter in most cases.
- Quanttek 8y agoThanks for the helpful reply! I brought up local storage because people were talking about some kind of sync and it sounded like the browser's storage would be used
- martin_ky 8y agoI like the concept of decoupling storage from the editor app. I wish more SAAS providers recognized this as an important product feature. It would allow deployment of hosted services in much wider range of scenarios, where privacy and data ownership is a big concern.
- Markoff 8y agohow goes it compare to Standard notes
- obituary_latte 8y agoDoesn’t save for me. After signing up and getting edclave address, signing in an granting access, changing the text and reloading doesn’t save. Nor does changing and navigating away and back - always get the “erase me..” text. iOS safari
- heathjohns 8y agoSorry about that, and thanks for the bug report! I haven't been able to test with an iOS device yet - I'll get on that.
- scottmf 8y agoA frozen banana that won’t make you sick and kill you!
- beaconstudios 8y agoif this used gun.js, you wouldn't even need a third party provider. (not affiliated with the gun.js team, just think it's a powerful P2P platform).
- christefano 8y agoOh the irony. I clicked through to edsu.org to learn more about the backend of this note taking app, and the error I got was: “Safari cannot open the connection because the network connection was lost.”
- 8bitsrule 8y ago"Write some text - it'll be here when you get back.... I can promise all this because NoteToMe is an Edsu app. It means I don't have to store your data, you do ...." The same is true of the text file I've been adding to for decades. After learning the hard way (several times) NEVER to trust someone else's prog/assume they'll be around for more than 6 months. Multiple backups sync'd religiously. And ... no website needed! Not even a net connection! Just a 'personal computer'! "You do have to sign up for an Edsu account...." Whoops ... there it is.
- pakastin 8y agoI don't get this, is the data stored client-side or server-side? If it's client-side, why would I need a service provider: https://edclave.com/sign-up/ https://edclave.com/sign-up/
- heathjohns 8y agoIt's stored on the server.