
Show HN: Convert article in current tab to readable form and upload it to IPFS - meehow
https://addons.mozilla.org/en-US/firefox/addon/2read/
======
rglullis
Interesting to see something like this here. I've been scratching my own itch
and writing a self-hosted hybrid of alternative to pocket + IPFS archiver as
well. Source is here:
[https://bitbucket.org/lullis/nofollow](https://bitbucket.org/lullis/nofollow).
A browser extension to make link submission easier would be very handy

~~~
aasasd
For self-hosted Pocket, there's already Wallabag, you might want to take a
look.

It would probably be easier to add IPFS archiving to Wallabag than to roll
your own Pocket.

~~~
rglullis
Yes, I am aware of Wallabag and it does some interesting things. It is just
that I am allergic to PHP and would like to have a testbed for some other
ideas I have:

\- inter-instance link sharing, perhaps via activity pub.

\- Some ACL later on top of IPFS to ensure you share links and content with
people you trust only (also to avoid eventual copyright litigation)

\- a sanitized way to read links from content farms that gets shared on social
networks (this was one of the initial motivations for me to start this, and
this is why I called it nofollow)

\- a perhaps more robust way to have an internet archive.

It is unlikely I will get to do it all, but it is more likely I will get to do
some of this in Python (or Go) than to ever pick PHP

------
Aelius
Could you give me a little insight into your use case?

I'm personally excited for ipfs, but I've stopped following releases / am
feeling burnt out by the slow pace of development. Still, good to see creative
uses pop up in my internet bubble!

~~~
meehow
I was checking my old bookmarks and big part of them was outdated (404).
Average lifespan of a website is 100 days
[https://blogs.loc.gov/thesignal/2011/11/the-average-
lifespan...](https://blogs.loc.gov/thesignal/2011/11/the-average-lifespan-of-
a-webpage/) , but I would like to keep some articles to read and share even
way later. I thought that it would be nice to have simple tool, which doesn't
require setting up another account. Just backup and add a link to bookmarks.
Because all technologies needed to fix the problem are already here, I just
put them together.

~~~
realPubkey
Is it really a backup? Ipfs has no 'upload' so if you clear your local
storage, everything will be gone. I think it's unlikely that multiple users
will generate the same content hash.

~~~
meehow
Right, it's a local, sharable copy. Actually Readability cuts off so much
HTML, that it's quite possible that 2 users will generate the same hash even
from very dynamic website.

~~~
benj111
Really?

What kind of hash are we talking about here? And generated from what?

I could imagine the opposite, generating 2 hashes from the 'same' article, due
to different markup being stripped. Not what you suggest though.

------
zerotolerance
I wonder what IP lawyers think about republishing works without permission
into a network where nothing can be deleted.

~~~
joeblau
I was listening to this Hashing It Out Episode with the founders of Storj[1]
yesterday. Apparently IPFS isn't even that resilient. The Storj founders said
that if you take a look at the IPFS sub-Reddit, half of the links don't work.
That's not to discount what you're asking about, but it seems like the
gamification for keeping IPFS files up _forever_ is not a huge issue at the
moment.

[1] - [http://thebitcoinpodcast.com/hashing-it-
out-34/](http://thebitcoinpodcast.com/hashing-it-out-34/)

~~~
hecturchi
StorJ is a incentivized (people get paid to make things available) and IPFS is
not. They explain this in the podcast and mention it several times.

IPFS is perfectly _resilient_ as long as the network participants have the
interest in keeping the content available.

~~~
prophesi
Yeah, IPFS is still waiting for FileCoin to be implemented. For now, your best
bet is to run your own IPFS gateway with your data pinned to it, and perhaps
ask fellow IPFS enthusiasts to do the same.

------
eljimmy
Should link to your source code instead:
[https://github.com/meehow/2read](https://github.com/meehow/2read)

~~~
meehow
Right, just wanted to clean it a little first :)

------
darren0
From the description

"Please note that content shared with this addon is just cached on IPFS
servers. If you want to store the content permanently, you need to have IPFS
node running on your computer."

It's a common misconception that ipfs is something you can "upload to." Ipfs
makes links permanent in that they will never change. There is no guarantee
that the content of the link exists unless someone explicitly stored it on a
node.

~~~
meehow
Is there some misconception in that sentence?

~~~
jolmg
Not _in_ that sentence. It's the misconception that the sentence _addresses_.

------
shakna
> 2read will automatically "pin" your content if you have local node running.

How does 2read detect the local node? My IPFS node runs on different ports.
Will it be detected?

Edit:

    
    
        http://localhost:5001/api/v0/pin/add?arg=${hash}
    

That would be a no. It does assume port numbers.

Maybe have a failure condition where it then does:

    
    
        ipfs://localhost/api/v0/pin/add?arg=${hash}

~~~
meehow
Yes, it's a bit oversimplified. Thank you for the suggestion. I will test it
tomorrow. I hope it can be done without creating settings.

~~~
shakna
Most people don't change the ports, I'm an outlier, don't sweat it.

If you can get it working with the protocol handler (ipfs://) that'd be
awesome, but I went to the effort of changing my IPFS settings, so I can go to
the effort of changing a setting for your addon.

~~~
meehow
Now it has a fallback to ipfs:// (in version 1.3). Thank for pointing it out.
As I understand it will only work if you have IPFS Companion, right?

~~~
shakna
Awesome.

I think there's a couple other addons and things that will enable ipfs:// but
Companion is the most common.

~~~
meehow
Unfortunately ipfs:// didn't work, so I rolled back changes. I also don't have
access to window.ipfs, so I don't know at the moment how to handle custom
port.

------
mozey
Cool, I thought about building something like this years ago. I wish the idea
could be taken further, that is, all the information I consume (reading,
watching, listening, etc) should be available to me for recall. Changes and
current availability of the source must not affect my copy.

~~~
tiuPapa
So kinda like a GitHub for your browsing history?

~~~
klez
What in that description makes you think of GitHub specifically?

~~~
tiuPapa
> all the information I consume (reading, watching, listening, etc) should be
> available to me for recall. Changes and current availability of the source
> must not affect my copy.

Reminds me of Github's forks

------
acd
Cool Idea, can one use hashes like sha256 to prove that the article original
content has not been modified? Is that already in IPFS?

~~~
meehow
It's already built-in. URLs in IPFS are Base32 encoded SHA-256 hashes
[https://docs.ipfs.io/guides/concepts/hashes/](https://docs.ipfs.io/guides/concepts/hashes/)

~~~
hcs
That doesn't tell you anything about the original source, though, just the
version that got put on IPFS.

~~~
sdwisely
which surely is the best possible without the original author signing it?

All that can be assured is that the content that the person mirroring it and
linking you to it is as they intended.

------
burtonator
You might also take a look at Polar:

[https://getpolarized.io/](https://getpolarized.io/)

It does something similar but stores it locally. We have cloud support too so
you can sync between your devices.

Thinking about IPFS at some point but it doesn't solve all the use cases/APIs
I need supported yet.

------
Double_a_92
I was playing with the idea of doing something similar. I.e. just the reader
part, to allow me to read articles in a clean uncluttered form. But I didn't
really know where to start with the content extraction... Turns out it is
indeed "somewhat" complicated if I look at your Readability.js code. :D

~~~
aasasd
Firefox already has built-in ‘reader’ mode. Afaik Readability is their
implementation (possibly old)―it's on Mozilla's GitHub.

------
fiatjaf
"Upload to IPFS" means save to your local IPFS repo and "pin" it. Means you'll
never be able to find it again unless you keep the hash forever in a
different, external database. Then you should never change computers ever, or
you'll lose everything.

------
meehow
Chrome version is waiting for a review :)

------
m-p-3
Just wondering, does it convert the article into a readable form locally? Not
saying this could be useful for paywalled content but...

~~~
meehow
It's converts article locally, exactly how Firefox reader does.

