I was looking at some of the things IPFS is able to implement, and I have some questions if anyone wanna help.
1, How can you fork the IPFS node and make it like openbazaar which is a public IPFS network but different network?
2, Is it possible to limit the size of data stored at a specific node and if anyone can stop being the server and act as a client or switch/alternate from those states?
3, Is a gateway similar to backup storage for the network?
4, Is there an advantage for go-ipfs over js-ipfs? Or is it just preference/platform?
The design of IPFS is different from something like I2P, by it being a strictly pull-based system, as opposed to a push-based one. That is - content never finds its way to your node on its own. The only way for you to begin storing/providing content is to:
Add some content to your node ( ipfs add ... )
Request some content from the network in order to view it. Once you’ve done so, and your node has downloaded the underlying blocks from the network, your node will start responding to DHT queries “yes, I have this content too”. It will keep responding so until your cache is garbage collected.
If you want to become a re-provider for someone elses content indefinitely - you have to actively “pin” it on your node, so that garbage collection never touches it.
The gateway is a node like any other, just with beefier hardware. It periodically runs garbage collection on its own cache, evicting everything folks may have browsed previously ( thus inserting it in the gateway block store )
If you need to persist content on the network while your node is offline: you need to use a 3rd party pinning service (search through the forum for more on this)
There is no functional diffrence: they are maximally-compatible implementations catering to different dev styles/teams.