2015-11-04 17:05:27 +01:00
|
|
|
# IPFS Boards
|
|
|
|
|
2015-11-24 20:38:57 +01:00
|
|
|
The easy to use Discussion Board platform that runs in modern web browsers,
|
|
|
|
and requires no servers.
|
|
|
|
|
|
|
|
## Why
|
|
|
|
|
2015-11-04 21:15:58 +01:00
|
|
|
Image and discussion boards, forums and the like have many problems:
|
|
|
|
|
|
|
|
- Centralized
|
|
|
|
- What if it gets shut down?
|
|
|
|
- What if the servers are down?
|
|
|
|
|
|
|
|
- Fragile
|
2015-11-24 20:38:57 +01:00
|
|
|
- What if there's a DoS attack?
|
|
|
|
- What if there is a usage explosion and the servers can't handle it?
|
|
|
|
- What if the datacenter is flooded and data is lost?
|
|
|
|
|
|
|
|
- Limited
|
|
|
|
- What if you want new functionality or restore old features?
|
|
|
|
- What if you want to build custom clients or extensions to the service?
|
|
|
|
- What if you want to use it in a Local Network with no Internet access and no servers?
|
|
|
|
- What if you want to do more than what the service was designed for, or truly be in control of your data?
|
|
|
|
|
|
|
|
This project was conceived to solve that. With the help of:
|
2015-11-04 21:15:58 +01:00
|
|
|
|
2015-11-24 20:38:57 +01:00
|
|
|
- the [IPFS](https://github.com/ipfs/ipfs) and IPNS protocols for efficient distributed data storage
|
|
|
|
- IPLD and [POST](https://github.com/ipfs/POST) protocols for a common, universal data structure
|
|
|
|
- Modern browsers and web technologies for a portable, accessible user interface
|
2015-11-04 21:15:58 +01:00
|
|
|
|
2015-11-24 20:38:57 +01:00
|
|
|
We can solve these problems and create a true universal platform which can act as:
|
2015-11-04 21:15:58 +01:00
|
|
|
|
2015-11-14 16:26:03 +01:00
|
|
|
- Discussion board, like reddit or 4chan
|
|
|
|
- Blog with dynamic comments
|
2015-11-04 21:15:58 +01:00
|
|
|
- Wiki
|
|
|
|
- File Sharing platform
|
2015-11-24 20:38:57 +01:00
|
|
|
- Forum
|
2015-11-14 16:26:03 +01:00
|
|
|
- (Maybe) E-Learning platform
|
2015-11-04 21:15:58 +01:00
|
|
|
|
2015-11-14 00:16:45 +01:00
|
|
|
With security, control, reliability, rock solid stability, fully distributed
|
|
|
|
architecture or, optionally, none of these!
|
2015-11-04 21:15:58 +01:00
|
|
|
|
2015-11-22 00:10:46 +01:00
|
|
|
## Get Started
|
2015-11-11 15:51:17 +01:00
|
|
|
|
2015-11-22 00:10:46 +01:00
|
|
|
The App is not ready yet, but you're welcome to take a look at the prototype,
|
|
|
|
even though it only has informational pages and very limited functionality.
|
2015-11-14 00:16:45 +01:00
|
|
|
|
2015-12-04 11:07:19 +01:00
|
|
|
Also keep in mind that due to issues with the current implementation of IPNS in
|
|
|
|
go-ipfs, real world usage of the prototype is very limited. This will all be
|
|
|
|
sorted out as soon as go-ipfs' next version, 0.4, is out.
|
2015-11-14 00:16:45 +01:00
|
|
|
|
2015-12-04 11:07:19 +01:00
|
|
|
You can take a look at the prototype [here](http://ipfs.io/ipfs/QmPmqUP5bYUme6V45n4BzPTp6BM1wwX2nGsh5ttpC5qg1C)
|
|
|
|
but you won't be able to actually use it.
|
|
|
|
|
|
|
|
If you want to really use the prototype, you can quickly set up your machine like this:
|
|
|
|
|
|
|
|
1. get `go-ipfs` installed on your OSX or GNU/Linux system
|
|
|
|
1. run this in a terminal `API_ORIGIN="localhost:8080" ipfs daemon`
|
|
|
|
1. open [this](http://localhost:8080/ipfs/QmPmqUP5bYUme6V45n4BzPTp6BM1wwX2nGsh5ttpC5qg1C) in your browser
|
|
|
|
1. You're all set!
|
|
|
|
|
|
|
|
### Additional information
|
2015-11-16 20:54:24 +01:00
|
|
|
|
|
|
|
You need a local instance of go-ipfs running for it to work. You also need to set
|
2015-11-15 19:03:44 +01:00
|
|
|
CORS settings right or it won't work. However, in that case, it will complain to
|
|
|
|
you and provide instructions.
|
|
|
|
|
|
|
|
Keep in mind that it's a _very early_ prototype, nothing is finished, nothing
|
|
|
|
is polished, but something works. It's also probably full of security holes,
|
|
|
|
very inefficient, slow, etc. You're welcome to help in any way though!
|
|
|
|
|
|
|
|
Also, remember that __it doesn't have__:
|
2015-11-11 15:51:17 +01:00
|
|
|
|
2015-11-14 19:13:13 +01:00
|
|
|
- Ability to post and create a profile from the web app (it's read only for now)
|
|
|
|
- Aggregation (only the admin can post, for now)
|
|
|
|
- Advanced customization, control, user profile customization
|
2015-11-11 15:51:17 +01:00
|
|
|
- Media support
|
|
|
|
- Votes
|
2015-11-15 19:03:44 +01:00
|
|
|
- Ability to run without a full IPFS node. That would require either a backend or the (currently not done) js implementation of IPFS
|
2015-11-14 16:26:03 +01:00
|
|
|
|
|
|
|
Ability to publish stuff in the browser won't be implemented until go-ipfs 0.4
|
2015-11-15 19:03:44 +01:00
|
|
|
is ready. It will maybe be ready before the new year.
|
|
|
|
You will be able to publish your boards/profile/posts using a CLI though.
|
2015-11-11 15:51:17 +01:00
|
|
|
|
2015-11-22 00:10:46 +01:00
|
|
|
## FAQ
|
|
|
|
|
|
|
|
See `FAQ.md`
|
|
|
|
|
|
|
|
### How does it work?
|
|
|
|
|
|
|
|
See `PROTOCOL.md`
|
|
|
|
|
2015-11-15 21:35:37 +01:00
|
|
|
### How do I set up a development environment?
|
|
|
|
|
2015-12-04 11:07:19 +01:00
|
|
|
See `CONTRIBUTING.md`
|
2015-11-15 21:35:37 +01:00
|
|
|
|
2015-11-04 17:05:27 +01:00
|
|
|
## Components
|
|
|
|
|
|
|
|
- __Client__
|
|
|
|
- a static web application to access IPFS Boards
|
2015-11-14 00:16:45 +01:00
|
|
|
- maybe a desktop version (which would be a wrapped web application)
|
|
|
|
- will be able to do everything in a simple browser
|
|
|
|
- __Server__
|
|
|
|
- __Completely Optional__ (not right now, but it will be)
|
|
|
|
- can cache content so that it doesn't get lost
|
|
|
|
- fully configurable
|
|
|
|
- can serve the Client
|
|
|
|
- can render the client application so that search engines can index content
|
|
|
|
- can provide content over an HTTP API or web sockets so that devices can save bandwidth
|
2015-11-04 17:05:27 +01:00
|
|
|
|
|
|
|
__Note:__ until the __IPFS Javascript Implementation__ is done:
|
|
|
|
|
|
|
|
- the client (a static web application) requires a full IPFS node because it needs to be able to discover content via the IPFS API.
|
|
|
|
- the cache server (written in node) requires a full IPFS node.
|
|
|
|
|
2015-11-14 00:16:45 +01:00
|
|
|
__Note:__ if you want to write data, your __IPNS__ needs to be taken over
|
|
|
|
by the application. This problem will be solved after go-ipfs 0.4 with the files
|
|
|
|
API is released.
|
2015-11-04 21:15:58 +01:00
|
|
|
|
|
|
|
### License
|
|
|
|
|
2015-11-30 17:13:56 +01:00
|
|
|
The MIT License (MIT)
|
|
|
|
|
|
|
|
Copyright (c) 2015 Enrico Fasoli (fazo96)
|
|
|
|
|
|
|
|
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
|
|
of this software and associated documentation files (the "Software"), to deal
|
|
|
|
in the Software without restriction, including without limitation the rights
|
|
|
|
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
|
|
copies of the Software, and to permit persons to whom the Software is
|
|
|
|
furnished to do so, subject to the following conditions:
|
|
|
|
|
|
|
|
The above copyright notice and this permission notice shall be included in all
|
|
|
|
copies or substantial portions of the Software.
|
|
|
|
|
|
|
|
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
|
|
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
|
|
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
|
|
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
|
|
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
|
|
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
|
|
SOFTWARE.
|