
Show HN: Graphite – A decentralized and encrypted Google Docs alternative - jhunter1016
https://graphitedocs.com
======
gfodor
Prediction: every dapp that ships over the next year as these technologies
mature will have its top comment on HN be "actually this is not 100%
decentralized"

it would be very helpful to get out ahead of this and have a framework for
classifying _how_ decentralized an app is. otherwise we may find ourselves in
a situation where nobody migrates off of fully centralized apps to _less_
centralized apps because they aren't "fully decentralized", which would be a
shame.

~~~
ucaetano
One way to do it is to think about which parts are centralized vs. distributed
vs. replicated: discovery, authentication, processing, storage, files, etc.

Take bitcoin, for example: the ledger is centralized (there is a single
monolithic one) but its storage is replicated (there isn't a single central
storage location) and the processing is decentralized.

~~~
mattnguyen
It doesn't follow that a "single monolithic ledger" means Bitcoin is
decentralized. Since all (full) nodes carry a copy of the entire ledger and
every participant in the network can propose transaction blocks to the
blockchain, there isn't one party that controls writing to the ledger.

Risk of centralization comes from mining pools that control 51% of the hashing
power. [1]

[1] [https://bitcoin.org/en/glossary/51-percent-
attack](https://bitcoin.org/en/glossary/51-percent-attack)

~~~
ucaetano
> It doesn't follow that a "single monolithic ledger" means Bitcoin is
> decentralized

Oh, I never mentioned that. But the implication of the single, monolithic
ledger is that it isn't partition-tolerant, if you don't have access to the
ledger, you can't transact.

IIRC, the lightning network kinda addresses that by allowing off-central-
ledger transactions.

------
pjmlp
> Own your documents

Rule number one is not to rely on other people's computers to write them in
first place.

~~~
vog
Not sure why you were downvoted, because I think you have a very good point. I
often see us, as web developers, being blind to obvious, simple, local
solutions. Perhaps this is because in many areas going from native to web _is_
a win. Or, because too many web developers are exposed to business models
around developing web applications mostly as a vehicle to fetch user data.
(Fortunately, this is not true for intranet web applications which is a niche
where I'm quite happy to work in.)

~~~
jhunter1016
There's nothing wrong with local applications. What Graphite is trying to
solve for is the convenience of access across multiple devices without losing
the privacy of what you'd expect from a local app. Happy to talk more about
this in detail!

~~~
icc97
how does this differ from local documents combined with dropbox?

~~~
jhunter1016
Good question. The primary difference is that your file data is encrypted
client-side before it ever reaches the storage provider of your choice. And
that data can only be decrypted client-side in the app.

You can, of course, PGP (as one example) encrypt your files yourself and store
them on a local Dropbox folder that syncs. But, Graphite is encrypted by
default without any additional work on the user's end.

The other main difference is that you can share your files with anyone that
has a Blockstack ID regardless of what storage method they use. You might use
Dropbox while another user uses Azure, and neither user would know the
difference, and the app will work seamlessly.

~~~
icc97
You can use Boxcryptor [0] on top of Dropbox to encrypt everything client
side. That's much simpler than PGP.

Yes I agree on the collaboration. I can see how this is more of a
security/privacy minded replacement for Google Docs rather than a Word/Excel
replacement.

[0]: [https://www.boxcryptor.com/en/](https://www.boxcryptor.com/en/)

~~~
hobofan
> Boxcryptor

Closed source + no audit is not exactly what you'd want to see from a piece of
security software.

------
chillydawg
Graphite is an unfortunate name clash with graphite monitoring and metrics
tools.

~~~
jacobush
For now, if this takes off, monitoring is very niche compared to Docs.

~~~
bvrmn
If it takes off then will complicate life for ops. Very mean.

~~~
jacobush
There are only so many common words to go around. As long as something is not
in the same biz, how mean can it be?

------
icc97
The features page [0] has as much content about 'contacts' as it does docs or
spreadsheets.

Personally for me the most important thing is that it can do all that I use
Word/Excel for (I know this doesn't have to be the full feature set) - because
without that I couldn't use it.

So I would put the Docs / Spreadsheets sections at the top with screenshots of
a reasonably complex document (contents/images/tables/sections) then a
reasonably complicated spreadsheet.

Only then after that would I start talking about contacts.

There's a claim that it contains 'All the features you've come to expect from
Google and Microsoft'. This could do with a comparison table saying exactly
which features / functions are available across Word/G Docs/Graphite and
across Excel/G Sheets/Graphite.

[0]:
[https://www.graphitedocs.com/features](https://www.graphitedocs.com/features)

~~~
jhunter1016
This is really great! I appreciate the ideas and feedback.

------
ThePhysicist
Congrats, this looks really great! Do you plan turning this into a
product/service or is it a side project? I think there's a real market for
secure alternatives to popular cloud services so I hope this will be
successful. Personally, I moved most of my data and services (G-Mail, Dropbox,
AWS) away from the US to European alternatives, which fortunately stepped up
their game in the last years (IMHO) and are often quite usable. I haven't
found a good alternative to G-Docs for collaborative editing though, so pretty
excited about something like this. I think a traditional encrypted backend
data store would be more adequate for most users though.

~~~
jhunter1016
Thanks! Yes, there are enterprise features in development for the business
side of things. The consumer app that you see (plus enhancements coming) will
continue to be free, though.

I can imagine a world where Blockstack apps and other decentralized apps can
be combined to replace all of the cloud services we've been indoctrinated into
believing were necessary.

------
JepZ
Lately, I see the trend of calling a lot of different things decentralized. In
fact they all are, but at the same time they are very different.

The classical example of a decentralized application was the email server.
Everyone could host one and they all would communicate with each other (in
theory). And with the thing called Federation for Nextcloud, XMPP or Matrix
servers it is pretty much the same. When you host a server, you have complete
control over it.

But recently, we see all those blockchain enabled networks which store the
data on some of its nodes. You have no idea where your data is stored (cloud
like), just protected by by some encryption, which is considered safe as of
today.

I am a huge fan of decentralized services as we have known them for a while,
yet I look very skeptical at the new services. I mean they have their own set
of unique features (e.g. excellent up-time, scaling on a network level, etc.),
but at the same time they lack properties of the old decentralized
applications (e.g. 'your data on your hardware').

Anybody knows if there are more precise terms than just calling them all
'decentralized'?

------
lawnchair
This will easily be confused with Graphite the monitoring tool

~~~
jhunter1016
Good feedback! I actually wasn't aware of Graphite Monitoring until this
comment.

~~~
fredley
Off the top of my head: Blockuments.

~~~
julienfr112
do[c]Chain ?

~~~
jaggs
Graphate :)

------
sametmax
Too many pages and things to fill before even trying the product. The way to
even start a quick hello world is really not obvious.

~~~
jhunter1016
This is helpful feedback. You have to download the Blockstack Browser in order
to communicate with the blockchain for registering your name and zone file.
However, you should be able to get up and running in just a couple minutes.
Any suggestions for specific improvements?

~~~
larrysalibra
Larry from Blockstack here.

We're really focused on improving the on-boarding process for users who are
new to the Blockstack ecosystem so it only takes on a few seconds for users to
get started with a Blockstack app instead of immediately asking users to
download and install the Blockstack Browser.

There's a bit of a discussion about how this will work on mobile here:
[https://forum.blockstack.org/t/blockstack-mobile-
plans/3621/...](https://forum.blockstack.org/t/blockstack-mobile-
plans/3621/6?u=larry)

We want to really reduce the friction of on-boarding new users to amazing apps
like Graphite.

~~~
rkangel
There's two separate things: demonstrating, and onboarding.

Installing Haskell for development takes a few minutes. But you don't need to
do that to see how Haskell works, you can just use the interactive prompt on
the website: [https://www.haskell.org/](https://www.haskell.org/)

My point in your case, is to suggest the idea of an in browser
blockstack/Documents demo. It wouldn't get you the decentralised guarantees
that you get with the proper blockstack browser, but might give people a taste
enough to be interested. Could be a lot of engineering effort though!

------
toyg
This seems to rely specifically on the Bitcoin blockchain. From the
Blockstack-Core node install instructions:

"Because each Blockstack Core node maintains a full copy of the network state
locally, it will need to synchronize its state with the Bitcoin blockchain
when it starts for the first time. This can take days."

That's bad news in my book, Bitcoin is a very unstable world. I'd rather rely
on a dedicated blockchain.

~~~
jhunter1016
This is only if you choose to run a core node locally. Not all user will do
so, and for them, they will be up and running in a couple minutes.

The bitcoin blockchain is just the current blockchain being used. Blockstack
was built to be migratable to any blockchain. In fact, they've already
migrated once successfully.

~~~
toyg
Yeah, I guess it's more a criticism of Blockstack than Graphite specifically.

------
hliyan
Looks good, but as a google docs alternative? While the editor is fairly
usable, the spreadsheet is very feature anaemic -- just enter data, export as
CSV, insert/delete rows, alignment, fill handle, simple formulas and print.
Although I did notice that it allows you to right click and make individual
cells read only. I wish Excel had that...

~~~
jhunter1016
Absolutely agree with you on spreadsheet functionality. But the additional
features you're looking for are coming. I should have a public roadmap out
soon that I'd love to get feedback on.

~~~
hliyan
That's great to hear! I just noticed that functions like SUM and MEDIAN also
work, which is a good thing.

~~~
jhunter1016
Yes! All of the Javascript Math functions should work. Let me know if you hit
one that's not working, though.

------
dsacco
I see no mention anywhere, on Graphite or Blockstack, about how the encryption
actually works.

I’ve checked the following resources:

* The Blockstack whitepaper: [https://blockstack.org/whitepaper.pdf](https://blockstack.org/whitepaper.pdf)

* Each of the System Design documents listed here: [https://github.com/blockstack/blockstack-core/tree/master/do...](https://github.com/blockstack/blockstack-core/tree/master/docs)

* Blockstack General FAQ: [https://blockstack.org/faq](https://blockstack.org/faq)

* Blockstack Technical FAQ: [https://github.com/blockstack/blockstack-core/blob/master/do...](https://github.com/blockstack/blockstack-core/blob/master/docs/faq_technical.md)

* Blockstack Repository Readme: [https://github.com/blockstack/blockstack-core](https://github.com/blockstack/blockstack-core)

* The Graphite FAQ: [https://www.graphitedocs.com/faq](https://www.graphitedocs.com/faq)

* The Graphite Features: [https://www.graphitedocs.com/features](https://www.graphitedocs.com/features)

This is a red flag. “Encryption” is far too unspecified. I’m looking for
specific primitives, constructions, algorithms and design decisions. I want to
know how key exchange happens, if a library like libsodium is used, whether
you’re using AES-GCM or ChaCha-Poly1305, etc. I’m looking for an architecture
diagram to understand which of these questions is coherent. Is key derivation
used? Under which algorithm? I’m assuming your IDs are SHA-256 hashes, but is
that correct? I don’t know.

Basically, aside from saying there are “ECDSA private keys” in passing, how
precisely does encryption, key exchange and digital signing work? Maybe I
missed a pretty obvious explanation in here - I was reading quickly (though
pointedly). However, if that’s the case then mea culpa, and it should be easy
to rectify by pointing out where exactly I missed this documentation.

For reference, here are examples of documentation I’m looking for[1]:

* Restic, under “Keys, Encryption and MAC”: [https://restic.readthedocs.io/en/latest/100_references.html](https://restic.readthedocs.io/en/latest/100_references.html)

* Wireguard: [https://www.wireguard.com/protocol](https://www.wireguard.com/protocol)

A basic overview of each primitive with a brief explanation of why it was
chosen would go a long way here. I understand if Graphite is too young for
this (though this should be a priority), but Blockstack should absolutely have
something like this documented poignantly. If Blockstack does have this
documented, Graphite should really link to it (poignantly).

________________

1\. I have no affiliation with either of these, though I personally use them,
and they’re not competitors anyway.

~~~
ablankst
I'm on the engineering team at Blockstack, and wrote the client-side
encryption functions used by applications.

I totally agree with the idea that if software uses encryption, it should be
documented, open-source, and ideally use a standard encryption protocol. Being
able to say "this is exactly how encryption works" in a system is important,
and I'm glad you're asking these questions.

Encryption in Blockstack apps is performed client-side via library calls in
blockstack.js (our javascript library). The encryption routines are
implemented here [1], and implement ECIES, using the user's application-
specific private key. That private key is passed to an application during the
application authentication process [2]. All a blockstack application has to do
is pass { "encrypt": true } in the storage routines, and this is invoked.

We definitely would like to provide better documentation and messaging around
how applications engage and use our client libraries -- and documenting our
encryption routines is part of that. However, in the meantime, you can feel
free to check out or codebase (it's all open source), and we'd always welcome
any kind of feedback!

[1]
[https://github.com/blockstack/blockstack.js/blob/master/src/...](https://github.com/blockstack/blockstack.js/blob/master/src/encryption.js#L63)

[2]
[https://github.com/blockstack/blockstack.js/blob/feature/aut...](https://github.com/blockstack/blockstack.js/blob/feature/auth-
doc-improvements/src/auth/README.md#app-private-key)

~~~
peterwwillis
Nobody who's serious about security is going to use an app that does crypto in
javascript. Why not make browser plugins to avoid this complication?

Not to mention, if browser makers take their existing browser storage
functionality and make more flexible interfaces for them, your app will be
kind of useless, as the browser could sync user data with arbitrary cloud
providers.

~~~
rkangel
Is there a fundamental issue with crypto in JS (side-channel attacks?) or is
it just that available crypto libraries in JS are immature?

~~~
cjg
The normal complaint about crypto in JS is that, as a user, I cannot tell what
JS is going to be delivered to me this time. Perhaps a security letter forced
an update to broken crypto.

~~~
saas_co_de
This is solved: [https://developer.mozilla.org/en-
US/docs/Web/Security/Subres...](https://developer.mozilla.org/en-
US/docs/Web/Security/Subresource_Integrity)

If you really care you can check the integrity hash on your scripts before
using every time.

That gives you more security than the update in your OS or Browser so they are
a weaker link.

~~~
peterwwillis
From [https://www.nccgroup.trust/us/about-us/newsroom-and-
events/b...](https://www.nccgroup.trust/us/about-us/newsroom-and-
events/blog/2011/august/javascript-cryptography-considered-harmful/)

 _" OK, THEN I'LL JUST SERVE A CRYPTOGRAPHIC DIGEST OF MY CODE FROM THE SAME
SERVER SO THE CODE CAN VERIFY ITSELF."_

 _" This won't work."_

Your comment that "That gives you more security than the update in your OS or
Browser" is patently false, I don't know why you'd suggest that.

~~~
saas_co_de
> THEN I'LL JUST SERVE A CRYPTOGRAPHIC DIGEST OF MY CODE

1) Javascript is open source and you can audit the code you are running.

2) You can save the HTML of a page and run your local copy so that you know
the JS can't change or check the hash every time

Can you audit the code of your OS or Browser? In theory, if you are on Linux,
but in practice it is too complex and voluminous for one person to do.

A browser based app is usually in the thousands of lines of open source code
running in a sandbox that is very easy to debug.

The browser environment is the most secure and most easily user auditable
environment there is.

Unless you expect all of your users to build your app from source on linux
that they built from source you can't really get better security.

"Javascript Cryptography Considered Harmful" is old FUD. It was barely
coherent when first published and the only legitimate arguments it had have
been fixed.

~~~
webmaven
_> Unless you expect all of your users to build your app from source on linux
that they built from source_

You forgot to tack on _" using compilers, etc., that they also built from
source"_.

------
Erlich_Bachman
Important note, a project that you need to look at if you are looking for a
similar thing: Airbornos. It has about the same general premise, but is even
more secure in some aspects, and is already operational. (No affiliation.)

~~~
jhunter1016
Airborn is solid! Graphite is decentralized, where Airborn is not. But that's
not to say Airborn isn't a great project.

And for what it's worth, Graphite is also operational :)

------
RobLach
I believe this is only decentralized in intent and not actuality.

This runs on top of Blockstack and after reading their Token whitepaper,
particularly the section regarding the governance of the protocol... [1]

 _Initially the stakeholder votes will be used as signaling and will not
automatically activate protocol features. Fully-automated voting on protocol
upgrades is an area of active research._

So currently how I'm understanding is that at this point the protocol is
controlled and hard forked at the whim of an oligarchy (a foundation I
believe) with how it'll work down the road a point of "research".

Furthermore...

 _The initial trusted-set [of users] requires a single gatekeeper to perform
identity checks._

I probably just don't understand.

[1][https://blockstack.com/tokenpaper.pdf](https://blockstack.com/tokenpaper.pdf)

~~~
tinco
Though I understand your sentiment, please note that the protocol governance
problem holds for most major currencies (i.e. Bitcoin, Ethereum, etc). So it
is not a unique flaw to Blockstack.

Please also note that though if you think about it from a centralized
perspective (i.e. you using your regular browser downloading Blockstack from
their own website) then yes, it is centralized. But if you think about it from
a community perspective, since all code and protocol is open source, it is
trivial to establish new protocol and code regardless of authority. So the
essence of it is decentralized.

And this is not just some theoretical thing, all of the major coin protocols
have gone through community driven ('decentralized') forks that went directly
against whoever was leading the projects at that time. For example
Bitcoin<->Litecoin (and notable BCC recently), Ethereum<->Ethereum 'Classic'
and Ripple<->Stellar.

~~~
madeofpalk
That's a weird definition of 'decentralised' then.

That's just like saying that apt-get is decentralised because its open source
and you get point it to different servers.

~~~
hiram112
This has been a central problem for decentralized or any 'P2P' protocol since
day one.

When the more popular music sharing sites like Napster and Morpheus were taken
down due to their reliance upon 'hub servers', more distributed networks like
Gnutella attempted to get rid of their need for points of failure.

But even they needed a concept of a bootstrap index to obtain a list of hubs
from which to get on the network. And sure enough, it turned into a game of
whack-a-mole between the industry and these servers. Torrenting has the same
problem.

If I remember right, the only protocols that work in the long run are those
that can broadcast and discover each other, but they're limited to local LANs.
Once you need to go outside of your own network, you need some way to discover
where nodes are located, and without an initial point of reference(s) (which
becomes the point of failure), you're screwed.

Same problem with trusting users - either you use a centralized authority or
pre-trusted root certs, or you have to know in advance the other users (e.g.
physically exchanging PGP certs).

~~~
pault
Isn't whack-a-mole good enough though? How many examples do we have through
history of a large centralized organization being bled to death (or at least
harassed to the point of giving up) by trying to wipe out a shifting coalition
of resistance groups with no central authority? Rome vs Jewish rebels/Celtic
tribes, Imperial China vs Mongolian warlords, first France, then the USA vs
Vietnamese rebels (even China took a shot but I don't know if that counts
since it was post-unification), the USSR vs Afghani warlords, the USA vs
Afghani warlords, any future empire that tries to occupy Afghanistan... I
would bet dollars to doughnuts that every centralized authority in the history
of human civilization has lost a game of whack-a-mole at least once.

------
djsumdog
The github link really needs to be on the main site. I do like that the whole
thing is GPLv3. Not enough GPLv3 stuff out there these days, or even GPL in
general.

------
yydcool
100% decentralized?

Where is my data actually being stored? This depends on your choices. By
default, your data is stored in a dedicated Microsoft Azure Blob.

Isn't that centralized? Azure is a centralized service, but by encrypting your
data, and because your private key is never exposed, Azure cannot access your
data. With data replication, there is no single-point of failure and no entity
has access to the content of your files.

------
bringtheaction
Sign in button does nothing on iOS 11. Also, is the project open source?
Otherwise there is less appeal even though it is decentralized.

~~~
la_oveja
Yes, it's in the FAQ.

~~~
bringtheaction
Ah yes so it is. I looked everywhere else but didn’t expect the FAQ to contain
anything relating to that.

Do you know the link to the repositories? They are not in the FAQ.

~~~
jhunter1016
Sorry I didn't put it on the marketing site. Need to get that updated. Here's
the link: [https://github.com/jehunter5811/graphite-
blockstack](https://github.com/jehunter5811/graphite-blockstack)

------
jaggs
I really like this a lot. I like the fact it gives choices, it's open source
and the first implementation is really solid for an MVP. Well done. It's
rather like a cross between OwnCloud and that online app container service
I've forgotten the name of. :)

One major point though. Top of your dev timeline should be mobile!

~~~
jhunter1016
Absolutely! End of March is the target.

~~~
jaggs
Excellent. Your challenge then is going to be how to keep it in people's minds
long enough to gain a decent amount of committed traction. So many web apps
like this come and go, but I have a feeling if you keep this simple and do
some clever marketing (e.g. alliances) then this could be a real contender.

------
brokenmachine
Are there any plans for an Android App, or will it all be browser-based?

Also where is the github/code located?

~~~
DavidNielsen
Seconded, e.g. going to the signup page on my iPhone 5 just leads to a blank
page. I suspect the same might be true for my iPad Air despite being on a
current iOS release.

A slightly better onboarding experience would be worth a lot, even if the
answer is "thine device is unsupported and no plan to support it exists."

------
la_oveja
>Are there storage limits? >There are no storage limits for documents,
spreadsheets, or messages.

>How much does it cost? >Graphite for personal use is completely free.

So, unlimited storage, shareable and decentralized, for free? Where's the
bait?

~~~
vsund
It uses Blockstack for the decentralized foundation it's built on. (Among
other things) Blockstack stores your data on storage providers you connected
to it (such as Google Drive, Dropbox, etc).

Both, Graphite and Blockstack, are fully open source. So there's nobody who
will get in between you and your documents.

~~~
jakecopp
If it's stored on Google Drive, why not use Google Docs?

If it's stored on Dropbox, why not use any local editor?

~~~
jhunter1016
Storing an unencrypted file with a single storage provider is neither private
nor secure. Blockstack allows users to select multiple storage providers,
allowing for data replication and mitigation of any single source of failure.
Additionally, encrypting a file client-side before it is stored means that
Google or Dropbox or whoever can snoop all they want and not be able to see
your data.

------
tenryuu
I still don't understand why everyone is going on about the block chain

------
djangowithme
Is the 16mb unsplash photo on the landing page really necessary?

------
zaarn
This looks quite interesting.

For a full replacement I would require a presentation app though.

Is there a planned option to selfhost the frontend for personal (and/or
limited) usage?

~~~
jhunter1016
Presentation app is on the roadmap. Honestly, I've been waiting to see how
much demand there was before we launch into that.

And yes, you can host since this is a serverless app. If you go to the
repository, you can clone and run locally or deploy to the domain of your
choosing if you want.

The key thing to note, though, is that the app origin is used for storage. So,
if you create documents locally, they will be accessible anytime you run the
app at localhost:8080 (or whatever port), but they won't be accessible at
app.graphitedocs.com. Similarly, if you self-host, those documents will be
available at that app origin domain, but not others.

If you want to use Graphite and share files, the best bet is to run it at
app.graphitedocs.com, but you absolutely do not have to.

------
mariushop
Can I just say I found this thread very informative for tackling encryption on
a web text editor/document storage:)

------
tamalsaha001
When is the ICO?

~~~
chrisvalleybay
Blockstack already had one.
[https://icodrops.com/blockstack/](https://icodrops.com/blockstack/)

------
Moodles
This is probably a very naive question: What are the main differences between
this and git?

~~~
loueed
Heres how they explain it on the Blockstack website.

Blockstack uses the lower layers of the traditional internet and focuses on
decentralizing the application layer. Blockstack provides key tools and
infrastructure to developers enabling decentralized storage and decentralized
authentication & identity. Developers build single-page applications in
JavaScript then plug into user-run APIs, which eliminates centralized points
of control. Users run decentralized apps through the Blockstack browser and
give explicit read/write permissions to their data. Information is encrypted
and stored on users’ personal devices. There are no middlemen, no passwords,
and no massive data silos to breach.

~~~
jhunter1016
Not much of a better explanation than that! Thanks for posting that.

I'd encourage everyone to take a look at blockstack.org and feel free to
review Graphite's repo (it's 100% open source):
[https://github.com/jehunter5811/graphite-
blockstack](https://github.com/jehunter5811/graphite-blockstack)

------
julienfr112
Spreadsheet and doc functionalities are very limited : you can't drag a
formula, it just copies the value. You can't draw on a doc. It's more like a
toy than a google doc replacement.

~~~
jhunter1016
100% agreed on spreadsheets. Docs is designed for writing. There will be more
features but drawing is not an early priority. Graphite just launched. You'll
see improvements quickly. Thanks for giving it a shot!

~~~
julienfr112
Gambate !

------
fiatjaf
What is Blockstack, in clear English?

------
marknadal
Cool concept, but note:

I just tested this, and it is NOT a google docs alternative - it has no
realtime sync (or at least, it wasn't working).

I work extensively on decentralized/P2P distributed systems and realtime P2P
sync is non-trivial, you need to use a specialized CRDT for it:

\- Here is an interactive animated explainer on how to do a P2P realtime
syncing CRDT:
[http://gun.js.org/explainers/school/class.html](http://gun.js.org/explainers/school/class.html)

\- Here is an excellent more detailed explanation of how such a CRDT works, by
Martin Kleppmann:
[https://www.youtube.com/watch?v=yCcWpzY8dIA&feature=youtu.be...](https://www.youtube.com/watch?v=yCcWpzY8dIA&feature=youtu.be&t=29m36s)

~~~
jhunter1016
You're absolutely correct. In this iteration, collaboration is achieved
asynchronously. Share a file, receiver can edit, receiver can share back, etc.

Because real-time collaboration is not trivial, as you mentioned, we're making
sure we do it right.

~~~
marknadal
Would love to help you out on that algorithm, I (and a bunch of other friendly
P2P people) hang out at
[https://gitter.im/amark/gun](https://gitter.im/amark/gun) !

I know it isn't as catchy as Google Docs, but perhaps having the title be
"Evernote alternative" or something like that? (IDK if evernote has realtime
typing, I doubt they do... or somebody similar that doesn't), so that way
people don't get dissapointed?

~~~
jhunter1016
I sincerely appreciate that. Joining the Gitter room now :)

------
dingo_bat
How is this free? From the FAQ I can see they store the data blobs in Azure.
It will get really expensive really soon.

~~~
jhunter1016
Storage in a data blob in Azure is just the default storage option. Users can
and should connect their own storage providers (multiple for best prevention
against centralized failure).

------
BLanen
Another unnecessary application of blockchain tech.

