I noticed some people use stratum+tcp:// and others do not, can someone explain to me why this is and what does it do? Thanks guys
Stratum is an over-the-wire protocol that solves the headaches created by HTTP when used for mining. To understand why Stratum is necessary, you have realize the fact that HTTP is designed for serving web applications and web pages, it's main job is to return files and not to coordinate peers. But miners need to do more than receive information, they also need to send. The following are issues with HTTP:
Miner's request information
If a miner wants a new mining job, they have to send a request through HTTP. Why bother with having the miners request this information when the mining pool knows more efficiently what each individual miner should be doing? What happens if a new block appears on the network and the miner doesn't know about this? So Stratum flips this and has the mining pool sending information as it becomes available, not miners asking for available information periodically.
Long-polling
Long-polling is a very hacky solution to fix the one-sided nature of HTTP. It's done by setting a very high timeout limit (say 10 seconds) where the server purposely delays sending information until it has something to send. Imagine a URL address taking minutes to load because the server is simply waiting for something to happen on it's network. This creates a lot of inefficiency as miners are requesting data that simply isn't there and servers have to maintain those connections as well for as long as mining happens.
Ntime rolling
This is a more technical problem, and its fix is considered the biggest innovation of stratum. Miners are given the ability to modify 2 fields, the nonce and the time. This becomes a problem for large miners as they can run through all possible values of the two fields in search of the solution. If a miner runs out of unique possibilities, they have to send a new request. Newer and faster miners make this more easier to do by the month and bandwidth usage for a pool increases dramatically. Stratum solves this by giving the miners a few more fields which seriously increase the total possible solutions to a block.
TL;DR
Stratum makes it so that the miner and pool are freed from the inefficiencies of HTTP, which is not meant to support mining at all. It makes communication more efficient meaning future exohash mining equipment will have enough jobs to complete while the pool operator isn't being gutted by massive bandwidth and server fees.